Bilangan asli didefinisikan secara induktif sebagai (menggunakan sintaks Coq sebagai contoh)
Inductive nat: Set :=
| O: nat
| S: nat -> nat.
Apakah ada cara standar untuk mendefinisikan integer (dan mungkin set lain seperti rasional dan real) secara konstruktif?
Jawaban:
Ada beberapa cara untuk mendefinisikan struktur matematika, tergantung pada properti apa yang Anda anggap sebagai definisi. Antara penokohan yang setara, mana yang Anda ambil untuk menjadi definisi dan yang Anda ambil sebagai penokohan alternatif tidak penting.
Dalam matematika konstruktif, lebih baik memilih definisi yang membuat penalaran konstruktif mudah. Untuk bilangan asli, bentuk dasar penalaran adalah induksi, yang membuat definisi nol atau penerus tradisional sangat cocok. Set angka lainnya tidak memiliki preferensi seperti itu.
Ketika bernalar pada negosiasi, dalam pengaturan non-konstruktif, adalah umum untuk mengatakan "pilih anggota kelas kesetaraan". Dalam pengaturan yang konstruktif, perlu dijelaskan bagaimana memilih anggota. Ini membuatnya lebih mudah untuk pergi dengan definisi yang membangun satu objek untuk setiap anggota jenis, daripada membangun kelas ekivalensi.
Misalnya, untuk mendefinisikan , seorang ahli matematika mungkin senang dengan menyamakan perbedaan bilangan asli: Z : = N 2 / { ( ( x , y ) , ( x ′ , y ′ ) ) ∣ x + y ′ = x ′ + y }Z
Namun, definisi ini anehnya asimetris, yang dapat membuatnya lebih baik untuk mengakui dua representasi berbeda untuk nol:
Atau kita dapat membangun bilangan bulat relatif tanpa menggunakan naturals sebagai blok bangunan:
Pustaka standar Coq menggunakan definisi lain: itu membangun bilangan bulat positif dari notasi mereka adalah basis 2, karena angka 1 diikuti oleh urutan angka 0 atau 1. Kemudian dibangun
Z
sepertiZ3
dariPos3
atas. Definisi ini juga memiliki representasi unik untuk setiap bilangan bulat. Pilihan menggunakan notasi biner bukan untuk alasan yang lebih mudah, tetapi untuk menghasilkan kode yang lebih efisien ketika program diekstraksi dari bukti.Kemudahan bernalar adalah motivasi dalam memilih definisi, tetapi itu tidak pernah menjadi faktor yang tidak dapat diatasi. Jika beberapa konstruksi membuat bukti tertentu lebih mudah, seseorang dapat menggunakan definisi itu dalam bukti khusus itu, dan membuktikan bahwa konstruksi itu setara dengan konstruksi lain yang dipilih sebagai definisi aslinya.
Q
=?=
Q
Angka sebenarnya adalah ketel ikan yang sama sekali berbeda karena mereka tidak dapat dibangun. Tidak mungkin untuk mendefinisikan bilangan real sebagai tipe induktif (semua tipe induktif dapat didenumerasikan). Sebagai gantinya, setiap definisi bilangan real harus aksiomatik, yaitu non-konstruktif. Dimungkinkan untuk membuat himpunan bagian yang dapat didenumerasi dari bilangan real; cara untuk melakukannya tergantung pada subset apa yang ingin Anda buat.
sumber
Jawaban Gilles adalah jawaban yang bagus, kecuali paragraf tentang bilangan real, yang sepenuhnya salah, kecuali fakta bahwa bilangan real memang merupakan ketel ikan yang berbeda. Karena informasi yang keliru semacam ini tampaknya cukup luas, saya ingin mencatat di sini bantahan terperinci.
Tidak benar bahwa semua tipe induktif dapat dihitung. Misalnya, tipe induktif
tidak dapat dinomori, karena diberikan urutan apa pun yang
c : nat -> cow
dapat kita bentukhorn c
yang tidak sesuai urutan oleh peternakan yang kuat. Jika Anda ingin pernyataan yang benar dari bentuk "semua jenis induktif dapat dihitung" Anda harus sangat membatasi konstruksi yang diizinkan.Bilangan real tidak dapat dengan mudah dibangun sebagai tipe induktif, kecuali bahwa dalam teori tipe homotopy, mereka dapat dibangun sebagai tipe induktif-induktif yang lebih tinggi , lihat Bab 11 buku HoTT . Dapat dikatakan bahwa ini curang.
Ada sejumlah konstruktif definisi dan konstruksi dari real, bertentangan dengan Gilles klaim. Mereka dapat secara luas dibagi menjadi dua kelas:
Konstruksi jenis Cauchy di mana real dilihat sebagai penyelesaian metrik angka-angka rasional. Konstruksi semacam ini sering kali membutuhkan negosiasi, walaupun orang mungkin bisa lolos dengan definisi coiunductive, bergantung pada bagaimana seseorang memperlakukan kesetaraan. Konstruksi naif biasanya memerlukan pilihan yang dapat dihitung juga, tetapi Fred Richman memberikan prosedur penyelesaian yang bekerja secara konstruktif tanpa pilihan, lihat bilangan real dan penyelesaian lainnya .
Di sisi implementasi, kami memiliki berbagai formalisasi konstruktif dari real (tetapi bukan yang ada di perpustakaan standar Coq yang hanya mengerikan), misalnya Robbert Krebbers dan Bas Spitters's Computer bersertifikat real sebenarnya yang efisien dalam Coq .
Untuk implementasi aktual dari bilangan real yang tepat, saya mengarahkan Anda ke iRRAM Norbert Müller .
sumber