What I want is when I define:
marriedTo(martin, annie).
It also makes the following true:
marriedTo(annie, martin).
I have tried the following, but it's (obviously) an infinite loop.
marriedTo(X,Y) :- marriedTo(Y,X).
How would I do this in Prolog?
The most simple way to solve it is:
marriedTo(martin, annie).
...
married(X,Y) :- marriedTo(X,Y).
married(X,Y) :- marriedTo(Y,X).
Then there are plenty of other ways, implementations and semantics that came up to solve the problem of infinite recursion...
I figured it out after all:
marriedTo(X,Y) :- marriedTo(Y,Z), X = Z, !.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With