我怎样才能在Prolog中代表一个全面的含义?
在逻辑上:
x is given
For all a, b . [P(a) AND P(b) AND P(x) ---> Q(a,b)]
Run Code Online (Sandbox Code Playgroud)
序言会是
pred(X) :- ....
Run Code Online (Sandbox Code Playgroud)
您可以将公式重写为
not exists A,B . not (p(A) and p(B) and p(X) -> q(A,B)).
Run Code Online (Sandbox Code Playgroud)
并进一步
not exists A,B . (p(A) and p(B) and p(X) and not q(A,B)).
Run Code Online (Sandbox Code Playgroud)
然后在你的Prolog子句中使用它
pred(X) :- \+ ( p(A), p(B), p(X), \+q(A,B) ).
Run Code Online (Sandbox Code Playgroud)
正如其他人所提到的,一些Prologs为此定义了一个简写,称为forall/2,所以你应该能够使用
pred(X) :- forall((p(A), p(B), p(X)), q(A,B)).
Run Code Online (Sandbox Code Playgroud)