Verifica se una prova arbitraria è circolare?


13

Stavo pensando alle prove e mi sono imbattuto in un'osservazione interessante. Quindi le prove sono equivalenti ai programmi tramite l'isomorfismo di Curry-Howard e le prove circolari corrispondono a ricorsioni infinite. Ma dall'interruzione del problema sappiamo che, in generale, verificare se un programma arbitrario ricorre per sempre è indecidibile. Secondo Curry-Howard, ciò significa che non esiste un "correttore di prove" in grado di determinare se una prova utilizza un ragionamento circolare?

Ho sempre pensato che le prove dovessero essere composte da passaggi facilmente controllabili (che corrispondono alle applicazioni delle regole di inferenza), e il controllo di tutti i passaggi ti dà la certezza che la conclusione segue. Ma ora mi chiedo: forse è davvero impossibile scrivere un correttore di prove del genere, perché non c'è modo per aggirare il problema di arresto e rilevare il ragionamento circolare?

Risposte:


15

La stragrande maggioranza dei sistemi di prova non consente infinite prove circolari, ma lo fa rendendo completi i loro linguaggi.

Ya.(aa)a

aaa

La chiave qui è che il Y-combinatore è incorporato in una lingua, è preso come un assioma. Quindi se vuoi che non ti causi problemi, basta sbarazzartene come un assioma!

La maggior parte dei sistemi di dimostrazione formale, per questo motivo, richiede che la tua ricorsione sia fondata. Accettano solo le funzioni che possono provare si fermeranno. Di conseguenza, rifiutano alcuni programmi che si fermano, ma per i quali non possono provarlo.

Coq lo fa in modo abbastanza limitato: richiede solo che qualsiasi funzione ricorsiva abbia un argomento in cui qualsiasi chiamata ricorsiva utilizza solo versioni strettamente più piccole di tale argomento. Agda fa qualcosa di simile, ma con un po 'più di fantasia controlla di accettare qualche altro programma.


1
Coq esclude alcuni teoremi legittimi che altrimenti potresti provare? O ci sono sempre soluzioni alternative per quando il controllo di totalità è troppo conservativo? (Suppongo che la risposta sia la stessa per gli altri assistenti di prova basati sulla teoria dei tipi dipendenti?)
stovetop

1
@boyers FWIW, in Coq si possono usare Functiono Program Fixpointcostruzioni per dimostrare che una funzione è totale se il controllo di totalità fallisce. Un semplice esempio è la funzione di tipo merge sugli elenchi. È necessario dimostrare manualmente che abbiamo diviso gli elenchi (di lunghezza> 1) in elenchi strettamente più piccoli.
Anton Trunov,

@boyers Sì, ci devono essere cose che non puoi provare in Coq, secondo il primo teorema di Gödel. In pratica è raro incontrarli, ma c'è sempre l'argomentazione diagonale: Coq non può provare Coq stesso, può solo dimostrare un sottoinsieme (un sottoinsieme molto grande, mente, comprese tutte le caratteristiche ma con un limite inferiore su quanta ricorsione può gestire). Ricordo di aver letto che la teoria di Coq equivale agli assiomi di Peano più l'esistenza di un certo ordinale di grandi dimensioni (e quindi le prove che assumono un ordinale ancora più grande non possono adattarsi), ma non riesco a trovare il riferimento ora.
Gilles 'SO- smetti di essere malvagio'

@AntonTrunov In questo contesto, Programe simili sono un'aringa rossa. Non cambiano la teoria. Quello che fanno è lo zucchero sintattico per usare una misura in una prova: piuttosto che ragionare sull'oggetto che ti interessa diventa più piccolo, aggiungi un livello di riferimento indiretto: calcolare qualche altro oggetto diventa più piccolo (ad es. Una certa dimensione) e dimostrare che diventa più piccolo. Vedi la Wfbiblioteca
Gilles 'SO- smetti di essere malvagio'

@Gilles Pensavo che il contesto riguardasse il lato pratico (concreto), come quando l'euristica di Coq fallisce ... Potresti provare a trovare il documento che hai menzionato? Un link sarebbe molto apprezzato.
Anton Trunov,
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.