- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Prolog (swi-prolog) 中做我的第一步,但无法解决以下问题:如何将存在量化的规则包含在我的事实中;具体来说,我如何包含句子“每个人都是某人的 friend ”\forall x \exists y friend(x,y)
作为事实?到目前为止,我发现的每个问题都只是关于查询而不是事实。谢谢!
最佳答案
在你给出的例子中,你实际上是在量化变量而不是规则。考虑到这一点,请考虑以下示例:
friend_of(a,b).
friend(X) :-
friend_of(X,Y).
规则中的变量是通用量化的,因此您可以将规则编写为逻辑公式,如下所示:
X
∀
Y
(friend(X)
←
friend_of(X,Y))
由于变量
Y
不出现在规则的头部,它的全称量词可以作为存在量词移动到规则的主体中:
X
(friend(X)
← ∃
Y
friend_of(X,Y))
现在这个公式读作:Forall
X
friend(X)
如果存在
Y
,则为真使得
friend_of(X,Y)
是真的。这似乎与您想要的非常接近。
friend_of/2
在上面的例子中只是写的简短方式
friend_of(a,b) :- true.
然而,这里没有变量,所以没有什么可以量化的。
friend_of/2
的原因。 .即,
friend_of(a,b)
不一定意味着
friend_of(b,a)
.关系也不一定是自反的。关系 friend 是否是自反是值得商榷的。然而,这肯定是一个可能的阅读。考虑到这一点以及您评论中给出的示例,让我们假设您有一些描述
a
的事实。 ,
b
和
c
作为人,像这样:
person(a).
person(b).
person(c).
那么你可以描述一个自反关系
friends/2
像这样:
friends(a,b) :- false. % example from your comment
friends(a,c) :- false. % example from your comment
friends(X,X) :- % the relation is reflexive
person(X). % among people
表达反身性的规则基本上表明,每个人都至少与他/她自己是 friend 。根据这条规则,您的要求每个人都是直接遵循的某人的 friend 。如果你查询这个关系,你会得到想要的结果:
?- friends(a,X).
X = a
最一般的查询也会为每个人产生结果,尽管没有说明两个不同人之间的实际友谊:
?- friends(X,Y).
X = Y = a ? ;
X = Y = b ? ;
X = Y = c
注意事实
person/1
有必要将答案限制在真实的人身上。如果您查询
friends/2
与一些非人:
?- friends(cos(0),X).
no
如果你试图在没有这样一个目标的情况下定义自反性:
friend(X,X).
你的定义太笼统了:
?- friends(a,X). % desired result
X = a
?- friends(cos(0),X). % undesired result
X = cos(0)
最一般的查询不会产生任何实际的人:
?- friends(X,Y).
X = Y
关于prolog - Prolog 事实中的存在量化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43812239/
我正在尝试使用以下命令通过 ansible 收集服务器 list : ansible all -m setup -a --tree facts/ 但这会在facts文件夹下为每个主机生成很多操作系统单
我决定学习 prolog 只是为了好玩,我正在看一些视频教程。我也在互联网上搜索了一些问题试图解决,但找不到解决方法。 我能够在纸上解决这个难题,但无法将其传递到代码中。 问题: I have 8 c
我正在通过DRT(规则模板)读取Excel表,然后通过Java类中的静态方法将其转换为类的对象。并将其插入到工作内存中。这样,工作内存就会被 Excel 表格中的所有事实填满。 现在,我通过 sess
我确信这非常简单,但我显然没有用谷歌搜索正确的东西。在几个单元测试相关的博客中,我看到了几个方法被赋予的属性 [fact] ,但我似乎无法弄清楚这意味着什么。示例: public class Some
我想知道这些术语之间的区别: 事实 仿函数 谓词。 规则 在Prolog中。 如果我写:brother(john, jack).这是事实吗?或谓词? 最佳答案 从 ISO/IEC 13211-1 Fi
问题 为什么选择 Ansible 事实,例如 ansible_distribution在角色部分不可用? --- - name: Test hosts: all tasks: - na
puppet 事实看起来像这样: processors => {"models"=>["AMD Opteron(tm) Processor 6172", "AMD Opteron(tm) Proces
在做了一些研究之后,我对 Prolog 以非常简单的方式表达查询的能力感到惊讶,几乎就像口头告诉机器该做什么一样。发生这种情况是因为我对工作中的 Propel 和 PHP 感到非常厌烦。 所以,我一直
我想生成一个密码和其他一些不存在的值。 像这样的东西: - name: Retrieve or generate my_password generated_fact: shell: so
我需要从 SEC 10-K 文件中获取一些事实,例如毛收入、毛利润、毛利率、营业费用等以及相应的上下文。 对于像 https://www.sec.gov/Archives/edgar/data/131
我是 puppet 新手,并计划在我们的环境中实现它。 我有在不同版本的 Redhat 上运行的 puppet 代理。 现在,我计划从 puppet master 推送存储库文件,我需要您的指导来实现
我是 puppet 新手,并计划在我们的环境中实现它。 我有在不同版本的 Redhat 上运行的 puppet 代理。 现在,我计划从 puppet master 推送存储库文件,我需要您的指导来实现
是否可以使用通常包含在 ansible_facts 中的内容?在 Ansible 临时命令中? 例如,我有一个位于 /tmp/myFile 的文件。在我所有的服务器上,我想做: ansible all
获得正确的术语是成功传达概念的一部分,当在 SO 中使用错误的术语时,带有 Prolog 标签的受访者会很好地指出错误。 在阅读 William F. Clocksin 于 1997 年 ( Worl
上下文:我的系统包含来自不同存储 Controller 的磁盘组合,因此每种类型的磁盘都有不同的用途。我是 ansible 的新手,我一边学习一边学习。编写一个剧本,从每种类型的 Controller
我是数据仓库的新手,我希望有一个关于构建星型模式的简单问题: 如果我有一个事实表,其中事实记录自然与单个维度具有一对多关系,那么如何建模星型模式来支持这一点?例如: 事实表:销售点条目(衡量标准是美元
我正在用 Idris 编写一个基本的 monadic 解析器,以适应与 Haskell 的语法和差异。我有基本的工作,但我坚持尝试为解析器创建 VerifiedSemigroup 和 Verified
我的应用程序需要足够的准确性,但 Google Places 按类别过滤的准确性似乎很差。所以我正在考虑迁移到 Factual API。大家用过吗?您如何看待它的准确性? 另一方面,我需要知道到某个地
我是一名优秀的程序员,十分优秀!