È ispirato da eventi reali, ma il modo in cui è affermato è appena riconoscibile e "dovrebbe essere considerato con sospetto" è una sciocchezza.
La coerenza ha un significato preciso nella logica: una teoria coerente è quella in cui non è possibile provare tutte le affermazioni. Nella logica classica, questo è equivalente alla mancanza di una contraddizione, cioè una teoria è inconsistente se e solo se v'è una dichiarazionetale che la teoria dimostra siae la sua negazione.AA¬A
Cosa significa questo per quanto riguarda il calcolo lambda? Niente. Il calcolo lambda è un sistema di riscrittura, non una teoria logica.
È possibile visualizzare il calcolo lambda in relazione alla logica. Considera le variabili come rappresentative di un'ipotesi in una prova, le astrazioni lambda come prove in una certa ipotesi (rappresentata dalla variabile), e l'applicazione come la messa insieme di una prova condizionale e una prova dell'ipotesi. Quindi la regola beta corrisponde a semplificare una dimostrazione applicando il modus ponens , un principio fondamentale della logica.
Questo, tuttavia, funziona solo se la dimostrazione condizionale è combinata con una dimostrazione della giusta ipotesi. Se hai una prova condizionale che assume e hai anche una prova di , non puoi combinarli insieme. Se si desidera far funzionare questa interpretazione del calcolo lambda, è necessario aggiungere un vincolo che solo le prove dell'ipotesi corretta vengano applicate alle prove condizionali. Questo è chiamato un sistema di tipi e il vincolo è la regola di battitura che dice che quando si passa un argomento a una funzione, il tipo di argomento deve corrispondere al tipo di parametro della funzione.n=3n=2
La corrispondenza Curry-Howard è un parallelo tra calcoli tipizzati e sistemi di prova.
- i tipi corrispondono alle dichiarazioni logiche;
- i termini corrispondono alle prove;
- i tipi abitati (cioè i tipi tali che esiste un termine di quel tipo) corrispondono alle affermazioni vere (ovvero le affermazioni tali che esiste una prova di tale affermazione);
- la valutazione del programma (vale a dire regole come la beta) corrisponde alle trasformazioni delle prove (che avrebbero trasformato meglio le prove corrette in prove corrette).
Un calcolo tipizzato che ha un combinatore di punti fissi come consente di costruire un termine di qualsiasi tipo (provare a valutare ), quindi se si prende l'interpretazione logica attraverso la corrispondenza Curry-Howard, si ottiene una teoria incoerente. Vedi Il combinatore Y contraddice la corrispondenza Curry-Howard? per ulteriori dettagli.YY(λx.x)
Questo non è significativo per il calcolo lambda puro, vale a dire per il calcolo lambda senza tipi.
In molti calcoli tipizzati, è impossibile definire un combinatore a punto fisso. Questi calcoli tipizzati sono utili rispetto alla loro interpretazione logica, ma non come base per un linguaggio di programmazione completo di Turing. In alcuni calcoli tipizzati, è possibile definire un combinatore a punto fisso. Quei calcoli digitati sono utili come base per un linguaggio di programmazione completo di Turing, ma non rispetto alla loro interpretazione logica.
In conclusione:
- Il calcolo lambda non è "incoerente", tale concetto non si applica.
- Un calcolo lambda tipizzato che assegna un tipo a ogni termine lambda è incoerente. Alcuni calcoli lambda digitati sono così, altri rendono alcuni termini non tipizzabili e sono coerenti.
- I calcoli lambda tipizzati non sono l'unica ragion d'essere per il calcolo lambda, e persino i calcoli lambda tipizzati incoerenti sono strumenti molto utili - solo per non provare le cose.