Tableaux metody. Jiří Vyskočil 2011

Podobné dokumenty
2.5 Rezoluční metoda v predikátové logice

Výroková a predikátová logika - V

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α

Rezoluční kalkulus pro logiku prvního řádu

popel, glum & nepil 16/28

platné nejsou Sokrates je smrtelný. (r) 1/??

vhodná pro strojové dokazování (Prolog) metoda založená na vyvracení: dokazuje se nesplnitelnost formulí

Logika. 2. Výroková logika. RNDr. Luděk Cienciala, Ph. D.

Predikátová logika. prvního řádu

Logika a logické programování

Výroková a predikátová logika - II

Matematická logika. Miroslav Kolařík

Výroková a predikátová logika - III

Výroková a predikátová logika - XII

Výroková a predikátová logika - II

Výroková a predikátová logika - III

Výroková a predikátová logika - IX

Výroková a predikátová logika - VIII

Výroková a predikátová logika - II

Výroková a predikátová logika - VIII

Sémantika predikátové logiky

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

Logika. 5. Rezoluční princip. RNDr. Luděk Cienciala, Ph. D.

Rezoluční kalkulus pro výrokovou logiku

výrok-každésdělení,uněhožmásmyslseptát,zdaječinenípravdivé, aproněžprávějednaztěchtodvoumožnostínastává.

Výroková a predikátová logika - VII

Základy logiky a teorie množin

Výroková logika - opakování

Predikátová logika Individua a termy Predikáty

Výroková a predikátová logika - X

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Matematická logika. Miroslav Kolařík

Skolemizace. x(x + f(x) = 0). Interpretace f unární funkce, která pro daný

Matematická logika. Rostislav Horčík. horcik

Formální systém výrokové logiky

Logické programy Deklarativní interpretace

Logické programování

Výroková a predikátová logika - IX

Výroková a predikátová logika - IV

Úvod do TI - logika Výroková logika - pokračování (3.přednáška) Marie Duží

Matematická logika. Rostislav Horčík. horcik

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

3.10 Rezoluční metoda ve výrokové logice

Rezoluce v predikátové logice

Predikátová logika. Teoretická informatika Tomáš Foltýnek

Výroková logika. Teoretická informatika Tomáš Foltýnek

Marie Duží

Klauzulární logika. úvod. Šárka Vavrečková. 20. října Ústav informatiky Filozoficko-Přírodovědecká fakulta Slezské univerzity, Opava

Úvod do informatiky. Miroslav Kolařík

Predikátová logika: Axiomatizace, sémantické stromy, identita. (FLÚ AV ČR) Logika: CZ.1.07/2.2.00/ / 13

Predikátová logika [Predicate logic]

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Rezoluce v predikátové logice

IA008 Computational logic Version: 6. května Formule je v konjunktivní normální formě (CNF), pokud má tvar α 1... α n,

6. Logika a logické systémy. Základy logiky. Lucie Koloušková, Václav Matoušek / KIV. Umělá inteligence a rozpoznávání, LS

Další (neklasické) logiky. Jiří Velebil: AD0B01LGR 2015 Predikátová logika 1/20

LOGIKA VÝROKOVÁ LOGIKA

Matematická indukce, sumy a produkty, matematická logika

SINGULÁRNÍ VÝROKY: Jednoduchý singulární výrok vznikne spojením singulárního termínu s termínem obecným pomocí spony=slova je.

Matematická logika. Rostislav Horčík. horcik

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Umělá inteligence I. Roman Barták, KTIML.

Převyprávění Gödelova důkazu nutné existence Boha

λογος - LOGOS slovo, smysluplná řeč )

Sémantika výrokové logiky. Alena Gollová Výroková logika 1/23

Logika Libor Barto. Výroková logika

Predikátová logika dokončení

M - Výroková logika VARIACE

Výroková a predikátová logika - IX

Částečná korektnost. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

0. ÚVOD - matematické symboly, značení,

Logika. 6. Axiomatický systém výrokové logiky

Základní pojmy matematické logiky

Representace znalostí s použitím klasické negace

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu

Systém přirozené dedukce výrokové logiky

Kapitola Výroky

Spojování výroků (podmínek) logickými spojkami

1 Výroková logika 1. 2 Predikátová logika 3. 3 Důkazy matematických vět 4. 4 Doporučená literatura 7

teorie logických spojek chápaných jako pravdivostní funkce

4.2 Syntaxe predikátové logiky

Modely Herbrandovské interpretace

Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce

