Perché alcuni motori di inferenza hanno bisogno dell'assistenza umana mentre altri no?


16

Sto imparando il teorema automatizzato Proving / risolutori SMT / Proof Assistants da solo e postando una serie di domande sul processo, a partire da qui .

Perché i dimostratori di teoremi automatizzati, ovvero ACL2 e solutori SMT, non hanno bisogno dell'assistenza umana mentre lo fanno gli assistenti di prova, come Isabelle e Coq ?

Trova la prossima domanda della serie qui .

Risposte:


14

In genere la validità delle formule di ordine superiore non è decidibile e gli spazi di ricerca sono enormi , quindi tutto ciò che si può sperare di fare è cercare di trovare una prova - supponendo che esista - enumerando abilmente lo spazio di prova (pensa a mazza , giustamente chiamato) ma è rozzo. Gli umani possono giocare l'oracolo, fornendo i lemmati chiave per guidare la prova.

I tester automatici, d'altra parte, in genere si occupano solo di logiche decidibili (sottoinsiemi di), ad esempio logica proposizionale o sottoclassi di logica di primo ordine, quindi potrebbero durare a lungo ma sai che alla fine avranno successo.

Si noti che esistono approcci per consentire agli assistenti di prova di trovare quegli importanti Lemmi, ad esempio IsaPlanner . Lo strumento indovina i lemmi (induttivi) mediante enumerazione e test casuali e quindi cerca di dimostrarli. Esaminando il processo, è possibile trovare automaticamente molti lemmi, ad esempio di definizioni tipiche di tipi di dati.


Piccola ABC

  • validità : una formula è valida e contiene tutto ciò che assegni alle variabili libere.
  • variabili libere - quelle variabili che non sono vincolate da quantificatori come e
  • decidibilità - una proprietà (booleana) è (Turing) decidibile se esiste un algoritmo che risponde "sì" o "no" (correttamente) dopo un periodo di tempo finito.
  • logica proposizionale - anche logica di ordine zero ; nessuna quantificazione consentita.
  • X.P(X)f.f(4)>0
  • logica di ordine superiore - è possibile quantificare (e "costruire") oggetti arbitrariamente complessi, ad esempio funzioni di ordine superiore (funzioni che accettano funzioni).

@GuyCoder: non sono sicuro che sia fattibile, però. Non possiamo scrivere ogni risposta in modo che sia digeribile senza una conoscenza preliminare. Gli ATP sono cose avanzate; Non consiglierei a nessuno di impararli senza un solido background nella logica. Scrivere le risposte nel modo in cui sembri volerle può solo creare un'illusione di comprensione ma non aiuta davvero, imho. Quindi tutti coloro che sono interessati alle tue serie dovrebbero prima fare alcune logiche, che possiamo anche aiutare con - in altre domande.
Raffaello

7

Direi che la classica distinzione di "dimostrazione di teoremi automatizzati" (ATP) rispetto a "dimostrazione di teoremi interattivi" (ITP) deve essere riconsiderata. Se utilizzi un noto sistema ITP come Isabelle / HOL oggi (Isabelle2013 da febbraio 2013), integra un sacco di strumenti aggiuntivi dal portfolio ATP:

  • Strumenti di prova automatizzati generici di bordo: strumenti Isabelle della vecchia scuola come faste blast(di L. Paulson) e nuovi tester automatici come metis(di J. Hurd).

  • ATP esterni per la logica del primo ordine invocati tramite Sledgehammer: E prover, SPASS, Vampire. La prova che viene trovata viene analizzata per capire a quali lemmi hanno contribuito, riducendo da 10000 a 10 secondi e alimentando il risultato metis.

  • SMT esterni con ricostruzione a prova parziale, in particolare per Z3 (di S. Boehme).

  • Strumenti per trovare contro esempi di affermazioni non dimostrate: Nitpick / Kodkodi (J. Blanchette) e Quickcheck (L. Bulwahn).

Tutte queste cose automatizzate fanno di Isabelle un proveratore di teoremi automatizzato?

In definitiva, penso che la distinzione tra "ATP" e "ITP" sia solo una sorta di "etichetta" che dice come si desidera posizionare o "vendere" il proprio sistema: gli ATP affermano di essere "strumenti a pulsante", ma in pratica dovrai interagire (indirettamente), fornendo parametri o suggerimenti, o riformulando il tuo problema. Questo potrebbe effettivamente essere piuttosto impegnativo, a causa dei lunghi runtime che sono un luogo comune nella comunità ATP.

Al contrario, viene creato un sistema ITP per le persone in attesa sul posto, con accesso decente agli stati di prova interni, per vedere cosa manca per finire una prova. Un sistema ITP che avvolge gli strumenti ATP alla maniera di Isabelle potrebbe rivelarsi più attraente per più utenti e più applicazioni, rispetto a ITP o ATP da solo.


È passato un po 'di tempo, ma se non ricordo bene fastblastsono i dimostratori; sono fondamentalmente euristiche utilizzando determinate regole che possono trovare una prova. (Naturalmente, sono dimostratori di un sottoinsieme di formule adeguatamente piccolo, il che è vero per qualsiasi metodo di enumerazione delle prove.)
Raffaello

2
Quando dici "prover" intendi effettivamente "procedura decisionale" per una determinata lingua fissa? La maggior parte dei "prover" ATP sono procedure semi-decisionali, nel modo che hai caratterizzatofast e blast. Si noti che è blaststato presentato da L. Paulson come "Un programmatore di tableau generico e la sua integrazione con Isabelle" in alcuni seminari CADE - il documento è apparso in seguito in J. UCS 1999. Isabelle ha più "prove" e quel senso, ad esempio metis, ma anche procedure decisionali per alcune lingue speciali (sottoinsiemi di aritmetica).
Makarius,
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.