Presentation is loading. Please wait.

Presentation is loading. Please wait.

OTTER- (ATP) Automated Theorem Prover

Similar presentations


Presentation on theme: "OTTER- (ATP) Automated Theorem Prover"— Presentation transcript:

1 OTTER- (ATP) Automated Theorem Prover
Otter je razvijen u Argonne National Laboratory, USA. Više se ne radi na daljnjem razvoju, ali je stabilan i prikladan za projekte iz Ekspertnih sustava. Nasljednik je Prover9 (University of New Nexico, USA): Tko želi može raditi i projekt uporabom Prover9 sustava za dokazivanje teorema ili bilo kojega drugog modernog sustava.

2 Otter Otter je sustav za dokazivanje teorema temeljen na predstavljanju znanja shemom predikatne logike prvoga reda. U rasuđivanju (izvođenju dokaza) koriste se razne izvedbe razrješavanja (Robinson 1965). Ugrađeno je preslikavanje formula predikatne logike u normalizirane klauzule jer interni rad isključivo s klauzulama. Opis problema može se dati kao skup formula predikatne logike ili kao skup klauzula. Ugrađeni su postupci podrazumijevanja, faktoriziranja, demodulacije. Može se koristiti za probleme s jednakosti. Implementiran je u ANSI C jeziku. Otter traži interakciju korisnika (postavljanje i mijenjanje početnih uvjeta rada). Otter nije pogodan za probleme iz matematičke teorije brojeva (indukcija). Za probleme verifikacije digitalnih sustava postoje specijalizirani sustavi koji su efikasniji od Otter-a.

3 Otter Temeljni postupak strategije je SOS (engl. Set of Support).
Postoje četiri liste klauzula: usable, sos, passive, demodulators Glavna petlja: While (sos is not empty and no refutation found) 1. Let given_clause be the ‘‘best’’ clause in sos; 2. Move given_clause from sos to usable; 3. Infer and process new clauses using the inference rules in effect; each new clause must have the given_clause as one of its parents and members of usable as its other parents; new clauses that pass the retention tests are appended to sos; End of while loop.

4 Otter Osim temeljne SoS strategije postoje:
- Weighting (introducing background knowledge) - Unit preference - Queue strategy (instead of weight use ordering in KB) - Prolog Notacija u klauzulama: PREDICATE(<constants>, <variables>, <functions>) Constants: Kim, apple, a, … Variables: u, v, x, y, z Functions: foo(<constants>, <variables>, <functions>) Negation: - Disjunction: | First-order: all x, exists x, -, &, |, ->, <->

5 Otter Pravila razrješavanja: 1. Binary resolution (klasični Robinson).
2. UR-resolution Jedna klauzula nejedinična + skup jediničnih. Simultano binarno razrješavanje sa skupom jediničnih. Rezultat: jedna jedinična. 3. Hyperresolution Skup klauzula od kojih je jedna negativna ili miješana (nukleus). (nucleus). Sve druge su pozitivne (sateliti). Broj of neg. literalla u nukleusu = broju satelita, u kojima je točno jedan odgovarajući pozitivan literal. 4. Negative hyperresolution, obrnuto od 3. 5. Unit resolution Binarno kao 1, jedna klauzula je jedinična. Pravila pojednostavljivanja: 1. Factoring (faktoriziranje) Izjednačavanje (unifikacija) i izbacivanje literala u klauzuli. 2. Subsumption (podrazumijevanje) Forward = nova klauzula se izbacuje (podrazumijevana) Backward = stara klauzula se izbacuje (podrazumijevana)

6 Otter Korisničko sučelje:
Otvori se terminal mod (Windows “command prompt”). otter < input-file > output-file input-file: foo.in output-file: foo.out Nema parametara u naredbenoj liniji (sve je u ulaznoj datoteci). Ulazna ASCII tekst datoteka: skup wff formula predikatne logike ili skup klauzula, znak % za komentar Rezultat će biti zapisan u izlaznu datoteku. <, > znakovi: uobičajeno usmjeravanje kao u Unix-u.

7 Otter - primjer % Roberta and Steve hold, between them, two jobs.
% Each has one job. % The jobs are teacher and nurse. % The job of nurse is held by a male. % Who holds each job? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % define inference, usually set(auto). set(ur_res).

