İndüksiyon-indüksiyon nedir?


11

Ne indüksiyon-indüksiyon ?

Bulduğum kaynaklar:

İlk iki referans benim için çok kısa, son iki referans ise çok teknik. Herkes layman'ın terimiyle açıklayabilir mi? Agda kodu varsa daha iyi olurdu.


Dördüncü alıntıda Agda kodu var.
Gilles 'SO- kötü olmayı bırak

Tabii, ama bu büyük miktarda kodu okumak çok zor olurdu. Ve (sanırım) sadece 1 veya 2 örnek görerek çok kolay.
盛安安

Yanıtlar:


13

Tamamlayıcı 2016-10-03: İndüksiyon indüksiyonunu ve indüksiyon- tekrarını karıştırdım (ilk kez yapmadım!). Dağınıklıktan dolayı özür dilerim. Cevabı her ikisini de kapsayacak şekilde güncelledim.

Açıklamaları Forsberg & Setzer'in makalesinde buluyorum Endüktif-endüktif tanımların aydınlatıcı sonlu bir aksiyomatizasyonu .

İndüksiyon-yineleme

Bir indüktif özyinelemeli tanım türü tanımlayan olduğu bir dengedir A ve tip bir aile B:AType özel bir şekilde eş zamanlı olarak:

  1. A , endüktif tip olarak tanımlanır.
  2. B ,A üzerindeki özyineleme ile tanımlanır.
  3. En önemlisi, A tanımı B kullanabilir .

Üçüncü gereklilik olmadan, önce A sonra ayrı olarak B tanımlayabiliriz .

İşte bir bebek örneği. Aşağıdaki kuruculara sahip olmak için A endüktif olarak tanımlayın :

  • a:A
  • :(x:AB(x))A

B tipi ailesi ,

  • B(a)=bool
  • B((x,f))=nat .

Peki, A ne var ? Her şeyden önce biz bir eleman var

a:A.
Bunun için, bir tür olduğu B(a) olarak tanımlanır bool . Bu nedenle, iki yeni elemanlar oluşturabilir
(a,false)
ve
(a,true)
içinde A . Şimdi B((a,false))=B((a,true))=nat , böylece hern:nat
((a,false),n):A
elemanları için de oluşturabiliriz ( ( a , f a l s e ) , n ) : A ve
((a,true),n):A
Böyle devam edebiliriz. Bir sonraki aşama, olacaktır, çünkü
B(((a,true),n))=nat
her için oradam:nat elemanı
(((a,true),n),m):A
ve
(((a,false),n),m):A
öğesi : A Devam edebiliriz. Biraz düşünme,A doğal bir listenin aşağı yukarı iki kopyası olduğunu ve ortak bir boş listeyi paylaştığınıortaya koyuyor. Nedenini bulmak için bir egzersiz olarak bırakacağım.

İndüksiyon-indüksiyon

Bir endüktif-endüktif tanım aynı zamanda bir tip A ve aynı zamanda bir tip B:AType ailesini tanımlar : A T y p e :

  1. A endüktif olarak tanımlanır
  2. B endüktif olarak tanımlanır veA
  3. En önemlisi, A , B atıfta bulunabilir .

İndüksiyon-özyineleme ve indüksiyon-indüksiyon arasındaki farkı anlamak önemlidir. İndüksiyon-özyinelemede , B ( c ( ) ) = formunun denklemlerini sağlayarak B tanımlarız , burada c ( ) A için bir yapıcıdır . Endüktif-endüktif bir tanımda , B'nin elemanlarını oluşturmak için yapıcılar sağlayarak B'yi tanımlarız .

B(c())=
c()ABB

Önceki örneğimizi, tümevarım-tümevarım olarak yeniden biçimlendirelim. İlk olarak endüktif olarak verilen tpye A sahibiz :

  • a:A
  • :(x:AB(x))A

B tipi aile aşağıdaki kurucular tarafından tanımlanır:

  • Tru:B(a)
  • Fal:B(a)
  • Eğer x:A ve y:B(x) daha sonra Zer:B((x,y))
  • Eğer x:A ve y:B(x) ve z:B((x,y)) daha sonra Suc(z):B((x,y)) .

Gördüğünüz gibi , B ( a ) ' nın booleanlar ( B ( ( x , y ) )' nin doğal sayılar (izomorfik ) olduğunu söyleyen miktarda B elementini üretmeye yönelik kurallar verdik .B(a)B((x,y))


neden birisi böyle veri türlerini
tanımlasın

7
Endüktif-endüktif tipin ne olduğunu öğretmek için. Size gerçek bir örnek verebilirim, yani bir tür evren, ama bu kafa karıştırıcı olurdu.
Andrej Bauer

3
@AndrejBauer Bu daha çok benim için indüksiyon-özyineleme gibi görünüyor. İndüksiyon-indüksiyon, tip ailesinin bir endüktif tip olarak tanımlandığı zamandır .
gallais

2
Hata! Kesinlikle haklısın. Ben tamir edeceğim.
Andrej Bauer

Etki alanı mı bir Sigma tipi yerine Pi tipi olması gerekiyordu?
Dan Christensen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.