Tại sao các loại đệ quy cần thiết làm nguyên thủy cho bằng chứng trong các hệ thống loại phụ thuộc?


10

Tôi còn khá mới với lý thuyết loại và lập trình phụ thuộc. Tôi đã nghiên cứu tính toán các công trình xây dựng (CoC) và các hệ thống loại thuần túy khác. Tôi đặc biệt quan tâm đến việc sử dụng nó như một đại diện trung gian bảo toàn bằng chứng cho một hệ thống biên dịch.

Tôi hiểu rằng các kiểu đệ quy (co-) có thể biểu diễn , tính toán , sử dụng làm hàm tạo kiểu duy nhất. Tuy nhiên, tôi đã đọc rằng chúng không thể được sử dụng để xây dựng bằng chứng bằng cảm ứng (tha thứ cho tôi, tôi không thể tìm thấy ở đâu bây giờ!), Ví dụ, tôi không thể chứng minh rằng trong CoC đơn giản (mặc dù có thể đánh máy là ).0 1 Nat Π ( N : * ) . Π ( S : NN ) . Π ( Z : N ) . NΠ01NatΠ(N:).Π(S:NN).Π(Z:N).N

Tôi cho rằng đây là lý do tại sao họ xây dựng tính toán của các công trình quy nạp (CIC). Điều này có đúng không? Nhưng tại sao? Tôi không thể tìm thấy bất kỳ tài liệu nào giải thích lý do tại sao các bằng chứng đó không thể được trình bày mà không sử dụng các loại quy nạp (đồng) làm nguyên thủy. Nếu điều này không đúng, thì tại sao lại thêm chúng làm nguyên thủy trong CIC?

Câu trả lời:


7

Tôi không phải là một chuyên gia, nhưng tôi sẽ chia sẻ những gì tôi hiểu cho đến nay với một ví dụ.

Chúng ta hãy xem xét các loại boolean trong CoC, sử dụng mã hóa tiêu chuẩn của nó: Chúng ta có thể mong đợi có thể chứng minh Π b : B b = t

B=Πτ:τττtt=λτ:,x:τ,y:τ. xff=λτ:,x:τ,y:τ. y
Trên thực tế, điều này một cách nhanh chóng sau từ việc loại bỏ nguyên tắc phụ thuộc / cảm ứng chúng ta có ví dụ trong CIC B i n d : Π P : B* P ( t t ) P ( f f ) Π b : B P ( b )
Πb:Bb=ttb=ff()
BTôind:ΠP:B*P(tt)P(ff)Πb:BP(b)

Tuy nhiên, chúng tôi không thể thực sự mong đợi (*) có trong tất cả các mô hình của CoC! Bằng trực giác, một giá trị trong xấp xỉ phải là một gia đình của các chức năng { f τ } τ gán cho từng loại τ một giá trị trong việc giải thích của τ τ τ . Nhưng điều này không buộc f τ là một giữa các giá trị của t t , f f . Chúng ta có thể có ví dụ (không chính thức) f N ( n ) ( m ) = n + mB{fτ}τττττfτtt,ff

fN(n)(m)= =n+m

tt,ff(*)B

(*)(*)BTôind


(λ(Nmộtt:*).(...))(Π(N:*).Π(S:NN).Π(Z:N).N)SZ
paulotorrens

NmộttS,Znn(T)(ST)(ZT)= =ZTTT= =Bn(B)(S)(Z)= =S(Z)nλT:*.Tôif T= =B then Giáo dụcn

ΠT:*TTv(T)(x)= =xTT= =Nv(N)(x)= =x+1
chi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.