%Mit Hilfe von Quelle: https://www.cs.uni-potsdam.de/~torsten/Papers/asp4ki.pdf %Dieser Code generiert das Karthesische Produkt der Constraints des Inputs. %und Constraints sind einfach weiterhin equals uns smallerDot %oder constraints: % oder(pointer, pointer) %constraints innerhalb des oders müssen eingepackt sein: % constraint(pointer, eigentlicher Constraint) % um mehrere constraints als Und-Constraint innerhalb eines Oders zu verbinden kann die list(..) verwendet werden %Die eigentliche Oder-Verknüpfung: cons(Cons1), cons(Cons2) :- oder(C1, C2), constraint(C1, Cons1), constraint(C2, Cons2). %Auspacken der constraints: equals(X,Y) :- cons(equals(X,Y)). smallerDot(X,Y) :- cons(smallerDot(X,Y)). oder(X,Y) :- cons(oder(X,Y)). list(X,Y) :- cons(list(X,Y)). equals(X,Y) :- list(equals(X,Y), _). smallerDot(X,Y) :- list(smallerDot(X,Y), _). list(A,B) :- list(_, list(A,B)).