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