:- use_module( library(chr)).

handler modellgenerierer.

constraints hoert/3, voraussetzung/2,kleiner/2, groesser_gleich/2.

operator(700,xfx,kleiner).
operator(700,xfx,groesser_gleich).


ground @ X kleiner Y <=> nonvar(X), nonvar(Y) | X < Y.


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

X kleiner Y, X groesser_gleich Y <=>  false.

X groesser_gleich X <=> true.

hoert(S, Y, TY), voraussetzung(Y, X) ==> hoert(S, X, TX), TX kleiner TY.
hoert(john,C,T)  ==> true | (T groesser_gleich 1996 ; T kleiner 1994).


start :- 
	hoert(john,constraintprogrammierung,1996),
	voraussetzung(constraintprogrammierung,logik).

/*
?- start.

 hoert(john,constraintprogrammierung,1996)
 voraussetzung(constraintprogrammierung,logik)
 hoert(john,logik,T)
 T < 1994.

*/
