5.5 Exercises

Exercise  5.1 How does Prolog respond to the following queries?

  1. X  =  3*4.
  2. X  is  3*4.
  3. 4  is  X.
  4. X  =  Y.
  5. 3  is  1+2.
  6. 3  is  +(1,2).
  7. 3  is  X+2.
  8. X  is  1+2.
  9. 1+2  is  1+2.
  10. is(X,+(1,2)).
  11. 3+2  =  +(3,2).
  12. *(7,5)  =  7*5.
  13. *(7,+(3,2))  =  7*(3+2).
  14. *(7,(3+2))  =  7*(3+2).
  15. 7*3+2  =  *(7,+(3,2)).
  16. *(7,(3+2))  =  7*(+(3,2)).

Exercise  5.2

  1. Define a 2-place predicate increment that holds only when its second argument is an integer one larger than its first argument. For example, increment(4,5) should hold, but increment(4,6) should not.
  2. Define a 3-place predicate sum that holds only when its third argument is the sum of the first two arguments. For example, sum(4,5,9) should hold, but sum(4,6,12) should not.

Exercise  5.3 Write a predicate addone/2 whose first argument is a list of integers, and whose second argument is the list of integers obtained by adding 1 to each integer in the first list. For example, the query

   ?-  addone([1,2,7,2],X).

should give

   X  =  [2,3,8,3].

eXTReMe Tracker
© 2006-2012 Patrick Blackburn, Johan Bos, Kristina Striegnitz