Teorie logického programování Predikátová logika l.řádu PROLOG: PROgramming in LOCic, část predikátové logiky l.řádu ■ fakta: rodic(petr, petri k), VXa(X) ■ klauzule: VX VY rodic(X,Y) => predek(X.Y) Predikátová logika I. řádu (PL1) ■ soubory objektů: lidé, čísla, body prostoru, ... ■ syntaxe PL1, sémantika PL1, pravdivost a dokazatelnost Rezoluce ve výrokové logice, v PL1 ■ dokazovací metoda Rezoluce v logickém programování Backtracking, řez, negace vs. rezoluce Predikátová logika I. řádu (PL1) Abeceda JA jazyka L PLI se skládá ze symbolů: ■ proměnné X, Y, ... označují libovolný objekt z daného oboru ■ funkční symboly f, g, ... označují operace (příklad: +, x ) ■ arita = počet argumentů, n-ární symbol, značíme f/n ■ nulární funkční symboly - konstanty: označují význačné objekty (příklad: 0,1,...) ■ predikátové symboly p,q, ... pro vyjádření vlastností a vztahů mezi objekty ■ arita = počet argumentů, n-ární symbol, značíme p/n příklad: <, e ■ logické spojky a, v, =>, = ■ kvantifikátory V, 3 ■ logika I. řádu používá kvantifikaci pouze pro individua (odlišnost od logik vyššího řádu) ■ v logice 1. řádu nelze: v1:¥AeI,¥/:I-I ■ závorky: ),( Hana Rudová, Logické programování I, 18. března 2007 3 Predikátová logika Hana Rudová, Logické programování I, 18. března 2007 2 Teorie logického programování Jazyky PL1 ■ Specifikace jazyka £ je definována funkčními a predikátovými symboly symboly tedy určují oblast, kterou jazyk popisuje ■ Jazyky s rovností: obsahují predikátový symbol pro rovnost „=" Příklady ■ jazyk teorie uspořádání ■ jazyk s =, binární prediátový symbol < ■ jazyk teorie množin ■ jazyk s =, binární predikátový symbol e ■ jazyk elementární aritmetiky ■ jazyk s =, nulární funkční symbol 0 pro nulu, unární funkční symbol s pro operaci následníka, binární funkční symboly pro sčítání + a násobení x Hana Rudová, Logické programování I, 18. března 2007 4 Predikátová logika Term, atomická formule, formule Term nad abecedou JA ■ každá proměnná z JI je term ■ je-li f/n z JI a t\.....tn jsou termy, pak f(t\.....tn) je také term ■ každý term vznikne konečným počtem užití přechozích kroků f( X, g(X,0)) Atomická formule (atom) nad abecedou JA ■ je-li pln z a ti.....tn jsou termy, pak p(t\.....tn) je atomická formule f(X) < g(X,0) Formule nad abecedou JA ■ každá atomická formule je formule ■ jsou-li F a G formule, pak také (-*F), (F a G), (F v G), (F => G), (F = G) jsou formule ■ je-li X proměnná a F formule, pak také (VX F) a (3X F) jsou formule ■ každá formule vznikne konečným počtem užití přechozích kroků (3X ((f(X) = 0) a p(0))) Hana Rudová, Logické programování I, 18. března 2007 5 Predikátová logika Interpretace ■ Interpretace 1 jazyka L nad abecedou JA je dána ■ neprázdnou množinou T> (také značíme \1\, nazývá se univerzum) a ■ zobrazením, které ■ každé konstantě ceí přiřadí nějaký prvek T> ■ každému funkčnímu symbolu f/n e JA přiřadí n-ární operaci nad T> ■ každému predikátovému symbolu p In e JA přiřadí n-ární relaci nad T> ■ Příklad: uspořádání na R ■ jazyk: predikátový symbol mensí/2 ■ interpretace: univerzum K; zobrazení: mensí(x,y) := x < y ■ Příklad: elementární aritmetika nad množinou N (včetně 0) ■ jazyk: konstanta zero, funční symboly s/l, plus/2 ■ interpretace: ■ univerzum N; zobrazení: zero := 0, s(x):=l+x, plus(x,y) := x + y Hana Rudová, Logické programování I, 18. března 2007 6 Predikátová logika Sémantika formulí Ohodnocení proměnné qp(X): každé proměnné X je přiřazen prvek \1\ Hodnota termu
(plus(s(zero),X)) = cp(s(zero)) + cp(X) = (1 + cp(zero)) + 0= (1 + 0)+ 0=1
Každá dobře utvořená formule označuje pravdivostní hodnotu (pravda, nepravda) v závislosti na své struktuře a interpretaci Pravdivá formule 1 \=v Q: formule Q označena pravda Neravdivá formule 1 tfv Qj. formule Q označena nepravda
■ příklad: p/1 predikátový symbol, tj. p s p := {(1), (3), (5>,...} '1 N p(zero) a p(s(zero)) iff '1 N p(zero) a 'i N p(s(zero))
iff {qp(zero)) e p a (q?(s(zero))) e p iff {qp(zero)) e p a <(1 + q?(zero)) e p iff <0)epa