我有二元关系,如果所有二元关系都是对称的,我希望结果为真,否则为假。到目前为止,我有这个:
married(mary, tom).
married(sam, linda).
married(linda, sam).
spouse(X, Y) :- married(X, Y), married(Y, X).
结果是这样的:
?- spouse(X, Y).
X = sam,
Y = linda ;
X = linda,
Y = sam ;
false.
但在这种情况下,我想让结果为假,因为没有二元关系结婚(汤姆,玛丽)(根据公式∀x,y:xRy⇒yRx)。另一方面,当我有这些二元关系时:
married(tom, mary).
married(mary, tom).
married(sam, linda).
married(linda, sam).
我想让结果为真,因为二元关系是对称的。我怎样才能做到这一点?我正在使用 SWI-Prolog。