Endüktif tipteki beyanların sırası önemli midir?


9

Endüktif tipteki beyanların sırasının önemli olup olmadığını merak ediyordum.

Örneğin Coq'ta şunlardan Natbirini tanımlayabilirsiniz :

Inductive Nat :=
  | O : Nat
  | S : Nat -> Nat.

veya

Inductive Nat :=
  | S : Nat -> Nat
  | O : Nat.

Bu, otomatik olarak oluşturulan elimatördeki parametrelerin sırasını belki de değiştirecektir, ancak bu önemli değildir.

Merak ettiğim şey şöyle bir açıklama yazmak mümkün ise

Inductive typewhereordermatters :=
  | cons1 : type1
  | cons2 : type2.

type2bağımlı bir tür nerede , bağlı olarak cons1? (ve bu durumda, diğer sırayla beyanları yazmak hiçbir anlam ifade type2etmeyecektir , çünkü cons1henüz mevcut olmayanlara atıfta bulunacaktır ).

Yanıtlar:


10
  1. Sipariş önemli değil. Nerede olacağını düşünemiyorum. As Andrej Bauer yorumunda işaret, sen sırasını değiştirmek eğer sonuç orijinaline canonically izomorfiktir .

  2. Bir dava başka bir davaya bağlı olamaz. Toplamın unsurları bir seçimi temsil eder, bu nedenle alınan seçimin alınmayan bir seçime bağlı olması mantıklı değildir.


2
İlk noktanız hakkında daha spesifik olabilirsiniz. Sipariş önemli değil. Sırayı değiştirirseniz, sonuç orijinaline standart olarak izomorfik olur.
Andrej Bauer

2
@Dave: Teşekkürler! Bu fenomenin gerçekleştiği daha yüksek endüktif tipler (yüksek deneysel teori) nedeniyle bu soruyu soruyordum ve bunun düzenli endüktif tiplerde de geçerli olup olmadığını bilmek istedim.
Guillaume Brunerie

1
@Guillaume: Bağlantı ile hangi fenomene işaret ettiğinden emin değilim. Bir veri türü tanımının farklı yapıcı yan tümceleri, daha yüksek dereceli bir veri türü olsun ya da olmasın, birbirine bağlı olamaz. Belki bağımlı kayıtların düşünme (bağlantıda kullanılır ve temin edilebilir Agda içinde ve Coq )?
Noam Zeilberger

1
@Noam: Daha yüksek endüktif tip örneğinde circle, loopyapıcı tipi yapıcıya bağlıdır base.
Guillaume Brunerie

2
@Guillaume: Şimdi görüyorum (deneysel bir sözdizimi getiriyorlar), bunu nasıl özlediğimi bilmiyorum.
Noam Zeilberger

6

Sipariş, sorduğunuz şekilde önemli mi? Hayır.

Ancak bu düzen , kanıt asistanının işleyişi ile tamamen alakasız mı? Yine hayır. Matita yılında Coq çok benzer bir kanıtı asistanı kurucular bir endüktif tanımında yazılı sırası yapar tip bir maç ifadesini kontrol özellikle zaman, tür denetleme için olsun.

Matita öncelikle tüm inşaatçıların maçın gövdesinde eşleşip eşleşmediğini kontrol etmelidir. Bunu, yapıcılar arasında beyan edildikleri sırayla bisiklet sürerek yapar. Ardından, en son bildirilen yapıcı için durumu kontrol ederek ters sırayla gerçekleşen eşleşme ifadesini uygun şekilde kontrol etmek gelir. Bu tip daha sonra taşınır ve diğer durumları kontrol etmek için kullanılır.

Bu genellikle büyük bir eşleşme ifadesi yazarken ortaya çıkar. Öncelikle kolay vakaları doldurmak, daha zor vakaları bir joker karakter altında bırakmak istiyorsanız, mantıklı olduğundan emin olmak için yazdıklarınızı düzenli olarak yazın. Bazen Matita tamamlanmamış eşleme ifadesinin türünü çıkartamaz, ancak tümevarım türünde tanımlanan son kurucu için davayı doldurursanız oldukça mutlu olur.

Emin olmamakla birlikte, Coq'un benzer bir şey yaptığını düşünüyorum.

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.