Exerciții Laboratorul 3, Exercițiul 7

all_evals/2 — valorile formulei pe toate valuările

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

Definiți un predicat all_evals/2 astfel încât, pentru orice formulă X, avem că pentru orice As, all_evals(X, As) este adevărat exact atunci când As este lista rezultatelor evaluării lui X în fiecare dintre elementele listei evaluărilor definite pe variabilele din X.

?- all_evals(imp(a, a), As).
As = [1, 1]

?- all_evals(imp(a, b), As).
As = [1, 0, 1, 1]

Hint: compoziție — vars → evs → evals.

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 (2 — apasă pe unul ca să îl rulezi, sau Verifică pentru toate)
?
all_evals(imp(a, a), As). așteptat: As = [1,1]
?
all_evals(imp(a, b), As). așteptat: As = [1,0,1,1]