这在逻辑上和句法上是否正确——嵌套事实?
Is this logically and syntactically correct -- Nested Fact?
我正在尝试编写规则,即 D 是我(我)的女婿,如果他们是男性,而我的女儿是 D 的配偶。当我 运行除了一些单例变量警告外,这在 swish 上。尽管如此,我还是不相信我写的是正确的..有人可以为我澄清这是否有意义吗?谢谢。
male(X).
male(me).
female(X).
child(X,Y).
spouse(X,Y).
daughter(A,me) :-
female(A), child(me, A).
mother(A,me) :-
female(A), child(me, A).
son_in_law(D,me) :-
male(D), spouse(daughter(A,me), D).
一个事实是一个总是真谓词。所以,
male(X).
意味着每个 X
都是男性。显然,这不是您所在领域的正确公理。当您收到有关单例的警告时 X
,您不应忽略它,而应尝试理解它的含义。
此外,从句法上讲,嵌套谓词没有意义。你应该重写这个子句
..., spouse(daughter(A,me), D).
'lifting up' 'join' 个变量,例如
..., daughter(A,me), spouse(A, D).
我正在尝试编写规则,即 D 是我(我)的女婿,如果他们是男性,而我的女儿是 D 的配偶。当我 运行除了一些单例变量警告外,这在 swish 上。尽管如此,我还是不相信我写的是正确的..有人可以为我澄清这是否有意义吗?谢谢。
male(X).
male(me).
female(X).
child(X,Y).
spouse(X,Y).
daughter(A,me) :-
female(A), child(me, A).
mother(A,me) :-
female(A), child(me, A).
son_in_law(D,me) :-
male(D), spouse(daughter(A,me), D).
一个事实是一个总是真谓词。所以,
male(X).
意味着每个 X
都是男性。显然,这不是您所在领域的正确公理。当您收到有关单例的警告时 X
,您不应忽略它,而应尝试理解它的含义。
此外,从句法上讲,嵌套谓词没有意义。你应该重写这个子句
..., spouse(daughter(A,me), D).
'lifting up' 'join' 个变量,例如
..., daughter(A,me), spouse(A, D).