Agda ve Coq arasında tür teorileri arasındaki en iyi bilinen ayrımlarla açıkça ilgili olmayan kafa karıştırıcı bir anlaşmazlık içinde bulundum (örneğin, (im) öngörüşlülük, indüksiyon özyinmesi vb.).
Özellikle, aşağıdaki tanım Agda tarafından kabul edilmiştir:
data Ty : Set0 -> Set0 where
c1 : Ty ℕ
c2 : Ty (Ty ℕ)
buna karşılık eşdeğer Coq tanımı reddedilmiştir, çünkü [Ty _] 'in c2'de bir indeks olarak görünmesinin kesin pozitifliği ihlal ettiği düşünülmektedir.
Inductive Ty : Set -> Set :=
| c1 : Ty nat
| c2 : Ty (Ty nat).
Aslında, bu dava, sıkı pozitifliği ihlal eden Coq'Art Bölüm 14.1.2.1'den bir örnek olarak neredeyse tartışılmıştır:
Inductive T : Set -> Set := c : (T (T nat)).
Ancak bu tip teoriler arasındaki farkın nedenlerini göremiyorum. Yapıcı argümanında bir türün negatif bir oluşumunu kullanarak False'yi kanıtlamanın klasik örneği benim için açıktır, ancak birinin bu indeksleme tarzından (aksi halde kesinlikle yapıcı argümanlardan bağımsız olarak) nasıl bir çelişki doğurabileceğini göremiyorum.
Dybjer'in ilk Endüktif Aileler makalesi, literatürü inceleyerek, Paulin-Mohring'in CID yazısındaki biraz farklı kısıtlamaları olan çözümü hakkında kesin bir yorumda bulunuyor ve belirsizliklerin farklılığı empredicativity ile ilgili olabileceğini, ancak daha fazla ayrıntılandırmadığını açıkça ortaya koyuyor. Dybjer'in makalesi buna izin veriyor gibi gözükse de, Paulin-Mohring açıkça bunu yasaklıyor.
Görünüşe göre bu görüş farkını ilk fark eden ben değilim ve bazıları bu tanımın herhangi bir sistemde izin verilmemesi gerektiğine inanıyor ( https://lists.chalmers.se/pipermail/agda/2012/004249.html ), fakat Bunun neden bir sistemde sağlam olduğu, diğeri değil ya da sadece bir fikir farklılığı ile ilgili herhangi bir açıklama bulamadım.
Sanırım birkaç sorum var:
- Bu monoton bir örnek, ancak kesinlikle olumlu olmayan bir tür mü? (Coq'da; açıkça Agda kesinlikle olumlu görüyor)
- Coq reddettiğinde Agda neden buna izin veriyor? Bu sadece "kesinlikle olumlu" nun yorumlanmasında kendine özgü bir farklılıktır, Coq ve Agda arasında Agda'da ses çıkaran ve Coq'da sağlam olmayan bir ince fark var mı, yoksa özel teorik tercihler tarafından yönlendirilen bir zevk meselesi mi?
- Yukarıdaki ilk tanım ile aşağıdaki eşdeğer endüktif-özyinelemeli tanım arasında anlamlı bir fark var mı?
Endüktif-özyinelemeli tanım:
mutual
data U : Set0 -> Set0 where
c : (i : Fin 2) -> U (T i)
T : Fin 2 -> Set0
T zero = ℕ
T (suc zero) = U ℕ
İlgili literatüre dair işaretçilerim olduğu için mutluyum.
Şimdiden teşekkürler.
Ty is not strictly positive, because it occurs in an index of the target type of the constructor c2 in the definition of Ty.