Logické programy Deklarativní interpretace

Podobné dokumenty
Modely Herbrandovské interpretace

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

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

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

Matematická logika. Miroslav Kolařík

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

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

Matematická logika. Miroslav Kolařík

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

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

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

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

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

Matematická logika. Rostislav Horčík. horcik

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

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

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

2.2 Sémantika predikátové logiky

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

Programování v čistém Prologu

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

Aplikace: Znalostní báze

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

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

Sémantika predikátové logiky

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

4.2 Syntaxe predikátové logiky

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

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 α

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

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

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

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

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

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

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

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

PŘEDNÁŠKA 7 Kongruence svazů

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

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

Výroková logika - opakování

Základy matematické logiky

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

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

Logika a logické programování

Základy logiky a teorie množin

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

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

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

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

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 Σ

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

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

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

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

Matematická logika. Rostislav Horčík. horcik

Matematická analýza 1

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

Logické programování

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

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

Základy teorie množin

Množiny, relace, zobrazení

1 Báze a dimenze vektorového prostoru 1

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

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...

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

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

Báze a dimenze vektorových prostorů

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

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

Matematická logika. Miroslav Kolařík

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

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, ),

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

Základní pojmy matematické logiky

Matematika B101MA1, B101MA2

Predikátová logika. Z minula: 1. jazyk logiky 1. řádu. 2. term a formule. 3. interpretace jazyka (relační struktura) 4. Tarského definice pravdy

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

verze 29/9/09 textu o logice, aritmetice a M. Bizzarrimu.

popel, glum & nepil 16/28

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

Úvod do informatiky. Miroslav Kolařík

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

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

METRICKÉ A NORMOVANÉ PROSTORY

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

Matematická logika. Miroslav Kolařík

Doporučené příklady k Teorii množin, LS 2018/2019

Co je to univerzální algebra?

Rezoluční kalkulus pro výrokovou logiku

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

1 Lineární prostory a podprostory

Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace

Poznámka. Je-li f zobrazení, ve kterém potřebujeme zdůraznit proměnnou, píšeme f(x) (resp. f(y), resp. f(t)) je zobrazení místo f je zobrazení.

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

1 Množiny, výroky a číselné obory

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

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Vrcholová barevnost grafu

Transkript:

Logické programy Deklarativní interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 7 1 Algebry. (Interpretace termů) Algebra J pro jazyk termů L obsahuje Neprázdnou množinu D, která se nazývá doména., Pro každý n-ární funkční symbol f jazyka L zobrazení f J : D n D. Ohodnocení proměnných σ je zobrazení, které každé proměnné x přiřazuje hodnotu σ(x) z domény D. při ohodnocení proměnných σ definu- Interpretaci (hodnoty) termů jeme obvyklým způsobem.. Říkáme, že term t je základní (ground), jestliže neobsahuje proměnné. Logické programování 7 2

je-li term t proměnná x, jeho hodnota je σ(x) ε D, je-li t složený term f (t 1,..., t n ) jeho hodnota σ(t) je. f J (σ(t 1 ),..., σ(t n )) ε D. Pro každou konstantu c platí σ(c) = c J.. Hodnoty konstant nezáleží na ohodnocení proměnných. To také platí pro každý základní term t jeho hodnota σ(t) není závislá na ohodnocení proměnných σ. Příklad. (Zamýšlené a bizarní algebry) a) standardní model N (interpretace) přirozených čísel je algebra (struktura) N = <N, 0 N, + N, N > s množinou přirozených čísel N jako doménou a obvyklou interpretací nuly, sčítání a násobení. Logické programování 7 3 b) bizární, ale vyhovující definici algebry, je interpretace jazyka přirozených čísel C = <C, 0 c, + c, c >, kde doménou je množina komplexních čísel, nula je interpretována jako nula v komplexních číslech, sčítání definuje rovnost c + c d = c π d a násobení c c d = c + i d. Definice. (Interpretace jazyka) Interpretace jazyka programů L obsahuje algebru J s doménou D, rozšířenou o interpretaci predikátových symbolů: ke každému n-árnímu predikátovému symbolu p je přiřazena relace p I, která je podmnožinou D n. Říkáme, že I je definována nad J, D je doménou I a z praktických důvodů pak označujeme zobrazení f J jako f I. Logické programování 7 4

