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

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

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

Logické programy Deklarativní interpretace

Modely Herbrandovské interpretace

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

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

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

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

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

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 Σ

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

Množiny, relace, zobrazení

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

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

Naproti tomu gramatika je vlastně soupis pravidel, jak

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

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

Matematická logika. Miroslav Kolařík

Riemannův určitý integrál

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

PŘEDNÁŠKA 7 Kongruence svazů

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

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

Úvod do informatiky. Miroslav Kolařík

Lineární algebra : Lineární prostor

Vrcholová barevnost grafu

4.2 Syntaxe predikátové logiky

Matice. a m1 a m2... a mn

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

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

Matematická logika. Miroslav Kolařík

Přednáška 6, 6. listopadu 2013

LIMITA A SPOJITOST FUNKCE

Základy logiky a teorie množin

Základy teorie množin

Funkce, elementární funkce.

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

Lineární algebra : Báze a dimenze

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

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

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

Hypergrafové removal lemma a Szemérediho

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

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

Lineární algebra Kapitola 1 - Základní matematické pojmy

Těleso racionálních funkcí

množinu definujeme axiomaticky: nesnažíme se ji zkonstruovat (dokonce se ani nezabýváme otázkou,

Limita a spojitost funkce a zobrazení jedné reálné proměnné

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

Lineární algebra : Polynomy

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

Věta o dělení polynomů se zbytkem

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

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

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

Organizace. Zápočet: test týden semestru (pátek) bodů souhrnný test (1 pokus) Zkouška: písemná část ( 50 bodů), ústní část

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

6. přednáška 5. listopadu 2007

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

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

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

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

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

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

Matematická logika. Rostislav Horčík. horcik

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

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

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


Výroková logika dokazatelnost

Limita a spojitost funkce

NAIVNÍ TEORIE MNOŽIN, okruh č. 5

Matematická analýza 1

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

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

10. DETERMINANTY " # $!

PŘEDNÁŠKA 2 POSLOUPNOSTI

Vysoké učení technické v Brně Fakulta informačních technologií. Regulární pologrupy. Semestrální práce do předmětu Algebra, Kombinatorika, Grafy

Spojitost a limita funkce

Funkce zadané implicitně

PRIMITIVNÍ FUNKCE DEFINICE A MOTIVACE

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

označme j = (0, 1) a nazvěme tuto dvojici imaginární jednotkou. Potom libovolnou (x, y) = (x, 0) + (0, y) = (x, 0) + (0, 1)(y, 0) = x + jy,

Báze a dimenze vektorových prostorů

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

Limita funkce. FIT ČVUT v Praze. (FIT) Limita funkce 3.týden 1 / 39

Úvod do informatiky. Miroslav Kolařík

Logické programování

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

1 Báze a dimenze vektorového prostoru 1

Vybrané kapitoly z matematiky

2. LIMITA A SPOJITOST FUNKCE

Sémantika predikátové logiky

Úvod do informatiky. Miroslav Kolařík

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

6 Lineární geometrie. 6.1 Lineární variety

Limita a spojitost funkce. 3.1 Úvod. Definice: [MA1-18:P3.1]

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

Základy matematické analýzy

Lineární algebra : Metrická geometrie

Transkript:

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

Algebra termů Předpokládáme, že je dán jazyk termů. L, definovali jsme množinu jeho Zavedeme některé užitečné pojmy. Připomeňme, že konstanty ztotožňujeme s funkčními symboly, které nepracují s žádnými argumenty. Obvykle je značíme a, b, c, d,... z kontextu je vždy jasné, zda jde o konstantu nebo o název klauzule, záměna nehrozí. Term, který neobsahuje žádné proměnné nazýváme základní (anglicky ground). Logické programování 2 2

Definice Je-li t term, množinujehoproměnných označujeme Var(t), říkáme, že s je podterm termu t, je-li s podslovem t, které je samo termem, je-li w podtermem s říkáme, že w se vyskytuje v s nebo, že w má výskyt v termu s. V obecném případě může mít podterm w v termu s více výskytů, například g(f(x), f(x)), každý term je svým podtermem, je-li s podterm termu t a je různý od t, říkáme, že s je vlastním podtermem t. Logické programování 2 3

Substituce Substituce váží termy k proměnným. V logickém programování jsou jediným prostředkem, který proměnným přiřazuje hodnoty. Relevantní substituce jsou během výpočtu automaticky generovány - na rozdíl od explicitního přiřazování hodnot proměnným v imperativních jazycích - říkáme, že proměnné nabývají svých hodnot implicitně. Logické programování 2 4

Definice Substituce θ je konečné zobrazení, které každé proměnné x ve svém definičním oboru přiřazuje nějaký term t různý od x. Protože θ je zobrazení, můžeme v takovém případě psát θ(x) = t. Podrobněji, substituce je zobrazení θ, které zapisujeme takové, že platí x 1, x 2,..., x n t 1, t 2,..., t n θ = {x 1 / t 1, x 2 / t 2,... x n / t n } (1) jsou různé proměnné, jsou termy a x i je různé od t i, pro i, 1 < i < n Je-li n = 0, říkáme že (1) je prázdná substituce a značíme ji ε. Logické programování 2 5

Množinu {x 1, x 2,..., x n } nazýváme definičním oborem θ a značíme Dom(θ), množinu {t 1, t 2,..., t n } nazýváme oborem hodnot θ Range(θ), a značíme množinu všech proměnných obsažených v termech t 1, t 2,..., t n označujeme Ran(θ), dále Var(θ) = Dom(θ) Ran(θ) je množina všech proměnných, které se vyskytují v substituci θ. Je-li dána množina proměnných V potom výrazem θ V označujeme substituci, která vznikne ze substituce θ omezením jejího definičního oboru na proměnné z V. Logické programování 2 6

základní, říkáme že substi- Jsou-li všechny termy z oboru hodnot θ tuce θ je základní. Jsou-li všechny termy z oboru hodnot θ substituce proměnných. proměnné, říkáme že θ je Speciálním případem takové substituce je permutace definičního oboru, tedy prosté zobrazení množiny Dom(θ) na Dom(θ), které nazýváme přejmenování proměnných. Příkladem přejmenování je třeba substituce {x/y, y/z, z/x}. Prázdná substituce je také přejmenování. V literatuře se používá i jiná definice přejmenování, ale dá se ukázat, že každá taková substituce se dá rozšířit do substituce, která je přejmenováním v našem smyslu. Logické programování 2 7

Definice (substituce za proměnné v termu) Je-li dán term s a substituce θ, výraz, který vznikne z termu s současným nahrazením všech výskytů proměnných x ε Var(s) Dom(θ) odpovídajícím termem θ(x), označíme sθ a budeme ho nazývat aplikací substituce θ na s. Není těžké ověřit, že sθ je také term, říkáme, že je to instance s. Logické programování 2 8

Pokud instance sθ neobsahuje proměnné, říkáme že je základní. Je-liθ přejmenování, říkáme že sθ je variantou termu s. Říkáme, že term s je obecnější než term t, je-li t instancí s. Příklad 1. Nechť s je term f(x, g(x, y, h(x,z))) a θ je substituce θ = { x / k(u,v), y / l(z), z / k(x,y) } potom sθ je term f ( k(u,v), g( k(u,v), l(z), h( k(u,v), k(x,y)))) Logické programování 2 9

Příklad 2. (Varianty) a) f(y,x) je variantou f(x,y), protože f(y,x) = f(x,y){x/y, y/x} b) f(x,y ) je variantou f(x,y), protože f(x,y ) = f(x,y){y/y, y /y} Povšimněme si, že vazba y /y byla přidána, aby substituce byla přejmenováním. c) f(x,x) není variantou f(x,y). Kdyby tomu tak bylo, pak f(x,x) = f(x,y)θ pro nějaké přejmenování θ. Tedy y/x ε θa pro nějakou proměnnou z různou od x platí x/z εθ. Potom nutně f(x,y) θ = f(z,x) - spor. Logické programování 2 10

