:- op(449,xfx,'..'). :- use_module(library(chr)). %%% SICStus 3 handler knowledge_manager. constraints class/1, object/2, property/2. %%% END SICStus 3 %%% SICStus 4 and SWI % %:- chr_constraint class/1, % object/2, % property/2. % %%% END SICStus 4 and SWI %Test test:- class(man), object(john,man), object(peter,man), property(john,car:1), property(peter,car:3). %%%%%%%%% %% PLACE YOUR CHR RULES HERE %%% MINIMUM AND MAXIMUM PREDICATES THAT YOU CAN MAKE USE OF % min(M, A, B, ...) - M is the minimum of A, B, ... % max(M, A, B, ...) - M is the maximum of A, B, ... % Examples: min(M,2,3) results in M=2 % max(M,10,6,8,11) results in M=11 min(A,A,B):- A =< B. min(B,A,B):- B =< A. max(A,A,B):- A >= B. max(B,A,B):- B >= A. min(A,A,B,C):- A =< B, A =< C. min(B,A,B,C):- B =< A, B =< C. min(C,A,B,C):- C =< B, C =< A. max(A,A,B,C):- A >= B, A >= C. max(B,A,B,C):- B >= A, B >= C. max(C,A,B,C):- C >= B, C >= A. min(A,A,B,C,D):- A =< B, A =< C, A =< D. min(B,A,B,C,D):- B =< A, B =< C, B =< D. min(C,A,B,C,D):- C =< B, C =< A, C =< D. min(D,A,B,C,D):- D =< B, D =< C, D =< A. max(A,A,B,C,D):- A >= B, A >= C, A >= D. max(B,A,B,C,D):- B >= A, B >= C, B >= D. max(C,A,B,C,D):- C >= B, C >= A, C >= D. max(D,A,B,C,D):- D >= B, D >= C, D >= A.