Sémantika jazyka programů se definuje obvyklým způsobem, jenom formulí je v definici méně. Nechť L je jazyk programů. Souhrnným názvem výraz budeme označovat atomy, dotazy, rezultanty a klauzule definované v jazyce L. Budeme definovat vztah pravdivosti (splňování) I = σ E mezi interpretací I jazyka L, ohodnocením proměnných σ v doméně interpretace I a výrazem E. Je-li I = σ E říkáme, že výraz E je pravdivý v interpretaci I při ohodnocení σ. je-li p (t 1,..., t n ) atom, potom. I = σ p (t 1,..., t n ) jestliže (σ(t 1 ),..., σ(t n )) ε p I je-li A 1, A 2,..., A n dotaz. I = σ A 1, A 2,..., A n jestliže I = σ A i, pro všechna i,1 < i <n Logické programování 7 5 je-lia B rezultanta, potom. I = σ A B jestliže I = σ A za předpokladu I = σ B speciálně, je-li H B klauzule, potom. I = σ H B jestliže I = σ H za předpokladu I = σ B a pro jednotkovou klauzuli H.. I = σ H jestliže I = σ H Říkáme, že výraz E je pravdivý v interpretaci I, je-li pravdivý při všech ohodnoceních proměnných. Přitom prázdný dotaz je pravdivý ve všech interpretacích. Pokud výraz E není pravdivý v I, píšeme I E. jestliže Logické programování 7 6

Poznámka. Je-li výraz E základní (bez proměnných), pak pro každou interpretaci I a libovolná dvě ohodnocení σ, τ platí I = σ E právě když I = τ E odtud plyne, že základní výraz E je pravdivý v interpretaci I, je-li pravdivý při alespoň jednom ohodnocení. Definice. (Univerzální a existenční uzávěr) Je-li E výraz, zavedeme pojem univerzálního uzávěru E a existenčního uzávěru E, které budeme používat jen při sémantické analýze programů. Jejich sémantiku definujeme takto I = E jestliže platí I = σ E pro všechna ohodnocení σ, I = E jestliže platí I = σ E pro alespoň jedno σ. Pro každý výraz E platí I = E právě když I = E používat Logické programování 7 7 Definice. (Modely) Je-li S množina výrazů (nebo jejich uzávěrů), říkáme, že interpretace I je model S, jestliže všechny výrazy z S jsou pravdivé v I. Speciálně, I je model programu P jestliže všechny klauzule programu P jsou pravdivé v I. Definice. (Sémantický důsledek, sémantická ekvivalence) Jsou-li dány dvě množiny výrazů (nebo jejich uzávěrů) S a T stejného, jazyka (i) říkáme, že T je sémantický důsledek S nebo, že S sémanticky implikuje T apíšeme S = T, jestliže každý model S je také modelem T. Pokud některá množina sestává z jediného prvku, vynecháváme závorky { } a zmíněnou množinu nahradíme tímto prvkem. Logické programování 7 8

(ii) říkáme, že S a T jsou sémanticky ekvivalentní, jestliže současně platí S = T a T = S. Jinými slovy S a T jsou sémanticky ekvivalentní, právě když mají stejné modely. Lemma. Jsou-li E, F výrazy, S, T, U množiny výrazů a A, B, C dotazy, potom platí (i) E = Eθ (ii) Eθ = E pro všechny substituce θ pro všechny substituce θ (iii) jsou-li E a F variantami, potom E = F a F = E (iv) S {E} = E (v) S = T a T = U implikuje S = U (vi) je-li E = F, potom S = E implikuje S = F Logické programování 7 9 (vii) je-li S = A B, potom S = A, C B, C a S = C, A C, B platí pro každé C, (viii) je-li S = A B a S = B C, potom S = A C. Označení. Je-li dán jazyk L, výraz E a množina výrazů S jazyka L, (i) množinu všech instancí výrazu E označujeme inst(e), podobně množinu instancí všech výrazů z množiny S označíme inst(s), (ii) množinu všech základních (ground) instancí výrazu E (tedy instancí, které neobsahují proměnné) označujeme ground(e) a množinu všech základních instancí všech výrazů z množiny S označíme ground (S). Logické programování 7 10

