SLD-derivace. Petr Štěpánek. S využitím materiálu Krysztofa R. Apta

Podobné dokumenty
Logické programy Deklarativní interpretace

Modely Herbrandovské interpretace

Substituce. Petr Štěpánek. S využitím materialu Krysztofa R. Apta. Logické programování 2 1

Částečná korektnost. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

Occur-check (Test konfliktu proměnných)

Unifikace. Petr Štěpánek. S využitím materialu Krysztofa R. Apta. Logické programování 3 1

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

Domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

Systém přirozené dedukce výrokové logiky

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

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

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

Matematická logika. Miroslav Kolařík

10 Přednáška ze

Riemannův určitý integrál

Logika a logické programování

Programování v čistém Prologu

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

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

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

Representace znalostí s použitím klasické negace

Matematika III. Miroslava Dubcová, Daniel Turzík, Drahoslava Janovská. Ústav matematiky

PŘEDNÁŠKA 7 Kongruence svazů

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 3. PREDNÁŠKA - KOMPAKTNÍ PROSTORY.

Aplikace: Znalostní báze

Zastavování výpočtů (Terminace)

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

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 4. PREDNÁŠKA - SOUČIN PROSTORŮ A TICHONOVOVA VĚTA.

Lineární algebra : Skalární součin a ortogonalita

Hypergrafové removal lemma a Szemérediho

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

Kongruence na množině celých čísel

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

Interpolace, ortogonální polynomy, Gaussova kvadratura

α β ) právě tehdy, když pro jednotlivé hodnoty platí β1 αn βn. Danou relaci nazýváme relace

Greenova funkce pro dvoubodové okrajové úlohy pro obyčejné diferenciální rovnice

Zobecněný Riemannův integrál

3. Podmíněná pravděpodobnost a Bayesův vzorec

Matematická analýza pro informatiky I. Limita funkce

Základy matematické analýzy

1 Kardinální čísla. množin. Tvrzení: Necht X Cn. Pak: 1. X Cn a je to nejmenší prvek třídy X v uspořádání (Cn, ),

Rezoluční kalkulus pro výrokovou logiku

Lineární algebra : Lineární zobrazení

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

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

Příklad. Řešte v : takže rovnice v zadání má v tomto případě jedno řešení. Pro má rovnice tvar

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 α

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

Základy logiky a teorie množin

Úvod do vybíravosti grafů, Nullstellensatz, polynomiální metoda

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Definice 1 eulerovský Definice 2 poloeulerovský

Matematická logika. Rostislav Horčík. horcik

5.3. Implicitní funkce a její derivace

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

FREDHOLMOVA ALTERNATIVA

Pomocný text. Polynomy

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

22 Základní vlastnosti distribucí

Nechť je číselná posloupnost. Pro všechna položme. Posloupnost nazýváme posloupnost částečných součtů řady.

9.2. Zkrácená lineární rovnice s konstantními koeficienty

PŘEDNÁŠKA 5 Konjuktivně disjunktivní termy, konečné distributivní svazy

PŘEDNÁŠKA 2 POSLOUPNOSTI

Logické programování

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

INTEGRÁLY S PARAMETREM

Logické programování

4. Topologické vlastnosti množiny reálných

Vztah jazyků Chomskeho hierarchie a jazyků TS

Matematická logika. Miroslav Kolařík

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

2 Důkazové techniky, Indukce

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

Výroková logika - opakování

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

PRIMITIVNÍ FUNKCE. Primitivní funkce primitivní funkce. geometrický popis integrály 1 integrály 2 spojité funkce konstrukce prim.

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

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

Dijkstrův algoritmus

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

Těleso racionálních funkcí

Vrcholová barevnost grafu

Základy matematické logiky

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

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

Principy indukce a rekursivní algoritmy

Lineární algebra : Metrická geometrie

popel, glum & nepil 16/28


1. Obyčejné diferenciální rovnice

Binární vyhledávací stromy pokročilé partie

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

2. LIMITA A SPOJITOST FUNKCE

Množiny, relace, zobrazení

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

Zpracoval: 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.

Úvod do informatiky. Miroslav Kolařík

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

verze 1.3 kde ρ(, ) je vzdálenost dvou bodů v R r. Redukovaným ε-ovým okolím nazveme ε-ové okolí bodu x 0 mimo tohoto bodu, tedy množinu

Transkript:

