V této výukové jednotce se student seznámí se základními pojmy z teorie predikátového počtu.

Podobné dokumenty
Okruh č.3: Sémantický výklad predikátové logiky

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

Logika. 8. Automatické dokazování v predikátové logice (obecná rezoluční metoda)

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

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

Sémantika predikátové logiky

Predikátová logika [Predicate logic]

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

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

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

Výroková logika - opakování

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

4.2 Syntaxe predikátové logiky

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

Základní pojmy matematické logiky

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

Matematická logika. Miroslav Kolařík

Matematická logika. Rostislav Horčík. horcik

2.1 Formule predikátové logiky. větám. Použijte k tomu predikátových symbolu uvedených v textu.

Přednáška 2: Formalizace v jazyce logiky.

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

2.2 Sémantika predikátové logiky

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

Okruh č.9: sémantické metody dokazování v PL1 model formule Tradiční Aristotelova logika kategorický sylogismus subjekt predikátové výroky

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

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

Matematická logika. Rostislav Horčík. horcik

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 α

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

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

Logika XI. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12

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

Základy logiky a teorie množin

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

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

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

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

Matematická logika. Miroslav Kolařík

Logické programy Deklarativní interpretace

Úvod do predikátové logiky. (FLÚ AV ČR) Logika: CZ.1.07/2.2.00/ / 1

Logika a logické programování

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

Úvod do informatiky. Miroslav Kolařík

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

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

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

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

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

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

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

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

Matematická logika. Rostislav Horčík. horcik

Přednáška 3: rozhodování o platnosti úsudku

Marie Duží

UDL 2004/2005 Cvičení č.6 řešení Strana 1/5

KMA/MDS Matematické důkazy a jejich struktura

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

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

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

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

Rezoluce v predikátové logice

Matematická indukce, sumy a produkty, matematická logika

Matematická logika. Rostislav Horčík. horcik

Rezoluce v predikátové logice

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

přednáška 2 Marie Duží

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

Predikátová logika dokončení

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

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

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

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

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

Logika Libor Barto. Výroková logika

VÝROKOVÁ LOGIKA. Výrok srozumitelná oznamovací věta (výraz, sdělení), která může být buď jen pravdivá nebo jen nepravdivá..

LOGIKA VÝROKOVÁ LOGIKA

Modely Herbrandovské interpretace

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R...

Úvod do logiky (PL): negace a ekvivalence vět mimo logický

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

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16

Matematická analýza 1

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

Rezoluční kalkulus pro výrokovou logiku

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

1. MATEMATICKÁ LOGIKA A MNOŽINY

Marie Duží

Rovnost lze vyjádřit jako predikát, např. můžeme zvolit, že P(x, y) reprezentujetvrzení xjerovnoy.

Úvod do logiky (PL): sémantika predikátové logiky

Úvod do TI - logika 1. přednáška. Marie Duží

Úvod do teoretické informatiky(2017/2018) cvičení 6 1

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

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. Miroslav Kolařík

Úvod do logiky (VL): 4. Zjištění průběhu pravdivostních hodnot formule tabulkovou metodou

Úvod do výrokové a predikátové logiky

7 Jemný úvod do Logiky

Predikátová logika (logika predikátů)

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

1. Matematická logika

Transkript:

1 Predikátová logika Základní informace V této výukové jednotce se student seznámí se základními pojmy z teorie predikátového počtu. Výstupy z výukové jednotky Student se seznámí se základními termíny teorie predikátového počtu, bude umět analyzovat výrazy přirozeného jazyka v rámci predikátové logiky, bude umět vyslovit negaci predikátové formule a bude umět použít rezoluční metodu v predikátové logice k ověření splnitelnosti formule, splnitelnosti množiny formulí či k důkazu správnosti úsudku. 1.1 Motivace Predikátová logika je jedním z nejlépe prozkoumaných systémů pro reprezentaci a zpracování znalostí. Ačkoli původně navržená pro studium relace logického důsledku, stala se predikátová logika nebo v jiné terminologii teorie prvního řádu prototypem schémat pro reprezentaci znalostí. Původně byla predikátová logika zkoumána pro potřeby matematické, ale brzy se ukázalo zejména v souvislosti s rozvojem informatiky, že jde o velmi univerzální prostředek umožňující analyzovat jazykové výrazy nezbytné právě pro reprezentaci znalostí v mnoha, na první pohled odlišných, tematických oblastech. Navíc se tento prostředek reprezentace ukázal jako výhodný pro studium odvoditelnosti (inference) mezi tvrzeními, což je patrně ten nejvýznamnější příspěvek predikátové logiky pro porozumění výpočtovým problémům soudobé informatiky. 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. 1.2 Predikáty Výroky, se kterými jsme se doposud setkávali, byly jen tzv. individuální či elementární, tj. nerozložitelné a mohli jsme o nich okamžitě říci, že jsou pravdivé, nebo nepravdivé. Jsou výpovědí o vlastnostech jednotlivých objektů, případně o vztazích mezi objekty. Takovými individuálními výroky jsou jistě např. následující výroky: "Dnes prší" "4 + 3=" 7" "5 je prvočíslo" "Brno je pěkné město" Slova "Dnes", "4", "3", "7", "5", "Brno" jsou tzv. jména, která jsou nositeli konkrétního označení nebo pojmenování. Ve výrokovém kalkulu nebylo povoleno zadávat detonáty obecně či abstraktně. Kdybychom to udělali, tak bychom mohli dostat následující obecné výroky: "KAŽDÝ DEN prší" "LIBOVOLNÉ ČÍSLO je prvočíslo" "KAŽDÉ MALÉ MĚSTO je pěkné město" 1

