divertimento e polarità dei tipi Pi


18

In un recente thread sulla mailing list di Agda, è emersa la questione delle leggi , in cui Peter Hancock ha fatto un'osservazione stimolante .η

La mia comprensione è che le leggi di tipi negativi, vale a dire. connettivi le cui regole di introduzione sono invertibili. Per disabilitare per le funzioni, Hank suggerisce di usare un eliminatore su misura, funsplit , invece della solita regola dell'applicazione. Vorrei capire l'osservazione di Hank in termini di polarità.ηηη

Ad esempio, ci sono due presentazioni -types. Esiste il tradizionale eliminatore di split Martin-Löf , in uno stile positivo:Σ

Γf:(a:A)(b:Ba)C(a,b)Γp:Σa:A.BΓsplitfp:Cp

E c'è la versione negativa:

Γp:Σa:A.BΓπ0p:AΓp:Σa:A.BΓπ1p:B[π0p/a]

Quest'ultima presentazione semplifica l'ottenimento di per le coppie, ad es. per qualsiasi coppia (dove == sta per l'uguaglianza di definizione). In termini di provabilità, questa differenza non ha importanza: intuizionisticamente, è possibile implementare le proiezioni con split o viceversa.( π 0 p , π 1 p ) = = p pη(π0p,π1p)==pp

Ora, i tipi di sono di solito (e non controverso, credo) presi negativamente:Π

Γf:Πa:A.BΓs:AΓfs:B[s/a]

Il che ci dà per le funzioni: .λ x . f x = = fηλx.fx==f

Tuttavia, in quella mail, Hank ricorda l' eliminatore funsplit (Programmazione nella teoria dei tipi ML, [http://www.cse.chalmers.se/research/group/logic/book/], p.56). È descritto nel framework logico da:

fΠ(A,B)C(v)Set[vΠ(A,B)]d(y)C(λ(y))[y(x)B(x)[xA]]funsplit(f,d)C(f)

È interessante notare che Nordstrom et al. motivare questa definizione dicendo che "[questa] forma non canonica alternativa si basa sul principio dell'induzione strutturale". C'è un forte odore di positività in questa affermazione: le funzioni sarebbero "definite" dal loro costruttore, .λ

Tuttavia, non riesco a delineare una presentazione soddisfacente di tale regola nella deduzione naturale (o, ancora meglio, nel calcolo sequenziale). L'uso (ab) del framework logico per introdurre sembra cruciale qui.y

Quindi, funsplit è una presentazione positiva di -types? Abbiamo anche qualcosa di simile nel calcolo sequenziale (non dipendente)? Come sarebbe?Π

Quanto è comune / curioso ciò per i teorici delle prove sul campo?

Risposte:


12

La presentazione di eliminazione funzionale utilizzando è sicuramente non poco frequenti nella maggior parte dei trattamenti di tipo teoria. Tuttavia, credo che questa forma sia davvero la presentazione "positiva" dell'eliminazione dei tipi funzionali. Il problema qui è che hai bisogno di una forma di corrispondenza dei modelli di ordine superiore, vedi ad esempio Dale Miller .funSpliot

Consentimi di riformulare la tua regola in modo più chiaro per me:

Γf:ΠX:UN.BΓ,z:ΠX:UN.BC:SetΓ,[X:UN]F(X):Be:C{λX:UN.F(X)/z}mun'tch f wioth λX:UN.F(X)e:C{f/z}

Dove è un meta-variabile di tipo B nel contesto x : A .FBX:UN

La regola di riscrittura diventa quindi:

mun'tch λX:UN.t wioth λX:UN.F(X)ee{t{u/X}/F(u)}

Ciò consente di definire l'applicazione come:

un'pp(t,u)=mun'tch t wioth λX:UN.F(X)F(u)

A parte il fatto che ciò richiede un sistema di tipo "a struttura logica" per essere valido, la seccatura (e la necessità limitata) di unificazione di ordine superiore rende questa formulazione impopolare.

Tuttavia, esiste un luogo in cui la distinzione positivo / negativo è presente in letteratura: la formulazione dei predicati delle relazioni logiche . Le due possibili definizioni (nel caso unario) sono

[[ΠX:UN.B]]={t|u[[UN]],tu[[B]]Xu}

e

[[ΠX:UN.B]]={t|t*λX.t',u[[UN]],t'{u/X}[[B]]Xu}

La seconda versione è meno comune, ma può essere trovata ad esempio in Dowek e Werner .


1
Ciò sembra essere correlato alla sintassi astratta di ordine superiore ampiamente utilizzata in Logical Framework. In particolare, la qui sembra essere la meta-funzione. F
giorno

13

Ecco una prospettiva leggermente diversa sulla risposta di Fredrik. È generalmente il caso che le codifiche impredicative dei tipi di Chiesa soddisfino le leggi pertinenti , ma non soddisfino le leggi η .βη

Quindi questo significa che possiamo definire una coppia dipendente come segue:

Ora, nota che π 1 è facilmente definibile: π 1 : x : X .

X:X.Y[X]α:*.(ΠX:X.Y[X]α)α
π1 Tuttavia, non si può definire il secondo di proiezione π 2 : Π p : ( x : X .
π1:X:X.Y[X]Xλp:(X:X.Y[X]).pX(λXy.X)
- provalo! Puoi solo definire un eliminatore debole per questo, motivo per cui l'ho scritto con un esistenziale.π2:Πp:(X:X.Y[X]).Y[π1p]

π2

In termini di calcolo sequenziale, l'eliminatore debole ha una regola che assomiglia un po 'a:

Γ,X:X,y:Y[X],Γ'e':CΓ,p:X:X.Y[X],Γ'let(X,y)=pione':C
pΓ'C
Γ,X:X,y:Y[X],[(X,y)/p]Γ'e':[(X,y)/p]CΓ,p:X:X.Y[X],Γ'let(X,y)=pione':C

1
Mi sto davvero godendo tutte queste risposte! Sento che esiste una nozione di "introspezione" (la capacità di sapere che un termine ha un valore) implicita nella risposta di Fredrik che è il vero problema con eta: la parametria implica che l'introspezione implica eta.
cody

10

Richard Garner ha scritto un bell'articolo sull'applicazione vs funsplit, Sulla forza dei prodotti dipendenti nella teoria dei tipi di Martin-Löf (APAL 160 (2009)), che discute anche la natura di ordine superiore della regola funsplit (con riferimento a Peter Schroeder-Heister's Una naturale estensione della deduzione naturale (JSL 49 (1984))).

Π

m:Π(UN,B)η(m):iodΠ(UN,B)(m,λX.mX)(Π-Puntello-η)
X:UNf(X):B(X)η(λ(f))=refl(λ(f)):iodΠ(UN,B)(λ(f),λ(f))(Π-Puntello-η-comp)

η(Π-Puntello-η-comp)

ΣSpliot

η(m): =refl(m)ηηηΣ

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.