
179ba0bef7e0fc33f19a4907d85c96f4.ppt
- Количество слайдов: 44
Otter: een op resolutie gebaseerde stellingenbewijzer voor 1 e-orde logica met gelijkheid Gerard Vreeswijk
Inhoud • Herkomst Otter • Klein voorbeeld (met unit deletion) • Set-of-support resolutie • Otter’s given clause loop (Stap 1, 2, 3, 4) • Voorbeelden – Binaire resolutie – $-evaluatie • Otter’s given clause loop, Stap 4: de beoordeling of een nieuw afgeleide resovent behouden moet blijven Nog enkele voorbeelden – Demodulatie (= termherschrijven)
Otter: herkomst • Organized Techniques for Theorem proving and Effective Research • William W. Mc. Cune, et al. • Eind 20 e eeuw (1987 - ) • Argonne National Laboratory, Argonne, Illinois • 1 e-orde stellingenbewijzer • Hyper-resolutie • Set-of-support strategie • Typische aanroep: otter < file. in > file. out
Voorbeeld input Otter set(binary_res). set(print_lists_at_end). assign(stats_level, 1). Parameters (eerste twee zijn “flags”) list(usable). -Greek(x) | Person(x). -Person(x) | Mortal(x). end_of_list. Usable clauses list(sos). Greek(socrates). end_of_list. Set-of-support clauses
Otter 3. 2, August 2001 ----Started by dosuser on JISLUM, Thu Jan 4 16: 26: 01 2011 The command was "c: /local/otter. exe". set(binary_res). dependent: set(factor). dependent: set(unit_deletion). set(print_lists_at_end). assign(stats_level, 1). list(usable). 1 [] -Greek(x)|Person(x). 2 [] -Person(x)|Mortal(x). end_of_list. Huishoudelijk Initialiseren van afhankelijke parameters (“flags”) Echo de oorspronkelijke input list(sos). 3 [] Greek(socrates). end_of_list. ======= end of input processing =======
Daarna: verslag van zoekproces 1 [] -Greek(x)|Person(x). # USABLE 2 [] -Person(x)|Mortal(x). # USABLE 3 [] Greek(socrates). # SOS ====== start of search ====== Given clause is altijd één van de lichtste (~ kortste) clauses uit de Set of Support given clause #1: (wt=2) 3 [] Greek(socrates). ** KEPT (pick-wt=2): 4 [binary, 3. 1, 1. 1] Person(socrates). given clause #2: (wt=2) 4 [binary, 3. 1, 1. 1] Person(socrates). ** KEPT (pick-wt=2): 5 [binary, 4. 1, 2. 1] Mortal(socrates). given clause #3: (wt=2) 5 [binary, 4. 1, 2. 1] Mortal(socrates). Deze clause werd afgeleid, toegevoegd aan de SOS, en meteen weer geselecteerd als ====== end of search ====== volgende “given clause” Search stopped because sos empty.
Daarna: een dump van de uiteindelijke “Usable” en “SOS” list(usable). 1 [] -Greek(x)|Person(x). 2 [] -Person(x)|Mortal(x). 3 [] Greek(socrates). 4 [binary, 3. 1, 1. 1] Person(socrates). 5 [binary, 4. 1, 2. 1] Mortal(socrates). end_of_list(sos). end_of_list(demodulators). end_of_list.
Daarna: wat statistieken ------- statistics ------clauses given 3 clauses generated 2 clauses kept 2 clauses forward subsumed 0 clauses back subsumed 0 Kbytes malloced 63 ------ times (seconds) -----user CPU time 0. 00 (0 hr, 0 min, 0 sec) system CPU time 0. 00 (0 hr, 0 min, 0 sec) wall-clock time 0 (0 hr, 0 min, 0 sec) binary_res time 0. 00 for_sub time 0. 00 back_sub time 0. 00 conflict time 0. 00 Process 0 finished Thu Jan 4 16: 26: 01 2011
Unit deletion • unit_deletion Als deze vlag gezet is dan zal unit deletion toegepast worden op nieuwe clauses. • Unit deletion verwijdert een literal van een nieuwe clause als die literal een instantie is van een negatie van een unit clause in USABLE of SOS. • Voorbeeld. Stel dat p(a, x) | q(a, x) gegenereerd wordt en -q(u, v) is aanwezig. Dan wordt q(a, x) gestript. • Stel -q(u, b) is aanwezig [ i. p. v. -q(u, v) ]. Dan wordt q(a, b) NIET gestript. Immers, x zou dan gebonden worden.
Set-of-support strategie • Gegeven een model m, verdeel clause set C in tweeën: – C 1 z. d. d. m ⊨ C 1 – Set of support C 2 =Def C – C 1 • Restrictie: elke resolvent moet afstammen van tenminste één voorouder uit set of support m⊨ Usable Set of Support C • Stelling: onder deze restrictie is resolutie nog steeds compleet. (Bewijs in o. a. Chang & Lee, 1971, of in Schöning, 1985. Beide boeken recent heruitgegeven. )
Set-of-support strategie • USABLE is vervulbaar • USABLE met SOS zou onvervulbaar moeten zijn • Altijd minstens één van de ouders afstammeling van SOS (!) nooit alle ouders uit usable USABLE (consistent) SOS (inconsistent)
Volledigheid set-of-support resolutie volgt uit volledigheid lineaire resolutie SOS (inconsistent) USABLE (consistent) (Bewijs uit Schöning, pp 104105. ) • SOS is inconsistent SOS bevat ten minste één clause • Lineaire resolutie is volledig lineaire resolutie refutatie R vanuit SOS • R is meteen SOS refutatie!
Otter’s given-clause loop 1. Selecteer een clause C uit de SOS 2. Breng C naar USABLE 3. Genereer alle resolventen C, U 1, …, Un R 4. Vereenvoudig R, bekijk wat kan worden weggegooid (bijv. R zelf, of resolventen) 5. Voeg (evt. bewaarde) R toe aan SOS
Otter’s given-clause loop USABLE SOS
Raadsel: wat gaat Otter doen met onderstaande input? set(binary_res). set(very_verbose). formula_list(usable). p. -p | q. -p | -q | r. -r. end_of_list. formula_list(sos). end_of_list.
====== start of search ====== Search stopped because sos empty. ====== end of search ====== ------- statistics ------clauses given 0 clauses generated 0 binary_res generated 0 demod & eval rewrites 0 clauses wt, lit, sk delete 0 tautologies deleted 0 clauses forward subsumed 0 (subsumed by sos) 0 unit deletions 0 factor simplifications 0 clauses kept 0 new demodulators 0 empty clauses 0 clauses back demodulated 0 clauses back subsumed 0 usable size 4 sos size 0 demodulators size 0 passive size 0
Binaire resolutie set(binary_res). clear(unit_deletion). clear(factor). set(very_verbose). formula_list(usable). p. -p|q. -p| -q|r. end_of_list. formula_list(sos). -r. end_of_list.
list(usable). 1 [] p. 2 [] -p|q. 3 [] -p| -q|r. end_of_list(sos). 4 [] -r. end_of_list. ====== start of search ====== given clause #1: (wt=1) 4 [] -r. 0 [binary, 4. 1, 3. 3] -p| -q. ** KEPT (pick-wt=2): 5 [binary, 4. 1, 3. 3] -p| -q. 5 back subsumes 3.
====== start of search ====== given clause #1: (wt=1) 4 [] -r. 0 [binary, 4. 1, 3. 3] -p| -q. ** KEPT (pick-wt=2): 5 [binary, 4. 1, 3. 3] -p| -q. 5 back subsumes 3. given clause #2: (wt=2) 5 [binary, 4. 1, 3. 3] -p| -q. 0 [binary, 5. 1, 1. 1] -q. ** KEPT (pick-wt=1): 6 [binary, 5. 1, 1. 1] -q. 0 [binary, 5. 2, 2. 2] -p| -p. ** KEPT (pick-wt=1): 7 [binary, 5. 2, 2. 2] -p. ----> UNIT CONFLICT at 0. 05 sec ----> 8 [binary, 7. 1, 1. 1] $F.
Length of proof is 2. Level of proof is 2. -------- PROOF -------- 1 [] p. 2 [] -p|q. 3 [] -p| -q|r. 4 [] -r. 5 [binary, 4. 1, 3. 3] -p| -q. 7 [binary, 5. 2, 2. 2] -p. 8 [binary, 7. 1, 1. 1] $F. ------ end of proof ------ Search stopped by max_proofs option. ====== end of search ======
$-Evaluatie • Een hamburger kost y, een cola kost z. • We bestellen x maaltijden, bestaande uit een hamburger en een cola. • Otter kan afleiden wat we dienen te betalen voor willekeurige x, y en z. • Niet zo bijzonder dat Otter dat kan. • Wel interessant om te zien hoe Otter dat doet.
Input voor prijsberekening set(hyper_res). set(very_verbose). assign(stats_level, 0). list(usable). -O(x, y, z) | B($PROD(x, $SUM(y, z))). end_of_list(sos). O(3, 2, 2). end_of_list.
====== start of search ====== 1 [] -O(x, y, z) | B($PROD(x, $SUM(y, z))). given clause #1: (wt=4) 2 [] O(3, 2, 2). 0 [hyper, 2, 1] B($PROD(3, $SUM(2, 2))). demod term: 3. demod term: 2. demod term: $SUM(2, 2). demod term: $PROD(3, 4). demod term: B(12). after demodulation: 0 [hyper, 2, 1, demod] B(12). ** KEPT (pick-wt=2): 3 [hyper, 2, 1, demod] B(12). given clause #2: (wt=2) 3 [hyper, 2, 1, demod] B(12). Search stopped because sos empty. ====== end of search ======
Natuurlijke deductie in Otter • Peano, 1889: “Principes van de Rekenkunde gepresenteerd met een Nieuwe Methode” (Arithmetices principia, nova methodo exposita) • Precisering van werk van Dedekind, 1888. • Negen axioma’s: vier bt. gelijkheid (refl. , symm. , trans. + gesloten onder gelijkheid), twee bt. eenduidigheid van zg, successorfunctie, een bt. natuurlijke deductie. • Twee axioma’s bt. definitie van getal. 1. N(1) 2. N(x) → N(S(x)) “ 1 is een getal” Inductie : “als x een getal is, dan is S(x) dat ook”
list(usable). 1 [] n(1). % 1 is een getal 2 [] -n(x)|n(s(x)). % als x een getal is, is de % opvolger van x dat ook end_of_list. list(sos). 3 [] -n(s(s(1))). % 3 is geen getal end_of_list. ======= end of input processing ======= start of search ====== given clause #1: (wt=4) 3 [] -n(s(s(1))). 0 [binary, 3. 1, 2. 2] -n(s(1)). ** KEPT (pick-wt=3): 4 [binary, 3. 1, 2. 2] -n(s(1)). given clause #2: (wt=3) 4 [binary, 3. 1, 2. 2] -n(s(1)).
0 [binary, 3. 1, 2. 2] -n(s(1)). ** KEPT (pick-wt=3): 4 [binary, 3. 1, 2. 2] -n(s(1)). given clause #2: (wt=3) 4 [binary, 3. 1, 2. 2] -n(s(1)). 0 [binary, 4. 1, 2. 2] -n(1). ** KEPT (pick-wt=2): 5 [binary, 4. 1, 2. 2] -n(1). ----> UNIT CONFLICT at 0. 00 sec ----> 6 [binary, 5. 1, 1. 1] $F. Length of proof is 2. Level of proof is 2. -------- PROOF --------1 [] n(1). 2 [] -n(x)|n(s(x)). 3 [] -n(s(s(1))). 4 [binary, 3. 1, 2. 2] -n(s(1)). 5 [binary, 4. 1, 2. 2] -n(1). 6 [binary, 5. 1, 1. 1] $F. ------ end of proof -------
Otter’s given-clause loop 1. Selecteer een clause C uit de SOS 2. Breng C naar USABLE Een complex 3. Genereer alle resolventen proces C, U 1, …, Un R 4. Vereenvoudig R, bekijk wat kan worden weggegooid (bijv. R zelf, of resolventen) 5. Voeg (evt. bewaarde) R toe aan SOS
1. Hernoem variabelen (x, y, z, u, v, w, v 1, v 2, v 3, v 4, . . . ) * 2. Print de boodschap dat resolvent R gevonden is. 3. Herschrijf, of demoduleer, R (inclusief $-evaluatie). * 4. Oriënteer gelijkheden (dwz flip “=“ zonodig voor demodulatie). * 5. Pas unit deletion toe op R. 6. Merge identieke literals. Stap 4 uit Otter’s * 7. Pas factorisatie toe (proces lijkt op 6). * 8. Gooi R weg en exit als R te lang is. given clause loop 9. Gooi R weg en exit als R een tautologie is. voor resolvent R * 10. Gooi R weg en exit als R te zwaar is. * 11. Sorteer literals alfabetisch. * 12. Gooi R weg en exit als R superset is van een andere clause uit USABLE of SOS (forward subsumption). 13. Voeg R toe aan SOS. * 14. Print de boodschap dat resolvent R bewaard is. 15. Als R leeg is dan is een refutatie gevonden. 16. Als R unit clause is, doorzoek SOS en USABLE voor mogelijke resolutie met R. * 17. Print een bewijs als refutatie is gevonden. * 18. Kijk of van R een herschrijfregel (demodulator) te maken is. ------ * 19. Herschrijf terug als Stap 18 een herschrijfregel oplevert. * 20. Gooi alle supersets van R uit USABLE en SOS (back subsumption). * 21. Factoriseer R en verwerk factors.
Demodulatie van termen Modulo rekenen met getallen: 3 = 10 = 17 (mod 7) Modulo reken met termen kan ook: • Stel gelijkheid: echtgenoot(x)) = x • Herschrijfregel: echtgenoot(x)) → x • Voorbeeld: vriend(echtgenoot(truus))) → vriend(truus). • Stel gelijkheid: ( x * y) * z = x * (y * z) • Herschrijfregel: ( x * y) * z → x * (y * z) • Voorbeeld: ((7 * 2) * 4) * 6 → (7 * 2) * (4 * 6) → 7 * (2 * (4 * 6)).
set(hyper_res). set(order_eq). set(very_verbose). assign(stats_level, 0). list(usable). -P | Eq( f(u, v, w), g(x 1, x 2, y 1, y 2) ). end_of_list. list(sos). Illustratie stappen 1 -4 : P. 1. Hernoem end_of_list. 2. Print list(demodulators). 3. Herschrijf f(x, y, z) = a. 4. Orienteer g(u, v, w, x) = b. end_of_list.
1 [] –P | Eq(f(u, v, w), g(x 1, x 2, y 1, y 2)). % usable 2 [] P. % sos 3 [] f(x, y, z) = a. % demodulator 4 [] g(u, v, w, x) = b. % demodulator Herschrijf given clause #1: (wt=1) 2 [] P. Hernoem 0 [hyper, 2, 1] Eq(f(x, y, z), g(u, v, w, v 6)). demod term: f(x, y, z). Print --> result: a demod<3> demod term: a. demod term: g(u, v, w, v 6). --> result: b demod<4> demod term: b. demod term: Eq(a, b). after demodulation: 0 [hyper, 2, 1, demod, 3, 4] Eq(a, b). ** KEPT (pick-wt=3): 5 [hyper, 2, 1, demod, 3, 4, flip. 1] Eq(b, a). Oriënteer given clause #2: (wt=3) 5 [hyper, 2, 1, demod, 3, 4, flip. 1] (zwaarste Eq(b, a). termen vooraan) Search stopped because sos empty.
Verder: • Manual Otter (66 pp. ) • Kalman’s boek (> 500 pp. ) • Concurrenten van Otter – Andere resolutie-provers – Andere methoden (bv. Tableaux of binary decision diagrams) • Opvolgers van Otter: Prover 9
Donderdag • Redeneren met gelijkheid • Demodulatie in Otter (= termherschrijven) • Paramodulatie in Otter Daarna • Algebra’s (1 e-orde logica met gelijkheid + axioma’s) • Birkhoff’s bewijssysteem • Termherschrijven, Knuth-Bendix
Wat volgt zijn slides die ik achtergehouden heb omdat ze niet in het verhaal pasten. Ik heb ze toch bijgesloten omdat ze wellicht nog van nut zijn.
Otter t. b. v. het toetsen van wetenschappelijke theorieën Toetsen van theorieën uit de economie en de sociologie: 1. Formaliseer voorgestelde theorie 2. Check op consistentie, en logische consequenties 3. Check op falsifieerbaarheid: als nooit te falsifiëren, dan geen wetenschappelijke theorie 4. Werk uitgevoerd met Otter en model-checker MACE Vgl. proefschrift Jaap Kamps, Uv. A, Amsterdam (1998)
Geografische verschuiving onderzoek ATP Conference on Automated Deduction (CADE), 1988 -2008 Year U. S. (%) 1988 61 1990 51 1992 44 1994 23 1996 19. . . 2005 2006 2007 2008 2009 Europe (%) Other (%) 35 4 49 7 73 4 79 2 Site Argonne, Illinois Kaiserslautern, Germany Saratoga Springs, New York Nancy, France New Brunswick, New Jersey. . . Tallinn, Estonia Seattle, Washington Bremen, Germany Sydney, Australia Montreal, Canada
Otter in “mode auto” formula_list(usable). p. P -> q. (p&q) -> r. -r. end_of_list. -------> usable clausifies to: list(usable). 0 [] p. 0 [] -p|q. 0 [] -p| -q|r. 0 [] -r. end_of_list.
SCAN INPUT: prop=1, horn=1, equality=0, symmetry=0, max_lits=3. The clause set is propositional; the strategy will be ordered hyperresolution with the propositional optimizations, with satellites in sos and nuclei in usable. dependent: set(hyper_res). dependent: set(propositional). Dus hier dependent: set(sort_literals). m false ------> process usable: ** KEPT (pick-wt=2): 1 [] -p|q. ** KEPT (pick-wt=3): 2 [] -p| -q|r. ** KEPT (pick-wt=1): 3 [] -r. ------> process sos: ** KEPT (pick-wt=1): 4 [] p. ======= end of input processing =======
====== start of search ====== given clause #1: (wt=1) 4 [] p. given clause #2: (wt=1) 5 [hyper, 4, 1] q. 6 [hyper, 5, 2, 4] r. ----> UNIT CONFLICT --> 7 [binary, 6. 1, 3. 1] $F. Length of proof is 2. Level of proof is 2. -------- PROOF --------1 [] -p|q. 2 [] -p| -q|r. 3 [] -r. 4 [] p. 5 [hyper, 4, 1] q. 6 [hyper, 5, 2, 4] r. 7 [binary, 6. 1, 3. 1] $F. ------ end of proof ------Search stopped by max_proofs option. ====== end of search ======
Otter in “mode auto” set(auto). formula_list(usable). p. p -> q. (p & q) -> r. % de ontkenning van wat te bewijzen is: -r. end_of_list.
Otter in “mode auto” ----- Otter 3. 3, August 2005 ----The process was started by gv on EDE, Mon Nov 21 14: 25: 48 2005 set(auto). dependent: set(auto 1). dependent: set(process_input). dependent: clear(print_kept). dependent: clear(print_new_demod). dependent: clear(print_back_sub). dependent: set(control_memory). dependent: assign(max_mem, 12000). dependent: assign(pick_given_ratio, 4). dependent: assign(stats_level, 1). dependent: assign(max_seconds, 10800).
Prover 9: hoofdscherm
Prover 9: parameters en flags
179ba0bef7e0fc33f19a4907d85c96f4.ppt