Lemma. (Rezultanty) Korektnost SLD-rezoluce. (i) Nechť Q = θ/c=> Q 1 je SLD-derivační krok a r je odpovídající rezultanta. Potom c = r (ii) Mějme SLD-derivaci P {Q} s posloupností R 0,..., R n,... odpovídajících rezultant. Potom pro každé i > 0 platí P = R i Důkaz. Předpokládejme, že Q := A, B, C, kde B je vybraný atom z Q. Předpokládejme, že H B je použitá vstupní klauzule. Potom Q 1 = (A, B, C)θ a r = (A, B, C)θ (A, B, C)θ Logické programování 7 11 Nyní c = Hθ Bθ a také c = Bθ Bθ, protože θ unifikuje H a B. K oběma stranám druhé klauzule můžeme přidat konjunkce Aθ a Cθ. Dostáváme. c = (A, B, C)θ (A, B, C)θ tedy c = r. (ii) Předpokládejme, že. Q Q 0 = θ 1 => Q 1... Q n = θ n+1 => Q n+1... je uvažovaná SLD-derivace. Tvrzení dokazujeme indukcí. Pro i = 0 je rezolventa R 0 tautologií, je pravdivá i bez předpokladu c. Případ i = 1 byl dokázán v (i) protože R 1 je rezultanta odpovídající rezolučnímu kroku Q 0 = θ 1 => Q 1. Logické programování 7 12

Indukční krok. Předpokládáme, že platí P = R i pro rezultantu stupně i, (a rezultanty nižších stupňů). K rezultantě R i+1 vede i + 1 rezoluční krok Q i = θ n+1 => Q i+1. Tomuto rezolučnímu kroku je přiřazena (malá) rezultanta r i = Q i θ i+1 Q i+1 (1) Přitom podle definice rezultanty stupně i platí R i = Q 0 θ 1... θ i Q i odkud R i θ i+1 = Q 0 θ 1... θ i θ i+1 Q i θ i+1 (2) a podle definice rezultanty stupně i + 1 je R i+1 = Q 0 θ 1... θ i θ i+1 Q i+1 (3) protože P = r i podle (i) a z indukčního předpokladu také P = R i, je i implikace (2) sémantickým důsledkem programu P. Složením implikací (1) a (2) dostaneme rezultantu (3), pro kterou nakonec platí P = R i+1. Logické programování 7 13 Věta. (Korektnost SLD-rezoluce) Předpokládejme, že exisuje úspěšná SLD-derivace P {Q} s vypočtenou odpovědní substitucí θ. Potom P = Qθ. Důkaz. Předpokládejme, že θ 1,..., θ n je posloupnost použitých mgu. Podle lemmatu o rezultantách, pro poslední rezultantu dané SLD-derivace platí P = Qθ 1... θ n. A vypočtená odpovědní substituce θ = θ 1,..., θ n Var(Q), to znamená, že jsme dokázali P = Qθ. Důsledek. Předpokládejme, že existuje úspěšná SLD-derivace P {Q}. Potom platí P = Q. Logické programování 7 14

Definice. (Korektní instance) Úplnost SLD-rezoluce. Předpokládejme, že P = Qθ. Potom θ Var(Q) nazýváme korektní odpovědní substituce pro dotaz Q a Qθ nazýváme korektní instance. Korektní instance nemusí být nutně vypočtená, intuitivně spíš odpovídá uhodnutému řešení. Věta. (Silná forma věty o úplnosti SLD-rezoluce) Nechť P = Qθ. Potom pro každé výběrové pravidlo R existuje úspěšná SLD-derivace pro P {Q} podle R s vypočtenou odpovědní substitucí η taková, že Qη je obecnější než Qθ. Bez důkazu. Logické programování 7 15 Silná forma věty o úplnosti SLD-rezoluce ukazuje, že nelze ztotožnit korektní a vypočtené odpovědní instance. Příklad. Mějme jazyk, který obsahuje (unární) predkát p a alespoň jednu konstantu a. Je-li P = {p(y) } program a Q = p(x) dotaz, potom {y/a} je korektní odpovědní substituce, ale {y/x} je vypočtená odpovědní substituce. Silná forma věty o úplnosti je důležitá, protože spolu s větou o korektnosti SLD-rezoluce ukazuje, že mezi deklarativní a procedurální interpretací logických programů existuje úzký vztah nezávisle na volbě výběrového pravidla. Tato korespondence však není zcela dokonalá, protože vypočtené a korektní odpovědní substituce nemusí být totožné. Logické programování 7 16

