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.