L'induzione del percorso è costruttiva?


17

Sto leggendo il libro HoTT e faccio fatica a indurre il percorso.

Quando guardo il tipo nella sezione 1.12.1 :

ind=A:C:x,y:A(x=Ay)U((x:AC(x,x,reflx))x,y:Ap:x=AyC(x,y,p)),
non ho alcun problema a capire cosa significhi (ho appena scritto il tipo dalla memoria, per verificarlo).

Ciò di cui ho problemi è la seguente affermazione:

with the equalityind=A(C,c,x,x,reflx):≡c(x)
mia prima impressione è stata che quest'ultima espressione non definisce la funzione risultante
f:x,y:Ap:x=AyC(x,y,p),
ma indica semplicemente la sua proprietà .

Ciò è in contrasto con i precedenti esempi dei principi di induzione indA×B , indA+B o indN - ci sono equazioni che definiscono quegli elementi - sappiamo effettivamente come costruire la funzione risultante, date le premesse. Che è in accordo con la "costruttività" della teoria dei tipi pubblicizzata in tutto il capitolo.

Tornando a ind=A , ero sospettoso del fatto che (sembra) non sia definito. Dichiarare che l'elemento f esiste solo sembrava stonato con il resto del capitolo. E in effetti, la sezione 1.12.1 sembra sottolineare che la mia impressione è sbagliata e che in effetti abbiamo definito

... la funzione definita dall'induzione del percorso da c : x : A C ( x , x , refl x ) , che soddisfa anche f ( x , x , refl x )f:x,y:Ap:x=AyC(x,y,p),
c:x:AC(x,x,reflx)
...f(x,x,reflx):≡c(x)

Questo mi lascia completamente confuso, ma ho la sensazione che questo punto sia molto importante per tutti gli ulteriori sviluppi. Quindi con quale delle due letture per dovrei andare? O, probabilmente, mi manca qualche sottigliezza importante e la risposta è "nessuno dei due"? ind=A


A proposito, questa non è in realtà una domanda specifica per HoTT, ma una domanda più generale sui "tipi dipendenti".
cody

Risposte:


12

