İ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:A→Type ö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:A→Type 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.