Quiz 4 KEY with trace
?-consult quiz4.
Compiling quiz4.
Yes.
?-listing.
min(X,Y,X) :- (X < Y).
min(X,Y,Y) :- ((X = Y) ; (X > Y)).
non_zero(N) :- ((N < 0) ; (N > 0)).
positive(N) :- (N > 0).
size( [],0).
size([H|T],N) :- (size(T,N1) , (N is (N1 + 1))).
sumlist( [],0).
sumlist([H|T],N) :- (sumlist(T,N1) , (N is (N1 + H))).
Yes.
?-sumlist([2,7,9,5],X).
X = 23
?-sumlist([2,7,9,5],What).
C: sumlist([2,7,9,5],What_0)
C: sumlist([7,9,5],N1_4)
C: sumlist([9,5],N1_8)
C: sumlist([5],N1_12)
C: sumlist(
[],N1_16)
E: sumlist(
[],0)
C: (N1_12 is (0 + 5))
E: (5 is (0 + 5))
E: sumlist([5],5)
C: (N1_8 is (5 + 9))
E: (14 is (5 + 9))
E: sumlist([9,5],14)
C: (N1_4 is (14 + 7))
E: (21 is (14 + 7))
E: sumlist([7,9,5],21)
C: (What_0 is (21 + 2))
E: (23 is (21 + 2))
What = 23
More? (Y/N):n
?-size([apple,berry,cherry,plum],X).
C: size([apple,berry,cherry,plum],X_0)
C: size([berry,cherry,plum],N1_4)
C: size([cherry,plum],N1_8)
C: size([plum],N1_12)
C: size(
[],N1_16)
E: size(
[],0)
C: (N1_12 is (0 + 1))
E: (1 is (0 + 1))
E: size([plum],1)
C: (N1_8 is (1 + 1))
E: (2 is (1 + 1))
E: size([cherry,plum],2)
C: (N1_4 is (2 + 1))
E: (3 is (2 + 1))
E: size([berry,cherry,plum],3)
C: (X_0 is (3 + 1))
E: (4 is (3 + 1))
X = 4
More? (Y/N):n
?-min(3,7,X).
C:
min(3,7,X_0)
C: (3
< 7)
E: (3
< 7)
X = 3
More? (Y/N):n
?-min (7,-5,Smaller).
C: min(7,-5,Smaller_0)
C: (7 < -5)
F: (7 < -5)
R: min(7,-5,Smaller_0)
C: (7 = -5)
F: (7 = -5)
C: (7
> -5)
E: (7
> -5)
Smaller
= -5
?-positive(-5).
C:
positive(-5)
C:
(-5 > 0)
F:
(-5 > 0)
F:
positive(-5)
No.
?-non_zero(16).
C:
non_zero(16)
C:
(16 < 0)
F:
(16 < 0)
C:
(16 > 0)
E:
(16 > 0)
Yes.
?-non_zero(0).
C:
non_zero(0)
C: (0
< 0)
F: (0
< 0)
C: (0 > 0)
F: (0
> 0)
F:
non_zero(0)
No.
?-non_zero(-23).
C:
non_zero(-23)
C: (-23 < 0)
E: (-23 < 0)
Yes.
?-positive(0).
C: positive(0)
C: (0 > 0)
F: (0 > 0)
F: positive(0)
No.
?-positive(-5).
C: positive(-5)
C: (-5 > 0)
F: (-5 > 0)
F: positive(-5)
No.
?-sumlist([2,7.9,5],X).
C: sumlist([2,6.253751E-165,5],X_0)
C: sumlist([6.253751E-165,5],N1_4)
C: sumlist([5],N1_8)
C: sumlist(
[],N1_12)
E: sumlist(
[],0)
C: (N1_8 is (0 + 5))
E: (5 is (0 + 5))
E: sumlist([5],5)
C: (N1_4 is (5 + 6.253751E-165))
F: (N1_4 is (5 + 6.253751E-165))
R: (5 is (0 + 5))
F: (5 is (0 + 5))
R: sumlist(
[],N1_12)
F: sumlist(
[],N1_12)
F: sumlist([5],N1_8)
F: sumlist([6.253751E-165,5],N1_4)
F: sumlist([2,6.253751E-165,5],X_0)
No.