在Prolog中定义规则有问题

在Prolog中定义规则有问题,prolog,Prolog,如果B与A结婚,A与B结婚 我知道我这样写会产生一个循环,但我不知道如何防止这种情况 married(man, woman). married(B, A) :- married(A, B) 我也不能做这样的事情 如果父项是子项的父项:- Parent的配偶是Child的父母,可以做两个独立的谓词。首先定义一个列出事实的谓词: parent(Parent, Child) :- parent(married(Parent, Spouse), Child). 然后定义一个谓词: m

如果
B
A
结婚,
A
B
结婚
我知道我这样写会产生一个循环,但我不知道如何防止这种情况

married(man, woman).
married(B, A) :- 
  married(A, B)
我也不能做这样的事情

如果
父项
子项的父项
:-

Parent
的配偶是
Child

的父母,可以做两个独立的谓词。首先定义一个列出事实的谓词:

parent(Parent, Child) :- 
    parent(married(Parent, Spouse), Child).
然后定义一个谓词:

married_fact(philip, elisabeth).
married_fact(william, kate).

married(X, Y) :-
    married_fact(X, Y).
married(X, Y) :-
    married_fact(Y, X).
parent_fact(phillip, charles).

在古代,你可以为男人保留一个位置,为女人保留另一个位置。
parent(Parent, Child) :-
    parent_fact(Parent, Child).
parent(Parent, Child) :-
    married(Parent, Spouse),
    parent_fact(Spouse, Child).