Saya bertanya-tanya apakah urutan deklarasi tipe induktif dapat berpengaruh.
Misalnya dalam Coq, Anda dapat menentukan Nat
dengan:
Inductive Nat :=
| O : Nat
| S : Nat -> Nat.
atau
Inductive Nat :=
| S : Nat -> Nat
| O : Nat.
Ini mungkin akan mengubah urutan parameter dalam eliminator yang dibuat secara otomatis, tapi itu bukan masalah besar.
Yang saya ingin tahu adalah apakah mungkin untuk menulis pernyataan seperti
Inductive typewhereordermatters :=
| cons1 : type1
| cons2 : type2.
di mana type2
tipe dependen, tergantung pada cons1
? (dan dalam hal ini, tulis deklarasi dalam urutan lain tidak akan memiliki arti, karena type2
akan merujuk pada cons1
yang belum ada).
sumber
circle
, tipeloop
konstruktor bergantung padabase
konstruktor.Apakah pesanan itu penting menurut cara Anda bertanya? Tidak.
Tetapi apakah urutannya sama sekali tidak relevan dengan berfungsinya asisten bukti? Sekali lagi, tidak. Di Matita, asisten bukti sangat mirip dengan Coq, urutan konstruktor ditulis dalam definisi induktif tidak masalah untuk pengecekan tipe, khususnya ketika tipe memeriksa ekspresi kecocokan.
Matita pertama-tama harus memeriksa bahwa semua konstruktor sedang dicocokkan dalam tubuh pertandingan. Ia melakukan ini dengan bersepeda melalui konstruktor dalam urutan di mana mereka dinyatakan. Kemudian, ketikkan untuk memeriksa ekspresi kecocokan yang tepat, yang terjadi dalam urutan terbalik, memeriksa casing untuk konstruktor yang terakhir dinyatakan terlebih dahulu. Jenis ini kemudian dilakukan dan digunakan untuk memeriksa kasus-kasus lainnya.
Ini sangat sering muncul ketika menulis ekspresi kecocokan yang besar. Anda ingin mengisi kasing yang mudah terlebih dahulu, meninggalkan kasing yang lebih sulit di bawah wildcard, ketikkan secara berkala memeriksa apa yang telah Anda tulis untuk memastikan bahwa itu masuk akal. Kadang-kadang Matita tidak dapat menyimpulkan jenis ekspresi pertandingan yang tidak lengkap tetapi akan dengan senang hati melakukannya jika Anda mengisi kasing untuk konstruktor terakhir yang ditentukan dalam jenis induktif.
Saya kira, meskipun saya tidak yakin, bahwa Coq melakukan sesuatu yang serupa.
sumber