SLD-derivace Petr Štěpánek S využitím materiálu Krysztofa R. Apta 2006 Logické programování 5 1 Při systematickém studiu SLD-derivací je užitečné využít rezultanty a přiřadit je k SLD-derivačním krokům a posloupnostem takových kroků v SLD-derivacích. Uvažujme SLD-derivační krok Q = θ=> Q 1 a položme si otázku, co vlastně bylo dokázáno provedením tohoto kroku. Odpověď je možné vyjádřit ve tvaru rezultanty Qθ Q 1. Toto tvrzení je motivací ke studiu vztahu rezultant a SLD-derivací. Dokážeme ho později až budeme mít definovanou sémantiku logických programů a větu o korektnosti SLDrezoluce. Definice. ( SLD-rezultantní kroky) (i) Je-li dán SLD-derivační krok Q = θ=> Q 1, říkáme, že rezultanta Qθ Q 1 je přiřazena k tomuto derivačnímu kroku. Logické programování 5 2

(ii) Uvažujme rezultantu. Q A, B, C (1) a klauzulí c. Nechť H B je varianta klauzule c, která je disjunktní v proměnných s rezultantnou (1) a nechť θje mgu B a H. Potom rezultantu. (Q A, B, C)θ (2) nazveme SLD-rezolventou rezultanty (1) a c vzhledem k B a mgu θ. Atom B nazýváme vybraným atomem rezultanty (1). Píšeme (Q A, B, C) = θ/c=> (Q A, B, C)θ (3) a nazýváme (3) SLD-rezultantním krokem. H B je pro tento krok vstupní klauzulí. Pokud klauzule c není v tomto kontextu důležitá, nemusíme ji ve výrazu (3) uvádět. Logické programování 5 3 Definice. (Rezultanty přiřazené k SLD-derivacím) Mějme SLD-derivaci. Q 0 = θ 1 /c 1 => Q 1... Q n = θ n+1 /c n+1 => Q n+1... (1) Nechť pro i > 0. R i Q 0 = θ 1 θ 2... θ i Q i Říkáme, že R i je rezultanta stupně i SLD-derivace (1). Příklad. (SLD-derivace programu SUMA) Úspěšná SLD-derivace programu SUMA a dotazu suma(s 2 (0), s 2 (0), z)) má tyto čtyři rezultantny: stupeň 0: suma(s 2 (0), s 2 (0), z)) suma(s 2 (0), s 2 (0), z)) stupeň 1: suma(s 2 (0), s 2 (0), s(z 1 )) suma(s 2 (0), s(0), z 1 )) stupeň 2: suma(s 2 (0), s 2 (0), s 2 (z 2 )) suma(s 2 (0), 0, z 2 ) stupeň 3: suma(s 2 (0), s 2 (0), s 4 (0)) Logické programování 5 4

V obecném případě derivace (1) je R 0 Q 0 Q 0, R 1 je rezultanta přiřazená k derivačnímu kroku Q 0 = θ 1 => Q 1 a je-li Q n =, potom R n = Q 0 θ 1 θ 2... θ n. Intuitivněřečeno, rezultanta R i popisuje, co je dokázáno po provedení i SLD-derivačních kroků při zachování počátečního dotazu Q 0 a efektů použitých mgu. Na začátku dostáváme tautologii Q 0 Q 0 a je-li Q n =, potom je dokázána instance Q 0 θ 1 θ 2... θ n. Při důkazech formálních vlastností SLD-derivací je často výhodnější pracovat s rezultantami přiřazenými těmto derivacím. Potom je výhodné následující lemma, které také dává nahlédnout na roli standardizace proměnných. Logické programování 5 5 Lemma. (Disjunktnost) Mějme program P a dotaz Q a SLD-derivaci P {Q} s posloupností d 1,..., d n+1,... použitých vstupních klauzulí a s odpovídající posloupností rezultant R 0,R 1,..., R n,... Potom pro i > 0 platí Var(R i ) Var(d i+1 ) = 0. Důkaz. Podle definice standardizace proměnných stačí indukcí podle i dokázat Var( R ) i Var( Q) i U j= 1 ( Var(θ kde θ 1,..., θ n,... jsou použité substituce. j ) Var( d Pro i = 0 je Var(R 0 ) = Var(Q) a není co dokazovat. j )) (2) Logické programování 5 6

