Bağımlı tip sistemlerde ispatlar için ilkel olarak özyinelemeli tiplere neden ihtiyaç duyulmaktadır?


10

Tip teorisi ve bağımlı programlama konusunda nispeten yeniyim. İnşaat hesabı (CoC) ve diğer saf tip sistemleri inceliyorum. Özellikle bir derleyici sistemi için kanıt koruyucu bir ara gösterim olarak kullanmakla ilgileniyorum.

Anlıyorum özyinelemeli türleri Temsil olan (co-) , hesaplama kullanarak, tek tip yapıcı olarak. Bununla birlikte, indüksiyonla kanıt oluşturmak için kullanılamayacaklarını okudum (beni affet, şimdi nerede bulamıyorum!), Örneğin, düz CoC'de kanıtlayamadığımı ( , ).Π01NatΠ(N:).Π(S:NN).Π(Z:N).N

Sanırım bu yüzden endüktif konstrüksiyon hesabını (CIC) inşa ettiler. Bu doğru mu? Ama neden? Bu tür kanıtların neden ilkel olarak (ko-) endüktif tipler kullanılmadan temsil edilemediğini açıklayan hiçbir malzeme bulamadım. Bu doğru değilse, neden onları CIC'de ilkel olarak eklemelisiniz?

Yanıtlar:


7

Ben uzman değilim, ama şimdiye kadar anladığımı bir örnekle paylaşacağım.

Standart kodlamasını kullanarak CoC'deki boolean türünü ele alalım: Biz kanıtlamak mümkün olması beklenebilir Gerçekten de, bu hızla izler örneğin CiC

B=Πτ:τττtt=λτ:,x:τ,y:τ. xff=λτ:,x:τ,y:τ. y
Πb:Bb=ttb=ff()
Bind:ΠP:BP(tt)P(ff)Πb:BP(b)

Ancak, (*) 'in tüm CoC modellerinde olmasını beklemiyoruz! Sezgisel olarak, bir değer , kabaca fonksiyonları bir aile olmalıdır her tür atama yorumlanmasında değeri . Ancak bu, değerleri arasında bir tane olmaya . Örneğin (resmi olmayan) B{fτ}τττττfτtt,ff

fN(n)(m)=n+m

değerlerinin olası tek değerler olduğundan emin olmak için kendimizi parametrik modellerle sınırlamamız gerekir . Aslında (bence) özelliği , polytype ilişkili serbest teoremden kanıtlanabilir .tt,ff()B

Ancak, anladığım kadarıyla, CoC parametrikliğin olmadığı geçici modelleri dışlamaz. Bazılarında, basitçe yanlıştır. Sağlamlıkla, bir karşı modelin varlığında, in CoC'de bulunmadığı sonucuna varıyoruz . Sonuç olarak, terimi yoktur.()()Bind


Takip ettiğimden emin değilim. Örneğin, , Nat için yapıcılar yapabilmemin birçok yolu var, ancak sonuçta bunların her ikisi de veya ? (λ(Nat:).(...))(Π(N:).Π(S:NN).Π(Z:N).N)SZ
paulotorrens

@paulotorrens Mantık içinde, evet, bunların tek seçenek olduğuna inanıyorum. Ancak CoC (bir ad-hoc modeli) bir modelinde, değerleri olabilir ile tanımlanamaz . Doğal bir değer düşünün olacak şekilde her türlü haricinde burada yerine . değeri çoğu tipte "sıfır" ve booleanlar için "bir" olarak davranır. yazamıyoruz bu değeri tanımlamak için kullanılır , ancak geçici bir modelde bu değer yine de mevcut olabilir. NatS,Znn(T)(ST)(ZT)=ZTTT=Bn(B)(S)(Z)=S(Z)nλT:.if T=B then n
chi

@paulotorrens düşünüyorsanız, sorunu daha kolay anlayabilirsiniz . Bu tip sadece (polimorfik) kimlik tarafından ikamet edilir ve parametrik modellerde bu tip için gerçekten mümkün olan tek değerdir. Ancak, bir ad-hoc modelinde, bir değer tanımlayabilir her türlü ancak için burada . ΠT:TTv(T)(x)=xTT=Nv(N)(x)=x+1
chi
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.