Matematická logika. Rostislav Horčík. horcik

Disjunktivní a konjunktivní lní tvar formule. 2.přednáška

10. Techniky formální verifikace a validace

(zkráceně jen formule), jestliže vznikla podle následujících pravidel:

Úvod do TI - logika Predikátová logika 1.řádu (4.přednáška) Marie Duží marie.duzi@vsb.cz

Normální formy. (provizorní text)

1 REZOLUČNÍ FORMÁLNÍ DŮKAZY

Occur-check (Test konfliktu proměnných)

Základy logiky Logika a logické systémy. Umělá inteligence a rozpoznávání, LS

Výroková logika. Sémantika výrokové logiky

ZÁKLADY LOGIKY A METODOLOGIE

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

1 Pravdivost formulí v interpretaci a daném ohodnocení

Deskripční logika. Petr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Deskripční logika 37 / 157

Programování v čistém Prologu

Klasická výroková logika - tabulková metoda

Booleovy algebry. Irina Perfilieva. logo

Transkript:

Tableaux metody Jiří Vyskočil 2011

Tableau [tabló] metoda Tableau metoda je další oblíbená metoda užívaná pro automatické dokazování vět v predikátové logice, ale i v dalších (modálních, temporálních, aj.) logikách. Sémantické tableau je strom, kde každý uzel je logická formule. Sémantické tableau vzniká iterativně zpředchozích tableaux postupnou aplikací určitých pravidel. Dokazování pomocí tableau metody postupně rozděluje vstupní formuli na menší formule, dokud na všech větvích stromu nenajde komplementární páry formulí nebo pokud už nemůže aplikovat žádné z pravidel. 2/25

Tableau metoda pro predikátovou logiku Vstupem pro tableau metodu bude množina formulí predikátové logiky. Cílem metody bude, tak jako v případě rezoluční metody, najít spor v této množině. Pro jednoduchost budeme předpokládat, že jednotlivé formule budou obsahovat pouze logické spojky: & pro konjunkci, pro disjunkci a pro negaci. Pokud bychom chtěli pracovat i s dalšími logickými spojkami, můžeme je chápat jako zkratky definující jednotlivé takové spojky pouze pomocí spojek &, a. Tyto zkratky pak před začátkem tableau metody nahradíme. 3/25

Tableau metoda pro predikátovou logiku Na začátku přepokládejme tableau tvořené jen jedním uzlem - kořenem obsahujícím konjunkci všech formulí ze vstupní množiny. Někdy se také tento kořen označuje symbolem Т (top). Tento uzel se obvykle v grafické podobě tabla nezobrazuje. Nyní se začnou na tableau aplikovat postupně jednotlivá pravidla. 4/25

Tableau pravidla pro predikátovou logiku konjunkce (&) Pokud některá větev v tableau obsahuje formuli tvaru A & B, kde A a B jsou libovolné formule, připojíme k listu této větve novou větev s formulemi A a B. Formálně toto pravidlo zapíšeme takto: (&) A & B A B 5/25

Tableau pravidla pro predikátovou logiku konjunkce (&) příklad Následující příklad ukazuje výsledné tableau po aplikaci pravidla konjunkce na tableau sestávajícího z jediného uzlu. 6/25

Tableau pravidla pro predikátovou logiku disjunkce ( ) Pokud některá větev v tableau obsahuje formuli tvaru A B, kde A a B jsou libovolné formule, připojíme k listu této větve dvě nové větve. Jedna větev bude obsahovat formuli A a druhá formuli B. Formálně toto pravidlo zapíšeme takto: ( ) A B A B 7/25

Tableau pravidla pro predikátovou logiku disjunkce ( ) příklad Následující příklad ukazuje počáteční a výsledné tableau po aplikaci pravidla disjunkce. 8/25

NNF (negation normal form) Formule v negativní normální formě (NNF) je taková logická formule, která obsahuje negaci pouze v literálech. Každou formuli v predikátové logice lze jednoduše převést na NNF formuli pomocí: De Morganových pravidel: (A B) ( A & B), (A & B) ( A B), pravidel pro propagaci negace přes kvantifikátory: ( x ϕ) ( x ϕ), ( x ϕ) ( x ϕ) a pravidla pro rušení vícenásobné negace: ( A A). Převod všech formulí na NNF formule se obvykle provádí před zahájením tableau metody. 9/25

