Guest User

Untitled

a guest
Jun 20th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. succ(?Int1, ?Int2)
  2. True if Int2 = Int1+ 1 and Int1>=0. At least one of the
  3. arguments must be instantiated to a natural number. This predicate
  4. raises the domain-error not_less_than_zero if called with a negative
  5. integer. E.g. succ(X, 0) fails silently and succ(X, -1) raises a
  6. domain-error.
  7.  
  8. add(0, Y, Y).
  9. add(X, Y, Z) :-
  10. succ(PredX, X),
  11. add(PredX, Y, PredZ),
  12. succ(PredZ, Z).
  13.  
  14. subtract(X, 0, X).
  15. subtract(X, Y, Z) :-
  16. succ(PredY, Y),
  17. succ(PredX, X),
  18. subtract(PredX, PredY, Z).
  19.  
  20. add(0, 0, 0).
  21. add(0, Y, Y).
  22. add(X, 0, X).
  23. add(X, Y, Z) :-
  24. nonvar(X),
  25. succ(PredX, X),
  26. (nonvar(Z) ->
  27. succ(PredZ, Z), add(PredX, Y, PredZ)
  28. ;
  29. add(PredX, Y, PredZ), succ(PredZ, Z)
  30. ).
  31. add(X, Y, Z) :-
  32. nonvar(Y),
  33. add(Y, X, Z).
  34.  
  35. subtract(0, 0, 0).
  36. subtract(X, 0, X).
  37. subtract(X, X, 0).
  38. subtract(X, Y, Z) :-
  39. add(Y, Z, X).
Add Comment
Please, Sign In to add comment