]> Repositorios git - scryer-prolog.git/commit
enable goal expansion for CLP(ℤ) goals
authorMarkus Triska <[email protected]>
Thu, 30 Apr 2020 21:09:15 +0000 (23:09 +0200)
committerMarkus Triska <[email protected]>
Thu, 30 Apr 2020 21:09:15 +0000 (23:09 +0200)
commit1dbadbfc3571cf777a67a02acac204c233f845ee
tree9cb12ba701b0297472c827f85cb107643314df70
parentb6df5a4b7f643f595eebd2ff8f9bdcc96fff4bb2
enable goal expansion for CLP(ℤ) goals

Example:

    integer_successor(I0, I) :- I #= I0 + 1.

Yielding:

    ?- listing(integer_successor/2).
    integer_successor(A,B) :-
       (  integer(B) ->
          (  integer(A) ->
             B=:=A+1
          ;  C is B,
             clpz:clpz_equal(C,A+1)
          )
       ;  (  integer(A) ->
             (  var(B) ->
                B is A+1
             ;  C is A+1,
                clpz:clpz_equal(B,C)
             )
          ;  clpz:clpz_equal(B,A+1)
          )
       ).

Thus, fast low-level arithmetic is used whenever possible.
src/prolog/lib/clpz.pl