İlk olarak, olası bir bilişsel uyuşmazlığı gidermek: sonsuz yapılar hakkında düşünmek sorun değil, bunu her zaman yapıyoruz. Yapı son derece açıklanabilir olduğu sürece, bu bir problem değil. İşte birkaç yaygın sonsuz yapı türü:
- diller (sonlu olabilen bazı alfabelere göre dizeler kümesi);
- ağaç dilleri (bazı alfabelerin üzerindeki ağaç kümeleri);
- deterministik olmayan bir sistemin yürütme izlerini;
- gerçek sayılar;
- tamsayı kümeleri;
- tam sayılardan tam sayılara kadar fonksiyon kümeleri; ...
En büyük sabitleme noktası olarak ortak iletkenlik
Endüktif tanımların, temel yapı taşlarından bir yapı oluşturduğu durumlarda, ortak tanımlamalar yapıları yapılarının nasıl yapılandırılabileceğinden şekillendirir. Örneğin, elemanları bir kümede bulunan listelerin türü A
Coq'da şöyle tanımlanır:
Inductive list (A:Set) : Set :=
| nil : list A
| cons : A -> list A -> list A.
list
nil
cons
∀xy,nil≠consxy
CoInductive colist (A:Set) : Set :=
| conil : colist A
| cocons : A -> colist A -> colist A.
list
bir altküme izomorfiktir colist
. Buna ek olarak, colist
sonsuz listeleri içerir: listelerini ile cocons
üzerine cocons
.
CoFixpoint flipflop : colist ℕ := cocons 1 (cocons 2 flipflop).
CoFixpoint from (n:ℕ) : colist ℕ := cocons n (from (1 + n)).
flipflop
1::2::1::2::…from 0
0::1::2::…
Sonuç küçük bloklardan oluşturulmuşsa özyinelemeli bir tanım iyi oluşturulmuştur: özyinelemeli çağrılar daha küçük girdilerde çalışmalıdır. Sonuç, daha büyük nesneler oluşturursa, tutarlı bir tanım iyi oluşturulmuştur. İndüksiyon, inşaatçılara bakar, coinduction yıkıcılara bakar. Dualitenin nasıl daha küçükten büyüğe değil, aynı zamanda çıkışlara nasıl girdi yaptığını not edin. Örneğin, yukarıdaki flipflop
ve from
tanımlarının iyi biçimlendirilmiş olmasının nedeni, cocons
her iki durumda da korecifif çağrının yapıcıya yapılan bir çağrı ile korunmasıdır .
Endüktif nesneler hakkındaki ifadelerin indüktif provalara sahip olduğu durumlarda, endüktif nesneler hakkındaki ifadelerin de ortak provaları vardır. Mesela, sınırlayıcılar üzerindeki sonsuz yüklemeyi tanımlayalım; sezgisel olarak, sonsuz kolistler bitmeyen kişilerdir conil
.
CoInductive Infinite A : colist A -> Prop :=
| Inf : forall x l, Infinite l -> Infinite (cocons x l).
Formun destekçilerinin from n
sınırsız olduğunu kanıtlamak için, eşgüdümle gerekçe gösterebiliriz. from n
eşittir cocons n (from (1 + n))
. Bu, coinduction hipotezi ile sınırsız from n
olandan daha büyük olduğunu from (1 + n)
ve dolayısıyla from n
sınırsız olduğunu gösterir.
Eşdeğerlik, ortak bir özellik
Kanıtlama tekniği olarak tamamlama da parasal nesnelere uygulanır. Sezgisel olarak konuşursak, bir nesneye ilişkin endüktif ispatlar nesnenin nasıl inşa edildiğine dayanır. Ortak deliller, nesnenin nasıl parçalanabileceğini temel alır.
Deterministik sistemler üzerinde çalışırken, endüktansı endüktif kurallar ile tanımlamak yaygındır: eğer birinden diğerine bir dizi dönüşümle ulaşabiliyorsanız iki sistem aynıdır. Bu tür tanımlamalar, deterministik olmayan sistemlerin, farklı iç yapıya sahip olmalarına rağmen, aynı (gözlenebilir) davranışa sahip olmaları ile sonuçlanabilecek birçok farklı yolu yakalama konusunda başarısız olma eğilimindedir. (Coinduction, aynı zamanda, determinist olsalar bile, sonlandırmayan sistemleri tanımlamak için kullanışlıdır, ancak burada odaklanacağım şey bu değildir.)
Eşzamanlı sistemler gibi belirsiz sistemler genellikle etiketli geçiş sistemleri tarafından modellenir . Bir LTS, kenarların etiketlendiği yönlendirilmiş bir grafiktir. Her kenar sistemin olası bir geçişini temsil eder. Bir LTS izi, grafikteki bir yol üzerindeki kenar etiketlerinin dizisidir.
ABSL→R⊆S×S
∀(p,q)∈R, if p→αp′ then ∃q′,q→αq′ and (p′,q′)∈R
ABBAR
R1R2R1∪R2
Yaygınlık ortak bir özelliktir. Bir operatörün en büyük sabitleme noktası olarak tanımlanabilir: eşdeğer durumları tanımlamak için genişletildiğinde aynı kalan en büyük ilişkidir.
Referanslar