Ho quella che definirei una domanda filosofica su λ-calculus.
Quando esplori il calcolo λ rimarrai sorpreso nel vedere tutte le cose che puoi fare lì. È possibile definire numeri interi, operazioni aritmetiche, valori booleani, istruzioni if-then-else, loop, funzioni ricorsive, ecc. Credo che sia stato dimostrato computazionalmente completo.
D'altra parte, se consideri cosa puoi fare con le funzioni in λ-calcolo, ti rendi conto che l'unica cosa che puoi fare è dargli una funzione e restituisce un'altra funzione. E quel processo non finisce mai.
Quindi, come puoi estrarre un risultato da un calcolo?
Supponiamo che il risultato di un'espressione sia la funzione f
. Vuoi verificare se f
è quello che ti aspettavi. Puoi testarlo, assumere una funzione che conosci, applicarla f
e ricevere g
. Ma per verificare che g
sia corretto, ora è necessario verificare cosa g
fa. E ricomincia da capo. Quindi, come puoi dire qualcosa f
?
Mi sembra che puoi sostituire tutte le funzioni in λ-calcolo con una singola funzione, la funzione identità I = λx.x
, e tutto funziona ancora come descritto in λ-calcolo. Il numero della Chiesa 3
quando viene dato f
e x
ritorna f(f(f(x)))
. Ma poiché f
e x
può essere solo I
, ritorna I
. I
applicato a I
e I
restituisce anche I
. Quindi I
soddisfa la definizione di 3
. I "booleani" (λxy.x)
e hanno (λxy.y)
bisogno di 2 argomenti, che saranno I
e I
così ritorneranno entrambi i booleani I
. Ognuno equivale all'identità, anche se si comportano esattamente secondo le loro definizioni.
Quindi come fai la differenza? Come dimostrate che λ-calculus si occupa di più di una singola funzione?
Esiste un concetto di identità? Riesci a identificare immediatamente una funzione senza valutarla? Credo che sia stato dimostrato che non c'è modo di testare 2 funzioni per l'uguaglianza.
O λ-calcolo non riguarda le funzioni, ma la descrizione formale di ciò che fanno? Ciò significherebbe che le espressioni λ non solo definiscono ciò che fanno le funzioni, ma sono anche i dati che le funzioni manipolano. Così, quando si scrive A B
, non si applica A
a B
, ma si applica la funzione descritta dalla stringa A
di definizione formale di una funzione contenuta nel B
tornare un'altra definizione formale.
Cosa sta realmente succedendo in λ-calculus? Di quali oggetti matematici si occupa?
Azione supplementare:
OK, dalla risposta sotto sembra che λ-calcolo non sia tanto sulle funzioni in senso matematico, ma sul sottoinsieme di funzioni che possono essere espresse come espressioni λ. O ancora di più sulla manipolazione delle espressioni λ.