Jinými slovy, ve výrokovém kalkulu jsme nepřipouštěli obecné výroky, které by až interpretací obecného jména přešly na individuální výroky. Jestliže jméno (ať již konkrétní či obecné) vynecháme nebo nahradíme symbolem x, y, z, vznikají tzv. predikáty nebo výrokové formy. Predikáty tedy formulují vlastnost objektu, u nějž jsou uvedeny. Ve výrokové logice jsme popisovali vlastnosti konkrétních objektů, v predikátové logice se zabýváme vlastnostmi všech či některých prvků daných množin. Takto zavedené proměnné (budeme jim říkat individuální proměnné), musíme odlišovat od takzvaných výrokových proměnných z výrokového kalkulu. Za výrokové proměnné jsme dosazovali elementární výroky, kdežto za naše individuální proměnné dosazujeme prvky definičního oboru. Predikát aplikovaný na konkrétní jméno zapisujeme pomocí predikátového symbolu a konstanty či proměnné v závorkách. Například označuje-li predikát P vlastnost "být pěkným městem" a symbol b označuje Brno, větu "Brno je pěkné město" pak formálně zapíšeme jako P(b). Příklad: Zadání: Vytvořte predikáty vycházející z následujících výroků: 1. 9 3 2. Petr má rád Radku 3. Honza odjel k Aleně do Brna 1. Konkrétní objekty nahradíme symboly: x = 9, y = 3. Binární predikát "být větší nebo rovno" označíme symbolem Q. Aplikaci predikátu na konkrétní jména (tedy "x je menší nebo rovno y") zapíšeme jako Q(x,y). 2. Označíme Petr symbolem p a Radku symbolem r. Binární predikát "mít rád" označíme symbolem R. Celou větu pak zapíšeme jako R(p,r). 3. Honzu označíme symbolem h, Alenu symbolem a, Brno symbolem b. Zavedeme ternární predikát O s významem "první parametr odjel za druhým parametrem do třetího parametru", pomocí nějž větu zapíšeme jako O(h,a,b). 1.3 Kvantifikátory Individuální proměnné, individuální konstanty a predikáty nejsou všemi stavebními prvky, z nichž je možno tvořit elementární výrazy v predikátovém kalkulu. Dalšími prvky jsou tzv. kvantifikátory: výraz x... pro všechna x... tzv. obecný kvantifikátor výraz x... existuje x... tzv. existenční kvantifikátor Jestliže A(x) je jistý výraz predikátové logiky a x proměnná, potom zápis x A(x), ( x Dx) A(x) čteme pro každé x platí výraz A(x) a zápis x A(x), ( x Dx) A(x) čteme jako existuje x, pro které platí výraz A(x). Zápis s Dx se použije v případě, že bude potřeba u kvantifikátoru specifikovat definiční obor (nazývaný univerzum), což je množina pro jejíž prvky má daná vlastnost platit. Níže jsou uvedeny příklady interpretací kvantifikátorů na predikátové výrazy: P(x) znamená x je sudé prvočíslo, interpretace pak jsou: o x P(x) - pro všechna x platí, že x je sudé prvočíslo, všichna čísla jsou sudá prvočísla o x P(x) - existuje x pro které platí, že x je sudé prvočíslo, alespoň někdo jedno sudé prvočíslo N(x) znamená x je nemocen, interpretace pak jsou: o x N(x) - pro všechna x platí, že x je nemocen, všichni jsou nemocni o x N(x) - existuje x pro které platí, že x je nemocen, alespoň někdo je nemocen Příklad: Zadání: Zapište formálně následující výroky predikátového kalkulu. 1 "Všechny jedle(j) jsou stále zelené(z)" 2

2 "Někteří se přihlásili(p) a nedojeli(d)" 3 "Kdo seje vítr(v), ten sklízí bouři(b)" 4 "Všechno je dobré(d), co dobře končí(k)" 5 "Někteří účastníci(u) bydlí v hotelu(h)" 6 "Někdo přišel(p) a nezazvonil(z)" 7 "Posluchači prvního(p) a druhého(d) ročníku mají zápis(z) 1. října" 8 "Není pravda, že všichni odevzdali(o) své přihlášky" 9 "Někteří studenti(s) nejsou ani nadaní(n), ani pilní(p)" 10 "Některé dopisy(d) byly odeslány(o) a některé ne" 1 x(j(x) Z(x)) 2 x(p(x) D(x)) 3 x(v(x) B(x)) 4 x(k(x) D(x)) 5 x(u(x) H(x)) 6 x(p(x) Z(x)) 7 x((p(x) D(x)) Z(x)) 8 x(o(x)) 9 x(s(x) N(x) P(x)) 10 x(d(x) O(x)) x(d(x) O(x)) 1.4 Sémantika predikátové logiky 1. řádu Budeme se dále zabývat pouze tzv. predikátovou logikou 1. řádu, která formalizuje úsudky o vlastnostech předmětů a vztazích mezi předměty pevně dané předmětné oblasti (univerza). Nebudeme se zabývat formalizací úsudků, které navíc vypovídají i o vlastnostech vlastností a vztahů a o vztazích mezi vlastnostmi a vztahy. Tím se zabývají predikátové logiky druhého a vyšších řádů. Predikátová logika 1. řádu je zobecněním výrokové logiky, kterou můžeme považovat za logiku nultého řádu. Predikátová logika 1. řádu je postačující pro formalizaci mnohých matematických i jiných teorií. Nyní si ukážeme, jak budeme tvořit výrazy predikátového kalkulu na základě jednoduchých pravidel. Prvně si vyjmenujeme základní komponenty, které budeme používat: Abeceda predikátové logiky je tvořena: a. Individuálními jmény konstantami - ty budeme označovat malými písmeny ze začátku abecedy: a, b, c, (budou jim trvale přiřazeny konkrétní předměty, prvku z univerza) b. Individuálními proměnnými - ty budeme označovat malými písmeny z konce abecedy: x, y, z,... (proměnná neoznačuje konkrétní předmět, ale má svůj definiční obor (univerzum)). c. Funkčními symboly - ty budeme označovat také malými písmeny z prostřed abecedy (f, g, h,...). Funkční symboly přiřazují prvkům z definičního oboru jiné prvky z definičního oboru. d. Predikátovými symboly - ty budeme značit velkými písmeny P, Q, R. V případě predikátové logiky s rovností může být použit binární predikátový symbol =. e. Logickými spojkami - budeme používáme symboly pro spojky, které již známe z výrokové logiky, tj.:,,,,. f. Kvantifikátory budeme používat symboly, g. Závorkami budeme je používat jako pomocné symboly pro explicitní vyjádření priorit, případně pro lepší čitelnost výrazů. Bude se jednat o symboly (,), případně i [,],{,} Poznámka: Ke každému funkčnímu a predikátovému symbolu je přiřazeno nezáporné číslo n (n 0), tzv. arita, udávající počet individuových proměnných, které jsou argumenty funkce nebo predikátu. Pouhé základní symboly nám však pro tvorbu výrazů predikátového kalkulu nebudou stačit. Musíme ještě definovat seznam pravidel (tzv. gramatiku), které nám budou dávat předpis, jak výrazy vytvořit. Gramatika jazyka predikátového kalkulu je dána následujícími pravidly: a. Každý symbol proměnné je term 3

