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)).

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 addone2/ 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].


Patrick Blackburn, Johan Bos and Kristina Striegnitz
Version 1.2.5 (20030212)