sicstus -l fdcheck.pl
% compiling /home/joe/fdpred_semantics/fdcheck.pl...
%  module fd_check imported into user
%  loading /usr/local/lib/sicstus-3.9.1/library/clpfd.po...
%  module clpfd imported into fd_check
%   loading /usr/local/lib/sicstus-3.9.1/library/atts.po...
%   module attributes imported into clpfd
%    loading /usr/local/lib/sicstus-3.9.1/library/lists.po...
%    module lists imported into attributes
%    loaded /usr/local/lib/sicstus-3.9.1/library/lists.po in module lists, 0 msec 11184 bytes
%   loaded /usr/local/lib/sicstus-3.9.1/library/atts.po in module attributes, 20 msec 24908 bytes
%   loading /usr/local/lib/sicstus-3.9.1/library/assoc.po...
%   module assoc imported into clpfd
%    module lists imported into assoc
%   loaded /usr/local/lib/sicstus-3.9.1/library/assoc.po in module assoc, 10 msec 11096 bytes
%   module lists imported into clpfd
%   loading /usr/local/lib/sicstus-3.9.1/library/ordsets.po...
%   module ordsets imported into clpfd
%   loaded /usr/local/lib/sicstus-3.9.1/library/ordsets.po in module ordsets, 10 msec 12320 bytes
%   loading /usr/local/lib/sicstus-3.9.1/library/ugraphs.po...
%   module ugraphs imported into clpfd
%    module ordsets imported into ugraphs
%    module lists imported into ugraphs
%    module assoc imported into ugraphs
%    loading /usr/local/lib/sicstus-3.9.1/library/random.po...
%    module random imported into ugraphs
%     module assoc imported into random
%     loading foreign resource /usr/local/lib/sicstus-3.9.1/library/x86-linux-glibc2.1/random.so in module random
%    loaded /usr/local/lib/sicstus-3.9.1/library/random.po in module random, 10 msec 5992 bytes
%   loaded /usr/local/lib/sicstus-3.9.1/library/ugraphs.po in module ugraphs, 30 msec 47024 bytes
%   loading foreign resource /usr/local/lib/sicstus-3.9.1/library/x86-linux-glibc2.1/clpfd.so in module clpfd
%  loaded /usr/local/lib/sicstus-3.9.1/library/clpfd.po in module clpfd, 130 msec 450012 bytes
%  module lists imported into fd_check
%  compiling /home/joe/fdpred_semantics/fdpred.pl...
%   module fd_semantics imported into fd_check
%   module clpfd imported into fd_semantics
%   module lists imported into fd_semantics
%  compiled /home/joe/fdpred_semantics/fdpred.pl in module fd_semantics, 80 msec 22280 bytes
% compiled /home/joe/fdpred_semantics/fdcheck.pl in module fd_check, 270 msec 482396 bytes
SICStus 3.9.1 (x86-linux-glibc2.1): Thu Jun 27 22:53:07 CEST 2002
Licensed to IQSOFT
| ?- [user].
% consulting user...
| :- fd_pred_semantics('x=<y=<z'(X,Y,Z), (X=<Y,Y=<Z)).
| :- fd_test_range(1, 3).
| :- fd_check_options([verbose]).
| 
| 'x=<y=<z'(X, Y, Z) +:    
          Y in min(X)..max(Z),   
          Z in min(Y).. sup,     
          X in inf..max(Y).
Comparing clause +: , indexical No. 1: Y in min(X)..max(Z)
   with relation X=<Y,Y=<Z, 
   using interval 1..3 ...
   ... No discrepancy found.
Comparing clause +: , indexical No. 2: Z in min(Y)..sup
   with relation X=<Y,Y=<Z, 
   using interval 1..3 ...
   'x=<y=<z'(2,1,1) holds,         while 2=<1,1=<1 is not true
   'x=<y=<z'(2,1,2) holds,         while 2=<1,1=<2 is not true
   'x=<y=<z'(2,1,3) holds,         while 2=<1,1=<3 is not true
   'x=<y=<z'(3,1,1) holds,         while 3=<1,1=<1 is not true
   'x=<y=<z'(3,1,2) holds,         while 3=<1,1=<2 is not true
   'x=<y=<z'(3,1,3) holds,         while 3=<1,1=<3 is not true
   'x=<y=<z'(3,2,2) holds,         while 3=<2,2=<2 is not true
   'x=<y=<z'(3,2,3) holds,         while 3=<2,2=<3 is not true
Comparing clause +: , indexical No. 3: X in inf..max(Y)
   with relation X=<Y,Y=<Z, 
   using interval 1..3 ...
   'x=<y=<z'(1,2,1) holds,         while 1=<2,2=<1 is not true
   'x=<y=<z'(1,3,1) holds,         while 1=<3,3=<1 is not true
   'x=<y=<z'(1,3,2) holds,         while 1=<3,3=<2 is not true
   'x=<y=<z'(2,2,1) holds,         while 2=<2,2=<1 is not true
   'x=<y=<z'(2,3,1) holds,         while 2=<3,3=<1 is not true
   'x=<y=<z'(2,3,2) holds,         while 2=<3,3=<2 is not true
   'x=<y=<z'(3,3,1) holds,         while 3=<3,3=<1 is not true
   'x=<y=<z'(3,3,2) holds,         while 3=<3,3=<2 is not true
| 
% consulted user in module user, 10 msec 2392 bytes
yes
| ?- [user].
% consulting user...
| 'x=<y=<z'(X, Y, Z) +:    % Ez mr helyes!}
        Y in min(X)..max(Z),
        Z in ((inf..max(Y)) /\ dom(X)) ? (min(Y)..sup),  
        X in ((min(Y)..sup) /\ dom(Z)) ? (inf..max(Y)).
Comparing clause +: , indexical No. 1: Y in min(X)..max(Z)
   with relation X=<Y,Y=<Z, 
   using interval 1..3 ...
   ... No discrepancy found.
Comparing clause +: , indexical No. 2: Z in((inf..max(Y))/\dom(X))?(min(Y)..sup)
   with relation X=<Y,Y=<Z, 
   using interval 1..3 ...
   ... No discrepancy found.
Comparing clause +: , indexical No. 3: X in((min(Y)..sup)/\dom(Z))?(inf..max(Y))
   with relation X=<Y,Y=<Z, 
   using interval 1..3 ...
   ... No discrepancy found.
| 
% consulted user in module user, 10 msec -920 bytes
yes
| ?- 
