È 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 PI n d=UN1
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 ,
I n d1: ∏C: 1 → T y p eC( ⋆ ) → ∏x : 1P( x )
I n d1( C, c , ⋆ ) = c .
I n d1I n d1C( 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.
I n d1( C, 42 , e )
e142⋆1I n d1e ≡ ⋆ee
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).e1⋆e
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:1⋆I n d1
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
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").1⊥⊤⊤⋆⊥⊥ind1⊥
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 )H⊆N×{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=1⇒n-th machine halts)∧(d=0⇒n-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:
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.
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.
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.
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.