Předpokládejme, že (2) platí pro nějaké i > 0. Je-li R i = Q A, B, C kde B je vybraný atom a d i+1 = H B, potom R i+1 = (Q A, B, C)θ i+1 Odtud. Var(R i+1 ) Var(R i ) Var(θ i+1 ) Var(d i+1 ) {indukční hypotéza (2)} Var( Q) i+ 1 U j= 1 ( Var(θ j ) Var( d j )) Logické programování 5 7 Poznámka. Důkaz lemmatu o disjunktnosti naznačuje, že pro analýzu SLD-derivací stačí tvrzení tohoto lemmatu místo podmínky standardizace proměnných. Tím bychom získali silnější verze odvozených důsledků, ale za cenu komplikovanějších důkazů. Takovým způsobem nebudeme lemma o disjunktnosti používat. Lemma o disjunktnosti však dovoluje ke každé SLD-derivaci (1) přiřadit derivaci rezultant R 0 = θ 1 /c 1 => R 1... R n = θ n+1 /c n+1 => R n+1... R i prove- tak, že každá rezultanta R i+1 vznikne ze své předchůdkyně dením jednoho rezultantního kroku. R i = θ i+1 /c i+1 => R i+1 Logické programování 5 8

který se provádí stejným způsobem jako odpovídající SLD-derivační krok Q i = θ i+1 /c i+1 => Q i+1 (3) v derivaci (1). To znamená, že v dotazu Q i na pravé straně rezultanty R i vybereme stejný atom jako v dotazu Q i v SLD-rezolučním kroku (3) a použijeme stejnou vstupní klauzuli a stejnou mgu. Nakonec dokážeme důležitou vlastnost rezultant a rezolvent (dotazů), která ukazuje, že za určitých předpokladů se vlastnost být instancí přenáší - propaguje - odvozováním rezultant. Logické programování 5 9 Lemma. (Propagace) Předpokládejme, že R =θ/c=>r 1 a R =θ /c=>r 1 jsou dva rezultantní kroky takové, že R je instancí R, v obou rezultantách R a R jsou vybrány atomy na stejných pozicích. Potom také R 1 je instancí R 1. Důkaz. Nechť c 1 a c 1 jsou odpovídající klauzule použité ke konstrukci rezultant R 1 a R 1. Podle předpokladu je c 1 variantou c 1 a.. Var(R) Var(c 1 ) = 0 (1) Přijmeme ještě dva pomocné předpoklady Var(R ) Var(c 1 ) = Var(R) Var(c 1 ) = 0 (2) Logické programování 5 10

Pro nějakou substituci η, Var(η) Var(R 1, R 1 ) platí R = R η a pro nějaké přejmenování γ, Var(γ) Var(c 1, c 1 ) platí c 1 = c 1 γ. Nechť R = Q A, B, C R = Q A, B, C c 1 = H B c 1 = H B Potom R 1 = (Q A, B, C)θ R 1 = (Q A, B, C )θ Logické programování 5 11 kde θ je mgu B a H a θ je mgu B a H. Podle (1) a (2) platí Var(η) Var(γ) = 0, takže sjednocení η γ je také substituce. Tedy (Q A, B, C )(η γ ) = Q η A η, B γ, C η = Q A, B, C odkud R 1 = (Q A, B, C )(η γ )θ (3) Použijeme-li (1) a dodatečný předpoklad (2) dostáváme B (η γ ) = B η = B H (η γ ) = H γ = H To znamená, že (η γ )θ unifikuje B a H. Protože θ je mgu těchto atomů, pro nějakou substituci δ platí (η γ )θ = θ δ a podle (3) platí R 1 = R 1 δ a R 1 je instancí R 1. Logické programování 5 12

K dokončení důkazu je třeba ukázat, že dodatečný předpoklad (2) je možné vynechat. K tomu vezměme variantu R rezultanty R takovou, že Var(R ) Var(c 1,c 1 ) = 0 a variantu c 1 klauzule c takovou, že Var(c 1 ) Var(R, R,R ) = 0 Potom s použitím c 1 jako vstupní klauzule při výběru atomu v R na stejné pozici jako v R můžeme sestrojit rezolventu R 1 takovou, že při dvojím opakování předchozího důkazu (bez potřeby využití (2)) ukážeme, že R 1 je instance R 1 a R 1 je instance R 1. Logické programování 5 13 Lemma o propagaci má základní význam, budeme ho používat v důkazech všech následujících vět o SLD-derivacích. Technika využívající rezultanty je ve většině případů výhodnější. Bezprostředním důsledkem lemmatu o propagaci je následující lemma o SLD-derivacich. Důsledek. (Propagace v SLD-derivacích) Mějme dva SLD-derivační kroky. Q = θ/c=>q 1 a Q = θ /c= Q 1 takové, že Q je instancí Q 1 atomy na stejných pozicích byly vybrány v Q Potom Q 1 je instancí Q 1. a Q. Logické programování 5 14