b. jsou-li t 1,,t n (n 0) termy a je-li f n-ární funkční symbol, pak výraz f(t 1,,t n ) je term; pro n = 0 se jedná o nulární funkční symbol, neboli zvolení konstanty (konkrétního prveku z univerza) c. Jestliže p je n-ární predikátový symbol a v 1, v 2,..., v n jsou termy (nikoli nutně různé), pak výraz p(v 1, v 2,..., v n ) je gramaticky správný výraz (atomická formule). d. Jestliže A je gramaticky správný výraz, potom A je rovněž gramaticky správný výraz. e. Jestliže A, B jsou správné gramatické výrazy, pak (A B), (A B), (A B), (A B) jsou rovněž gramaticky správné výrazy. f. Jestliže A je gramaticky správný výraz a v je individuální proměnná, pak ( v) A a ( v) A jsou gramaticky správné. g. Jen výrazy splňující body a - f jsou gramaticky správné a představují formule predikátového kalkulu. Poznámka: Zápis formulí můžeme zjednodušit na základě následujících konvencí o vynechávání závorek: Elementární formule a formuli nejvyššího řádu netřeba závorkovat (vnější závorky vynecháváme). Závorky je možné vynechávat v souladu s následující prioritní stupnicí funktorů: (, ),,,,,. Každý funktor vlevo od vybraného funktoru váže silněji než vybraný funktor. V případě, že o prioritě vyhodnocení nerozhodnou ani závorky ani prioritní stupnice, vyhodnocujeme formuli zleva doprava. Speciálně vzhledem k asociativitě konjunkce a disjunkce, netřeba při zápisu vícečlenných konjunkcí a disjunkcí užívat žádné závorky. Vedle závorek (,) lze užívat i závorky [,],{,}. Příklad: Jazyk elementární aritmetiky je případem jazyka predikátové logiky 1. řádu s rovností. Napište, jaké obsahuje funkční symboly a uveďte příklady termů a formulí v tomto jazyce. Tento jazyk má například tyto funkční symboly: nulární symbol: 0 (konstanta nula) unární symbol: s (funkce následník) binární symboly: + a (sčítání a násobení) Příkladem termů jsou například (používáme infixní notaci pro + a ): 0 s(x) s(s(x)) (x + y) s(s(0)) Formulemi jsou například výrazy: s(0) = (0 x) + s(0) x (y = x z) x [(x = y) y (x = s(y))] 1.4 Volná a vázaná proměnná Individuální proměnné se mohou ve výrazu vyskytnout buď jako volná proměnná a nebo jako vázaná proměnná. Například výraz ( y)(y<x) obsahuje proměnné x a y. Proměnná x je zde volnou proměnnou, na jejíž hodnotě závisí pravdivostní hodnota celého výrazu. Proměnná y je zde pak vázanou proměnnou, protože je pod vlivem kvantifikátoru y. Definice: Výskyt proměnné x ve formuli A je vázaný, jestliže je součástí nějaké podformule xb(x) nebo xb(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 se nazývá uzavřenou, neobsahuje-li žádnou volnou proměnnou. Formule, která obsahuje aspoň jednu volnou proměnnou se nazývá otevřenou. 4

Nechť x 1, x 2,, x n jsou všechny volné proměnné formule A. Potom uzavřenou formuli x 1 x 2... x n A resp. x 1 x 2... x n A, nazýváme generálním resp. existenčním uzávěrem formule A. Dá se tedy říci, že x je výskytem vázané proměnné, je-li proměnná x v dosahu některého z kvantifikátorů,. Například ve výrazu ( x)(r(x,y) ( y)r(x,y)) P(x) jsou první tři výskyty proměnné x zleva chápány jako výskyty vázané proměnné (první jako ukazatel), čtvrtý výskyt proměnné x je výskytem volné proměnné. Proměnná y je v prvním výskytu zleva ve volném výskytu, ale druhý a třetí výskyt je již výskytem vázané proměnné (druhý je ukazatelem). 1.5 Převod z přirozeného jazyka do symbolického jazyka predikátové logiky Jedná se o analýzu výrazů přirozeného jazyka v rámci predikátové logiky. Volba predikátových (a funkčních) konstant je libovolná potud, že nesmí dojít ke kolizi vlastností, funkcí či vztahů. Výrazy jako všichni, každý, nikdo, apod. překládáme všeobecným kvantifikátorem, výrazy jako někdo, někteří, apod. překládáme existenčním kvantifikátorem. Dále budeme předpokládat, že jde o jazyk nad homogenním univerzem, proto v následujících příkladech považujeme za univerzum množinu všech individuí. Příklad: Analyzujte a zapište v jazyce predikátové logiky následující výroky: 1) Nikdo, kdo není zapracován (P), nepracuje samostatně (S). 2) Ne každý talentovaný (T) spisovatel (Sp) je slavný (Sl). 3) Pouze zaměstnanci (Z) používají výtahu (V). 4) Ne každý člověk (C), který hodně mluví (M), nemá co říci (R). 5) Někdo je spokojen (Sn) a někdo není spokojen. 6) Někteří chytří lidé (Ch) jsou líní (L). 7) Všichni zaměstnanci (Z) používají výtahu (V). Pozn.: Jako pomůcka k řešení může sloužit tato zásada: Po všeobecném kvantifikátoru následuje formule ve tvaru implikace ( ), kdežto po existenčním kvantifikátoru formule ve tvaru konjunkce ( ). 1) x [ P(x) S(x)] 2) x {[T(x) Sp(x)] Sl(x)} 3) x [V(x) Z(x)] 4) x {[C(x) M(x)] R(x)} 5) x Sn(x) x Sn(x) 6) x [Ch(x) L(x)] 7) x [Z(x) V(x)] 1.6 Sémantika jazyka predikátové logiky (interpretace formulí) Sémantika neboli význam formulí predikátové logiky 1. řádu, je dána jejich interpretací. Položíme-li si otázku zda daná formule predikátové logiky je pravdivá či ne, pak taková otázka je v podstatě nesmyslná, pokud nevíme, co formule znamená, tedy jak je interpretována. Tak např. formule x p(f(x), x) může říkat, že pro všechna přirozená čísla platí, že jejich druhá mocnina je větší než to číslo, nebo že pro všechny lidi platí, že jejich otec je starší než dotyčný člověk, pak je samozřejmě v takových interpretacích pravdivá. Může ale také znamenat, že pro všechna přirozená čísla platí, že jejich druhá mocnina je menší než to číslo, nebo že pro všechny lidi platí, že jejich otec je mladší než dotyčný člověk, pak je samozřejmě (v takové interpretaci) nepravdivá. Podobně např. formule, kterými jsme v předchozí kapitole analyzovali věty přirozeného jazyka, mohou být interpretovány tak, aby zachycovaly význam těchto vět ( zamýšlená interpretace), ale mohou být interpretovány úplně jinak. Například formule, která je analýzou věty Někteří chytří lidé jsou líní, tedy x [Ch(x) L(x)], může být interpretována jako zachycující význam věty Některá lichá čísla jsou dělitelná dvěma, a pak je evidentně (v této interpretaci) nepravdivá. 5

