Banyak buku teks membahas jenis persimpangan di kalkulus lambda. Aturan mengetik untuk persimpangan dapat didefinisikan sebagai berikut (di atas kalkulus lambda hanya diketik dengan subtyping):
Jenis titik-temu memiliki sifat yang menarik sehubungan dengan normalisasi:
- Sebuah istilah lambda dapat diketik tanpa menggunakan aturan iff itu sangat normal.
- Istilah lambda mengakui tipe yang tidak mengandung jika memiliki bentuk normal.
Bagaimana jika alih-alih menambahkan persimpangan, kami menambahkan serikat?
Apakah lambda-calculus dengan tipe sederhana, subtyping, dan serikat memiliki properti serupa yang menarik? Bagaimana istilah yang dapat diketik dengan serikat ditandai?
lambda-calculus
type-theory
logic
Gilles 'SANGAT berhenti menjadi jahat'
sumber
sumber
Jawaban:
Dalam sistem pertama yang Anda sebut subtyping adalah dua aturan ini:
Mereka sesuai dengan aturan eliminasi untuk∧ ; tanpa mereka ∧ more kurang lebih berguna.
Dalam sistem kedua (dengan penghubung dan , yang juga bisa kita tambahkan ), aturan subtyping di atas tidak relevan, dan saya pikir aturan terlampir yang Anda pikirkan adalah sebagai berikut:→ ⊥∨ → ⊥
Untuk apa nilainya, sistem ini memungkinkan untuk mengetik (menggunakan aturan ), yang tidak dapat diketik hanya dengan tipe sederhana, yang memiliki bentuk normal, tetapi tidak sangat normal. .⊥ E( λ x . I) Ω : A → A ⊥ E
Pikiran acak: (mungkin ini patut ditanyakan di TCS)
Ini membuat saya menduga bahwa properti terkait adalah seperti:
Latihan: buktikan kalau saya salah.
Juga sepertinya kasus yang merosot, mungkin kita harus mempertimbangkan untuk menambahkan orang ini ke dalam gambar. Sejauh yang saya ingat, itu akan memungkinkan untuk mendapatkan ?A ∨ ( A → ⊥ )
sumber
Saya hanya ingin menjelaskan mengapa tipe persimpangan cocok untuk mengkarakterisasi kelas normalisasi (kuat, head atau lemah), sedangkan sistem tipe lainnya tidak bisa. (cukup diketik atau sistem F).
Perbedaan utama adalah bahwa Anda harus mengatakan: "jika saya bisa mengetik dan maka saya bisa mengetik ". Ini sering tidak benar dalam jenis non-persimpangan karena istilah dapat diduplikasi:M 1 → M 2 M 1M.2 M.1→ M2 M.1
dan kemudian mengetik berarti bahwa Anda dapat mengetik kedua kejadian tetapi tidak dengan jenis yang sama, misalnya Dengan jenis persimpangan Anda dapat mengubah ini menjadi: dan kemudian langkah penting sekarang sangat mudah: so dapat dengan mengetikkan tipe persimpangan.N M : T 1 → T 2 → T 3M.NN N
Sekarang tentang jenis penyatuan: misalkan Anda dapat mengetik dengan beberapa jenis penyatuan, maka Anda juga dapat mengetik dan kemudian mendapatkan untuk beberapa jenis Tetapi Anda masih harus membuktikan bahwa untuk setiap , yang tampaknya mustahil bahkan adalah tipe gabungan.λ x . x x S , T 1 , ... x : T 1 ∨ T 2 ∨ ⋯ ∨ T n ⊢ x x : S i x : T i ⊢ x x : S S( λ x . x x ) ( λ y. y) λ x . x x S, T1, ...
Inilah mengapa saya tidak berpikir ada karakterisasi yang mudah tentang normalisasi untuk jenis serikat.
sumber