2.5. Rezoluční metoda v predikátové logice [101104-1520] 19 2.5 Rezoluční metoda v predikátové logice Rezoluční metoda v predikátové logice je obdobná stejnojmenné metodě ve výrokové logice. Ovšem vzhledem k bohatší vnitřní struktuře formulí predikátové logiky je složitější. Používá se v logickém programování a je základem programovacího jazyka Prolog. Nejprve zavedeme literály a klausule v predikátové logice. 2.5.1 Literál. Literál je atomická formule(tzv. pozitivní literál), nebo negace atomické formule (tzv. negativní literál). Komplementární literály jsou dva literály, z nichž jeden je negací druhého. 2.5.2 Klausule Klausule je sentence taková, že všechny kvantifikátory jsou obecné a stojí na začátku sentence(na jejich pořadí nezáleží) a za nimi následují literál nebo disjunkce literálů. Vevýrokovélogicejsmeprokaždouformuli αnašliknítautogickyekvivalentnímnožinuklausulí S α atotak,že αis α bylypravdivévestejných pravdivostních ohodnocení. Takto jednoduchá situace v predikátové logice není. Vpříštípřednášcesiukážeme,jakkdanésentenci ϕnajítmnožinuklausulí S ϕ atotak,že ϕjesplnitelnáprávětehdy,kdyžmnožina S ϕ jesplnitelná. 2.5.3 Převedení sentence na klausální tvar. Pro každou sentenci ϕ existujemnožinaklausulí S ϕ taková,žesentence ϕjesplnitelnáprávětehdy, když S ϕ jesplnitelná. 2.5.4 Postup. Uvedeme postup, kterým pro danou sentenci ϕ zkonstruujeme množinuklausulí S ϕ. 1. Přejmenujeme proměnné formule ϕ tak, aby každý vstup kvantifikátoru vázaljinouproměnnou.(tj.např.formuli x P(x) x Q(x,a)nahradíme formulí x P(x) y Q(y,a).) 2. Spojky, nahradímespojkami, a nazákladěznámýchtautologických rovností α β α β nahradíme α β nahradíme ( α β) (α β) 3. Přesunemespojku conejníže vderivačnímstromuformule,tj.ažpřed atomické formule. Použijeme k tomu vztahy x α nahradíme x α x α nahradíme x α (α β) nahradíme α β (α β) nahradíme α β α nahradíme α 4. Přesunemespojku conejníže vderivačnímstromuformulepomocí vztahů α (β γ) nahradíme (α β) (α γ)
20 [101104-1520] α ( x β) nahradíme x(α β) α ( x β) nahradíme x(α β) Přitom dáváme přednost první rovnosti. Teprve v případě, že první rovnost nelze aplikovat, používáme další dvě rovnosti. Uvědomte si, že druhá rovnost je opravdu tautologická ekvivalence pouze proto, že formule α neobsahuje proměnnou x(viz krok 1). 5. Použijeme tautologickou ekvivalenci x(α β) nahradíme ( x α) ( x β) k distribuci obecného kvantifikátoru. Jestliže nyní formule neobsahuje existenční kvantifikátor, máme formuli ψ, která je konjunkcí klausulí. Tuto formulitedynahradímemnožinou S ϕ jejíchklausulí. V případě, že formule ψ obsahuje existenční kvantifikátor, provedeme skolemisaci, která je vysvětlena v dalších odstavcích a přesně popsána v??. 2.5.5 Skolemizace. Poznamenejme,žetermíny skolemizace, skolemizační konstanta a skolemizačnífunkčnísymbol jsouodvozenyodjménanorského matematika logika Thoralfa Skolema. Skolemizacínahradímeformuli ψformulí ψ takovou,žeformule ψjesplnitelnáprávětehdy,kdyžjesplnitelnáformule ψ (obecněaleneprostejnou interpretaci). Dříve než ukážeme obecný postup, uvedeme dva příklady. 2.5.6 Příklad1. Najděmeklausuli ψ,kterájesplnitelnáprávětehdy,když jesplnitelnásentence ψ= x P(x). Hledanousentencíje ψ = P(a),kde ajenějakýnovýkonstantnísymbol. Neníobtížnénahlédnout,žeformule ψjetautologickýmdůsledkemformule ψ. Konstantní symbol a použitý v minulém příkladě, se nazývá skolemizační konstanta. 2.5.7 Příklad2. Najděmeklausuli ψ,kterájesplnitelnáprávětehdy,když jesplnitelnásentence ψ= x y Q(x,y). Formuli ψ nahradíme formulí ψ = xq(x,f(x)), kde f je nový unární funkční symbol. Nyní již opět platí, že formule ψ je splnitelná právě tehdy, kdyžjesplnitelnáformule ψ. Funkčnímu symbolu f se říká skolemizační funkční symbol. 2.5.8 Obecnýpostup(pokračováníbodů1 5zpostupu??). 6. Obsahuje-li formule existenční kvantifikátor, nahradíme každou uzavřenou podformulitvaru x 1... x n y α(y)formulí x 1... x n α(f(x 1,...,x n )), kde fjelibovolnýnovýfunkčnísymbolarity n.je-li n=0,použijemenový konstantní symbol a. Tomuto procesu se říká skolemizace, funkčnímu symbolu f skolemizační funkční symbol, konstantě a skolemizační konstanta. Pokračujeme podle kroku 5 z??. Uvědomtesi,žeproměnné x 1,...,x n jsouprávěvšechnyproměnnévázané obecným kvantifikátorem, na které narazíme při postupu derivačním stromem od ysměremkekořeni.
2.5. Rezoluční metoda v predikátové logice [101104-1520] 21 2.5.9 Poznámka. Při zápisu klausulí budeme vynechávat kvantifikátory; to můžeme proto, že víme že všechny kvantifikátory jsou obecné a na jejich pořadí nezáleží. 2.5.10 Rezolventy klausulí. Ve výrokové logice jsme rezolventy vytvářeli tak, že jsme si vždy vzali dvě klausule, které obsahovaly dvojici komplementárních literálů, a výsledná rezolventa byla disjunkcí všech ostatních literálů z obou klausulí. Situace v predikátové logice je složitější. Postup, jak vytváříme rezolventy v predikátové logice, si ukážeme na příkladech. 2.5.11 Příklad. Najděmerezolventuklausulí K 1 = P(x) Q(x,y)aK 2 = = Q(x,y) R(y),kde P a RjsouunárnípredikátovésymbolyaQjebinární predikátový symbol, x, y jsou proměnné. Klausule K 1 a K 2 obsahujídvojicikomplementárníchliterálů,totiž Q(x,y) jeliterál K 1 a Q(x,y)jeliterál K 2.Rezolventouklausulí K 1 a K 2 jetedyklausule K= P(x) R(y),přesněji K= x y(p(x) R(y)). 2.5.12 Příklad. Najděmerezolventuklausulí K 1 = P(x) Q(x)aK 2 = = Q(a) R(b),kde P, Qjsouunárnípredikátovésymbolyaa,bjsoukonstanty. Klausule K 1 a K 2 neobsahují dvojici komplementárních literálů, neboť negace literálu Q(a) není literál Q(x) a naopak. Přitom však literál Q(x) odpovídá formuli x Q(x), a tedy zahrnuje i Q(a). Proto při substituci konstanty a za proměnnou x dostáváme klausule K 1= P(a) Q(a) a K 2= Q(a) R(b) ajejichrezolventajeklausule P(a) R(b). 2.5.13 Příklad. Najděme rezolventu klausulí K 1 = P(x,y) Q(x,y,a) a K 2 = Q(g(v),z,z) R(v,z), kde P, Rjsoubinárnípredikátovésymboly, Qjepredikátovýsymbolarity3a ajekonstanta. PokusímesevhodnousubstitucívytvořitzQ(x,y,a)a Q(g(v),z,z)dvojici komplementárních literálů. Toho dosáhneme substitucí: za proměnné y a z dosadíme konstantu a, a za proměnnou x dosadíme term g(v). Tím dostaneme komplementární literály Q(g(v), a, a) Q(g(v), a, a). Provedenímsubstitucenaceléklausule,dostanemeklausule K 1a K 2,jejichž rezolventa bude i rezolventou klausulí K 1, K 2. Tedy K 1 = P(g(v),a) Q(g(v),a,a), K 2 = Q(g(v),a,a) R(v,a) a hledaná rezolventa je K = = P(g(v),a) R(v,a). 2.5.14 Poznámka. Ne vždy rezolventa existuje. Rezolventa klausulí K 1 = P(x) Q(f(x),a) a K 2 = Q(y,y) R(f(y),z), (kde P je unární predikátový symbol, Q a R jsou binární predikátové symboly, f je unární funkční symbol a a je konstanta) neexistuje. Případy, kdy existuje
22 [101104-1520] či neexistuje vhodná substituce, řeší unifikační algoritmus, který uvádíme v následujícícm odstavci. V případě, že substituce existuje, unifikační algoritmus najde nejobecnější substituci. 2.5.15 Unifikační algoritmus. Vstup: Dvapositivníliterály L 1, L 2,kterénemajíspolečnéproměnné. Výstup: Hlášení neexistuje v případě, že hledaná substituce neexistuje, v opačném případě substituce ve tvaru množiny prvků tvaru x/t, kde x je proměnná, za kterou se dosazuje, a t je term, který se za proměnnou x dosazuje. 1. Položme E 1 := L 1, E 2 := L 2, θ:=. 2. Jsou-li E 1, E 2 prázdnéřetězce,stop.množina θurčujehledanousubstituci. V opačném případě položíme E 1 := E 1 θ, E 2 := E 2 θ (tj. na E 1, E 2 provedeme substituci θ). 3. Označíme Xprvnísymbolřetězce E 1, Y prvnísymbolřetězce E 2. 4. Je-li X = Y, odstraníme X a Y z počátku E 1 a E 2. Jsou-li X a Y predikátové nebo funkční symboly, odstraníme i jim příslušné závorky a jdemenakrok2. 5. Je-li X proměnná, neděláme nic. Je-li Y proměnná(a Xnikoli),přehodíme E 1, E 2 a X, Y. Není-li ani X ani Y proměnná, stop. Výstup neexistuje. 6. Je-li Y proměnnánebokonstanta,položíme θ:= θ {X/Y }.Odstraníme Xa Y zezačátkůřetězců E 1 a E 2 (spolusčárkami,je-litřeba)ajdeme nakrok2. 7. Je-li Y funkčnísymbol,označíme ZvýrazskládajícísezY avšechjeho argumentů(včetně závorek a čárek). Jestliže Z obsahuje X, stop, výstup neexistuje. Vopačnémpřípaděpoložíme θ:= θ {X/Z},odstraníme Xa Zzezačátků E 1 a E 2 (odstranímečárky,je-litřeba)ajdemenakrok2. 2.5.16 Rezoluční princip. Je obdobný jako rezoluční princip ve výrokové logice: Je dána množina klausulí S. Označme R(S) = S {K Kjenejobecnějšírezolventaněkterýchklausulíz S} R 0 (S) = S R i+1 (S) = R(R i (S)) pro i N R (S) = {R i (S) i 0}. Množinaklausulí Sjesplnitelnáprávětehdy,když R (S)neobsahujeprázdnouklausuli F.
2.5. Rezoluční metoda v predikátové logice [101104-1520] 23 2.5.17 Poznámka. Rezoluční princip používáme i pro zjištění, zda z množinysentencí Svyplývásentence α(tj.zda S = α)atotakto. Postupujeme podle věty 2.4.6: Nejprve vytvoříme množinu S { α} a pak upravujeme sentence této množiny na klausální tvar. Jestliže jako rezolventu některých klausulí dostaneme prázdnou klausuli, pak množina S { α} je nesplnitelná a S = α platí; jestliže prázdnou klausuli není možné získat, pak S { α}jesplnitelnáas = αneplatí.