8 Otter - primjer % Describe the world by “usable” list. list(usable).
% Everyone is a male or a female. FEMALE(x) | MALE(x). % No person is both male and female. % not exist x (male(x) and female(x) = % for all (-male(x) | -female(x) -FEMALE(x) | -MALE(x). % Every person holds exactly one of job, and % every job is held by one person. % The jobs are nurse and teacher. HASAJOB(x, nurse) | HASAJOB(x, teacher). % Noone can have both jobs. -HASAJOB(x, nurse) | -HASAJOB(x, teacher). % Every job is assigned to Roberta or Steve. HASAJOB(Roberta, x) | HASAJOB(Steve, x). % Roberta and Steve cannot have the same job. -HASAJOB(Roberta, x) | -HASAJOB(Steve, x).

9 Otter - primjer % The job of a nurse is held by a male.
% for all x, if x has a job of a nurse, % then x is a male % for all x HASAJOB(x, nurse) -> MALE(x) -HASAJOB(x, nurse) | MALE(x). % Roberta is a female. FEMALE(Roberta). % Steve is a male. MALE(Steve). end_of_list. % Prove or not that Steve is a nurse (sos list). list(sos). -HASAJOB(Steve, nurse).

10 Otter - primjer ----- Otter 3.0.4, August 1995 -----
The job was started by ??? on ???, Tue Oct 19 12:36: The command was "winot304". set(ur_res). list(usable). 1 [] FEMALE(x)|MALE(x). 2 [] -FEMALE(x)| -MALE(x). 3 [] HASAJOB(x,nurse)|HASAJOB(x,teacher). 4 [] -HASAJOB(x,nurse)| -HASAJOB(x,teacher). 5 [] HASAJOB(Roberta,x)|HASAJOB(Steve,x). 6 [] -HASAJOB(Roberta,x)| -HASAJOB(Steve,x). 7 [] -HASAJOB(x,nurse)|MALE(x). 8 [] FEMALE(Roberta). 9 [] MALE(Steve). end_of_list. list(sos). 10 [] -HASAJOB(Steve,nurse). ======= end of input processing =======

11 Otter - primjer =========== start of search ===========
given clause #1: (wt=3) 10 [] -HASAJOB(Steve,nurse). ** KEPT (pick-wt=3): 11 [ur,10,5] HASAJOB(Roberta,nurse). ** KEPT (pick-wt=3): 12 [ur,10,3] HASAJOB(Steve,teacher). given clause #2: (wt=3) 11 [ur,10,5] HASAJOB(Roberta,nurse). ** KEPT (pick-wt=2): 13 [ur,11,7] MALE(Roberta). ** KEPT (pick-wt=3): 14 [ur,11,4] -HASAJOB(Roberta,teacher). given clause #3: (wt=2) 13 [ur,11,7] MALE(Roberta). ** KEPT (pick-wt=2): 15 [ur,13,2]). -FEMALE(Roberta ----> UNIT CONFLICT at sec ----> 16 [binary,15.1,8.1] $F. Length of proof is 3. Level of proof is 3.

12 Otter - primjer ---------------- PROOF ----------------
2 [] -FEMALE(x)| -MALE(x). 5 [] HASAJOB(Roberta,x)|HASAJOB(Steve,x). 7 [] -HASAJOB(x,nurse)|MALE(x). 8 [] FEMALE(Roberta). 10 [] -HASAJOB(Steve,nurse). 11 [ur,10,5] HASAJOB(Roberta,nurse). 13 [ur,11,7] MALE(Roberta). 15 [ur,13,2] -FEMALE(Roberta). 16 [binary,15.1,8.1] $F. end of proof Search stopped by max_proofs option. ============ end of search ============

13 Otter - primjer -------------- statistics -------------
clauses given clauses generated ur_res generated demod & eval rewrites clauses wt,lit,sk delete tautologies deleted clauses forward subsumed unit deletions factor simplifications clauses kept new demodulators empty clauses clauses back demodulated clauses back subsumed usable size sos size demodulators size passive size hot size Kbytes malloced

14 Otter - primjer Varijacija primjera: želimo oba rješenja (Who holds each job?) Default: assign(max_proofs, 1) – sustav stane kod prvog dokaza Dodajemo: (database inquiry). assign(maxproofs, 2). list(usable). % sve klauzule kao prije . . . % dodaj: “ako poslovi stavi u bazu”, implikacija -HASAJOB(x, y) | INFO(x, y). end_of_list. list(passive). % dodaj za ispis, implikacija -INFO(x, y) | $ANSWER(HASAJOB(x, y)).

15 Otter - primjer Varijacija primjera: želimo oba rješenja (Who holds each job?) Rezultat: $ANSWER(HASAJOB(steve, nurse)). $ANSWER(HASAJOB(roberta, teacher)).


Download ppt "OTTER- (ATP) Automated Theorem Prover"

Similar presentations


Ads by Google