Agda ve Coq neden kesin bir pozitifliğe katılmıyorlar?


24

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:

  1. Bu monoton bir örnek, ancak kesinlikle olumlu olmayan bir tür mü? (Coq'da; açıkça Agda kesinlikle olumlu görüyor)
  2. 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?
  3. 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.


1
Bildiğim kadarıyla, Coq, temel teorinin izin verdiğinden daha katıdır, çünkü pratikte uygulanması daha kolay ve kullanışlıdır. Farklı ancak ilgili bir dava hakkındaki bu cevap , anlayışımın olduğu sürece.
Gilles 'SO- kötülük' dur '29

1
Bu tanım Ty is not strictly positive, because it occurs in an index of the target type of the constructor c2 in the definition of Ty.
Agda'nın

2
Evet, haklısın, dün gece bana birileri bunu işaret etti. Debian'ın 2.3.0.1 paketini kullanıyordum, ancak Cabal'dan 2.3.2.1 hem doğrudan hem de IR tanımlarını reddetti. Görünüşe göre ilgisiz bir hata indeksleri denetleme pozitifliği yapılmış gibi görünüyor: code.google.com/p/agda/issues/detail?id=690 Listede açıkça bir sağlamlık sorunu işaretlenmeden tartışıldığından beri hala türün kendisinin sağlam olup olmadığını merak ediyorum.
Colin Gordon

Yanıtlar:


10

Mesele, iki faktörün birleşmesinden kaynaklanan karışıklık gibi görünüyor:

  1. Agda'nın (2.3.0.1) eski bir sürümünü kullanıyordum. Görünüşe göre 2.3.2'den önce Agda, yapıcı sonuçların endekslerinin kesin pozitifliğini kontrol etmiyordu (konuya başka bir yerde bağladığım hataya bakınız).
  2. Dybjer'in Endüktif Aileleri makalesinin daha yakından okunması , bir yapıcı sonucunun indekslerini yazarken tanımlanmış olan indüktif tipin sınırlandırılmaması gerektiğini tasarladığını öne sürer . Bölüm 3.2.1 nesirdeki endüktif yapıcılar için şema verir ve görünüşe göre programın her bir bölümünün bağlanma ortamlarını tanımlayan dili yanlış anladım.

Bu daha yakın okuma, elbette, T'nin kendi indekslerinde herhangi bir görünümünü yasaklayan Coq ve (son sürümleri) Agda'nın yaptığı kontrolle tutarlıdır.


4

Farklılığın olası bir nedeni, kendi düşünceleriniz gibi, belirsizliklerdir. Coq'un tarihsel olarak belirleyici olmayan bir seti vardı (hala inanıyorum bir bayrak olarak kullanılabilir!)

Adam Chlipala'nın kitabından alıntı http://adam.chlipala.net/cpdt/html/Universes.html

Coq araçları, Set'i belirsiz hale getirerek Gallina'yı daha temel bir şekilde değiştiren komut satırı bayrağını -etredicative-set'i destekler. Forall T gibi bir terim: Set, T, Set türüne sahiptir ve Set'teki endüktif tanımlar, herhangi bir tür argümanlarını ölçen yapıcılara sahip olabilir. Tutarlılığı korumak için Prop kısıtlamasına benzer şekilde bir eleme sınırlaması uygulanmalıdır. Kısıtlama, yalnızca bazı yapıcıların bir tip Tip üzerinde miktarları belirlediği büyük endüktif tipler için geçerlidir. Bu gibi durumlarda, bu endüktif tipteki bir değer, sadece türü Set veya Prop olan bir sonuç tipi elde etmek için desen eşleştirilebilir. Bu kural, kısıtlamanın büyük olmayan endüktif tipler için bile geçerli olduğu Prop kuralına aykırıdır. ve sonuç türünün yalnızca Prop türüne sahip olabileceği yerlerde Coq'un eski sürümlerinde, Set varsayılan olarak belirsizdir. Daha sonraki sürümler, Set'i bazı klasik aksiyomlarla tutarsızlıktan kaçınmak için öngörücü yapar. Özellikle, tercih edilen aksiyomlarla emprendik Set kullanırken dikkatli olunmalıdır. Dışlanan orta veya kestirim uzantısının düşüklüğü ile birlikte, tutarsızlık ortaya çıkabilir. Impredicative Set doğası gereği impredicative matematiksel kavramları modellemek için yararlı olabilir, ancak hemen hemen tüm Coq gelişmeler onsuz iyi geçiniyor.


Yukarıda bulduğum hata düzeltmesinin sesinden Agda, yapıcı sonuçların endekslerinin pozitifliğini kontrol etmiyormuş gibi geliyor. Bu aslında benim önerdiğim türün monoton olup olmadığını göstermiyor, ancak empredicativity ile ilgili olmadığını gösteriyor.
Colin Gordon

2
Ve evet, -predicdicative-set, Set’i Coq’ta imkansız kılar.
Colin Gordon
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.