- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 PROLOG 中编写以下规则:if P then not Q
我知道您可以轻松地编写 if P then Q 谓词,例如 q(X) :- p(X)
,但是如何否定 q/1
谓词?我不想使用 non_q/1
等其他语义定义新谓词。
最佳答案
子句“if P then not Q”在逻辑上等价于否定子句“not P OR not Q”。因此它是 Horn clause没有正文字,并且作为 SLD 定理证明和 Horn 子句对应关系的应用,可以在 Prolog 编程中表示为目标子句或“查询”:
?- P, Q.
让我们稍后再回到这个想法。
但是目标条款可能不是您想要的那种表示形式。构成 Prolog“知识库”的事实和规则是确定子句,即每个 Horn 子句都只有一个正文字。 “If P then not Q”没有正字面量,因此在这个意义上它不能被表示(作为定语从句)。
上面显示的目标子句“询问”P 和 Q 是否都可以被证明。 Prolog 提供了“否定即失败”的概念,因此“询问”“not P OR not Q”是否成立的更自然的方式是:
?- not((P,Q)).
那么如果 P 或 Q 失败,我们就会成功,如果两者都成功,我们就会失败。
但是,如果您的目的是断言知识库中的某些内容是否定,Prolog 自然不支持这一点。根据您的应用程序,可能有一种合理的方法来解决 Prolog 语法并完成所需的任务(总是有一种不合理的方法来做到这一点,正如您使用 non_q 谓词所暗示的那样) .
关于Prolog 暗示否定谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332539/
我需要在我的网站中实现自动建议功能,并且我需要一些易于开发或编辑的 java 脚本框架或代码,并且自动建议将是多个字段 最佳答案 适配 jQuery:http://jqueryui.com/ 关于ja
在下面的示例中,SonarQube 提示 model.toString() 是 not null 并且 (model == null) 始终 false,需要一些帮助来了解可以采取哪些措施来修复它。因
我正在尝试创建自定义 iOS 键盘。我使用 UILexicon 类来提供 requestSupplementaryLexiconWithCompletion: 方法提供的基本词库。 但我也想将预测文本
如何断言如果 X 为 true 那么 Y 也为 true。问题是,如果我写以下内容: assert(X && Y && "If X is true then Y should be true too.
创建路径中包含两个反斜杠的文件时,是否会产生任何不可预见的后果。 在此代码中,文件创建正常,但我想知道在使用此文件的过程中是否有任何副作用。 HANDLE hFile = CreateFile(
在下面的示例中,SonarQube 提示 bookmark 可能为 null 或为 null,需要一些帮助来了解可以采取哪些措施来修复它。因为 bookmark 在 for 循环中被初始化为变量,并且
这个问题在这里已经有了答案: Partial ordered Comparator (6 个答案) 关闭 8 年前。 我有一组序列化到文件中的项目。有些项目可以依赖其他项目,但不允许循环引用。因此,
我想创建将始终使用 gcc/g++/clang 支持的 C/C++ 标准的“最新”版本的 shell 别名/clang++(C的一个别名,C++的一个别名)。我意识到这可能有多种解释: 最新的 GNU
我是一名优秀的程序员,十分优秀!