bnon/2, band/3, bor/3, bimp/3 — operații pe {0, 1}
Definiți predicate bnon/2, band/3, bor/3, bimp/3 care implementează operațiile ¬, ∧, ∨, → pe mulțimea {0, 1}.
?- band(1, 0, C).
C = 0
?- bimp(A, 0, 0).
A = 1
?- bimp(0, B, 0).
false
Puteți defini unele operații în funcție de altele.
Hint:
bimp(P, Q, R) :- bnon(P, NP), bor(NP, Q, R).Regulile De Morgan îți daubanddacă aiborșibnon.
Te-ai blocat?
editor
soluție
bnon(0, 1) :- !.
bnon(1, 0) :- !.
bor(1, _, 1) :- !.
bor(_, 1, 1) :- !.
bor(0, 0, 0) :- !.
bimp(P, Q, Res) :-
bnon(P, NonP),
bor(NonP, Q, Res).
band(P, Q, Res) :-
bnon(P, NonP),
bnon(Q, NonQ),
bor(NonP, NonQ, NonRes),
bnon(NonRes, Res).
?-
Tastează o interogare (ex. father_of(sandra, X).) și apasă Enter — sau apasă pe un caz de test de mai jos.
Cazuri de test (4 — apasă pe unul ca să îl rulezi, sau Verifică pentru toate)
?
band(1, 0, C).
așteptat: C = 0
?
bor(0, 1, C).
așteptat: C = 1
?
bimp(1, 0, C).
așteptat: C = 0
?
bnon(1, C).
așteptat: C = 0