Perché il lavoro di Schönfinkel sull'eliminazione delle "variabili legate" nella logica era così cruciale?


15

AFAIK, La prima prova dell'uso di funzioni di ordine superiore risale al documento di Schönfinkel del 1924: "Sui mattoni della logica matematica" - dove ha permesso di passare funzioni come argomenti ad altre funzioni.

Sembra interessante. Tuttavia, tutto ciò che ho letto del suo lavoro (e di Curry per estensione) sembra alludere a una cosa in una forma o nell'altra: [funzioni di ordine superiore] ... questo elimina la necessità di variabili associate ...

Quello che non sono stato in grado di avvolgere la testa è: qual è il grosso problema? Perché ai logici e ai matematici di quel tempo importava questo? E noi teorici, ci preoccupiamo di questo oggi? Perché è stato "rivoluzionario" eliminare le variabili associate e quale impatto ha (o ha) avuto sull'informatica (teoricamente) come la conosciamo?

PS: Sono consapevole di come il suo lavoro abbia spianato la strada a -calculus e l'impatto di "esso" sull'informatica e sulla programmazione funzionale in generale. La mia domanda è principalmente rivolta al tempo "precedente" alla creazione di -calculus e "dopo" l'articolo di Schönfinkel. Il fatto che Curry raccolse in modo indipendente quella linea di lavoro, che in seguito fu conosciuta come "logica combinatoria" allude troppo all'importanza del lavoro di Schönfinkel.λλ


2
Il documento di Schönfinkel può essere trovato qui .
Martin Berger,

Risposte:


17

TL; DR. La metamatematica dell'associazione è sottile : sembrano banali ma non lo sono - sia che tu abbia a che fare con logiche (di ordine superiore) o 𝜆-calcolo. Sono così sottili che le rappresentazioni vincolanti formano un campo di ricerca aperto, con una competizione ( la sfida POPLmark ) alcuni anni fa. Ci sono anche battute da parte di persone sul campo sulla complessità degli approcci al legame.

Quindi, se ti interessa la metamatematica (e la maggior parte dei matematici no), devi occuparti di rilegatura. Ma molti matematici possono tranquillamente trattare la formalizzazione del legame come se fosse un problema "fondamentale".

Un altro punto è che il legame era l'unico "nuovo" problema nei linguaggi con funzioni di ordine superiore, perché la teoria dei linguaggi con legame è solo algebra (per le costanti) + legame. I "Fondamenti dei linguaggi di programmazione" di Mitchell presentano effettivamente le cose in questo ordine ed è piuttosto illuminante.

Sono consapevole di come il suo lavoro abbia spianato la strada al calcolo λ e all'impatto di "esso" sull'informatica e sulla programmazione funzionale in generale. La mia domanda è principalmente rivolta al tempo "precedente" alla creazione di λ-calculus e "dopo" l'articolo di Schönfinkel.

Mi manca qualcosa, ma questa osservazione sembra non fare alcuna differenza. Legare nelle logiche di ordine superiore e legare nel calcolo λ sembrano difficili, quindi finché le persone si preoccupano delle logiche di ordine superiore, devono fare i conti con la rilegatura. Sono di parte usando i dimostratori di teoremi basati sull'isomorfismo di Curry-Howard che implementano la logica semplicemente implementando una teoria dei tipi (in cui i tipi sono formule e i programmi sono termini di prova), quindi mi occupo solo di legare una volta.

D'altra parte, IIRC, all'epoca in effetti pochi si interessavano del lavoro di Schönfinkel - in parte a causa del modo in cui (non) lo pubblicò - i documenti erano per lo più scritti da colleghi sulla base delle ricerche fatte (vedi qui , pagina 4) ; Curry ha quindi riscoperto la teoria in modo indipendente.

Avvertenza: non sono uno storico, ma uno studente di dottorato in PL, quindi la mia è una prospettiva moderna (e si spera accurata) sull'argomento.

MODIFICARE:

Perché è vincolante sottile, un po 'più concretamente

Ci sono due aspetti: in primo luogo, implementarlo è difficile. In secondo luogo, la metamatematica è la matematica della manipolazione delle prove: questa manipolazione è in genere automatica, ovvero è un algoritmo , quindi essenzialmente si affrontano tutte le difficoltà di implementazione, oltre a formulare prove su di esse. Di seguito fornisco esempi. Gli esempi hanno una prospettiva moderna: si tratta di prove effettivamente formalizzate. Tuttavia, alcune delle difficoltà si estenderebbero a prove manuali accurate, purché non si tradiscano i dettagli.