V čem tedy spočívá interpretace formule? Nejprve musíme stanovit, o čem mluvíme, tedy jaká je předmětná oblast - obor proměnnosti proměnných, tj. zvolíme jistou neprázdnou množinu univerzum, jejíž prvky budou individua. Jelikož predikátové symboly mají vyjadřovat vztahy mezi těmito předměty - prvky univerza, přiřadíme každému n-árnímu predikátovému symbolu jistou n-ární relaci (tj. podmnožinu Kartézského součinu) nad univerzem. Jedná-li se o unární predikátový symbol (n = 1), pak přiřadíme podmnožinu univerza. Podobně funkční symboly budou vyjadřovat n-ární funkce nad univerzem. Teprve poté, co je daná formule interpretována, můžeme vyhodnotit její pravdivost či nepravdivost v dané interpretaci. Je zde však ještě jeden problém, a to jsou proměnné. Proměnným jazyka predikátové logiky přiřazujeme valuací individua, tj. prvky univerza. (Proměnným jazyka predikátové logiky druhého řádu pak mohou být přiřazeny také vlastnosti či funkce.) Pravdivostní hodnota formule nezávisí na hodnotě vázaných proměnných (pouze volné proměnné jsou skutečné proměnné). Obsahuje-li však formule nějaké volné proměnné, můžeme vyhodnotit její pravdivost v interpretaci pouze v závislosti na ohodnocení (valuaci) volných proměnných. Při některé valuaci může být formule v dané interpretaci pravdivá, při jiné nepravdivá. Tak např. formule x p(f(x), y) může být interpretována nad množinou celých čísel tak, že symbolu p je přiřazena relace větší nebo rovno ( ), symbolu f funkce druhá mocnina (tedy f(x) znamená x 2 ). Pak formule říká, že pro každé celé číslo x platí, že x 2 je větší než nebo rovno jistému číslu y. Tedy pravdivost formule v této interpretaci závisí na ohodnocení (valuaci) proměnné y. Přiřadíme-li např. y číslo 5, je formule nepravdivá, přiřadíme-li třeba číslo -3 nebo 0, je formule pravdivá. Obecně bude formule pravdivá (v této interpretaci) pro každou valuaci proměnné y, která přiřadí y záporné číslo nebo nulu, nepravdivá pro všechny valuace, které přiřadí proměnné y číslo kladné. Níže jsou pravidla, která použijeme při interpretaci jazyka predikátové logiky (tzv. interpretační pravidla): 1. Individuálním proměnným je přiřazena neprázdná množina M (univerzum) jako jejich definiční obor hodnot. Všechny individuální proměnné mají tedy tutéž interpretaci. 2. Každému n-árnímu funkčnímu f symbolu jazyka přiřadíme určité zobrazení f M : M n M. Každý n- ární funkční symbol je tedy interpretován jako funkce, která přiřazuje n-tici individuí právě jedno individuum, tj. zobrazení z M... M do M. Specielně pak platí že: je-li n = 0, pak se jedná o nulární funkční symbol, tedy o individuovou konstantu, které je přiřazen prvek univerza - individuum je-li n = 1, pak se jedná o unární funkční symbol, kterému je přiřazena funkce o jednom argumentu (např. nad množinou čísel x 2, x + 1, nad množinou individuí otec(x), matka(x), atd.) je-li n = 2, pak se jedná o binární funkční symbol, kterému je přiřazena binární funkce se dvěma argumenty (např. nad množinou čísel x + y, x.y, atd.) 3. Každému n-árnímu predikátovému symbolu p přiřadíme jistou n-ární relaci p M nad M, tj podmnožinu Kartézského součinu M n (tj. M... M), neboli zobrazení M... M {1,0}. Tato relace p M se nazývá obor pravdivosti predikátu. Specielně pak platí že: je-li n = 0, pak se jedná o nulární predikátový symbol, kterému je přiřazena hodnota 1 nebo 0 (pravda, nepravda) tak, jak to již známe z výrokové logiky. je-li n = 1, pak se jedná o unární predikátový symbol, kterému je přiřazena podmnožina univerza M. (Vlastnosti tedy v predikátové logice vyjadřujeme jako podmnožiny univerza.) je-li n = 2, pak se jedná o binární predikátový symbol, kterému je přiřazena binární relace nad univerzem (např. relace větší, menší, apod.) Výroková logika je tedy specielním (nejjednodušším) případem predikátové logiky, a to 0. řádu, ve které pracujeme pouze s nulárními predikáty a nepotřebujeme proto termy, funkční symboly, individuové proměnné ani univerzum. Nulárním predikátům přiřazujeme pouze hodnoty pravda, nepravda. Příklad: Uvažujme jazyk predikátové logiky s následujícími konstantami: f 0, f 1 - nulární funkční symboly g - unární funkční symbol h, k - binární funkční symboly p, q binární predikátové symboly. Pro tento jazyk definujme interpretaci následujícím způsobem: 6

Univerzum M je množina všech nezáporných celých čísel {0, 1, 2,...}. Realizace funkčních symbolů jsou definovány takto: f 0... předmětová konstanta: číslo 0 /nikoliv pravdiv. hodnota!/ f 1... předmětová konstanta: číslo 1 /nikoliv pravdiv. hodnota!/ g... zobrazení M M definované takto: g(x) = x + 1 h... zobrazení M 2 M definované takto: h(x, y) = x + y k... zobrazení M 2 M definované takto: k(x, y) = x. y Realizace predikátových symbolů jsou definovány takto: p... podmnožina množiny M 2 definovaná jako množina všech dvojic <x,y>, pro které platí x = y, q... podmnožina množiny M 2 definovaná jako množina všech dvojic <x,y>, pro které platí x < y. Skutečnost, že např. (x + y).z = x.z + y.z pro všechna x, y, z zapíšeme standardní formulí predikátové logiky takto: x y z [p(k(h(x,y),z), h(k(x,z),k(y,z)))] Můžeme přirozeně použít i obvyklého nestandardního zápisu, který využívá speciální infixovovou notaci binárních funkcí a další speciální konvence (např. priorita násobení před sčítáním). x y z [(x+y).z = x.z+y.z] Informaci, že ke každým dvěma číslům x, y existuje číslo z takové, že buď x+z = y nebo y+z = x zapíšeme formulí: x y z [(x + z = y) (y + z = x)], Nebo také standardně: x y z [p(h(x, z), y) p(h(y, z), x))]. Definice: Ohodnocení (valuace) individuových proměnných je zobrazení e, které každé proměnné x přiřazuje hodnotu e(x) M (prvek univerza) Definice: Ohodnocení termů e indukované ohodnocením proměnných e je induktivně definováno takto: e (x) = e(x) e (f (t 1, t 2,...,t n )) = f M (e (t 1 ), e (t 2 ),...,e (t n )), kde f M je funkce přiřazená v dané interpretaci funkčnímu symbolu f. Poznámka: Hodnotou (realizací) termu t v interpretaci I je tedy vždy jistý prvek univerza. Tedy funkční symboly jsou jména funkcí zobrazení, termy jsou jména prvků univerza, zatímco predikátové symboly jsou jména relací a formule jsou jména pravdivostních hodnot. Definice: Pravdivost formule A v interpretaci I pro ohodnocení e individuových proměnných (což značíme = I A[e] formule A je pravdivá v I pro e, nebo také A je splněna v I ohodnocením e), je definována v závislosti na tvaru formule: Je-li A atomická formule tvaru: a. p(t 1,, t n ), kde p je predikátový symbol (různý od =) a t 1,, t n jsou termy, pak = I A[e], jestliže platí < e (t 1 ), e (t 2 ),...,e (t n )> p M, kde p M je relace přiřazená interpretací I symbolu p obor pravdivosti p. Tedy individua, která jsou hodnotou termů t 1,, t n, jsou v relaci p M. b. (t 1 = t 2 ), pak = I A[e], jestliže platí e (t 1 ) = e (t 2 ), tj. oba termy jsou realizovány týmž individuem. Je-li A složená formule, pak na základě jejího tvaru platí: a. B, pak = I A[e] jestliže neplatí = I B[e] 7