È un'illusione che le regole di calcolo "definiscano" o "costruiscano" gli oggetti di cui parlano. Hai correttamente osservato che l'equazione per non "la definisce", ma non hai osservato che lo stesso vale anche in altri casi. Consideriamo il principio di induzione per l'unità di tipo 1 , che sembra particolarmente evidentemente "determinato". Secondo la Sezione 1.5 del libro HoTT abbiamo i n d 1 : C : 1 T y p e C ( ) x : 1 Pind=A1 con l'equazione i n d 1 ( C , c , ) = c . Questo "definire" o "costrutto" i n d 1 , nel senso che essa non lascia dubbi su ciò che i n d 1 "fa"? Ad esempio, imposta C ( x ) = N e a = 42 e considera cosa potremmo dire di i n d 1 ( C , 42 ,

ind1:C:1TypeC()x:1P(x)
ind1(C,c,)=c.
ind1ind1C(x)=Na=42 per una determinata espressione e di tipo 1 . Il tuo primo pensiero potrebbe essere che possiamo ridurlo a 42 perché " è l'unico elemento di 1 ". Ma per essere abbastanza precisi, l'equazione per i n d 1 è applicabile solo se mostriamo e , cosa impossibile quando e è una variabile, per esempio. Possiamo provare a evitarlo e dire che siamo interessati solo al calcolo con termini chiusi, quindi e dovrebbe essere chiuso.
ind1(C,42,e)
e1421ind1eee

Non è forse il caso che ogni chiuso termine di tipo 1 è pari a judgmentally ? Dipende da dettagli sgradevoli e complicate prove di normalizzazione, in realtà. Nel caso di HoTT la risposta è "no" perché e potrebbe contenere istanze di Univalence Axiom, e non è chiaro cosa fare al riguardo (questo è il problema aperto in HoTT).e1e

Possiamo aggirare il problema con univalance considerando una versione della teoria tipo che non ha buone proprietà in modo che ogni termine chiuso di tipo è uguale a judgmentally . In questo caso è giusto dire che noi facciamo sappiamo come calcolare con i n d 1 , ma:1ind1

  1. Lo stesso vale per il tipo di identità, perché ogni termine chiuso di un tipo di identità sarà giudicato uguale in qualche , e quindi l'equazione per i n d = A ci dirà come calcolare.refl(a)ind=A

  2. Solo perché sappiamo come calcolare i termini chiusi di un tipo, ciò non significa che abbiamo effettivamente definito nulla perché c'è un tipo in più rispetto ai termini chiusi , come ho cercato di spiegare una volta.

Ad esempio, la teoria dei tipi di Martin-Löf (senza i tipi di identità) può essere interpretata dal dominio teoricamente in modo tale che contenga due elementi e , dove corrisponde a e alla non terminazione. Purtroppo, dal momento che non c'è modo di scrivere un'espressione non terminante nella teoria dei tipi, non può essere nominato. Di conseguenza, l'equazione per i n d 1 non ci dice come calcolare (le due scelte ovvie sono "avidamente" e "pigramente").1ind1

In termini di ingegneria del software, direi che abbiamo una confusione tra specifiche e implementazione . Gli assiomi HoTT per i tipi di identità sono una specifica . L'equazione non ci sta dicendo come calcolare o come costruire i n d = C , ma piuttosto che comunque io nind=C(C,c,x,x,refl(x))c(x)ind=C è "implementato", richiediamo che soddisfi l'equazione. È una domanda separata se tale i n d = C possa essere ottenuto in modo costruttivo.ind=Cind=C

Infine, sono un po 'stanco di come usi la parola "costruttivo". Sembra che tu pensi che "costruttivo" sia uguale a "definito". Secondo tale interpretazione l'oracolo di Halting è costruttivo, perché il suo comportamento è definito dal requisito che gli imponiamo (ovvero che produce 1 o 0 a seconda che la macchina data si arresti). È perfettamente possibile descrivere oggetti che esistono solo in un'impostazione non costruttiva. Al contrario, è perfettamente possibile parlare in modo costruttivo di proprietà e altre cose che non possono essere effettivamente calcolate. Eccone uno: la relazione definita da H ( n , d )HN×{0,1} è costruttivo, cioè non c'è nulla di sbagliato in questa definizione da un punto di vista costruttivo. Accade solo che costruttivamente non si può dimostrare che H è una relazione totale, e la sua mappa caratteristica χ H : N × { 0 , 1 } P r o p non tiene conto di b o o l

H(n,d)(d=1n-th machine halts)(d=0n-th machine diverges)
HχH:N×{0,1}Propbool, quindi non possiamo "calcolare" i suoi valori.

Addendum: il titolo della tua domanda è "L'induzione del percorso è costruttiva?" Dopo aver chiarito la differenza tra "costruttivo" e "definito", possiamo rispondere alla domanda. Sì, l'induzione del percorso è nota per essere costruttiva in alcuni casi:

  1. Se ci limitiamo alla teoria dei tipi senza Univalence in modo da poter mostrare una forte normalizzazione, allora l'induzione del percorso e tutto il resto sono costruttivi perché ci sono algoritmi che eseguono la procedura di normalizzazione.

  2. Esistono modelli di realizzabilità della teoria dei tipi, che spiegano come ogni termine chiuso nella teoria dei tipi corrisponda a una macchina di Turing. Tuttavia, questi modelli soddisfano Axiom K di Streicher, che esclude Univalence.

  3. Esiste una traduzione della teoria dei tipi (sempre senza Univalence) nella teoria degli insiemi costruttiva CZF. Ancora una volta, ciò convalida l'assioma di Streicher K.

  4. Esiste un modello groupoid all'interno dei modelli di realizzabilità che ci consente di interpretare la teoria dei tipi senza K. di Streicher. Questo è un lavoro preliminare di Steve Awodey e di me stesso.

Dobbiamo davvero chiarire lo stato costruttivo di Univalence.


Credo che questa risposta sia ora (parzialmente)
obsoleta

In effetti, nel frattempo la teoria dei tipi cubici ha dato una risposta postiva: esiste un modello costruttivo della teoria dei tipi univalente.
Andrej Bauer,

7

Non sono una persona HoTT, ma mi lancio i miei due centesimi.

Supponiamo di voler fare una funzione Come faremmo? Bene, supponiamo che ci venga data una qualsiasi x , y : A e una prova della loro uguaglianza p : x = A y . Dato che non so nulla del tipo arbitrario A , non so nulla della "struttura" di x , y

fA:x,y:Ap:x=AyC(x,y,p)
x,y:Ap:x=AyAx,y. Tuttavia, so qualcosa sul tipo di uguaglianza specifica: ha un solo costruttore, Quindi, p r e f l a per alcuni a : A , ma questo forzerebbe x = a = y . Quindi, se avessimo un elemento di C ( x , x , r e f l x ) per qualsiasi
refla:a=Aa, for any a:A
preflaa:Ax=a=yC(x,x,reflx) ; cioè se avessimo una funzione b a s e C : x : A C ( x , x , r e f l x ) (per la nostra specifica C ), allora la nostra funzione f A può essere definita come segue: f A ( x , y , p ) : = b a s e C ( x , x , p )x:A
baseC:x:AC(x,x,reflx)
CfA
fA(x,y,p):=baseC(x,x,p)
.

Sbarazzarsi degli indici porta alla definizione induttiva generale.

Spero possa aiutare!


eEE


1
Forse puoi dargli un senso, o almeno preoccuparti delle tue attuali intuizioni controllando math.andrej.com/2013/08/28/the-elements-of-an-inductive-type dove provo a spiegare perché è dannoso pensare che i termini chiusi di un tipo siano tutto ciò che c'è in un tipo.
Andrej Bauer,

2
refl

3

A×BA×B

pair : ABA×B
f A×Bpair

pairf:A×BCAB

f:ABC
fA×B
(ABC)(A×BC)
indA×B

Ma questa è solo metà della storia: cosa succede se questa nuova costruzione viene applicata a un dato p a i r ( a ,f pair(a,b)ff

f(pair(a,b)) := f a b
indA×B f pair(a,b) := f a b
=

Quindi vedi che la definizione di un eliminatore per tipo induttivo con determinati costruttori arriva in 2 passaggi:

  1. ind

  2. ind


Permettetemi di sostenere che questo è lo stesso per il =Ax,y:Ap:x=yCpx=y refl(z)z

f:Πx,y:A,x=yC
f:Πz:A,C
refl(z)C

ff

f z z refl(z):=f z

A×B=A

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.