Ciò dimostra che Schönfinkel ha semplicemente fornito la prima soluzione a questo problema, ma questo era tutt'altro che definitivo.

L'implementazione è sottile a causa dell'ombra

Il problema di base nell'implementazione è l'ombra. Di solito non si riutilizza lo stesso nome per diverse variabili associate. Ma non puoi evitarlo nel calcolo lambda, almeno perché le funzioni (e le loro variabili associate) sono duplicate: riduce a . Questo non è ancora un problema, ma a partire da ti dà e poi : ora devi occuparti dell'ombreggiamento. Puoi evitarlo, a costo di complicare la regola della riduzione beta.( λ x . x ) 1 + ( λ x . x ) 2 ( λ f x . f ( f x ) ) ( λ g y . g y ) z ( λ g y . g y ) ( λ(λf.f 1+f 2)(λX.X)(λX.X) 1+(λX.X) 2(λfX.f(fX)) (λgy.g y) z(λgy.g y) (λgy.g y) z(λy.(λgy.g y) y)  z

Una volta che hai diverse variabili con lo stesso nome, devi anche impedire l'acquisizione. L'esempio più semplice di acquisizione è quello dell'applicazione della funzione (restituisce il primo argomento) a non deve dare (la funzione identità), ma (una funzione costante).λXy.Xyλy.yλy'.y

Quel che è peggio è che i controesempi agli algoritmi ingenui sono difficili da costruire quando si conosce già il problema, figuriamoci quando non lo si fa. I bug negli algoritmi quasi corretti spesso rimangono inosservati per anni. Ho sentito che anche i bravi studenti in genere non riescono a trovare (da soli) la corretta definizione di sostituzione che evita la cattura. In effetti, i dottorandi (me inclusi) e i professori non sono esenti da questo problema.

Questo è uno dei motivi per cui alcuni (incluso uno dei migliori libri di testo su linguaggi di programmazione, Tipi e Linguaggi di programmazione di Benjamin Pierce) raccomandano la rappresentazione senza nome (non una logica abbastanza combinatoria, anche se è stata usata, ma piuttosto indici deBrujin).

Le prove a riguardo sono sottili

Si scopre che le prove sull'associazione non sono più semplici dell'implementazione, come menzionato sopra. Naturalmente, esistono algoritmi corretti ed esistono prove su di essi - ma senza macchinari avanzati, per ogni lingua che usa la rilegatura è necessario ripetere le prove e quelle prove sono semplicemente molto grandi e fastidiose se si usano le definizioni per la rilegatura su carta e penna .

BUNUNBB

Successivamente, ho cercato il mio miglior esempio di "cosa non va se provi a formalizzare la definizione standard". Russell O'Connor (che si trova su questo sito) ha formalizzato il primo teorema di incompletezza di Gödel in Coq (un teorema dimostratore del tipo sopra menzionato) - e che il teorema comporta una logica (con tutti gli algoritmi pertinenti) in un'altra logica (con la sintassi di la prima logica codificata come numeri). Ha usato le definizioni che sono usate sulla carta e le ha formalizzate direttamente. Cerca "sostituzione" o "variabile" e conta la frequenza con cui compaiono in riferimento ai problemi per ottenere un'impressione. http://r6.ca/Goedel/goedel1.html

Non uso mai quelle definizioni nel mio lavoro, ma ogni approccio alternativo ha qualche svantaggio.


Sono di parte usando i dimostratori di teoremi basati sull'isomorfismo di Curry-Howard, così che mi occupo solo di legare una volta - Potresti per favore elaborare cosa intendi?
Dottorato di ricerca

3
Dici che è sottile ma non dici mai cosa lo rende esattamente così e perché preoccupartene se sei un metamatico? Questa è la prospettiva che sto cercando.
Dottorato di ricerca

Al tuo primo commento: ho reso esplicito il collegamento con Curry-Howard, ma dovrò rimandarti a Wikipedia o ad un'altra domanda. Sono d'accordo con il tuo secondo commento; Elaborerò per le persone che non hanno familiarità con il calcolo lambda.
Blaisorblade,

@PhD: Spero che ciò che ho aggiunto aiuti un po ', anche se non sostituisce una buona lezione su questo materiale (e sfortunatamente, il materiale che ho tagliato è in genere distribuito tra molti altri materiali relativi a PPL).
Blaisorblade,

1
Grazie mille! Questo è stato davvero utile. Anche questo link potrebbe interessarti: home.uchicago.edu/~wwtx/Varfreelogic_revised.pdf - Logica del primo ordine senza variabili associate.
Dottorato di ricerca
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.