Jaké máme stupně volnosti při výpočtech logických programů? Podle definice SLD-derivace máme v každém SLD-derivačním kroku čtyři volby: (A) volbu vybraného atomu z daného dotazu. (B) volbu programové klauzule použitelné k vybranému atomu. (C) volbu přejmenování programové klauzule. (D) volbu nejobecnější unifikace Probereme důsledky těchto voleb. Nejprve (C) a (D). Nejdříve si povšimneme vztahů mezi SLD-derivacemi. Následující definice dovoluje porovnání dvou SLD-derivací z nichž dotazy jedné jsou instancemi dotazů druhé. Logické programování 5 15 Definice. (Lift derivace) Mějme SLD-derivaci ξ := Q 0 = θ 1 /c 1 => Q 1... Q n = θ n+1 /c n+1 => Q n+1... Říkáme, že SLD-derivace ξ := Q 0 = θ 1 /c 1 => Q 1... Q n = θ n+1 /c n+1 => Q n+1... je lift (pozvednutí) derivace ξ jestliže platí ξ je stejné délky jako ξ Q 0 je instancí Q 0 pro i > 0 je v Q i a Q i vybrán atom na stejné pozici Poznámka. Uvedená definice má smysl, protože v každém kroku je v obou derivacích použita stejná klauzule, takže odpovídající rezolventy mají stejný počet atomů. Logické programování 5 16

Příklad. Uvažujme program SUMA a tuto úspěšnou SLD-derivaci suma(x,y,z) = θ 1 /2=> suma(x 1,y!,z! ) = θ 2 /2=> suma(x 2,y 2,z 2 ) = θ 3 /1=> kde θ 3 = {x 2 /x,y 2 /0, z 2 /x}. (1) Derivace (1) je liftem derivace suma(s(s(0)), s(s(0)), z) = θ 1 /2=> suma(s(s(0)), s(0), z 1 ) = θ 2 /2=> suma(s(s(0)), 0, z 2 ) =θ 3 /1=> (2) protože derivace (1) a (2) mají stejnou délku suma(s(s(0)), s(s(0)), z) je instancí atomu suma(x,y,z) v obou derivacích je na každém kroku vybrán atom na stejné pozici Logické programování 5 17 Přitom derivace (1) není liftem derivace suma(x,y,z) = θ 1 /2=> suma(x 1,y!,z! ) = θ 2 /2=> suma(x 2,y 2,z 2 ) =θ 3 /2 =>... protože obě derivace mají různou délku a ve třetím kroku jsou použity různé klauzule. Věta. (Propagace instancí) Uvažujme SLD-derivaci ξ a její lift ξ. Potom pro i > 0, pokud existuje rezultanta R i stupně i v ξ pak existuje rezultanta R i stupně i v ξ a R i je instancí R i. Důkaz. Stačí uvažovat odpovídající si derivační kroky rezultant a tvrzení dokážeme indukcí podle i s využitím definice liftu a lemmatu o propagaci. Větu o propagaci instancí využijeme k analýze párů SLD-derivací, jejichž odpovídající dotazy jsou navzájem svými variantami. Logické programování 5 18

Definice. (Podobné SLD-derivace) Mějme dvě SLD-derivace ξ := Q 0 = θ 1 /c 1 => Q 1... Q n = θ n+1 /c n+1 => Q n+1... ξ := Q 0 = θ 1 /c 1 => Q 1... Q n = θ n+1 /c n+1 => Q n+1... Říkáme, že tyto SLD-derivace jsou podobné jestliže platí ξ je stejné délky jako ξ Q 0 a Q 0 jsou navzájem svými variantami pro i > 0 je v Q i a Q i vybrán atom na stejné pozici Poznámka. Stejně jako v případě definice liftu má tato definice smysl, protože v každém kroku je v obou derivacích použita stejná klauzule, takže odpovídající rezolventy mají stejný počet atomů. Logické programování 5 19 Poznámka. Dvě SLD-derivace jsou podobné, jestliže jejich počáteční dotazy jsou navzájem svými variantami obě derivace mají stejnou délku pro každý SLD-derivační krok platí. - vstupní klauzule jsou navzájem svými variantami - vybrány jsou atomy na stejných pozicích Věta. (Varianty) Dvě podobné SLD-derivace mají v každém stupni i rezultanty, které jsou navzájem svými variantami. Důkaz. Podobné SLD-derivace jsou liftem jedna druhé a naopak. Stačí tedy dvakrát použít Větu o propagaci instancí a připomenout si Lemma o variantách termů. Logické programování 5 20

