Sunteți pe pagina 1din 1

Algoritmul lui Robinson

1 Algoritmul de unificare al lui Robinson [1]


1: procedure Unificare(s, t)
2: S← − stivă goală
3: push(S, (s, t))
4: σ← − substitut, ia vidă
5: cât timp ¬empty(S) execută
6: (s, t) ←− pop(S)
7: cât timp s este o variabilă legată ı̂n σ execută
8: s← − substitute(s, σ)
9: cât timp t este o variabilă legată ı̂n σ execută
10: t← − substitute(t, σ)
11: dacă s 6= t atunci
12: ı̂n funct, ie de s, t
13: când s este o variabilă
14: dacă check-occur(s, t, σ) atunci
15: ı̂ntoarce f als
16: altfel
17: σ← − (s, t) ∪ σ
18: când t este o variabilă
19: dacă check-occur(t, s, σ) atunci
20: ı̂ntoarce f als
21: altfel
22: σ← − (t, s) ∪ σ
23: când s = hs (as1 , as2 , . . . , asn ) s, i t = ht (at1 , at2 , . . . , atn ) . s s, i t au antet s, i argumente
24: dacă hs ≡ ht atunci
25: pentru i = 1, . . . , n execută . Atent, ie: acelas, i număr de argumente
26: push(S, (asi , ati ))
27: altfel
28: ı̂ntoarce f als
29: altfel
30: ı̂ntoarce f als
31: ı̂ntoarce σ

1: procedure check-occur(v, t, σ)
2: dacă v = t atunci
3: ı̂ntoarce adevărat
4: altfel dacă t este o variabilă legată ı̂n σ atunci
5: ı̂ntoarce check-occur(v, substitute(t, σ), σ)
6: altfel dacă t =Wf (a1 , a2 , . . . , an ) atunci . t este apel de funct, ie
7: ı̂ntoarce check-occur(v, ai , σ)
i=1,n
8: altfel
9: ı̂ntoarce f als

Bibliografie
[1] John Alan Robinson. A machine-oriented logic based on the resolution principle. Journal of the ACM
(JACM), 12(1):23–41, 1965.

S-ar putea să vă placă și