Rezoluční pravidlo a algoritmus unifikace v predikátové logice 1. řádu
Rezoluční metoda v predikátové logice je obdobou stejnojmenné metody ve výrokové logice, s tím rozdílem že je složitější. Může za to bohatější struktura predikátové logiky. Tato metoda se používá v logickém programování a je základem pro Prolog (programovací jazyk).
Při uplatňování rezoluční metody je nutné nejprve formuli převést do Skolemovy klauzulární formy.
Zavedení základních pojmů:
Literál - je atomická formule, nebo negace atomické formule. např.: P(x, g(y)), ¬Q(z)
Klauzule - je disjunkce literálů, např.: P(x, g(y)) ∨ ¬Q(z)
Skolemova klauzulární forma - ∀x1…xn [C1 ∧ … ∧ Cm], uzavřená formule, kde Ci jsou klausule. Všechny kvantifikátory stojí na začátku formule a neobsahuje žádný existenční kvantifikátor.
Skolemizace - proces odstranění existenčních kvantifikátorů, je jedním z kroků převodu do skolemovy klauzulární formy
∃x ∀y1...yn A(x, y1,...,yn) ⇒ ∀y1...yn A(c, y1,...,yn) ,kde c je nová dosud nepoužitá konstanta
∀y1...yn ∃x A(x, y1,...,yn) ⇒ ∀y1...yn A(f(y1,...,yn), y1,...,yn) ,kde f je nový dosud nepoužitý funkční symbol
⇒ pokud je existenční kvantifikátor první - přepíšeme proměnnou (tu za kvantifikátorem) uvnitř formule za novou konstantu, pokud je existenční kvantifikátor druhý - přepíšeme proměnnou za funkci s atributem druhé proměnné, u obou případů smažeme při přepisu existenční kvantifikátor
Příklad skolemizace:
∃y∀z P(z,y) ∧∀x∃u Q(x,u) ⇔ ∀z P(z,a) ∧∀x Q(x,f(x)) ⇔ ∀z∀x [P(z,a) ∧ Q(x,f(x))]
Převod do Skolemovy klauzulární formy
Krok 1. a 7. nejsou ekvivalentní, pouze zachovávají splnitelnost formule.
- Utvoření existenčního uzávěru (zachovává splnitelnost)
- Eliminace nadbytečných kvantifikátorů
- Eliminace spojek É, ≡
- Přesun negace dovnitř
- Přejmenování proměnných
- Přesun kvantifikátorů doprava
- Eliminace existenčních kvantifikátorů (Skolemizace – zachovává splnitelnost)
- Přesun všeobecných kvantifikátorů doleva
- Použití distributivních zákonů
Příklad převodu do Skolemovy klauzulární formy:
∀x {P(x) É ∃z {¬∀y [Q(x,y) É P(f(x1))] ∧ ∀y [Q(x,y) É P(x)]}}
1.,2. Existenční uzávěr a eliminace ∃z:
∃x1 ∀x {P(x) É {¬∀y [Q(x,y) É P(f(x1))] ∧ ∀y [Q(x,y) É P(x)]}}
3.,4. Přejmenování y, eliminace É:
∃x1 ∀x {¬P(x) ∨ {¬∀y [¬Q(x,y) ∨ P(f(x1))] ∧ ∀z [¬Q(x,z) ∨ P(x)]}}
5.,6. Negace dovnitř a kvantifikátory doprava:
∃x1 ∀x {¬P(x) ∨ {[∃y Q(x,y) ∧ ¬P(f(x1))] ∧ [∀z ¬Q(x,z) ∨ P(x)]}}
7. Eliminace existenčních kvantifikátorů:
∀x {¬P(x) ∨ {[Q(x,g(x)) ∧ ¬P(f(a))] ∧ [∀z ¬Q(x,z) ∨ P(x)]}}
8. Kvantifikátor doleva:
∀x ∀z {¬P(x) ∨ {[Q(x,g(x)) ∧ ¬P(f(a))] ∧ [¬Q(x,z) ∨ P(x)]}}
9. Distributivní zákon:
∀x ∀z {[¬P(x) ∨ Q(x,g(x))] ∧ [¬P(x) ∨ ¬P(f(a))] ∧ [¬P(x) ∨ ¬Q(x,z) ∨ P(x)]}
10. zjednodušení:
∀x {[¬P(x) ∨ Q(x,g(x))] ∧ [¬P(x) ∨ ¬P(f(a))]}
Unifikace literálů
Chceme-li rezolvovat klauzule, brání nám to, že termy / argumenty nejsou stejné. Všechny proměnné jsou ale kvantifikovány všeobecným kvantifikátorem, a tudíž můžeme použít zákon konkretizace a pokusit se najít vhodnou substituci termů za proměnné tak, abychom dostali shodné ”unifikované” literály.
Zákon konkretizace: Je-li term t substituovatelný za x ve formuli A(x), pak ∀x A(x) |= A(x/t)
Příklad:
|
x/a, z / f(a) |
|
Pro automatickou unifikaci se používají 2 algoritmy:
- Herbrandova procedura
- Robinsonův unifikační algoritmus
Postup důkazů rezoluční metodou
- Důkaz, že formule A je logicky pravdivá
- Formuli A znegujeme
- ¬A převedeme do Skolemovy klausulární formy
- Uplatňujeme pravidla rezoluce a dokazujeme splnitelnost formule
- Důkaz platnosti úsudku P1,...Pn |- Z
- Závěr znegujeme
- Formule P1,...Pn a ¬Z převedeme do klausulární formy
- Uplatňujeme pravidla rezoluce a dokazujeme nesplnitelnost formule
Příklad rezoluční metody v PL1:
∀x∀y [{P(x,y) É Q(x, f(g(x)))} ∧ {R(x) ∨ ∃x ¬Q(x, f(g(x)))} ∧ ∃x ¬R(x)] É ∃x ¬P(x, g(x))
1) Formuli znegujeme:
∀x∀y [{P(x,y) É Q(x, f(g(x)))} ∧ {R(x) ∨ ∃x ¬Q(x, f(g(x)))} ∧ ∃x ¬R(x)] ∧ ∀x P(x, g(x))
2) Odstraníme existenční kvantifikátory a přejmenujeme:
∀x∀y [{P(x,y) É Q(x, f(g(x)))} ∧ {R(x) ∨ ¬Q(a, f(g(a)))} ∧ ¬R(b)] ∧ ∀z P(z, g(z))
3) Odstraníme implikace:
∀x∀y [{¬P(x,y) ∨ Q(x, f(g(x)))} ∧ {R(x) ∨ ¬Q(a, f(g(a)))} ∧ ¬R(b)] ∧ ∀z P(z, g(z))
4) Sepíšeme pod sebe a uplatňujeme pravidla rezoluce a unifikace literálů:
- ¬P(x,y) ∨ Q(x, f(g(x)))
- R(x) ∨ ¬Q(a, f(g(a)))
- ¬R(b)
- P(z, g(z)
- Q(x, f(g(x))) 1,4: z/x, y/g(x)
- ¬Q(a, f(g(a))) 2,3: x/b
- ▢
⇒ vyšla prázdná klauzule, z čehož plyne že negovaná formule je nesplnitelná (kontradikce), proto je původní formule logicky pravdivá
Čerpáno ze skript Logika pro Informatiky (Doc. RNDr. Marie Duží)