Changeset 4488 for trunk/library
- Timestamp:
- 10/05/08 14:08:31 (3 months ago)
- Files:
-
- 1 modified
-
trunk/library/integer.lgt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/library/integer.lgt
r3565 r4488 4 4 5 5 :- info([ 6 version is 1. 1,6 version is 1.2, 7 7 author is 'Paulo Moura', 8 date is 200 7/4/20,8 date is 2008/10/5, 9 9 comment is 'Integer data type predicates.']). 10 10 … … 15 15 comment is 'Returns integers in the interval defined by the two first arguments.', 16 16 argnames is ['Lower', 'Upper', 'Integer']]). 17 18 :- public(plus/3). 19 :- mode(plus(+integer, +integer, ?integer), zero_or_one). 20 :- mode(plus(+integer, ?integer, +integer), zero_or_one). 21 :- mode(plus(?integer, +integer, +integer), zero_or_one). 22 :- info(plus/3, [ 23 comment is 'Reversible integer sum. At least two of the arguments must be instantiated to integers.', 24 argnames is ['I', 'J', 'Sum']]). 25 26 :- public(succ/2). 27 :- mode(succ(+integer, ?integer), zero_or_one). 28 :- mode(succ(?integer, +integer), zero_or_one). 29 :- info(plus/2, [ 30 comment is 'Successor of a natural number. At least one of the arguments must be instantiated to a natural number.', 31 argnames is ['I', 'J']]). 17 32 18 33 between(Lower, Upper, Integer) :- … … 33 48 generate(Next, Upper, Integer). 34 49 50 plus(I, J, Sum) :- 51 integer(I), 52 integer(J), !, 53 Sum is I + J. 54 plus(I, J, Sum) :- 55 integer(I), 56 integer(Sum), !, 57 J is Sum - I. 58 plus(I, J, Sum) :- 59 integer(J), 60 integer(Sum), !, 61 I is Sum - J. 62 63 succ(I, J) :- 64 integer(I), !, 65 I >= 0, 66 J is I + 1. 67 succ(I, J) :- 68 integer(J), 69 ( J =:= 0 -> 70 fail 71 ; J > 0, 72 I is J - 1 73 ). 74 35 75 valid(Integer) :- 36 76 integer(Integer).