Tableau pravidla pro predikátovou logiku negace ( ) Pokud budeme zpracovávat pomocí tableau metody pouze formule v tzv. negativní normální formě (NNF), není třeba žádné pravidlo pro zpracování negace zavádět. Pro formule, které nejsou v NNF formě, použijeme následujících pět pravidel: ( 2) ( A & B) A B ( 1) A A ( 3) ( A B) A & B ( 4) x ( x ϕ) ϕ ( 5) ( x ϕ) x ϕ 10 / 25

Tableau pravidla pro predikátovou logiku univerzální kvantifikace ( ) Pokud některá větev v tableau obsahuje formuli tvaru x ϕ( x) kde x je proměnná a ϕ (x) je formule obsahující volnou proměnnou x, připojíme k listu této větve novou formuli ϕ (x ), kde ϕ (x ) vznikne z formule ϕ (x) nahrazením všech volných výskytů proměnné x za novou proměnnou x, která se ještě nikde v tableau nevyskytuje. Formálně toto pravidlo zapíšeme takto: ( ) x ϕ ϕ ( x) ( x ) kde x je nová proměnná, která se ještě nikde v tableau nevyskytuje 11 / 25

Tableau pravidla pro predikátovou logiku univerzální kvantifikace ( ) příklad Následující příklad ukazuje počáteční a výsledné tableau po aplikaci pravidla univerzální kvantifikace. 12 / 25

Tableau pravidla pro predikátovou logiku existenční kvantifikace ( ) Pokud některá větev v tableau obsahuje formuli tvaru x δ ( x) kde x je volná proměnná ve formuli δ (x), a δ (x) může obsahovat další volné proměnné x 1,,x n, připojíme k listu této větve novou formuli δ ( f (x 1,,x n )), kde δ ( f (x 1,,x n )) vznikne δ (x) z nahrazením všech volných výskytů x termem f (x 1,,x n ). Zde f je nový funkční symbol, který se ještě nikde v tableau nevyskytuje. Formálně toto pravidlo zapíšeme takto: ( ) δ x δ ( x) ( f ( x,, )) 1 K x n kde f je nový funkční symbol a x 1,,x n jsou volné proměnné formule δ 13 / 25

Tableau pravidla pro predikátovou logiku uzavření větve Pokud se na některé větvi v tableau vyskytují dva komplementární literály L a K takové, že existuje nejobecnější unifikační substituce θ pro literály L a K (resp. L a K ), že L θ K θ (resp. L θ K θ ), potom aplikujeme substituci θ na všechny uzly tableau a takovou větev označíme za uzavřenou. Uzavřené větve již není třeba dále rozšiřovat. Příklad: Pokud L= p (x ) a K= p (t ), pak existuje substituce θ ={ x / t } taková, že p (t ) p (t ). 14 / 25

Tableau pravidla pro predikátovou logiku uzavřené tableau Tableau je uzavřené, pokud jsou všechny jeho větve uzavřené. Takové tableau dosvědčuje spor vstupní množiny formulí, protože všechna tableau pravidla jsou logicky korektní (tedy kořen tabla implikuje každý uzel v tablu) a každá cesta zkořene do listu obsahuje dvojici komplementárních literálů, což představuje spor. 15 / 25

Tableau pravidla pro predikátovou logiku uzavřené tableau příklad Následující příklad ukazuje počáteční a výsledné tableau po uzavření levé větve (pravá větev byla již uzavřená). Výsledné tableau je uzavřené. 16 / 25

LeanTAP LeanTAP je jeden z nejkratších úplných dokazovačů pro predikátovou logiku. LeanTAP používá tableau metodu a skládá se z pěti klauzulí v programovacím jazyku Prolog. Jako vstup přepokládá dokazovač konjunkci skolemizovaných uzavřených formulí v NNF. Značení: logické spojky:,(pro konjukci), ; (pro disjunkci), - (pro negaci) univerzální kvantifikátor: all(proměnná,formule) proměnné jsou prologovské proměnné (začínají velkým písmenem) funkční a predikátové symboly mají prologovskou notaci Jeho zdrojový kód je následující: 17 / 25

LeanTAP % prove(+fml,+unexp,+lits,+freev,+varlim) prove((a,b),unexp,lits,freev,varlim) :-!, prove(a,[b UnExp],Lits,FreeV,VarLim). prove((a;b),unexp,lits,freev,varlim) :-!, prove(a,unexp,lits,freev,varlim), prove(b,unexp,lits,freev,varlim). prove(all(x,fml),unexp,lits,freev,varlim) :-!, \+ length(freev,varlim), copy_term((x,fml,freev),(x1,fml1,freev)), append(unexp,[all(x,fml)],unexp1), prove(fml1,unexp1,lits,[x1 FreeV],VarLim). prove(lit,_,[l Lits],_,_) :- (Lit = -Neg; -Lit = Neg) -> (unify_with_occurs_check(neg,l) ; prove(lit,[],lits,_,_)). prove(lit,[next UnExp],Lits,FreeV,VarLim) :- prove(next,unexp,[lit Lits],FreeV,VarLim). 18 / 25

