:- use_module(library(chr)).

handler modelgenerator.

constraints attends/3, requires/2, less/2, leq/2.

operator(700,xfx,less).
operator(700,xfx,leq).


X less Y <=> nonvar(X), nonvar(Y) | X < Y.

X less Y \  X less Z <=>  Y =< Z | true.

X less Y, X leq Y <=>  false.

X leq X <=> true.


attends(S, Y, TY), requires(Y, X) ==> attends(S, X, TX), TX less TY.

attends(john,C,T)  ==> true | (T leq 1996 ; T less 1994).


example :- 
	attends(john,constraintprogrammierung,1996),
	requires(constraintprogrammierung,logik).

/*
?- example.

   requires(constraintprogrammierung,logik),
   _A less 1994,
   attends(john,constraintprogrammierung,1996),
   attends(john,logik,_A) ?
*/