Substituce za proměnné v termu může být také definována indukcí podle složitosti termu. Lemma 1. Je-li s term a θ substituce, instance sθ může být definována indukcí podle struktury termu s. a) je-li s proměnná x, potom sθ je θ(x), pokud x ε Dom(θ), jinak x. b) je-li s tvaru f ( t 1, t 2,..., t n ) a instance termů t i již byly sestrojeny, potom instance sθ = f(t 1 θ, t 2 θ,..., t n θ ). c) Jsou-li θ a η substituce, potom θ = η, právě když pro libovolnou proměnnou x platí θ(x) = η(x). Logické programování 2 11

Definice. (Složení substitucí) Jsou-li θ a η substituce, jejich složení θη definujeme takto: pro libovolnou proměnnou x položíme (θη)(x) = (xθ)η. Jinými slovy, θη přiřazuje proměnné x term, který získáme substitucí η do instance xθ. Je zřejmé, že pokud x není prvkem množiny Dom(θ) u Dom(η), platí (θη)(x) = x. To znamená, že θη je zobrazení proměnných do množiny termů, které je s vyjimkou konečné množiny všude identické. Tím jednoznačně určuje substituci. Snadno se ověří, že pro prázdnou substituci ε a θ platí θε = θ = εθ. Složitější je složení libovolných dvou substitucí vypočítat. Logické programování 2 12