Něco o modelech V deklarativních interpretacích hrají důležitou roli dva typy modelů (interpretací) termové a Herbrandovy modely. Mějme jazyk L, množinu všech termů jazyka L nazveme termovým univerzem jazyka L a označíme TU L. Protože jsme předpokládali, že L má nekonečně mnoho proměnných, je i TU L nekonečná množina. Množinu všech atomických formulí (atomů) jazyka L nazveme termovou bází jazyka L a označíme TB L. Definice. (Termová algebra) Termová algebra pro jazyk L obsahuje doménu TU L, pro každý n-ární funkční symbol f jeho kanonickou interpretaci Logické programování 7 17 t 1,..., t n přiřa- tedy zobrazení (TU L ) n do TU L takové, že n-tici termů zuje term f (t 1,..., t n ). Termovou interpretací I jazyka L je každá interpretace L nad termovou algebrou L. Tedy každému n-árnímu predikátovému symbolu p je přířazena relace p I (TU L ) n. Termovým modelem množiny výrazů S je termová interpretace, která je modelem S. Poznámka. Protože interpretace funkčních symbolů je jednoznačně určena, každému jazyku L je přiřazena jediná termová algebra. Termová interpretace jazyka L je tedy jadnoznačně určena interpretací predikátových symbolů. Logické programování 7 18

To znamená, že je zde přirozený vzájemně jednozačný vztah mezi termovými interpretacemi a podmnožinami termové báze TB L, který lze vyjádřit zobrazením, které každé termové interpretaci I přiřazuje množinu atomů {p(t 1,..., t n ) p je n-ární predikát a (t 1,..., t n ) ε p I } Můžeme tedy termové interpretace pro L ztotožnit s (případně prázdnými) podmožinami termové báze TB L. Ohodnocení proměnných σ v termovém univerzu TU L přiřazuje každé proměnné x term z TU L. Je-li X konečná množina proměnných, restrikcí σ X dostáváme sub stituci. Lemma. (Termové interpretace) Je-li I termová interpretace, potom pro každý atom A a klauzuli c (i) I = σ A právě když A(σ Var (A)) ε I Logické programování 7 19 (ii) I = A právě když inst(a) I (iii) I = c právě když pro všechny instance A B 1,..., B n ε inst(c). {B 1,..., B n } I implikuje A ε I. Důkaz. (i) pro libovolný term t a konečnou množinu proměnných X takovou, že Var(t) X, se indukcí podle složitosti termu t dokáže σ(t) = t (σ X ). To znamená, že hodnota, kterou termu t přiřadí ohodnocení σ je rovna instanci, která vznikne použitím substituce (σ X ) na term t. Pro atom A = p(t 1,..., t n ) dostáváme I = σ p(t 1,..., t n ) právě když. (t 1 θ,..., t n θ ) ε p I. právě když. p (t 1,..., t n )θε I kde θ = (σ Var (A)). Logické programování 7 20