b. B C, pak = I A[e], jestliže platí = I B[e] a = I C[e] c. B C, pak = I A[e], jestliže platí = I B[e] nebo = I C[e] d. B C, pak = I A[e], jestliže neplatí = I B[e] nebo platí = I C[e] e. B C, pak = I A[e], jestliže platí = I B[e] a = I C[e], nebo neplatí = I B[e] a neplatí = I C[e] je-li A formule tvaru: a. x B, pak = I A[e], jestliže pro libovolné individuum i M platí = I B[e(x/i)], kde e(x/i) je valuace stejná jako e až na to, že přiřazuje proměnné x individuum i. b. x B, pak = I A[e], jestliže pro alespoň jedno individuum i M platí = I B[e(x/i)], kde e(x/i) je valuace stejná jako e až na to, že přiřazuje proměnné x individuum i. Poznámka: Je-li univerzum konečná množina M = {a 1,,a n }, pak platí následující ekvivalence formulí: x A(x) A(a 1 ) A(a n ) x A(x) A(a 1 ) A(a n ). x A(x) x A(x) x A(x) x A(x) Definice: Formule A je splnitelná v interpretaci I, jestliže existuje ohodnocení e proměnných takové, že platí = I A [e]. Definice: Formule A je pravdivá v interpretaci I, značíme = I A, jestliže pro všechna možná ohodnocení e individuových proměnných platí, že = I A[e]. Definice: Formule A je splnitelná, jestliže existuje interpretace I, ve které je splněna, tj. jestliže existuje interpretace I a valuace e takové, že = I A[e]. Taková interpretace I a valuace e, tedy dvojice <I,e>, pro kterou platí = I A[e], se nazývá model formule. Definice: Formule A je tautologií (logicky pravdivá), značíme = A, jestliže je pravdivá v každé interpretaci. Definice: Formule A je kontradikcí, jestliže nemá model, tedy neexistuje interpretace I, která by formuli A splňovala. Poznámka: Zjevně platí, že A je kontradikce, právě když negace A je tautologie, = A. Definice: Model množiny formulí {A 1,,A n } je taková interpretace I (a případně valuace e volných proměnných), která splňuje všechny formule A 1,,A n, tedy dvojice <I,e>, pro kterou platí = I A 1 [e],, = I A n [e]. Definice: Formule B logicky vyplývá z formulí A 1,, A n, značíme A 1,,A n = B, jestliže B je pravdivá v každém modelu množiny formulí A 1,,A n. Tedy pro každou interpretaci I, která splňuje formule A 1,, A n ( = I A 1 [e],, = I A n [e]) platí, že splňuje také formuli B ( = I B[e]). Příklad: Uvažujme jazyk predikátové logiky a jeho interpretaci z minulého příkladu. Formule p(h(x,y), x)), neboli x + y = x je pravdivá v uvedené interpretaci např. pro ohodnocení proměnných e(x)=3, e(y)=0 a nepravdivá např. pro ohodnocení e(x)=3, e(y)=2. Formule je splnitelná v dané interpretaci, není však v této interpretaci pravdivá. Formule p(h(x,y), h(y,x)), neboli x + y = y + x je v uvedené interpretaci pravdivá pro každé ohodnocení a je tedy, stejně tak jako formule x y [p(h(x,y), h(y,x))], neboli x y [x + y = y + x] pravdivá v této interpretaci. Není však univerzální logickou tautologií (interpretujeme-li např. binární predikát p jako ostrou nerovnost, pak uvedené formule jsou nepravdivé). Formule x y q(x,y), neboli x y [x < y] je pravdivá v dané interpretaci a formule y x q(x,y), neboli y x [x < y] je nesplnitelná v dané interpretaci jazyka predikátové logiky. Formule p(x,y) q(x,y) q(y,x), x y [p(x,y) q(x,y) q(y,x)] jsou pravdivé v dané interpretaci, nejsou však univerzálními logickými tautologiemi (o tom se přesvědčíme např. tak, že prohodíme interpretaci predikátů p a q). 8

Formule p(x, g(y)) p(x, g(y)), x y [p(x, g(y)) p(x, g(y))] jsou univerzálními tautologiemi daného jazyka. Jejich pravdivost nezávisí na tom, jakou množinu probíhají předmětové proměnné, jak je interpretován funkční symbol g a jak je interpretován predikátový symbol p. Naproti tomu formule p(x, g(y)) p(x, g(y)), x y [p(x, g(y)) p(x, g(y))] nejsou splnitelné v žádné interpretaci a jsou tedy univerzálními kontradikcemi. Úloha: Ukažte, že formule x p(x) p(a), kde a je individuová konstanta, není tautologií, ale je splnitelná. Jelikož formule nemá volné proměnné, stačí nalézt interpretaci, ve které je pravdivá, a interpretaci, ve které není pravdivá. Formule je pravdivá například v následující interpretaci: univerzum M = množina přirozených čísel p M = množina lichých čísel a M = 3 Formule je pravdivá například v následující interpretaci: univerzum M = množina přirozených čísel p M = množina lichých čísel a M = 4 Formule je tedy je splnitelná, ale nejedná se o tautologii. Definice: Formule A, B jsou (sémanticky) ekvivalentní, jestliže pro všechny interpretace I a všechny valuace e mají stejná pravdivostní ohodnocení. Skutečnost, že formule A, B jsou ekvivalentní zapisujeme: A B. Níže jsou uvedeny některé důležité tautologie predikátové logiky: Všechny formule predikátové logiky mající tvar tautologií výrokové logiky, např. formule x p(x) (q(y) x p(x)) je tautologií, protože má tvar formule výrokové logiky r (s r), která je tautologií výrokové logiky. = xa(x) A(y) = A(y) xa(x) De Morganovy zákony: = xa(x) x A(x) = xa(x) x A(x) Zákony distribuce kvantifikátorů: = x[a(x) B(x)] [ xa(x) xb(x)] = x[a(x) B(x)] [ xa(x) xb(x)] = x[a(x) B(x)] [ xa(x) xb(x)] = x[a(x) B(x)] [ xa(x) xb(x)] = [ xa(x) xb(x)] x[a(x) B(x)] = x[a(x) B(x)] [ xa(x) xb(x)] Zákony prenexních operací (předpokládáme, že formule A neobsahuje volnou proměnnou x): = x[a B(x)] [A xb(x)] = x[a B(x)] [A xb(x)] = x[b(x) A] [ xb(x) A] = x[b(x) A] [ xb(x) A] = x[a B(x)] [A xb(x)] = x[a B(x)] [A xb(x)] = x[a B(x)] [A xb(x)] = x[a B(x)] [A xb(x)] Zákony komutace kvantifikátorů: = x ya(x,y) y xa(x,y) = x ya(x,y) y xa(x,y) = x ya(x,y) y xa(x,y) Nechť term t je substituovatelný za proměnnou x, pak platí 9

