Exerciții Laboratorul 3, Exercițiul 4

eval/3 — evaluarea unei formule într-o valuare

Laboratorul 3, Exercițiul 4 medium Calculul propozițional în PrologRecursivitate pe liste

Definiți un predicat eval/3 astfel încât pentru orice formulă X și orice evaluare E, avem că pentru orice A, eval(X, E, A) este adevărat exact atunci când A este E⁺(X) (extensia valuării la formule).

?- eval(imp(b, d), [(a, 1), (b, 0), (d, 1)], A).
A = 1

?- eval(imp(d, b), [(a, 1), (b, 0), (d, 1)], A).
A = 0

Hint: cinci cazuri — atomul (folosești val/3), non(P) (apelezi bnon), and/or/imp (apelezi predicatul corespunzător band/bor/bimp după evaluarea subformulelor).

Te-ai blocat?
editor soluție
?-
Tastează o interogare (ex. father_of(sandra, X).) și apasă Enter — sau apasă pe un caz de test de mai jos.
Cazuri de test (3 — apasă pe unul ca să îl rulezi, sau Verifică pentru toate)
?
eval(imp(b, d), [(a, 1), (b, 0), (d, 1)], A). așteptat: A = 1
?
eval(imp(d, b), [(a, 1), (b, 0), (d, 1)], A). așteptat: A = 0
?
eval(and(a, non(b)), [(a, 1), (b, 0)], A). așteptat: A = 1