Qual è il logaritmo o l'operazione root nello spazio dei tipi?


27

Recentemente ho letto Le due dualità del calcolo: tipi negativi e frazionari . Il documento si espande su tipi di somma e tipi di prodotto, dando semantica ai tipi a - be a/b.

A differenza dell'aggiunta e della moltiplicazione, non ci sono una ma due inversioni di esponenziazione, logaritmi e radicamento. Se i tipi di funzione (a → b) sono esponenziali di tipo teorico, dato il tipo a → b(o b^a) che cosa significa avere il tipo logb(c)o il tipo a√c?

Ha senso estendere i logaritmi e le radici ai tipi?

In tal caso, c'è stato del lavoro in questo settore e quali sono alcune buone indicazioni su come comprendere le ripercussioni?

Ho provato a cercare informazioni su questo tramite la logica, sperando che la corrispondenza Curry-Howard potesse aiutarmi, ma senza risultati.

Risposte:


40

Un tipo ha un logaritmo a base X di P esattamente quando C ≅ P → X . Cioè, C può essere visto come un contenitore di X elementi in posizioni definite da P . In effetti, si tratta di una questione di chiedere a quale potere P dobbiamo alzare X per ottenere C .CXPC≅P→XCXPPXC

Ha senso lavoro con dove F è un funtore, quando esiste il logaritmo, cioè l o glog⁡FF . Si noti che se FlogX(FX) , quindi abbiamo sicuramente FFX≅log⁡F→X , quindi il contenitore non ci dice nulla di interessante oltre ai suoi elementi: i contenitori con una scelta di forme non hanno logaritmi.F1≅1

Le leggi familiari dei logaritmi hanno senso quando si pensa in termini di set di posizioni

log⁡(K⁡1)=0no positions in empty containerlog⁡I=1container for one, one positionlog⁡(F×G)=log⁡F+log⁡Gpair of containers, choice of positionslog⁡(F⋅G)=log⁡F×log⁡Gcontainer of containers, pair of positions

Abbiamo anche guadagnare dove Z = l o glogX(νY.T)=μZ.logXT sotto il raccoglitore. Cioè, ilpercorsodi ciascun elemento in alcuni codata è definito induttivamente iterando il logaritmo. Per esempio,Z=logXY

log⁡Stream=logX(νY.X×Y)=μZ.1+Z=Nat

Dato che la derivata ci dice il tipo in contesti a un buco e il logaritmo ci dice posizioni, dovremmo aspettarci una connessione, e infatti

F1≅1⇒log⁡F≅∂F1

Laddove non è possibile scegliere la forma, una posizione è uguale a un contesto a un foro con gli elementi cancellati. Più in generale, rappresenta sempre la scelta di unaforma F insieme a una posizione dell'elemento all'interno di quella forma.∂F1F

Temo di avere poco da dire sulle radici, ma si potrebbe partire da una definizione simile e seguire il proprio naso. Per ulteriori usi dei logaritmi di tipi, controlla "Funzioni memo di Ralf Hinze, politipicamente!". Devo correre ...


3
La risposta dello stesso Da Man. Benvenuto Conor!
— Andrej Bauer,

Hmm, mi interessa vedere quali sono i tipi di radice, in quanto richiederebbero tipi con un numero immaginario di abitanti. A meno che non mi sbagli. Accetterò la tua risposta, ma se avessi il tempo di approfondire le radici sarebbe molto apprezzato.
— efrey,

Questo può essere in qualche modo correlato alla serie Taylor di ln (1 + x)?
— yatima2975,

2
Con logaritmi ed esponenziali, mi chiedo ... di cosa abbiamo bisogno per costruire un oggetto Napier ? (ad esempio l'oggetto apparentemente unico in emodo tale ∂e = e)
— Rhymoid

1

Non conosco alcun lavoro che persegue questa linea, ma alcuni momenti pensandoci mi hanno portato a questa ipotesi: la "radice" del tipo esponenziale non sarebbe solo il codice, e il "logaritmo" dell'esponenziale solo il dominio?


Bene, quindi penso che la tua intuizione sia buona ma la tua conclusione è spenta. L'operazione root e l'operazione logaritmica sono ciò che ottieni quando "inverti" rispettivamente il codomain o il dominio, non i (co) domini stessi. La domanda è: cosa intendiamo per inversione e qual è l'operazione di tipo binario che produce?
— efrey,

xyyxxy

Spiacente, non sono stato del tutto chiaro nella mia terminologia. Non intendo chiedere "qual è la radice, qual è il risultato dell'applicazione della funzione logaritmo". Mi chiedo quale sia l'operazione di rooting. Qual è l'operazione di ricerca del logaritmo. Se si →tratta di expenentiation, quali sono due tipi sotto l'operazione di root. Quali sono due tipi nell'operazione logaritmo. Ciò che intendo per "invertire l'argomento" è qualcosa che non c'è tempo per spiegare qui. Chiarirò la mia domanda, grazie.
— efrey,

Il documento che ho collegato fornisce una semantica per il tipo a - be il tipo a / b. Non mi preoccupo del risultato della riduzione del logaritmo e della radice delle operazioni, ma della comprensione della loro semantica come operatori di tipo binario.
— efrey,
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.