= xa(x) A(x/t) zákon konkretizace = A(x/t) xa(x) zákon abstrakce = xa(x) xa(x) zákon partikularizace Sémantické ověření správnosti úsudku je v predikátové logice obtížnější než ve výrokové logice. Podle definice je úsudek správný, pokud je závěr pravdivý ve všech modelech předpokladů. Problémem v predikátové logice je ovšem ten, že takovýchto modelů je obecně nekonečně mnoho. Přesto je možno sémanticky ověřit platnost úsudku, a to přímo, nebo pak nejčastěji sporem (předpokládáme, že může nastat případ, kdy v nějaké interpretaci budou předpoklady pravdivé a závěr nepravdivý a ukážeme, že to možné není). Příklad: Sémanticky ověřte správnost úsudku: Marie má ráda pouze vítěze. Karel je vítěz. Marie má ráda Karla. Úsudek zformalizujeme: x [R(M,x) V(x)] V(K) R(M,K) Aby byly předpoklady pravdivé, pak možné interpretace nad množinou individuí D musí mít tvar: M D : Marie, K D : Karel (poznámka: realizací těchto konstant mohou být kterékoli jiné prvky D, avšak celková úvaha se tím nijak nemění.) R D D D: { <Marie, i 1 >, <Marie, i 2 >,, <Marie, i n > } V D D : { i 1, i 2,, Karel,, i n } Vidíme, že závěr nevyplývá, neboť není zaručeno, že relace R D bude obsahovat dvojici <Marie, Karel>. Poznámka: Tento úsudek ilustruje poměrně častou chybu, které se můžeme v argumentaci dopustit. Z platnosti nutné podmínky nějakého tvrzení usuzujeme na pravdivost tohoto tvrzení. V našem příkladě je podmínka být vítězem pouze nutná, ne však dostatečná pro to, aby Marie měla dané individuum ráda (vítězové tedy mohou být i taková individua, která Marie nemá ráda). Příklad: Sémanticky ověřte správnost úsudku: Marie má ráda pouze vítěze. Karel není vítěz. Marie nemá ráda Karla. Úsudek zformalizujeme: x [R(M,x) V(x)] V(K) R(M,K) Aby byly předpoklady pravdivé, pak možné interpretace nad množinou individuí D musí mít tvar: R D D D: { <Marie, i 1 >, <Marie, i 2 >,, <Marie, i n > } V D D : { i 1, i 2,, Karel,, i n } individuum Karel neleží v množině V D, tedy Karel se nerovná žádnému z individuí i 1, i 2,,i n, které jsou v relaci R D s individuem Marie. Vidíme, že závěr vyplývá, neboť je zaručeno, že relace R D nemůže obsahovat dvojici <Marie, Karel>. 1.7 Negace predikátových formulí Při negování predikátových formulí budeme vycházet z poznatků pro negování výrokových formulí. Nová pravidla zavedeme pouze pro negování kvantifikátorů. Zde budeme vycházet z toho, že: 10

