Saya pernah mendengar tentang induksi (struktural). Ini memungkinkan Anda untuk membangun struktur yang terbatas dari yang lebih kecil dan memberi Anda prinsip-prinsip bukti untuk alasan tentang struktur tersebut. Idenya cukup jelas.
Tapi bagaimana dengan coinduction? Bagaimana cara kerjanya? Bagaimana seseorang dapat mengatakan sesuatu yang konklusif tentang struktur yang tak terbatas?
Ada (setidaknya) dua sudut untuk mengatasi, yaitu, coinduction sebagai cara mendefinisikan sesuatu dan sebagai teknik bukti.
Mengenai coinduksi sebagai teknik pembuktian, apa hubungan antara koinduksi dan bisimulasi?
terminology
logic
proof-techniques
formal-methods
coinduction
Dave Clarke
sumber
sumber
Jawaban:
Pertama, untuk menghilangkan kemungkinan disonansi kognitif: menimbang tentang struktur tak terbatas bukanlah masalah, kami melakukannya sepanjang waktu. Selama strukturnya dapat dideskripsikan secara halus, itu bukan masalah. Berikut adalah beberapa jenis umum struktur tak terbatas:
Koinduktivitas sebagai fixpoint terbesar
Di mana definisi induktif membangun struktur dari blok bangunan elementer, definisi koinduktif membentuk struktur dari bagaimana mereka dapat didekonstruksi. Sebagai contoh, tipe daftar yang elemen-elemennya ada dalam suatu himpunan
A
didefinisikan sebagai berikut dalam Coq:Secara informal,∀xy,nil≠consxy
list
tipe ini adalah tipe terkecil yang berisi semua nilai yang dibangun darinil
dancons
konstruktor, dengan aksioma yang . Sebaliknya, kita dapat mendefinisikan tipe terbesar yang berisi semua nilai yang dibangun dari konstruktor ini, menjaga aksioma diskriminasi:list
isomorfik ke subset daricolist
. Selain itu,colist
berisi daftar tak terbatas: daftar dengancocons
saatcocons
.flipflop
adalah infinite (daftar bundar) ; adalah daftar tak terbatas dari bilangan asli .from 0
Definisi rekursif terbentuk dengan baik jika hasilnya dibangun dari blok yang lebih kecil: panggilan rekursif harus bekerja pada input yang lebih kecil. Definisi korecurif terbentuk dengan baik jika hasilnya membangun objek yang lebih besar. Induksi melihat konstruktor, koinduksi melihat destruktor. Perhatikan bagaimana dualitas tidak hanya mengubah lebih kecil menjadi lebih besar tetapi juga input ke output. Misalnya, alasan
flipflop
danfrom
definisi di atas terbentuk dengan baik adalah bahwa panggilan korektif dijaga oleh panggilan kecocons
konstruktor dalam kedua kasus.Jika pernyataan tentang objek induktif memiliki bukti induktif, pernyataan tentang objek koinduktif memiliki bukti koinduktif. Sebagai contoh, mari kita mendefinisikan predikat tak terbatas pada kolis; secara intuitif, koloni tak terbatas adalah yang tidak berakhir dengan
conil
.Untuk membuktikan bahwa kolis dalam bentuk itu
from n
tidak terbatas, kita dapat bernalar dengan coinduction.from n
sama dengancocons n (from (1 + n))
. Ini menunjukkan bahwafrom n
lebih besar daripadafrom (1 + n)
, yang tak terbatas oleh hipotesis coinduction, karenanyafrom n
tak terbatas.Bisimilaritas, properti koinduktif
Coinduction sebagai teknik pembuktian juga berlaku untuk benda-benda yang memiliki keterbatasan. Secara intuitif, bukti induktif tentang suatu objek didasarkan pada bagaimana objek itu dibangun. Bukti koinduktif didasarkan pada bagaimana objek dapat diuraikan.
Saat mempelajari sistem deterministik, adalah umum untuk mendefinisikan kesetaraan melalui aturan induktif: dua sistem setara jika Anda dapat berpindah dari satu ke yang lain dengan serangkaian transformasi. Definisi seperti itu cenderung gagal menangkap banyak cara yang berbeda dari sistem non-deterministik yang pada akhirnya memiliki perilaku yang sama (dapat diamati) walaupun memiliki struktur internal yang berbeda. (Coinduction juga berguna untuk menggambarkan sistem non-terminating, bahkan ketika mereka deterministik, tetapi ini bukan apa yang akan saya fokuskan di sini.)
Sistem nondeterministik seperti sistem konkuren sering dimodelkan dengan sistem transisi berlabel . LTS adalah grafik terarah di mana tepinya diberi label. Setiap tepi mewakili kemungkinan transisi sistem. Jejak LTS adalah urutan label tepi di atas jalur dalam grafik.
Dua LTS dapat berperilaku identik, karena mereka memiliki jejak yang sama mungkin, bahkan jika struktur internal mereka berbeda. Grafik isomorfisme terlalu kuat untuk mendefinisikan kesetaraannya. Sebaliknya, LTS dikatakan mensimulasikan LTS jika setiap transisi LTS kedua menerima transisi yang sesuai di yang pertama. Secara formal, misalkan adalah penyatuan yang terpisah dari status kedua LTS, set label (umum) dan hubungan transisi. Relasi adalah simulasi jikaA B S L → R⊆S×S
Ada banyak potensi bisimulasi dalam LTS. Bisimulasi yang berbeda mungkin mengidentifikasi keadaan yang berbeda. Diberikan dua dan , hubungan yang diberikan dengan mengambil gabungan grafik relasi sendiri merupakan bisimulasi, karena negara-negara terkait memunculkan negara-negara terkait untuk kedua hubungan. (Ini berlaku untuk serikat tak terbatas juga. Relasi kosong adalah bisimulasi yang tidak menyimpang, seperti juga relasi identitas.) Secara khusus, penyatuan semua bisimulasi itu sendiri adalah bisimulasi, yang disebut bisimilaritas. Bisimilaritas adalah cara paling kasar untuk mengamati suatu sistem yang tidak membedakan antara keadaan yang berbeda.R1 R2 R1∪R2
Bisimilaritas adalah properti koinduktif. Ini dapat didefinisikan sebagai titik fixpoint terbesar dari operator: itu adalah hubungan terbesar yang, ketika diperluas untuk mengidentifikasi keadaan yang setara, tetap sama.
Referensi
Coq dan kalkulus konstruksi induktif
Sistem transisi dan bisimulasi berlabel
Davide Sangiorgi. Pi-Calculus: Teori Proses Bergerak . Cambridge University Press, 2003. [ Amazon ]
Sebuah bab dalam Bersertifikat Programming dengan Jenis Dependent oleh A. Chlipala
sumber
Mari kita perhatikan definisi induktif berikut:
Apa itu ? Jelas, himpunan string tanpa dua berikutnya , yaituT b
Baik? Nah, yang kita butuhkan untuk itu adalah kalimat yang tidak berbahaya "dan adalah himpunan terkecil yang memenuhi kondisi ini". Cukup benar, karena jika tidak akan berfungsi.T T={a,b}∗
Tetapi ada lebih dari itu. Tulis definisi di atas sebagai fungsi (monoton) :f:2Σ∞→2Σ∞
Sekarang adalah fixpoint terkecil dari . Faktanya, karena adalah monoton dan adalah kisi yang lengkap , teorema Knaster-Tarski memberi tahu kita bahwa fixpoint terkecil seperti itu ada dan merupakan bahasa yang tepat. Karena ini bekerja dengan definisi induktif yang masuk akal, kami biasanya tidak membicarakan hal ini. Itu hanya sesuai dengan intuisi kita: kita mulai dengan dan menerapkan aturan langkah demi langkah; dalam batasnya, kita mendapatkan . f f ( 2 Σ ∞ , ⊆ )T f f (2Σ∞,⊆) {ε} T
Sekarang kita membalikkan keadaan. Alih-alih mengatakan "jika disertakan, begitu juga " kami katakan "jika disertakan, jadi pasti ". Kita tidak bisa membalikkan jangkar, jadi itu hilang. Itu membuat kita memiliki masalah: kita harus bisa mengambil awalan panjang yang sewenang - wenang dari kata apa pun di dan tetap di ! Ini tidak mungkin dengan kata-kata yang terbatas; Untung saya menyelinap di atas! Kita berakhir dengan kumpulan kata-kata tanpa batas tanpa faktor (substring) , yaitu .w aw aw w T′ T′ Σ∞ bb T′=L((ba∣a)ω)
Dalam hal , adalah fixpoint² terbesarnya . Ini sebenarnya cukup intuitif: kita tidak bisa berharap untuk menekan dari bawah , yaitu secara induktif dengan mulai dari dan menambahkan hal-hal yang memenuhi aturan, jadi kita pergi dari atas , yaitu dengan menginduksi dengan memulai dari dan menghapus hal-hal yang tidak sesuai dengan aturan.f T′ T′ {ε} Σ∞
Notasi:
¹ Anda tidak diizinkan melakukan hal-hal seperti ; fungsi yang sesuai tidak akan menjadi monoton. ² Kita harus menyapu bawah karpet.w∈T⇒aw∉T
{ε}
sumber
We can not turn the anchor around, so it goes away
.