Лекции по логическо програмиране


Оператори за присвояване, съответни на субституции



страница7/22
Дата01.06.2017
Размер2.18 Mb.
#22581
ТипЛекции
1   2   3   4   5   6   7   8   9   10   ...   22

Оператори за присвояване, съответни на субституции

нека S е структура,  е субституция; дефинираме Sоператор за присвояване, съответен на  в S, който съпоставя на всяка оценка v на променливите в S друга оценка S (v) на променливите в S, така че (S (v)) (x) =  (x) S, v;


например, ако = [x1/T1, x2/T2, …, xn/Tn], то (S (v)) (xi) = Ti S, v,


i = 1, 2, …, n; при xxi, (S (v)) (x) =  (x) S, v = x S, v = v (x);

ако  = [x0/T0] и v е оценка, то S (v) = v[x0: T0 S, v];

действително, (S (v)) (x0) = T0 S, v, (S (v)) (x) = v (x) за всяко xx0;
Теорема: нека S е структура,  е субституция, v е оценка на променливите в S; ако E е терм или безкванторна формула, то

(E)S, v = E S, u, където u = S (v);

Доказателство: първо да разгледаме случая когато E е терм;

провеждаме индукция по постронието на E;

База: ако E е константа, то Е = Е  (Е)S, v = E S, v = E S, u;

ако E  , то E =  (E) и (E)S, v =  (E)S, v; от друга страна

E S, u = u (E) =  (E)S, v по дефиницията на оператора за присвояване; така (E)S, v = E S, u;

Предположение: нека E = f (T1, T2, …, Tn) и твърдението е изпълнено за термовете T1, T2, …, Tn;

Стъпка: имаме E = f (T1, T2, …, Tn) 

(E)S, v = f (T1, T2, …, Tn)S, v = f S ( (T1)S, v, (T2)S, v, …, (Tn)S, v);

от индукционното предположение за термовете T1, T2, …, Tn и получаваме, че (T1)S, v = T1S, u, (T2)S, v = T2S, u, …, (Tn)S, v = TnS, u

(E)S, v = f S (T1S, u, T2 S, u, …, TnS, u) = E S, u;

сега да разгледаме случая когато E е безкванторна формула;

провеждаме индукция по построението на E;

База: нека E = p (T1, T2, …, Tn); тогава E = p (T1, T2, …, Tn) 

(E)S, v = p (T1, T2, …, Tn)S, v = p S ( (T1)S, v, (T2)S, v, …, (Tn)S, v);

тъй като T1, T2, …, Tn са термове, от по-горе получаваме:

(T1)S, v = T1S, u, (T2)S, v = T2S, u, …, (Tn)S, v = TnS, u

(E)S, v = p S (T1S, u, T2 S, u, …, TnS, u) = E S, u;

ако E  П0, то E = E  (E)S, v = E S, v = E S = E S, u;

ако E = true, то E = E  (E)S, v = E S, v = 1 = E S, u;

ако E = fail, то E = E  (E)S, v = E S, v = 0 = E S, u;

Предположение: нека твърдението е изпълнено за безкванторните формули G, F1, F2, …, Fn (n > 2);

Стъпка:


ако E = G, то E = (G)  (E)S, v = ((G))S, v = 1 – (G)S, v;

от индукционното предположение (G)S, v = GS, u;

така (E)S, v = 1 – GS, u = (G)S, u = E S, u;

ако E = F1 & F2 & … & Fn, то E = F1 & F2 & … & Fn 

(E)S, v = (F1 & F2 & … & Fn)S, v = min { (F1)S, v, (F2)S, v, …,(Fn)S, v};

от индукционното предположение (F1)S, v = F1S, u,

(F2)S, v = F2S, u, …, (Fn)S, v = FnS, u; така (E)S, v =

= min { F1S, u, F2S, u, …,FnS, u} = (F1 & F2 & … & Fn)S, u = E S, u;

ако E = F1  F2  …  Fn, то E = F1  F2  …  Fn 

(E)S, v = (F1  F2  …  Fn)S, v = max { (F1)S, v, (F2)S, v, …,(Fn)S, v};

от индукционното предположение (F1)S, v = F1S, u,

(F2)S, v = F2S, u, …, (Fn)S, v = FnS, u; така (E)S, v =

= max { F1S, u, F2S, u, …,FnS, u} = (F1  F2  …  Fn)S, u = E S, u;




Сподели с приятели:
1   2   3   4   5   6   7   8   9   10   ...   22




©obuch.info 2024
отнасят до администрацията

    Начална страница