35 lines
		
	
	
		
			778 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			778 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | |
| %%
 | |
| %% simple constraint solver for inequalities between variables
 | |
| %% thom fruehwirth ECRC 950519, LMU 980207, 980311
 | |
| %%
 | |
| %% ported to hProlog by Tom Schrijvers
 | |
| 
 | |
| :- module(leq,[main/0,main/1]).
 | |
| :- use_module(library(chr)).
 | |
| 
 | |
| :- chr_constraint leq/2.
 | |
| 
 | |
| reflexivity  @ leq(X,X) <=> true.
 | |
| antisymmetry @ leq(X,Y), leq(Y,X) <=> X = Y.
 | |
| idempotence  @ leq(X,Y) \ leq(X,Y) <=> true.
 | |
| transitivity @ leq(X,Y), leq(Y,Z) ==> leq(X,Z).
 | |
| 
 | |
| main :-
 | |
| 	main(60).
 | |
| 
 | |
| main(N):-
 | |
| 	cputime(X),
 | |
| 	length(L,N),
 | |
| 	genleq(L,Last),
 | |
| 	L=[First|_],
 | |
| 	leq(Last,First),
 | |
| 	cputime( Now),
 | |
| 	Time is Now-X,
 | |
| 	write(bench(leq ,N,Time,0,hprolog)), write('.'),nl.
 | |
| 
 | |
| genleq([Last],Last) :- ! .
 | |
| genleq([X,Y|Xs],Last):-
 | |
| 	leq(X,Y),
 | |
| 	genleq([Y|Xs],Last).
 |