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 .CXPCPXCXPPXC

Ha senso lavoro con dove F è un funtore, quando esiste il logaritmo, cioè l o glogFF . Si noti che se FlogX(FX) , quindi abbiamo sicuramente FFXlogFX , quindi il contenitore non ci dice nulla di interessante oltre ai suoi elementi: i contenitori con una scelta di forme non hanno logaritmi.F11

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

log(K1)=0no positions in empty containerlogI=1container for one, one positionlog(F×G)=logF+logGpair of containers, choice of positionslog(FG)=logF×logGcontainer 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

logStream=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

F11logFF1

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.