UNIFIKACJA TERMÓW Przykład unifikacji termów zło onych: T1: fun
Transkrypt
UNIFIKACJA TERMÓW Przykład unifikacji termów zło onych: T1: fun
UNIFIKACJA TERMÓW Przykład unifikacji termów złożonych: T1: fun ( a, X, f(Y) ) T2: fun (V, h(Y,V), f(g(V)) ) Sprawdzamy, czy termy mają tę samą nazwę i liczbę argumentów. Jeżeli tak przystępujemy do unifikacji argumentów. 1. T11 : a (stała) T21 : V (zmienna) Za zmienną możemy podstawić dowolny term nie zawierający tej zmiennej. Zatem możemy wykonać podstawienie: σ1: V = a. Wykonujemy to podstawienie na całych termach T1 i T2 T1σ1: fun ( a, X, f(Y) ) T2σ1: fun ( a, h(Y,a), f(g(a)) ) 2. T12 : X (zmienna) T22 : h(Y,a) (term złożony) Zmienna X nie występuje w termie T22, zatem możemy wykonać podstawienie : σ2: X = h(Y,a) T1σ1σ2: fun ( a, h(Y,a), f(Y) ) T2σ1σ2: fun ( a, h(Y,a), f(g(a)) ) 3. T13 : f(Y) (term złożony) T23 : f(g(a)) (term złożony) Oba termy T13 i T23 są złożone o tej samej nazwie i jednym argumencie. Porównujemy zatem te argumenty: T131 : Y (zmienna) T231 : g(a) (term złozony) Dokonujemy podstawienia σ3: Y = g(a) T1σ1σ2σ3: fun ( a, h(g(a),a), f(g(a)) ) T2σ1σ2σ3: fun ( a, h(g(a),a), f(g(a)) ) MGU(T1,T2) = σ1σ2σ3 = { X=h(g(a),a), Y=g(a), V=a }