Perché ai costruttivisti non sembra importare troppo di call / cc


15

Quindi un po 'di tempo fa per prima cosa qualcuno mi ha detto che call / cc poteva consentire oggetti di prova per prove classiche implementando la legge di Peirce. Di recente ho riflettuto sull'argomento e non riesco a trovare un difetto. Tuttavia, non riesco proprio a vedere nessun altro parlarne. Sembra privo di discussione. Cosa dà?

Mi sembra che se hai una costruzione come in qualche contesto, allora 1 di due cose è vera. O hai accesso a un'istanza qualche modo nel contesto attuale, nel qual caso il flusso di controllo non raggiungerebbe mai qui e siamo sicuri di assumere qualunque cosa OR dato che significa l'unico modo in cui può restituire è costruendo un'istanza di e applicandola due è l'argomento (un'istanza di . In tal caso, c'era già ALCUNO modo di costruire un'istanza dif : ¬ ( ¬ P ) f : ( P ) f P P ) Pf:¬(¬P)f:¬(¬P)f:(P)fPP)P; sembra ragionevole per call / cc estrarre questa costruzione per me. Il mio ragionamento qui mi sembra in qualche modo sospetto, ma la mia confusione è ancora valida. Se call / cc non sta semplicemente creando un'istanza di dal nulla (non vedo come sia) allora qual è il problema?P

Alcuni termini ben digitati che non contengono call / cc non hanno moduli normali? C'è qualche altra proprietà di tali espressioni che li rende sospetti? C'è qualche motivo noto per cui un costruttivista non dovrebbe gradire call / cc?



Risposte:


19

La matematica costruttiva non è solo un sistema formale, ma piuttosto una comprensione di ciò che la matematica riguarda. O, per dirla diversamente, non tutti i tipi di semantica sono accettati da un matematico costruttivo.

A un matematico costruttivo call/ccsembra imbrogliare. Considera come assistiamo a usando :p¬pcall/cc

  1. Forniamo una funzione che presumibilmente dimostra ¬ p . In realtà f è un sacco di trucchi.f¬pf
  2. Se qualcuno applica mai a una prova di p , allora f si scatena per ripristinare il tempo, e con una prova di p in mano, cambia idea su p ¬ p : questa volta affermando che si tratta di una prova di p .fpfcall/ccpp¬pp

La comprensione costruttiva della disgiunzione è la decidibilità algoritmica , ma quanto sopra difficilmente prende decisioni. Come test, un matematico costruttivo potrebbe chiederti come call/ccaiuta a dimostrare che ogni macchina di Turing si ferma o diverge. E a che cosa sta assistendo questo programma? (Dovrebbe essere l'Halting Oracle.)


Ah !! Penso che sia la cosa gentile che stavo cercando.
Jake,

9

Come notate, esiste una possibile interpretazione costruttiva della logica classica in questo senso. Il fatto che la logica classica sia coerente con la logica intuizionistica (diciamo, Heyting Arithmetic) è noto da tempo (già nel 1933, ad esempio Godel ) usando una doppia traduzione della negazione.

Da un argomento più sofisticato, si può dimostrare che l'aritmetica di Peano è conservativa rispetto all'HA per le dichiarazioni . L'essenza del risultato è che le prove classiche di Π 0 2 che coinvolgono c a l l / c c hanno lo stesso contenuto computazionale di un'istruzione senza quel costrutto (mediante una trasformazione CPS ).Π20Π20cun'll/cc

Tuttavia, ciò non è vero per le dichiarazioni sopra : le dichiarazioni in Σ 0 3 , dimostrabili in PA, potrebbero non avere una forma normale suscettibile di estrarre un testimone! Gli informatici potrebbero non interessarsi del calcolo con prove a questo livello, ma è in qualche modo scomodo per considerazioni filosofiche : abbiamo provato l'esistenza di qualcosa o no?Π20Σ30

Penso che questo riassuma il motivo per cui "fissare" la logica non costruttiva mediante l'aggiunta di potrebbe non essere soddisfacente.cun'll/cc

Detto questo, c'è molto lavoro che esplora gli aspetti computazionali del calcolo all'interno del framework "Curry-Howard classico", ad esempio la macchina Krivine, il calcolo di Parigot ( ) e molti altri. Vedi qui per una panoramica.λμ¯μ~

Infine, potrebbe essere utile notare che mentre la situazione è piuttosto ben compresa nel calcolo del predicato e nei casi aritmetici, le teorie più potenti sono molto meno esplorate. Ad esempio, IIRC, ZFC è conservativo su IZF anche per frasi (ZFC è conservativo su ZF per frasi aritmetiche e ZF è conservativo su IZF), il che suggerisce che esiste un significato computazionale per l'assioma della scelta. Tuttavia questo è un campo di ricerca molto attivo ( Krivine , Berardi et al. )Π20

Modifica: una domanda molto rilevante su mathoverflow appare qui: /mathpro/29577/solved-sequent-calculus-as-programming-language


1
Questa equità è vera in modo costruttivo?
Geoffrey Irving,

3
¬¬

Ciò che si intende per "potrebbe non avere una forma normale suscettibile di estrarre un testimone". Significa solo semanticamente che questi termini hanno un fondo per la semantica o significa qualcosa di sconosciuto?
Jake,

3
UN¬UNinr (fun x -> callcc(...))UN

Fatto. Grazie! Sto ancora digerendo parti della tua risposta. Non ho molta familiarità con la gerarchia aritmetica, quindi mi ci è voluto un po 'di più per l'elaborazione.
Jake,

8

Sono d'accordo con la risposta di Andrej e Cody. Tuttavia, penso che valga la pena menzionare anche perché i costruttivisti dovrebbero preoccuparsi degli operatori di controllo (call / cc).

¬¬PP

Π20

PΣ10

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.