: (!) (fail). , .
1.
a(1,1). %(1)
b(2). %(2)
b(3). %(3)
c(2). %(4)
c(3). %(5)
d(4). %(6)
a(X,Y):-b(X),!,c(Y). %(7)
a(X,X):-d(X). %(8)
?- a(N,M).
!, : N=1,M=1; N=2,M=2; N=2,M=3; N=3,M=2; N=3,M=3; N=4,M=4. ( ! ), , (7) !, , .. b(X), a(X,Y) - (8), (7). c(Y) , !. : N=1,M=1; N=2,M=2; N=2,M=3.
A:- B, C, D,!, E, F.
E,F - , !, A - .
.
I. - , cut-fail , .
, not(P) :
not(P):- P,!,fail.
not(_):- true.
II. .
2, , . 1 factorial, 1, (.. 2).
2.
factorial(0, 1):-!. /* 0!=1 */
factorial(N,F):- N1 is N-1, factorial(N1, F1), F is N*F1.
III. .
,
sign(X,-1):- X < 0,!.
sign(X,0):- X = 0,!.
sign(X,1). [5] % X > 0.
4.1
?- factorial(3,F).
4.2
, (,) :
[158,164) | [164,170) | [170,176) | [176,182) | [182,188] |
,
(2,R):- R >= 164, R < 170.
, . .
BAF-
BAF- (Backtrack After Fail - ).
fail . ,
A:- B,fail.
, B .
3.
a:- write(1).
a:- write(2).
b(X):- a,X=''.
c:- a.
d:- a,fail.
?-b(X).
?-c.
?-d.