Una delle cose potenti che i compilatori sono in grado di fare durante la loro fase di ottimizzazione è di scambiare rappresentazioni inefficienti con equivalenti. Ad esempio, in Haskell è possibile utilizzare un elenco pigro per calcolare una somma di numeri, ma il compilatore GHC Haskell riconoscerà che ciò equivale a utilizzare l'iterazione con una variabile temporanea. In questo modo, puoi programmare contro una semplice astrazione di cui è facile ragionare, mentre il tuo eseguibile sfrutta una rappresentazione più adatta alla piattaforma hardware (e che risulta essere molto più difficile da ragionare su larga scala).
Tuttavia, le equivalenze note al compilatore sono per lo più limitate a strutture di dati ben note e ricercate, come la fusione di flussi per elenchi. Potresti definire le tue equivalenze nel codice sorgente (usando una coppia di funzioni di conversione che compongono l'identità in entrambe le direzioni), ma dovresti applicarle manualmente e può essere difficile scegliere il tipo giusto da usare in tutti i luoghi al fine di evitare conversioni eccessive.
Ora immaginiamo un mondo in cui puoi definire "tipi induttivi superiori", diciamo una mappa di ricerca canonica. Questo tipo ha diversi costruttori per i vari tipi di mappe: ricerca binaria, AVL, rosso-nero, Trie, Patricia, ecc. Insieme ai costruttori di dati tipici, si definisce anche un tipo di equivalenza che acquisisce eventualmente più conversioni tra queste rappresentazioni, dove diverse le conversioni offrono diverse dimensioni di efficienza (ovvero tempo rispetto alla memoria).
E se il compilatore fosse in grado di utilizzare questa nozione per riscrivere in modo trasparente le rappresentazioni delle mappe, come può fare oggi con la fusione di elenchi? Nel frattempo, nel tuo codice puoi lavorare con la costruzione che è più semplice ragionare (e semplifica il lavoro di prova, se ti trovi in un ambiente simile). Può sembrare un'interfaccia astratta con più implementazioni, ma include la libertà di scegliere qualsiasi implementazione e far sì che il compilatore ne sostituisca in modo trasparente un altro secondo necessità, senza influire sul significato del programma.
HoTT ci fornisce una base teorica di tipo per giustificare questo meccanismo di riscrittura di fantasia e questi tipi ben definiti, perché promuove la nozione di equivalenza ad essere equivalente all'uguaglianza. Resta da vedere come questo si realizzerà nella pratica, ma ci fornisce il quadro teorico su cui basare il lavoro futuro.