Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog-所有含义_Prolog_Logic - Fatal编程技术网

Prolog-所有含义

Prolog-所有含义,prolog,logic,Prolog,Logic,我如何在Prolog中表示一个for all蕴涵 在逻辑上: x is given For all a, b . [P(a) AND P(b) AND P(x) ---> Q(a,b)] 开场白将是 pred(X) :- .... 你可以把你的公式改写成 not exists A,B . not (p(A) and p(B) and p(X) -> q(A,B)). 进一步 not exists A,B . (p(A) and p(B) and p(X) and not q(

我如何在Prolog中表示一个for all蕴涵

在逻辑上:

x is given

For all a, b . [P(a) AND P(b) AND P(x) ---> Q(a,b)]
开场白将是

pred(X) :- ....

你可以把你的公式改写成

not exists A,B . not (p(A) and p(B) and p(X) -> q(A,B)).
进一步

not exists A,B . (p(A) and p(B) and p(X) and not q(A,B)).
然后在Prolog子句中使用它,比如

pred(X) :- \+ ( p(A), p(B), p(X), \+q(A,B) ).
正如其他人所提到的,一些序言定义了一个缩写,称为forall/2,因此您应该能够使用

pred(X) :- forall((p(A), p(B), p(X)), q(A,B)).

你可以把你的公式改写成

not exists A,B . not (p(A) and p(B) and p(X) -> q(A,B)).
进一步

not exists A,B . (p(A) and p(B) and p(X) and not q(A,B)).
然后在Prolog子句中使用它,比如

pred(X) :- \+ ( p(A), p(B), p(X), \+q(A,B) ).
正如其他人所提到的,一些序言定义了一个缩写,称为forall/2,因此您应该能够使用

pred(X) :- forall((p(A), p(B), p(X)), q(A,B)).

qA,B:-pA,pB,px.SWI也有forall/2,顺便说一句。@MBRACH:那么它不是所有的A和B都有固定的x吗?为什么不呢?该子句表示,对于任何A和B,如果pA,pB和px`是真的,那么qA,B是真的。我需要x作为谓词的一个参数。顺便说一下,qA,B:-pA,pB,px.SWI也有forall/2。@mbrach:那么它不是所有A和B都有x固定的吗?为什么不是?这个从句说,对于任何A和B,如果pA,pB和px是真的,那么qA,B是真的。我需要x是谓词though的一个参数,这比我所想的+1更符合轨道。你必须承认,最后一行离原始问题有多近,这很性感+1啊,这比我所想的更符合正轨。你必须承认,最后一句话离最初的问题有多近,这很性感+1.