1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2%% 3%% simple constraint solver for inequalities between variables 4%% thom fruehwirth ECRC 950519, LMU 980207, 980311 5%% 6%% ported to hProlog by Tom Schrijvers 7 8:- module(leq,[]). 9:- use_module(library(chr)). 10 11:- constraints leq/2. 12reflexivity @ leq(X,X) <=> true. 13antisymmetry @ leq(X,Y), leq(Y,X) <=> X = Y. 14idempotence @ leq(X,Y) \ leq(X,Y) <=> true. 15transitivity @ leq(X,Y), leq(Y,Z) ==> leq(X,Z). 16 17time(N):- 18 cputime(X), 19 length(L,N), 20 genleq(L,Last), 21 L=[First|_], 22 leq(Last,First), 23 cputime( Now), 24 Time is Now-X, 25 write(N-Time), nl. 26 27genleq([Last],Last) :- ! . 28genleq([X,Y|Xs],Last):- 29 leq(X,Y), 30 genleq([Y|Xs],Last). 31 32cputime( Ts) :- 33 statistics( runtime, [Tm,_]), 34 Ts is Tm/1000. 35