Predikátová logika [Predicate logic] Přesněji predikátová logika prvého řádu. Formalizuje výroky o vlastnostech předmětů (entit) a vztazích mezi předměty, které patří do dané předmětné oblasti univerza. Příklad: Následovník každého lichého přirozeného čísla je sudé číslo. Číslo 7 je liché. Číslo 8 je sudé. Predikátové logiky vyšších řádů formalizují vztahy mezi vlastnostmi a vztahy, vztahy mezi vztahy vlastnostmi vztahů a vlastností. Výrokovou logiku lze považovat za predikátovou logiku nultého řádu. Formalizuje pouze výroky o entitách. S výrokovou logikou vědecké disciplíny nevystačí. S predikátovou logikou prvého řádu se zpravidla vystačí v matematice i informatice. Logické symboly: Jazyk predikátové logiky obsahuje tuto abecedu: 1. Konečnou nebo nekonečnou spočetnou množinu proměnných (značíme x, y, z, u, v, x 1, x 2,... ). 2. Logické spojky,,,, ( ). 3. Univerzální kvantifikátor (čti pro všechna ). 4. Existenční kvantifikátor (čti existuje). Speciální symboly: 1. Neprázdnou množinu predikátových symbolů P. Různé arity. Vyjadřují vlastnosti a vztahy. 2. Množinu funkčních symbolů F. - Různé arity. Konečnou nebo spočetnou. 3. Množinu konstantních symbolů K. Konečnou nebo spočetnou. Ty lze považovat za funkce arity 0 (nemají žádné proměnné a tedy mají vždy stejnou hodnotu). Značíme a, b, c, a 1, a 2,.... Pomocné symboly: závorky (, ), čárku,. Poznámka: Univerzální kvantifikátor lze chápat jako zobecnění konjunkce, Existenční kvantifikátor jako zobecnění disjunkce, na množiny, které mohou být i nekonečné. 1
Gramatika predikátové logiky udává jak vytvářet formule Term (rekurzivní definice) 1. Každý symbol proměnné je term. 2. Každá konstanta je term. 3. Jsou-li t 1,, t m termy a f je funkční symbol arity m, potom je i f(t 1,, t m ) term. 4. Nic jiného než to, co vznikne aplikací pravidel 1., 2. a 3. již term není. Atomická formule Je predikátový symbol aplikovaný na m termů, kde m je arita predikátového symbolu. p(t 1,, t m ). Formule (rekurzivní definice) 1. Každá atomická formule je formule. 2. Jsou-li ϕ a ψ formule, pak také ( ϕ), (ϕ ψ), (ϕ ψ), (ϕ ψ), (ϕ ψ) jsou formule. 3. Je-li ϕ formule a x proměnné, potom i ( x ϕ) a ( x ϕ) jsou formule. 4. Nic jiného než to, co vznikne aplikací pravidel 1., 2. a 3. již formule není. Závorky lze vynechat, pokud jsou zbytečné vzhledem k obvyklým preferenčním pravidlům pro logické spojky. Vnější závorky se též vynechávají. Výskyt proměnné x ve formuli A je vázaný, jestliže je součástí nějaké podformule x B(x) nebo x B(x) formule A. Proměnná x je vázaná ve formuli A, má-li v A vázaný výskyt. Výskyt proměnné x ve formuli A, který není vázaný, nazýváme volný. Proměnná x je volná ve formuli A, má-li v A volný výskyt. Formule, v níž každá proměnná má buď všechny výskyty volné nebo všechny výskyty vázané, se nazývá formulí s čistými proměnnými. Formule se nazývá uzavřenou, neobsahuje-li žádnou volnou proměnnou. Formule, která obsahuje aspoň jednu volnou proměnnou se nazývá otevřenou. Uzavřená formule se nazývá větou [sentence]. 2
Příklady zápisu výroků v predikátové logice: Univerzum je množina všech lidí. Nikdo, kdo není zapracován (P), nepracuje samostatně (S). x ( P(x) S(x)). Ne každý talentovaný (T) spisovatel (Sp) je slavný člověk (Sl). x ((T(x) Sp(x)) Sl(x)). Někdo je spokojen (Sn) a někdo není spokojen. x Sn(x) x Sn(x). Někteří chytří lidé (Ch) jsou líní (L). x (Ch(x) L(x)). Interpretace Pro to, abychom rozhodli zda je daná formule pravdivá či ne (má hodnotu TRUE či FALSE), je třeba mít vymezeno univerzum a vědět co znamenají všechny v ní užité predikáty, funkční symboly a konstanty. Takovému přiřazení říkáme interpretace. Formálně je interpretace dvojice (U, I), kde U je neprázdná množina zvaná univerzum, I je zobrazení které: Každé konstantě přiřazuje prvek univerza. Každému n-árnímu funkčnímu symbolu přiřazuje funkci n proměnných na univerzu s hodnotami z univerza. Každému n-árnímu predikátu přiřazuje n-ární relaci na univerzu, tvořenou všemi n-ticemi prvků univerza, pro které je daný predikát pravdivý. Pravdivost formule predikátového počtu lze vyhodnotit pouze na základě dané interpretace a daného ohodnocení (valuace) všech volných proměnných. Přitom: Pro stanovení pravdivostních hodnot složených formulí platí stejná pravidla jako u výrokové logiky. Výrok x ϕ(x) je pravdivý právě když I(ϕ) je celé univerzum U (výrok platí pro všechny prvky univerza). Výrok x ϕ(x) je pravdivý právě když I(ϕ) je neprázdná podmnožina univerza (výrok platí aspoň pro jeden prvek univerza). Formule A je splnitelná v interpretaci I, jestliže existuje aspoň jedno ohodnocení e volných proměnných takové, že vznikne pravdivý výrok. Formule A je pravdivá v interpretaci I, jestliže pro všechna možná ohodnocení e volných proměnných vznikne pravdivý výrok. Formule A je splnitelná, jestliže existuje interpretace I, ve které je splnitelná, tj. jestliže existuje interpretace I a ohodnocení volných proměnných e takové, že vznikne pravdivý výrok. Taková dvojice (I, e) interpretace I a valuace e se nazývá model formule. Formule A je tautologií je-li pravdivá v každé interpretaci. Formule A je kontradikcí, jestliže nemá model, tedy neexistuje interpretace I, v která by formule A byla splnitelná. 3
Pozn.: Zjevně platí, že A je kontradikce, právě když negace A je tautologie. Model množiny formulí {A 1,, A n } je taková interpretace I v kterém jsou všechny formule splnitelné, tedy interpretace I a ohodnocení e volných v kterém jsou všechny formule volných proměnných), která splňuje všechny formule A 1,, A n pravdivé. Sémantická a logická dedukce v predikátovém počtu Oba typy dedukce se definují obdobně jako ve výrokové logice. Uzavřená formule (věta) ϕ je sémantickým důsledkem (též tautologickým důsledkem značíme ) množiny uzavřených formulí S právě tehdy, když každý model S je také modelem ϕ. To však je obtížné ověřit. Pro logickou dedukci ( ) přebereme I-pravidla a E-pravidla výrokové logiky a přidáme k nim přirozená pravidla pro kvantifikované výroky. Jde především o pravidla ϕ(t) x ϕ(x) x ϕ(x) x ϕ(x) Tabulka pravidel logické dedukce v predikátové logice: Logická spojka Pravidlo pro zavedení Pravidlo pro vyloučení {ϕ ψ, ψ} ϕ princip nepřímého důkazu ϕ ϕ T; ϕ ϕ princip vyloučení třetího a princip dvojí negace {ϕ, ψ} {ϕ ψ, ψ ϕ} ϕ ψ {ϕ, ψ} definice konjunkce ϕ {ϕ ψ, ψ ϕ} definice disjunkce definice konjunkce {ϕ ψ, ϕ α α, ψ α} α princip důkazu rozborem případů {ϕ ψ} ϕ ψ definice implikace {ϕ, ϕ ψ} ψ pravidlo modus ponens Kvalifikátor Pravidlo pro zavedení Pravidlo pro vyloučení ϕ(x) x ϕ(x) x ϕ(x) ϕ(x) ϕ(a) x ϕ(x) { x ϕ(x), ϕ(y) ψ} ψ I zde (stejně jako u výrokové logiky) platí, že postačí jediné pravidlo, modus ponens. Užívání všech pravidel je však přirozenější a vede k závěru snáze. 4
Pro predikátovou logiku platí rovněž věta o úplnosti. Přirozená dedukce je bezrozporná (vše co se dá logicky odvodit je i sémantickým důsledkem). Přirozená dedukce je úplná. Vše co je sémantickým důsledkem lze odvodit i logicky. Tedy S α tehdy a jen tehdy když S α. Důkaz tohoto tvrzení však není snadný. Platí následující důležitá tvrzení: Větu lze odvodit bez předpokladů, právě když je tautologií. Množina vět je bezrozporná, právě když je splnitelná (tedy má nějaký model). Množina vět je rozporná, právě když z ní vyplývá kontradikce. Mezi výrokovým a predikátovým počtem je následující podstatný rozdíl: Každý jazyk predikátové logiky má nekonečně mnoho možných interpretací (už jenom universum lze stanovit nekonečně mnoha způsoby). Tím se liší od jazyka výrokové logiky, který má vždy jen konečný počet interpretací ohodnocení TRUE FALSE výrokových proměnných (jazyk výrokové logiky pracující s n výrokovými symboly má různých 2 n interpretací, je tedy možné, i když časově náročné, ověřit pravdivost všech interpretací ). Tautologičnost formulí predikátové logiky nelze proto sémanticky dokazovat tak, že ukážeme, že každá možná interpretace jazyka je i modelem dané formule. Tímto způsobem jsme postupovali ve výrokové logice, když jsme zjišťovali pravdivostní hodnotu formule pro každou kombinaci pravdivostních hodnot výrokových symbolů. I zde při velkém n narážel tento postup na exponenciální růst výpočetní složitosti. U predikátového počtu nelze tento způsob užít ani teoreticky, bez ohledu na rostoucí časové nároky na výpočet. Přímý logický důkaz probíhá takto: 1. Vyjdeme z množiny S daných předpokladů a prohlásíme ji za množinu dosud dokázaných formulí (tvrzení). 2. Použijeme libovolné pravidlo logické dedukce a libovolné a libovolnou formuli z množiny dosud dokázaných formulí. Důsledek bude formule, kterou k množině S přidáme. 3. Opakujeme bod 2. tak dlouho, dokud se nám nepodaří jako důsledek získat dokazovanou formuli ϕ. Problém je, jak vybírat pravidla a předpoklady z množiny již dokázaných, aby tato cesta vedla k důsledku ϕ. Takový postup je obtížné automatizovat. 5
Resoluční princip v predikátové logice Zaveďme některé pojmy analogické pojmům z výrokové logiky: Literál je atomická formule (n-ární predikát aplikovaný na n termů) nebo její negace. Komplementární literály je dvojice literálů z nichž každý je negací druhého. Klausule je věta (formule bez volných proměnných), taková, že obsahuje pouze univerzální kvantifikátory na začátku a následuje disjunkce konečného počtu literálů nebo jediný literál. Zavedeme následující úmluvu: U klausule budeme univerzální kvantifikátory proměnných vynechávat. Protože u disjunkce nezáleží na pořadí, budeme klausule zapisovat pouze jako množiny jejich literálů. Tedy například místo tří klauzulí P(x, y), a ( Q(a) R(a, x) S(f(a), a), a b S(a, b) Q(b) budeme psát pouze množinu tří množin literálů {P(x, y)}, { Q(a), R(a, x), S(f(a), a)}, {S(a, b), Q(b)}. Prázdná klausule neobsahuje žádné literály a je tedy kontradikcí. Obvykle se značí symbolem, někdy též F. Tato klausule není splnitelná. Její přítomnost v množině formulí znamená nesplnitelnost této množiny. Princip rezoluční metody u predikátové logiky je analogický jako u výrokové logiky. Je však komplikovanější, protože není k dispozici přímá analogie k konjunktivně disjunktivní normální formě. Postupně odvozujeme z daných klausulí resolventy tak, že vypouštíme dvojice komplementárních literálů. Původní klausule ponecháme. Postup je založen na tom, že tautologicky platí (ϕ η) (ψ η) (ϕ ψ). V případě výskytu predikátů s proměnnými, konstantami a funkčními symboly je třeba provést substituce. Ukážeme to na příkladech: Příklad 1: Resolventa klausulí C 1 = {P(x, y, z), Q(x, y)} a C 2 = { P(x, y, z), R(x)}, kde x, y, z jsou proměnné je klausule C = { Q(x, y), R(x)}. Komplementární literály P(x, y, z) a { P(x, y, z) lze vynechat. Množiny klausulí {C 1, C 2 } a {C 1, C 2, C} jsou tautologicky ekvivalentní. Mají tytéž modely. Abychom to dokázali, stačí ukázat, že pro každou interpretaci (U, I), kde C 1 a C 2 jsou pravdivé je pravdivé i C. Nechť a, b, c jsou libovolné konstanty z U. Substitujeme-li a za x, b za y a c za z (označme jako x/a, y/b, z/c) odvodíme, že { Q(a, b), R(a)} je pravdivé a tedy C je pravdivé v interpretaci (U, I). 6
Příklad 2 (již bez podrobného zdůvodnění) Resolventa klausulí {P(x, y, z), Q(x, y)} a C 2 = { P(a, b, z), R(a)}získaná substitucí x/a, y/b je { Q(a, b), R(a)}. Nalézání komplementárních literálů v množině klauzulí lze algoritmizovat. Tento postup je užit například při ověřování, zda dané tvrzení vyplývá z daných předpokladů. Jde o ověření tautologičnosti implikace tautologicky ekvivalentní s tedy s (p 1 p 2 p n ) q, (p 1 p 2 p n ) q, p 1 p 2 p n q Takováto klausule se nazývá Hornovou klausulí. Vyhodnocovací proces (tak zvaný inferenční mechanismus) logického programovacího jazyka PROLOG spočívá v odvozování resolvent z Hornových klausulí. Ty representují fakta a pravidla z databáze. Cílem je ověřit formuli danou dotazem, případně nalézt konstanty, pro které je splněna. Chceme-li rozhodnout zda je splnitelná jakákoliv množina klausulí S, sestrojíme množinu S 1, tak, že k S přidáme resolventy prvého řádu. Dále přidáme resolventy S 1, získáme S 2 a pokračujeme dokud nenastane rovnost S n = S n+1. Dostaneme množiny R 0 (S) = S, R j+1 (S) = R(R j (S)) pro j = 1, 2,.... Platí: S = R 0 (S) R 1 (S)... R k (S).... Položme R Resoluční princip predikátové logiky říká: * ( S) = j= 1 R j (S). Množina S je splnitelná právě když R * (S) neobsahuje prázdnou klausuli. Chceme-li zjistit zda klauzule ϕ je důsledkem (logickým a tedy i sémantickým) množiny klauzulí S, vytvoříme množinu S = S { ϕ} a zjistíme, zda je splnitelná, či nikoliv. Jeli S splnitelná ϕ není důsledkem S. Je-li nesplnitelná, je ϕ důsledkem S. To je princip nepřímého důkazu v matematice. 7
Příklad: Splnitelnost formulí S = {{P(x, y), Q(x, y, a)}, { Q(g(v), z, z), R(v, z)}, { R(b, a), { P(x, a)}}, kde a, b jsou konstantní symboly, x, y, z jsou proměnné: Sledujte potřebné dosazování konstant za proměnné! Odvodili jsme prázdnou klausuli. Množina formulí je tedy nesplnitelná. 8
Existuje algoritmický postup jak libovolnou množinu formulí predikátové logiky převést na množinu klausulí. Lze to provést v těchto po sobě následujících krocích: 1. Přejmenují se proměnné tak, aby každý kvantifikátor označoval různou proměnnou. Například x P(x) x Q(x, a) změníme na x y P(x) Q(x, a). 2. Spojky, vyjádříme pouze pomocí,, užitím tautologických ekvivalencí α β α β; α β ( α β) ( α β);. 3. Zařadíme negace dovnitř až před atomické formule pomocí tautologických ekvivalencí x α x α; x α x α ; (α β) α β; (α β) α β; α α. 4. Zařadíme disjunkce co nejhlouběji užitím tautologických ekvivalencí α (β γ) (α β) (α γ); α ( x β) x (α β); α ( x β) x (α β). 5. Přemístíme univerzální kvantifikátory užitím tautologické ekvivalence ( x α) ( x β) x (α β). Pokud formule neobsahuje existenční kvantifikátory, získali jsme konjunkci klausulí, která je tautologicky ekvivalentní původní formuli. V případě existenčních kvantifikátorů provedeme tak zvanou skolemizaci (název odvozen od norského matematika Thorlafa Skolema). Nahradíme formuli x P(x) formulí P(a), kde a je konstanta. V případě, že předcházejí univerzální kvantifikátory před existenčním, závisí tato konstanta na proměnných univerzálních kvantifikátorů. V tomto případě musíme tedy užít funkční symbol příslušné arity. Tedy například x z y P(x, y, z) nahradíme x y P(x, y, c(x)) a x y z P(x, y, z) nahradíme x y P(x, y, c(x, y)). Skolemova konstanta závisí tedy na předchozích univerzálních kvantifikátorech. Je tedy funkčním symbolem arity rovné počtu předchozích univerzálních kvantifikátorů. Obecně: x 1,, x n y ϕ(y, x 1,,x n ) nahradíme formulí x 1,, x n ϕ(f(x 1,,x n ), x 1,,x n ), kde f je nový funkční symbol arity n. Je-li n = 0 užijeme konstantní symbol. Celý postup ozřejmí následující příklad: Užitím resoluční metody ověřte správnost následujícího úsudku: Každý holič na ostrově holí kohokoliv, kdo se neholí sám. Žádný holič na ostrově neholí kohokoliv, kdo se holí sám. Důsledek: Na ostrově nejsou žádní holiči. Převod do predikátové logiky: Univerzum: Všichni lidé na ostrově. B(x) unární predikát: člověk je holič. S(x, y) binární predikát osoba x holí osobu y. 9
Náš úsudek ve formalizovaném tvaru: x (B(x) y ( S(y, y) S(x, y)) x (B(x) y (S(y, y) S(x, y)) x B(x). Úsudek bude správný, pokud je nesplnitelná následující množina tří formulí: { x (B(x) y ( S(y, y) S(x, y)), x (B(x) y (S(y, y) S(x, y)), x B(x)}. Tyto formule je třeba transformovat na tautologicky ekvivalentní klausule. Provedeme to standardním algoritmizovatelným postupem, který byl v předchozím odstavci popsán obecně: Přejmenujeme proměnné a převedeme prvé dvě formule na klausule. Poslední klausulí je. x (B(x) y ( S(y, y) S(x, y)) x ( B(x) y ((S(y, y) S(x, y))) x y( B(x) S(y, y) S(x, y)) ; x (B(x) y (S(y, y) S(x, y)) z ( B(z) u ( S(u, u) S(z, u)) z u ( B(z) S(u, u) S(z, u)). Poslední klausule obsahuje existenční kvantifikátor Zaměníme jej za klausuli B(a), kde a je Skolemův konstantní symbol. Úsudek bude správný, pokud bude množina klausulí nesplnitelná. Užijeme resoluční strom: S = {{ B(x), S(y, y), S(x, y)}, { B(z), S(u, u), S(z, u}, (B(a)}} Náš úsudek byl tedy správný. 10