Dlaczego typy rekurencyjne są potrzebne jako prymitywy dla prób w systemach typu zależnego?

10

Jestem stosunkowo nowy w teorii typów i programowaniu zależnym. Studiowałem rachunek różniczkowy konstrukcji (CoC) i inne systemy czystego typu. Szczególnie interesuje mnie wykorzystanie go jako pośredniej reprezentacji zabezpieczającej system kompilatora.

Rozumiem, że typy (ko) rekurencyjne są reprezentatywne , obliczeniowo , przy użyciu jako jedynego konstruktora typów. Przeczytałem jednak, że nie można ich używać do budowania dowodów przez indukcję (wybacz mi, nie mogę teraz znaleźć gdzie!), Np. Że nie mogłem udowodnić, że 0 1 w zwykłym CoC (chociaż Nat można wpisać jako Π ( N : ) . Π ( S : NN ) . Π ( Z : N ) . N ).Π01NatΠ(N:).Π(S:NN).Π(Z:N).N

Zakładam, że właśnie dlatego zbudowali rachunek konstrukcji indukcyjnych (CIC). Czy to jest poprawne? Ale dlaczego? Nie mogłem znaleźć żadnego materiału wyjaśniającego, dlaczego takich dowodów nie można przedstawić bez użycia typów (ko) indukcyjnych jako prymitywów. Jeśli nie jest to prawdą, to po co dodawać je jako prymitywy w CIC?

paulotorrens
źródło

Odpowiedzi:

7

Nie jestem ekspertem, ale podam przykład z tego, co do tej pory rozumiałem.

Rozważmy typ boolowski w CoC, używając jego standardowego kodowania: Możemy się spodziewać, że będziemy w stanie udowodnić Π b : B b = t

B=Πτ:τττtt=λτ:,x:τ,y:τ. xff=λτ:,x:τ,y:τ. y
Rzeczywiście, szybko wynika to z zasady eliminacji / indukcji zależnej, którą mamy np. W CiC
Πb:Bb=ttb=ff()
Bind:ΠP:BP(tt)P(ff)Πb:BP(b)

Jednak tak naprawdę nie możemy oczekiwać (*) utrzymania we wszystkich modelach CoC! Intuicyjnie wartość w powinna z grubsza być rodziną funkcji przypisującą każdemu typowi wartość w interpretacji . Ale to nie zmusza do bycia jednym z wartości . Możemy mieć np. (Nieformalnie) { f τ } τB{fτ}ττ τ τ f τ t t , f f f N ( n ) ( m ) = n + mττττfτtt,ff

fN(n)(m)=n+m

Aby mieć pewność, że wartości są jedynymi możliwymi wartościami, musimy ograniczyć się do modeli parametrycznych . Rzeczywiście (tak sądzę) właściwość można udowodnić na podstawie dowolnego twierdzenia związanego z wielopisem .( ) Btt,ff()B

Jednak, o ile rozumiem, CoC nie wyklucza modeli ad-hoc, w których parametryczność nie obowiązuje. W niektórych z nich jest po prostu fałszem. Dzięki solidności w obecności kontrmodelu dochodzimy do wniosku, że nie jest zamieszkały w CoC. W związku z tym w CoC nie ma też wyrażenia .( ) B i n d()()Bind

chi
źródło
(λ(Nat:).(...))(Π(N:).Π(S:NN).Π(Z:N).N)SZ
paulotorrens
NatS,Znn(T)(ST)(ZT)=ZTTT=Bn(B)(S)(Z)=S(Z)nλT:.if T=B then n
ΠT:TTv(T)(x)=xTT=Nv(N)(x)=x+1