(ii) bezprostředně vyplývá z (i). (iii) Podle (i). I = σ A B 1,..., B n.. právě když {B 1 θ,..., B n θ} I implikuje Aθ εi kde θ = (σ Var (A B 1,..., B n )). Tvrzení (iii) plyne z definice pravdivosti klauzule... Poznámka. Tvrzení (ii) z předchozího lemmatu ukazuje, že v obecném případě nemůžeme ztotožnit termovou interpretaci s množinou atomů, které jsou v ní pravdivé. K tomu je zapotřebí ještě další podmínka. impli- Definice. (Termové interpretace uzavřené na substituce) Termová interpretace je uzavřená na substituce jestliže A ε I kuje inst(a) I. Nyní platí: je-li I termová interpretace uzavřená na substituce, potom I ={ A A je atom a I = A} Logické programování 7 21 Popíšeme specifickou konstrukci termových modelů programů. Definice. (Implikační stromy) (i) Implikační strom vzhledem k programu P, je konečný strom, jehož uzly jsou atomy. Pro každý uzel A a jeho bezprostřední následníky B 1,..., B n patříklauzule A B 1,..., B n do inst(p). Speciálně, je-li A list implikačního stromu, jednotková klauzule A je prvkem inst(p). (ii) Říkáme, že atom A má implikační strom vzhledem k P, je-li A kořenem nějakého implikačního stromu vzhledem k P. Říkáme, že implikační strom je základní, jestliže všechny jeho uzly jsou základní atomy. Poznámka. Stejný atom může být kořenem několika implikačních stromů vzhledem k programu P. Je-li jednotková klauzule A prvkem inst(p), pak atom A je kořenem jednoprvkového implikačního stromu. Logické programování 7 22

Příklad. Atom happy má tento základní implikační strom vzhledem k programu SUMMER. summer happy warm summer Logické programování 7 23 Lemma. (Termový model C(P) ) Termová interpretace C(P) = { A A má implikační strom vzhledem k P } je modelem programu P. Důkaz. Podle tvrzení (iii) lemmatu o termových interpretacích stačípro každou klauzuli. A B 1,..., B n z inst(p) ukázat, že.. {B 1,..., B n } C(P) implikuje A ε C(P). To však znamená, že A má implikační strom vzhledem k P. C(P) je tedy modelem P. Logické programování 7 24

Věta. (Nejmenší termový model) C(P) je nejmenší termový model programu P. Důkaz. Nechť I je termový model P. Potom I je také model inst(p). Ukážeme, že.. A ε C(P) implikuje I = A. Tvrzení věty potom plyne z (ii) v lemmatu o termových interpretacích. Postupujeme indukcí podle počtu uzlů i v implikačním stromu atomu A vzhledem k programu P. Pro i = 1 je jednotková klauzule A prvkem inst(p), tedy I = A. Indukční krok. Předpokládejme, že A je kořenem implikačního stromu vzhledem k P, který má i > 1 uzlů. Potom pro nějaké n > 1 atomy B 1,..., B n je klauzule A B 1,..., B n, prvkem inst(p) a Logické programování 7 25 každé B j, 1 < j < n má implikační strom vzhledem k P s k j < i. Z indukční hypotézy potom I = B j, pro každé 1 < j < n. Ovšem podle I = A B 1,..., B n, tedy I = A. Věta. (Sémantická ekvivalence) Pro libovolný atom A platí P = A právě když C(P) = A. Poznámka. Tento výsledek ukazuje ukazuje, že model C(P) je sémanticky ekvivalentní deklarativní interpretaci programu P. Nejprve dokažeme následující lemma. Lemma. Je-li atom A pravdivý ve všech termových modelech programu P, potom P = A. Logické programování 7 26

Důkaz. Nechť I je model P. Potom pro každou kaluzuli. H B 1,..., B n z inst(p) platí I = B 1,..., I = B n, implikuje I = H (1) To proto, že I je také model inst(p), takže pro všechna ohodnocení proměnných σ platí, že I = σ B 1,..., B n implikuje I = σ H. Nyní nechť I T = { A A je atom takový, že I = A } označuje termovou interpretaci odpovídající I. Z (iii) Lemmatu o termových interpretacích a (1) dostáváme, že I T také model (P). Navíc, podle (ii) z Lemmatu o termových interpretacích plyne, že v obou interpretacích I a I T jsou pravdivé stejné atomy. Odtud plyne tvrzení lemmatu. Důkaz Věty. Zvolme pevně jeden atom A. Ukázali jsme, že C(P) je model P, tedy z P = A plyne C(P) = A. Opačná implikace bezprostředně Logické programování 7 27 tvrzení (ii) Lemmatu o termových interpretacích, předchozího lemmatu a faktu, že C(P) je nejmenší termový model P. Logické programování 7 28

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í ξ := 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... Logické programování 7 29