De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Otter: een op resolutie gebaseerde stellingenbewijzer voor 1e-orde logica met gelijkheid Gerard Vreeswijk.

Verwante presentaties


Presentatie over: "Otter: een op resolutie gebaseerde stellingenbewijzer voor 1e-orde logica met gelijkheid Gerard Vreeswijk."— Transcript van de presentatie:

1 Otter: een op resolutie gebaseerde stellingenbewijzer voor 1e-orde logica met gelijkheid Gerard Vreeswijk

2 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)

3 Otter: herkomst Organized Techniques for Theorem proving and Effective Research William W. McCune, et al. Eind 20e eeuw (1987- ) Argonne National Laboratory, Argonne, Illinois 1e-orde stellingenbewijzer Hyper-resolutie Set-of-support strategie Typische aanroep: otter file.out

4 Voorbeeld input Otter set(binary_res). set(print_lists_at_end). assign(stats_level,1). list(usable). -Greek(x) | Person(x). -Person(x) | Mortal(x). end_of_list. list(sos). Greek(socrates). end_of_list. Usable clauses Set-of-support clauses Parameters (eerste twee zijn “flags”)

5 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. list(sos). 3 [] Greek(socrates). end_of_list. ======= end of input processing ======= Huis- houdelijk Initialiseren van afhankelijke parameters (“flags”) Echo de oorspronkelijke input

6 1 [] -Greek(x)|Person(x). # USABLE 2 [] -Person(x)|Mortal(x). # USABLE 3 [] Greek(socrates). # SOS =========== start of search =========== 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). Search stopped because sos empty. ============ end of search ============ Daarna: verslag van zoekproces Given clause is altijd één van de lichtste (~ kortste) clauses uit de Set of Support Deze clause werd afgeleid, toegevoegd aan de SOS, en meteen weer geselecteerd als volgende “given clause”

7 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. list(sos). end_of_list. list(demodulators). end_of_list.

8 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

9 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.

10 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 C Usable m ⊨m ⊨ Set of Support 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.)

11 Set-of-support strategie USABLE is vervulbaar USABLE met SOS zou onvervulbaar moeten zijn Altijd minstens één van de ouders afstammeling van SOS USABLE (consistent) SOS (inconsistent)  (!) nooit alle ouders uit usable

12 Volledigheid set-of-support resolutie volgt uit volledigheid lineaire resolutie (Bewijs uit Schöning, pp 104- 105.) SOS is inconsistent  SOS bevat ten minste één clause Lineaire resolutie is volledig   lineaire resolutie refutatie R vanuit SOS R is meteen SOS refutatie! USABLE (consistent) SOS (inconsistent)

13 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,…,U n  R 4.Vereenvoudig R, bekijk wat kan worden weggegooid (bijv. R zelf, of resolventen) 5.Voeg (evt. bewaarde) R toe aan SOS

14 SOS USABLE Otter’s given-clause loop

15 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. Raadsel: wat gaat Otter doen met onderstaande input?

16 =========== 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 hot size 0

17 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. Binaire resolutie

18 list(usable). 1 [] p. 2 [] -p|q. 3 [] -p| -q|r. end_of_list. 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.

19 =========== 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.

20 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 ============

21 $-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.

22 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. list(sos). O(3,2,2). end_of_list.

23 =========== 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 ============

24 Natuurlijke deductie in Otter 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 ” 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.

25 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)).

26 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 -------------

27 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,…,U n  R 4.Vereenvoudig R, bekijk wat kan worden weggegooid (bijv. R zelf, of resolventen) 5.Voeg (evt. bewaarde) R toe aan SOS Een complex proces

28 1. Hernoem variabelen (x, y, z, u, v, w, v1, v2, v3, v4,...) * 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. * 7. Pas factorisatie toe (proces lijkt op 6). * 8. Gooi R weg en exit als R te lang is. 9. Gooi R weg en exit als R een tautologie is. * 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. Stap 4 uit Otter’s given clause loop voor resolvent R

29 Demodulatie van termen Modulo rekenen met getallen: 3 = 10 = 17 (mod 7) Modulo reken met termen kan ook: Stel gelijkheid: echtgenoot(echtgenoot(x)) = x Herschrijfregel: echtgenoot(echtgenoot(x)) → x Voorbeeld: vriend(echtgenoot(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)).

30 set(hyper_res). set(order_eq). set(very_verbose). assign(stats_level,0). list(usable). -P | Eq( f(u,v,w), g(x1,x2,y1,y2) ). end_of_list. list(sos). P. end_of_list. list(demodulators). f(x,y,z) = a. g(u,v,w,x) = b. end_of_list. Illustratie stappen 1-4 : 1.Hernoem 2.Print 3.Herschrijf 4.Orienteer

31 1 [] –P | Eq(f(u,v,w),g(x1,x2,y1,y2)). % usable 2 [] P. % sos 3 [] f(x,y,z) = a. % demodulator 4 [] g(u,v,w,x) = b. % demodulator given clause #1: (wt=1) 2 [] P. 0 [hyper,2,1] Eq(f(x,y,z),g(u,v,w,v6)). demod term: f(x,y,z). --> result: a demod demod term: a. demod term: g(u,v,w,v6). --> result: b demod 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). given clause #2: (wt=3) 5 [hyper,2,1,demod,3,4,flip.1] Eq(b,a). Search stopped because sos empty. Hernoem Print Her- schrijf Oriëntee r (zwaarste termen vooraan)

32 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

33 Donderdag Redeneren met gelijkheid Demodulatie in Otter (= termherschrijven) Paramodulatie in Otter Daarna Algebra’s (1e-orde logica met gelijkheid + axioma’s) Birkhoff’s bewijssysteem Termherschrijven, Knuth-Bendix

34 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.

35 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, UvA, Amsterdam (1998)

36 Conference on Automated Deduction (CADE), 1988-2008 Year U.S. (%) Europe (%) Other (%)Site 1988 61 35 4 Argonne, Illinois 1990 51 45 4 Kaiserslautern, Germany 1992 44 49 7 Saratoga Springs, New York 1994 23 73 4 Nancy, France 1996 19 79 2 New Brunswick, New Jersey...... 2005 Tallinn, Estonia 2006 Seattle, Washington 2007Bremen, Germany 2008Sydney, Australia 2009Montreal, Canada Geografische verschuiving onderzoek ATP

37 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. Otter in “mode auto”

38 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). dependent: set(sort_literals). ------------> 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 ======= Dus hier m  false

39 =========== 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 ============

40 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”

41 ----- Otter 3.3, August 2005 ----- The process was started by gv on EDE, Mon Nov 21 14:25:48 2005 set(auto). dependent: set(auto1). dependent: set(process_input). dependent: clear(print_kept). dependent: clear(print_new_demod). dependent: clear(print_back_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). Otter in “mode auto”

42 Prover 9: hoofdscherm

43 Prover 9: parameters en flags

44


Download ppt "Otter: een op resolutie gebaseerde stellingenbewijzer voor 1e-orde logica met gelijkheid Gerard Vreeswijk."

Verwante presentaties


Ads door Google