Lemma 2. (Složená substituce) Mějme dvě substituce θ ={x 1 / t 1, x 2 / t 2,... x n / t n } a η = {y 1 / s 1, y 2 /s 2,... y m / s m } Složená substituce θη je rovna zobrazení ψ, které vznikne následujícím postupem a) z posloupnosti {x 1 / t 1 η, x 2 / t 2 η,... x n /t n η, y 1 / s 1, y 2 /s 2,... y m /s m } (2) nejprve vynechejme všechny vazby x i /t i η takové, že x i = t i η a potom všechny vazby y j /s j, kde y j ε Dom(θ). b) zbytek posloupnosti (2) označme ψ. Je to konečné zobrazení proměnných do termů a rozborem případů lze ověřit, že pro každou proměnnou x platí ψ(x) = θη(x). Logické programování 2 13

Příklad. Nechť θ = {u/z, x/3, y/f(x.1)} a η = {x/4, y/f(4,1), z/u }, potom θη = {x/3, y/f(4,1), z/u } Výpočet složené substituce není jednoduchý a není ani jednoduché pravidlo, jak definovat její definiční obor a obor hodnot. Uvedeme ještě dvě jednoduchá fakta o skládání přejmenování. Lemma 3. (i) Pro každé přejmenování θ, existuje právě jedna substituce θ -1, taková, že θθ -1 = ε = θ -1 θ. θ -1 je také přejmenování. (ii) Je-li θη = ε, potom θ i η jsou přejmenování. Logické programování 2 14

