val/3 — valoarea unei variabile într-o evaluare
Vom considera evaluările e : Var → {0, 1} ca fiind reprezentate printr-o listă de perechi de forma [(a, 1), (b, 0)] (în evaluarea curentă, e(a) = 1 și e(b) = 0). Definiți un predicat val/3 astfel încât pentru orice variabilă V și orice evaluare E să avem că val(V, E, A) este adevărat exact atunci când A este E(V).
?- val(b, [(a, 1), (b, 0)], X).
X = 0
Hint: două clauze — găsit (primul element al listei are variabila căutată), sau recursie pe coadă.
Te-ai blocat?
editor
soluție
val(X, [(X, E) | _], E) :- !.
val(X, [_ | T], E) :-
val(X, T, E).
?-
Tastează o interogare (ex. father_of(sandra, X).) și apasă Enter — sau apasă pe un caz de test de mai jos.
Cazuri de test (2 — apasă pe unul ca să îl rulezi, sau Verifică pentru toate)
?
val(b, [(a, 1), (b, 0)], X).
așteptat: X = 0
?
val(a, [(a, 1), (b, 0)], X).
așteptat: X = 1