Důsledek. (Varianty vypočtených instancí) Mějme dvě úspěšné podobné SLD-derivace dotazu Q s vypočtenými odpovědními substitucemi θ a η. Potom odpovědní instance Qθ a Qη jsou navzájem svými variantami. Důkaz. Důsledek plyne použitím Věty o variantách na poslední rezultany v obou derivacích. Poznámka. Tento důsledek ukazuje, že volby přejmenování klauzulí z programu a volby nejobecnějších unifikací podle (C) a (D), nemají - až na přejmenování proměnných - žádný vliv na tvrzení dokázané úspěšnou SLD-derivací daného dotazu Q. Logické programování 5 21 Lifting aneb jak sestrojit lifty úspěšných SLD-derivací. Zatím jsme mluvili o liftech derivací spíš obecně, měli jsme k dispozici jen jeden příklad. Ale ten ukazuje, že uspěšná derivace instance obecného dotazu má jako lift úspěšnou derivaci tohoto obecného dotazu, kde místo termů z instance jsou jen proměnné. Začneme skromněji, nejprve budeme konstruovat lift jednoho SLD-derivačního kroku. Logické programování 5 22

Definice. (Lifting v jednom kroku) Mějme jeden SLD-derivační krok Q = θ/c=> Q 1 (1) Říkáme, že SLD-derivační krok Q = θ /c=> Q 1 (2) je lift kroku (1), jestliže platí Q je instancí Q v Q a Q byly vybrány atomy na stejných pozicích Q 1 je instancí Q 1 Situaci zobrazuje následující diagram: Logické programování 5 23 Q = θ /c=> Q 1 Q = θ/c => Q 1 Šipky vedou od obecnějšího k méně obecnému atomu. V obou derivačních krocích je použita stejná klauzule. Lemma. (Lifting v jednom kroku) Mějme SLD-derivační krok Qη = θ/c=> Q 1 a variantu c klauzule c disjunktní v proměnných s dotazem Q. Potom pro nějakou substituci θ a atom Q 1 platí Q = θ /c=> Q 1 kde c je použitá vstupní klauzule Q = θ /c=> Q 1 je lift Qη = θ/c=> Q 1 Logické programování 5 24

Důkaz. Nejprve dokážeme následující Pozorování: Předpokládejme, že A a H jsou dva atomy disjunktní v proměnných, které se unifikují. Potom A se unifikuje s každou variantou H atomu H, která je disjunktní v proměnných s A. Důkaz pozorování. Nechť H splňuje podmínky pozorování. Pro nějaké přejmenování γ, Dom(γ) Var(H ) tedy platí H = H γ. Nechť θ je unifikace A a H. a A se unifikuje s H. Potom Aγθ = Aθ = Hθ = H γθ [konec důkazu pozorování] Dále, nechť c 1 je variantou c, která je disjunktní v proměnných s Q, Qη a Dom(η). Podle pozorování Qη = θ 1 /c=> Q 2 (3) pro nějakou unifikaci θ 1 a atom Q 2, při použití c 1 jako vstupní klauzule. Předpokládáme také, že atom Aη byl vybrán v původním kroku a ve (3). Logické programování 5 25 Nechť H je hlava c 1. Atomy A a H se unifikují, protože podle volby c 1 platí Aηθ 1 = Hθ 1 tedy opět podle pozorování a H = Hη Q = θ /c=> Q 1 (4) pro nějakou unifikaci θ a dotaz (rezolventu) Q 1, kde ve (4) je c použitá vstupní klauzule a A je vybraný atom. Nakonec podle Důsledku pro propagaci instancí v rezolventách dostáváme, že (4) je lift Qη = θ/c=> Q 1. Věta. (Lifting) Ke každé SLD-derivaci ξ pro P {Qη}, existuje SLD-derivace, která je liftem ξ. Logické programování 5 26

Důkaz. SLD-derivaci, která je liftem derivace ξ lze setrojit opakovaným použitím Lemmatu o liftingu v jednom kroku. Důsledek. (Lifting ) Ke každé úspěšné SLD-derivaci ξ pro P {Qη} s vypočtenou odpovědní substitucí θ, existuje úspěšná SLD-derivace ξ pro P {Q} s vypočtenou odpovědní substitucí θ, taková, že platí: ξ je liftem ξ a má stejnou délku Qθ je obecnější než Qηθ Důkaz. Podle Věty o liftingu lze sestrojit lift ξ derivace ξ. Výsledek potom plyne z Věty o instancích rezultant ξ a ξ, kterou použijeme na poslední rezultantu ξ. Logické programování 5 27