vstupní formule fronta formulí k navštívení seznam literálů na aktuální větvi tableau seznam všech aktuálně volných proměnných % prove(+fml,+unexp,+lits,+freev,+varlim) prove((a,b),unexp,lits,freev,varlim) :-!, prove(a,[b UnExp],Lits,FreeV,VarLim). prove((a;b),unexp,lits,freev,varlim) :-!, prove(a,unexp,lits,freev,varlim), prove(b,unexp,lits,freev,varlim). prove(all(x,fml),unexp,lits,freev,varlim) :-!, \+ length(freev,varlim), copy_term((x,fml,freev),(x1,fml1,freev)), append(unexp,[all(x,fml)],unexp1), prove(fml1,unexp1,lits,[x1 FreeV],VarLim). prove(lit,_,[l Lits],_,_) :- (Lit = -Neg; -Lit = Neg) -> (unify_with_occurs_check(neg,l) ; prove(lit,[],lits,_,_)). prove(lit,[next UnExp],Lits,FreeV,VarLim) :- prove(next,unexp,[lit Lits],FreeV,VarLim). LeanTAP číslo určující maximální hloubku tableau definovanou maximálním počtem různých volných proměnných vyskytujících se na jedné každé větvi zpracování konjukce zpracování disjunkce zpracování univerzální kvantifikace zpracování literálu Pokud nelze aktuální větev uzavřít, pokračuje LeanTAP zpracováním dosud nezpracovaných formulí. 19 / 25

LeanTAP Spuštění dokazovače se provádí dotazem:?- prove(<konjuce zkolemizovaných formulí v NNF>, [],[],[], <max. počet volných proměnných v tableau>). 20 / 25

Příklad Máme zjistit, zda Johnovi chutnají buráky. Víme, že mu chutná každé jídlo, a že jablka a kuře jsou jídlo. Dále víme, že Bill je naživu, a kdo je naživu, toho nic nezabilo. Bill jí buráky, a co jí Bill, to jí také Sue. Pokud někdo něco jí, a nezabije ho to, pak je to jídlo. 21 / 25

Příklad - formalizace Máme zjistit, zda Johnovi chutnají buráky. likes(john,peanuts) Víme, že mu chutná každé jídlo, X food(x) likes(john,x) a že jablka a kuře jsou jídlo. food(apples) & food(chicken) Dále víme, že Bill je naživu, alive(bill) a kdo je naživu, toho nic nezabilo. Y alive(y) X not_killed_by(y,x) Bill jí buráky, eats(bill,peanuts) a co jí Bill, to jí také Sue. X eats(bill,x) eats(sue,x) Pokud někdo něco jí, a nezabije ho to, pak je to jídlo. X ( Y eats(y,x) & not_killed_by(y,x) ) food(x) 22 / 25

Příklad negace domněnky+převod na NNF likes(john,peanuts) X food(x) likes(john,x) food(apples) & food(chicken) alive(bill) -likes(john, peanuts), all(x,(-food(x);likes(john, X)), food(apples), food(chicken), alive(bill), Y alive(y) X not_killed_by(y,x) all(y,(-alive(y);all(x,not_killed_by(y, X)))), eats(bill,peanuts) X eats(bill,x) eats(sue,x) eats(bill, peanuts), all(x,(-eats(bill, X);eats(sue, X))), X ( Y eats(y,x) & not_killed_by(y,x) ) food(x) all(x,(food(x);all(y,(-eats(y,x);-not_killed_by(y,x))))) 23 / 25

Příklad použití LeanTAPu?- prove((-likes(john, peanuts), food(apples), food(chicken), all(x,(food(x);all(y,(-eats(y,x);-not_killed_by(y,x))))), alive(bill), eats(bill, peanuts), all(x,(-eats(bill, X);eats(sue, X))), all(y,(-alive(y);all(x,not_killed_by(y, X)))), all(x,(-food(x);likes(john, X)))), [], [], [], 5). 24 / 25

Příklad tableau důkazu 25 / 25