Lemma 4. (Asociativnost) (i) (sθ)η = s(θη) (ii) (θη)γ = θ(ηγ) Důkaz (i) provedeme indukcí podle složitosti termu s podle lemmatu 1. a) je-li s proměnná x, potom (xθ)η = (θ(x))η = x(θη) b) je-li s tvaru f (t 1, t 2,..., t n ) a pro termy t i již (i) platí, potom (sθ)η = f ((t 1 θ)η, (t 2 θ)η,..., (t n θ)η ) = f ((t 1 (θη), t 2 (θη),, t n (θη)). = f (t 1, t 2,..., t n )(θη) = s(θη) Logické programování 2 15

(ii) Pro libovolnou proměnnou x dostáváme x(θη)γ = (xθη)γ definice skládání = ((xθ)η)γ podle (i) pro x = xθ(ηγ) podle (i) pro xθ tedy (θη)γ = θ(ηγ). Skládání substitucí je asociativní operace, to znamená, že při skládání posloupností substitucí nezáleží na uzávorkování. Logické programování 2 16

Lemma 5. (Varianty) (i) Term s je variantou termu t, právě když s je instancí t a t je instancí s. (ii) Je-li term s variantou t, potom s = tθ, kde θ je přejmenování takové, že Var(θ) Var(s) Var(t). Důkaz. (i) ( ) Podle předpokladu je s = tθ, kde θ přejmenování. Nechť θ -1 je přejmenování z lemmatu 3. Potom t = tθθ -1 = sθ -1. ( ) Říkáme, že funkce f nemá pevný bod, jestliže f(x) x platí pro každé x. Ke konstrukci přejmenování ze dvou substitucí budeme potřebovat nasledující tvrzení. Logické programování 2 17

Pozorování. Každé prosté zobrazení f konečné množiny A na množinu B lze rozšířit na permutaci g sjednocení A Β. Pokud f nemá pevné body, g lze setrojit tak, že také nemá pevné body. Důkaz pozorování. Konečné množiny A a B mají stejný počet prvků, to znamená, že také množiny A B a B A mají stejný počet prvků. Nechť h je prosté zobrazení B A na množinu A B. Položíme-li g = f h dostaneme permutaci A B. Je zřejmé, že pokud f nemá pevné body, nemá je ani g. Pokračování důkazu (i). Podle předpokladu existují substituce θ η, takové, že s = tθ a t = sη. Tedy. t = tθη (3) Z (3) plyne pro libovolné dvě různé proměnné x, y ε že xθη je různé od yθη a proto také xθ yθ. a Var(t), platí Logické programování 2 18

xθη yθη xθ yθ xθη a yθη a proto také navíc jsou proměnné a pak nutně i xθ ayθ jsou proměnné Můžeme předpokládat, že Dom(θ) Var(t). Ukázali jsme, že θ prostá substituce proměnných za proměnné. Podle předchozího pozorování substituce θ může být rozšířena do přejmenování γ takového, že Dom(γ) = Var(θ). Dokážeme-li, že je. Var(t) Dom(γ) Dom(θ) (4) Potom t γ = tθ = s a s je variantou t. Logické programování 2 19

K důkazu tvrzeni (i) zbývá dokázat (4). Předpokládejme, že existuje proměnná x ε Var(t) - Dom(θ). Potom podle (3). x = xθη = xη tedy. x není prvkem Dom(η) potom také. x není prvkem Ran(θ) protože jinak by existovalo y,. y ε Var(t), y x takové, že y/x ε θ a yθη = y, odkud. x ε Dom(η) - spor. Dokázali jsme. (Var(t) Dom(θ)) Ran(θ) = 0 odkud plyne. Var(t) Dom(γ) Dom(θ) (4) protože. Dom(γ) = Var(θ). Tím je (i) dokázáno. Logické programování 2 20

Důkaz (ii). Stačí si po všimnout, že přejmenování θ, které jsme použili při důkazu (i) splňuje Var(γ) = Var(θ) Var(s) Var(t) Poznámka na konec. Zavedené pojmy instance, základní instance, varianty a značení Var(... ), Dom(... ), Rang(... ), atd. Byly zavedeny jen pro termy. Je zřejmé, že mohou být definovány stejným způsobem pro libovolné řetězce, nejenom termy. Zde máme na mysli jejich pozdější použití na atomické formule (atomy), které se svou strukturou neliší od termů. Za zapamatování stojí především Lemma 4 o asociativitě a Lemma 5 o variantách. Tyto pojmy, značení a výsledky budeme bez dalšího používat i pro jiné syntaktické konstrukce. Logické programování 2 21