Tvrzení "všechny prvky množiny A mají vlastnost P" není pravdivé jen tehdy, pokud v množině A existuje alespoň jeden prvek, který vlastnost P nemá. Formálně toto tvrzení zapíšeme ( x A(x)) x A(x) Tvrzení "existuje prvek množiny A mající vlastnost P" není pravdivé jen tehdy, pokud žádný z prvků množiny A vlastnost P nemá. Formálně toto tvrzení zapíšeme ( x A(x)) x A(x) Úloha: Pro následující formule, jejichž predikáty jsou zadány, stanovte negace a formulujte je verbálně: Existuje jablko (J), které není zelené (Z) Každý talentovaný (T) básník (B) je slavný (S) Kdo jinému jámu kopá (K), sám do ná padá (P) 1. Formalizace formule: x(j(x) Z(x)). Negace: x (J(x) Z(x)) = x( J(x) Z(x)) = x(j(x) Z(x)). Verbální formulace: Všechna jablka jsou zelená. 2. Formalizace formule: x ((T(x) B(x) S(x)). Negace: x (T(x) B(x) S(x)). Verbální formulace: Existuje talentovaný básník, který není slavný 3. Formalizace formule: x (K(x) P(x)). Negace: x (K(x) P(x)). Verbální formulace: Existuje člověk, který kope jámu a nespadne do ní. 1.8. Automatické dokazování v predikátové logice (obecná rezoluční metoda) Jak jsme uvedli v předchozí kapitole, sémantický důkaz logické pravdivosti a tedy i logického vyplývání zkoumáním všech možných interpretací je v predikátové logice často obtížný. Jednou z efektivních metod je však rezoluční metoda, která je pro predikátovou logiku zobecněním základní rezoluční metody výrokové logiky. Oproti výrokové logice se nám zde objeví dvě komplikace, které jsou kvantifikátory a objektové proměnné. V predikátové logice nemůžeme díky kvantifikátorůmm provést okamžitý převod formule do klauzulárního tvaru, o který se rezoluční metoda opírala v případě výrokového počtu. Řešení je takové, že se obecných kvantifikátorů zbavíme tak, že budeme předpokládat, že všechny volné proměnné ve formulích jsou obecně kvantifikovány. Existenčních kvantifikátorů se zbavíme tzv. skolemizací. Výsledný tvar klauzule se pak nazývá Skolemova klauzulární forma. Rezoluční metodu lze aplikovat právě pouze na formule, které jsou v Skolemově klauzulární formě. Obecně pak postup vypadá tak, že chceme-li zjistit, zda {A 1,,A n } = B, aplikujeme rezoluční metodu na formuli A 1 A n B, neboť pokud je tato formule nesplnitelná, pak je formule (A 1 A n ) B tautologie a vztah {A 1,,A n } = B platí. Definice: Literál je atomická formule (tzv. pozitivní literál), nebo negace atomické formule (tzv. negativní literál), například P(x, g(y)), Q(z) jsou literály. Definice: Klausule je taková sentence, ž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ů. Tedy např. R(a, b), x ( P(x) Q(a, b)), x y (R(x, y) P(x)) jsou klausule, ale x P(x), x (P(x) Q(x)) nejsou klausule. Definice: Skolemova klauzulární forma je uzavřená formule, která je formátu x 1 x n [C 1 C m ] a kde C i jsou klausule. Všechny kvantifikátory zde stojí na začátku formule a formule neobsahuje žádný existenční kvantifikátor. 1.8.1 Skolemizace Máme-li formuli tvaru ( x 1 ) ( x n ) ( y) (P(x 1,, x n,y), podmínku na existenci y můžeme chápat jako podmínku na existenci zobrazení f (tzv. výběrové funkce), která pro konkrétní hodnoty x 1,, x n konstruuje požadované y = f(x 1,, x n ). Místo uvažované klauzule s existenčním kvantifikátorem tak můžeme uvažovat skolemizovanou formuli ( x 1 ) ( x n )(P(x 1,, x n, f(x 1,, x n )). Provedeme-li tuto úpravu s každým existenčním kvantifikátorem zevně dovnitř (vždy při tom volíme nový funkční symbol pro skolemizační funkci), zbavíme se všech 11

se existenčních kvantifikátorů. Jedná-li se o funkci nulové arity (n = 0), použijeme nový konstantní symbol a, který nazýváme skolemizační konstanta. Touto úpravou jsme neobdrželi logicky ekvivalentní formuli a interpretace funkční proměnné f nebyla nijak stanovena. Půjde nám ale opět jen o splnitelnost. Pro důkaz nesplnitelnosti budeme potřebovat ukázat, že všechny instance proměnných vedou ke sporu - o interpretaci funkce f tak nemusíme zajímat, protože nebude vyhovovat žádná. Úloha: Proveďte skolemizaci formule y z P(z,y) x u Q(x,u) 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))] 1.8.2 Postup převodu sentence do klausálního tvaru Nejprve vyřešíme, jak pro danou množinu formulí M najít množinu klausulí S takovou, že množina M je splnitelná právě tehdy, když je splnitelná množina S. Nepožadujeme, aby množiny S a M byly tautologicky ekvivalentní, to by totiž obecně nebylo možné. Jedná se tak o obdobu konjunktivní normální formy pro danou formuli ve výrokové logice. Toto nám následně pomůže využít rezoluční metodu pro zjištění, zda daná množina sentencí je splnitelná i zda daná sentence sémanticky vyplývá z dané množiny sentencí. Následující kroky převedou danou sentenci ϕ do množiny klausulí ϕ S. 1. Přejmenujeme proměnné formule ϕ tak, aby každý vstup kvantifikátoru vázal jinou proměnnou. (Tj. např. formuli x P(x) x Q(x,a) nahradíme formulí xp(x) yq(y, a).) 2. Spojky, nahradíme spojkami, a na základě známých tautologických rovností α β nahradíme α β α β nahradíme ( α β) (α β) 3. Přesuneme spojku co nejníže v derivačním stromu formule, 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řesuneme spojku co nejníže v derivačním stromu formule pomocí vztahů α (β γ) nahradíme (α β) (α γ) α ( 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 a 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 formuli tedy nahradíme množinou S ϕ jejích klausulí. 6. Obsahuje-li formule ψ existenční kvantifikátor, nahradíme každou uzavřenou podformuli tvaru x 1... x n y α(y) formulí x 1... x n α(f(x 1,..., x n )), kde f je libovolný nový funkční symbol arity n. Je-li n = 0, použijeme nový konstantní symbol a. Úloha: Převeďme na klausální tvar následující formuli ϕ = x [ y Q(x, y) y z P(x, y, z)] (jinými slovy, najděte množinu klausulí ϕ S, která je splnitelná právě tehdy, když je splnitelná sentence ϕ). Krok 1. Přejmenujeme proměnnou y na t v podformuli y z P(x, y, z), dostaneme pak ϕ = x [ y Q(x, y) t z P(x,t, z)]. Krok 2. Nahradíme spojku : x [ ( y Q(x, y)) t z P(x,t, z)]. 12

Krok 3. Přesuneme spojku až před atomické formule: x [ ( y Q(x, y)) t z P(x,t, z)] x [ ( y Q(x, y)) t z P(x,t, z)] x [ y Q(x, y) ( t z P(x,t, z))] x [ y Q(x, y) t z P(x,t, z)]. Krok 4 a 5 není potřeba. Krok 6. Protože sentence obsahuje existenční kvantifikátory, provedeme skolemizaci. Postupně odstraňujeme existenční kvantifikátory a to v pořadí, v jakém se objevují v derivačním stromu. x [ y Q(x, y) t z P(x,t, z)]» y Q(a, y) t z P(a,t, z), zavedli jsme nový konstantní symbol a místo proměnné x a dosadili ho za všechny výskyty proměnné x. y Q(a, y) t z P(a,t, z)» Q(a, b) t z P(a,t, z)» Q(a, b) z P(a, c, z). Zavedli jsme nové konstantní symboly b, c; b místo proměnné y, c místo proměnné t. Dostali jsme formuli, která je konjunkcí dvou klausulí, proto Sϕ = {Q(a, b), z P(a, c, z)} 1.8.3 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. Je-li term t substituovatelný za x ve formuli A(x), pak x A(x) = A(x/t). 1.8.4 Rezoluční princip V predikátové logice je logické odvozování, spolu s výsledkem o korektnosti a úplnosti, jedinou cestou, jak zjišťovat splnitelnost množiny formulí. Zde nelze použít tabulkovou metodu oblíbenou ve výrokové logice pro svoji exponenciální časovou náročnost vzhledem k počtu proměnných. Množina všech možných interpretací predikátových formulí je totiž potenciálně nekonečná. Jednou z možností, jak odvozování alespoň částečně automatizovat, je resoluční princip. Jeho princip je takový, že prvně všechny formule převedeme do tautologicky ekvivalentních formulí v konjunktivní normální formě (klausule). Pokud lze v některé dvojici klausulí nalést komplementární literály (dvojici literálů, kde jeden je negací druhého), vytvoříme jejich resolventu, tj. novou klausuli, kde vynecháme komplementární literály. Tento postup opakujeme tak dlouho, dokud lze najít dvojici klausulí s komplementárními literály nebo pokud nezískáme prázdnou klasuli (resolventu). Pokud proces končí získáním prázdné klausule, je daná množina klausulí nesplnitelná. Pokud se proces vytváření zastaví bez získání prázdné klausule, množina klasulí je splnitelná. V predikátové logice je idea resolučního principu totožná s postupem ve výrokové logice. Komplementarita literálů pro úspěšnou tvorbu resolventy dvou klausulí bude v predikátové logice ale podmíněna hledáním speciální substituce (maximálního unifikátoru). Postup hledání vhodné substituce se označuje jako unifikační algoritmus. Chceme-li tedy rozhodnout, zda je splnitelná 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 tak 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).... Resoluční princip predikátové logiky říká, že množina S je splnitelná právě když R*(S) neobsahuje prázdnou klausuli. 1.8.5 Důkaz pravdivosti formule Chceme-li dokázat logickou pravdivost formule A v predikátové logice, pak budeme postupovat obdobně jako ve výrokové logice: 1) Formuli A znegujeme 2) Formuli A převedeme do klausulárního tvaru ( A) S 13

