28 lines
		
	
	
		
			609 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			609 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | |
| %%
 | |
| %% simple constraint solver for inequalities between variables
 | |
| %% thom fruehwirth ECRC 950519, LMU 980207, 980311
 | |
| %%
 | |
| %% ported to hProlog by Tom Schrijvers 
 | |
| 
 | |
| :- module(leq,[leq/0]).
 | |
| :- 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).
 | |
| 
 | |
| leq :-
 | |
| 	circle(X, Y, Z),
 | |
| 	\+ attvar(X),
 | |
| 	X == Y,
 | |
| 	Y == Z.
 | |
| 
 | |
| circle(X, Y, Z) :-
 | |
| 	leq(X, Y),
 | |
| 	leq(Y, Z),
 | |
| 	leq(Z, X).
 |