3) Na formuli ( A) S budeme postupně uplatňovat resoluční pravidlo. Pokud získáme prázdnou klausuli, je důkaz úspěšně ukončen. Jinými slovy můžeme tedy říci, že formule A je splnitelná právě když množina R*(( A) S ) obsahuje prázdnou klausuli. Tento třetí bod však v predikátové logice nelze provést tak jednoduše jako ve výrokové logice. Problémem je to, že literály s opačným znaménkem, které bychom mohli při uplatňování rezoluce vyškrtávat, mohou obsahovat různé termy. Úloha: Uvažujme formuli A v klausulárním tvaru: x y z v [p(x, f(x)) q(y, h(y)) ( p(a, z) q(z, v))]. Dokažte, že tato formule je nesplnitelná. Vypišme jednotlivé klausule pod sebe a pokusme se uplatňovat pravidlo rezoluce: 1. p(x, f(x)) 2. q(y, h(y)) 3. p(a, z) q(z, v) Klausule 1. a 3. obsahují literály s opačným znaménkem, avšak uplatnění rezoluce brání to, že p(x, f(x)) p(a, z). Uvědomme si však, že všechny proměnné jsou univerzálně kvantifikovány a že platí zákon konkretizace. Je-li tedy term t substituovatelný za x ve formuli A(x), pak x A(x) = A(x/t), (znamená to tedy, že co platí pro všechny, platí i pro t ). Můžeme se pokusit najít vhodnou substituci termů za proměnné tak, abychom dostali shodné unifikované literály. V našem příkladě taková substituce existuje: x / a, z / f(a). Po provedení této substituce dostaneme klausule: 1. p(a, f(a)) 2. q(y, h(y)) 3. p(a, f(a)) q(f(a), v) kde na 1 a 3 již lze uplatnit pravidlo rezoluce: 4. q(f(a), v) Abychom nyní mohli rezolvovat klausule 2. a 4., zvolíme opět substituci: y / f(a), v / h(f(a)). Dostaneme 2. q(f(a), h(f(a)) ) 4. q(f(a), h(f(a)) ) a jejich rezolucí již obdržíme prázdnou klausuli. Tedy formule A je nesplnitelná. Úloha: Dokážeme správnost úsudku (analytickou pravdivost věty): Jistý filosof odporuje všem filosofům, tedy odporuje sám sobě. Interpretace bude nad množinou individuí, p (podmnožina filosofů), q (relace, ve které budou ty dvojice, kde první odporuje druhému) a větu tak analyzujeme jako x {[p(x) y (p(y) q(x,y))] q(x,x)} Formuli znegujeme a převedeme na klausulární tvar: x y {p(x) [ p(y) q(x,y)] q(x,x)}. Vypišme jednotlivé klausule pod sebe a pokusme se uplatňovat pravidlo rezoluce: 1. p(x) 2. p(y) q(x,y) 3. q(x,x) Provedeme substituci {y/x}: 4. q(x,x) z 1. a 2. 5. z 3. a 4. Obdrželi jsme prázdnou klausuli, původní úsudek je tedy pravdivý. 1.8.3 Důkaz správnosti úsudku 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. Je-li S splnitelná ϕ není důsledkem S. Je-li nesplnitelná, je ϕ důsledkem S. Jinými slovy můžeme říci, že z množin předpokladů S plyne důsledek ϕ právě když množina R*( S { ϕ}) obsahuje prázdnou klausuli. Úloha: Dokažme správnost úsudku: 14

Kdo zná Pavla a Marii, ten Marii lituje. x ( [Z(x, P) Z(x, M)] L(x, M) ) Někteří nelitují Marii, ačkoli ji znají. x [ L(x, M) Z(x, M)] Někdo zná Marii, ale ne Pavla. x [Z(x, M) Z(x, P)] x [ Z(x, P) Z(x, M) L(x, M)] odstranění implikace (1. předpoklad) L(a, M) Z(a, M) Skolemizace (2. předpoklad) y [ Z(y, M) Z(y, P)] negovaný závěr (přejmenování x) Klausule: 1. Z(x, P) Z(x, M) L(x, M) 2. L(a, M) 3. Z(a, M) 4. Z(y, M) Z(y, P) 5. Z(a, P) Z(a, M) rezoluce 1., 2., substituce x/a 6. Z(a, P) rezoluce 3., 5. 7. Z(a, M) rezoluce 4., 6., substituce y/a 8. rezoluce 3., 7. Vyšla prázdná klauzule, z čehož plyne že množina S { ϕ} je nesplnitelná (kontradikce), proto je původní úsudek logicky správný. Úloha: Dokažme správnost úsudku: Všichni členové vedení jsou majiteli obligací nebo akcionáři. Žádný člen vedení není zároveň majitel obligací i akcionář. Všichni majitelé obligací jsou členy vedení. Žádný majitel obligací není akcionář. x [v(x) (o(x) a(x))] x [v(x) (o(x) a(x))] x [o(x) v(x)] x [o(x) a(x)] Klausule: 1. v(x) o(x) a(x) 1. předpoklad 2. v(x) o(x) a(x) 2. předpoklad 3. o(x) v(x) 3. předpoklad 4. o(k) negovaný závěr 5. a(k) (po Skolemizaci) 6. o(x) a(x) rezoluce 2., 3. 7. a(k) rezoluce 4., 6., substituce x/k 8. rezoluce 5., 7. Úsudek je správný. Poznámka: Všimněme si, že jsme první klausuli při důkazu nepoužili. Tedy závěr vyplývá již z druhého a třetího předpokladu (první je pro odvození důsledku nadbytečný). Úloha: Dokažme správnost úsudku: Každý, kdo má rád Jiřího, bude spolupracovat s Milanem. Milan nekamarádí s nikým, kdo kamarádí s Láďou. Petr bude spolupracovat pouze s kamarády Karla. Jestliže Karel kamarádí s Láďou, pak Petr nemá rád Jiřího. 15

x [R(x, J) S(x, M)] x [K(x, L) K(M, x)] x [S(P, x) K(x, Kr) K(Kr, L) R(P, J) Klausule: 1. R(x, J) S(x, M) 1. předpoklad 2. K(y, L) K(M, y) 2. předpoklad 3. S(P, z) K(z, Kr) 3. předpoklad 4. K(Kr, L) negovaný 5. R(P, J) závěr 6. K(M, Kr) rezoluce 4., 2., substituce y/kr 7. S(P, M) rezoluce 3., 6., substituce z/m 8. R(P, J) rezoluce 1., 7., substituce x/p 9. rezoluce 5., 8. Úsudek je správný. Úloha: Dokažme správnost úsudku: Každý muž má rád fotbal a pivo. Xaver má rád pouze milovníky fotbalu a piva. Někteří milovníci fotbalu nemají rádi pivo. Některé ženy nemá Xaver rád. x [M(x) (R(x,f) R(x,p))] x [R(Xa,x) (R(x,f) R(x,p))] x [R(x,f) R(x,p)] x [M(x) R(Xa,x)] Kluasule: 1. M(x) (R(x,f) 2. M(x) (R(x,p) 3. R(Xa,y) (R(y,f) 4. R(Xa,y) (R(y,p) 5. R(k,f) 6. R(k,p) 7. M(z) R(Xa,z) 8. R(Xa,k) rezoluce 4., 6. (y/k) 9. M(k) rezoluce 7., 8. (z/k) 10. R(k,p) rezoluce 2., 9. (x/k) 11. rezoluce 6., 10. Úsudek je správný. 1.9 Literatura 1. předpoklad 2. předpoklad 3. předpoklad negovaný závěr: x [ M(x) R(Xa,x)], (žena = není muž) Pro další studium problematiky predikátové logiky doporučuji čtenáři následující literaturu: Vaníček J. a kolektiv (2008): Teoretické základy informatiky, Kernberg Publishing, s.r.o., Praha Hliněný P. (2012): Matematické Základy Informatiky, skripta FI MU Brno Duží M. (2012): Logika pro informatiky, skripta VŠB-TU Ostrava 16