解释基本 Prolog 结果

2023-12-23

我对 Prolog 的基础知识感到困惑。

如果我有这个知识库:

loves(vincent, mia).
loves(marcellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).

jealous(X, Y) :-
    loves(X, Z),
    loves(Y, Z).

然后我假设

“如果 X 爱 Z 并且 Y 爱 Z,那么 X 就会嫉妒 Y”

当我运行查询时jealous(X, Y).

I get

X = Y, Y = vincent
X = vincent,
Y = marcellus
X = marcellus,
Y = vincent
X = Y, Y = marcellus
X = Y, Y = pumpkin
X = Y, Y = honey_bunny

我可以看到文森特嫉妒马塞利厄斯,马塞利厄斯也嫉妒文森特,但是表格中的线条是什么X = Y, Y = vincent请告诉我?我假设当存在匹配时,下一行给出查询为真的值,如

X = Y, Y = vincent
X = vincent,
Y = marcellus
X = marcellus,
Y = vincent

并且没有像下面那样的东西X = Y, Y = marcellus而其他则意味着不匹配。但X = Y, Y = vincent对我来说没有意义。如果这意味着“X 是某个值”,那就有意义了Y,我们假设Y是文森特。”但这并不能解释X = marcellus, Y = vincent在结果中。

任何帮助理解这一点的帮助都非常感激。


表格中的线条是什么意思X = Y, Y = vincent请告诉我?

那个文森特嫉妒自己:-)

你是对的,输出很混乱,如果是的话会更清楚X=vincent, Y=vincent,这是等价的。 prolog 并没有强制你提到的奇怪的输出形式,它是 prolog 系统的实现选择,也许是因为他们想要非常简短的答案。

如果你想排除某人嫉妒自己的可能性,你需要改变你对嫉妒的定义,要求X与Y不同,例如:

jealous(X, Y) :-
    loves(X, Z),
    loves(Y, Z),
    X\=Y.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解释基本 Prolog 结果 的相关文章

  • 如何实现 not_all_equal/1 谓词

    如何实施not all equal 1谓词 如果给定列表包含至少 2 个不同的元素 则该谓词成功 否则失败 这是我的尝试 不是很纯粹的尝试 not all equal L member H1 L member H2 L H1 H2 gt t
  • Prolog 管线任务

    我有一项任务是在序言中制作一张简化的地铁地图 其中一部分要求制定一项规则来检查两个车站是否在同一条线上 我有一条规则 但它似乎不起作用 这就是我到目前为止所拥有的 adjacent nh lg central 4 adjacent lg o
  • 为什么在具体化中将 clpfd 变量分配给实际值?

    我正在开发一个 SWI Prolog 程序 该程序使用 CLP FD 约束来找到特定问题的解决方案 为此 我碰巧需要两个列表的 未定位 重叠 那是 List La长度为A List Lb长度为 B A gt B 未定位的重叠列表是La Lb
  • 在 prolog 中读取用户输入的字符串

    我是 Prolog 初学者 我正在使用 swi prolog 刚刚开始使用它 我需要将用户输入字符串拆分到列表中 我尝试了以下代码 但出现错误 指出 在子句正文中完全停止 无法重新定义 2 write Enter the String nl
  • 控制 Prolog 变量值选择

    灵感来自之前的一个问题 https stackoverflow com questions 41595786 using operator to save variables in a list我尝试实现一些可以枚举布尔表达式可能性的东西
  • 适合从记录中提取 OneToMany 关系的约束编程

    也许有人可以帮助我解决 Prolog 或任何约束编程语言的问题 想象一个项目表 学生与母亲一起做某事的学校项目 每个项目都有一名或多名儿童参与 对于每个孩子 我们存储其姓名及其母亲的姓名 但对于每个项目 只有一个包含所有母亲的单元和一个包含
  • Prolog 过滤自定义目标失败的所有元素的列表

    我正在尝试写一个谓词filter List PredName Result 过滤一个List目标的所有要素PredName失败并随后返回Result列表 谓词PredName 1应该在调用过程时定义filter 3例如可以是 test N
  • 以系统的方式报告 Prolog 中查询失败的“原因”

    我正在 Prolog 中寻找一种方法 模式或内置功能 我可以用它来返回why一组谓词失败 至少就数据库中的谓词而言 当用户在系统中提出查询时 我试图能够说的不仅仅是 那是错误的 例如 假设我有两个谓词 blue 1如果某物是蓝色的 则为真
  • 如何在 Prolog 中解决这个算术表达式难题?

    我有一个编程问题 https blog svpino com 2015 05 08 solution to problem 5 and some other thoughts about this type of questions htt
  • Prolog:子句在源文件中不在一起

    我有这段代码 Family tree female pen male tom male bob female liz female pat female ann male jim parent pam bob parent tom bob
  • Prolog 展平列表

    flatten A B R islist A gt flatten A R1 R R1 write A append A R1 R flatten B R1 flatten X X islist 这是我写的代码 但我有奇怪的问题 I get
  • 通过递归扩展 Prolog 目标?

    我 最终 实现了一些目标 这些目标将根据开始由 开始之后 and duration 然而 计划目标仅接受规定数量的任务 我想扩展计划目标的功能以接受单个列表并在计划时迭代该列表 不幸的是 我认为这将需要与can run and 冲突目标如下
  • Prolog中如何选择bagof、setof和findall

    如何在 bagof setof 和 findall 之间做出选择 有什么重要的区别吗 哪个最常用 哪个最安全 感谢您的评论 回答 我检查了SWI Prolog 手册页findall 3 http www swi prolog org pld
  • Prolog - 如何从输入文件的给定列表中创建变量列表?

    我有一个输入谓词将文件作为列表读取 输入 文件名 列表 该列表的格式将是 9 字面意思就是下划线字符 在这里 不是一个通配符 问题是我如何编写谓词 pred List List2 然后转换所有 进入变量但保留9还在同一个位置吗 所以如果我输
  • Prolog中计算数字是否为素数

    我正在尝试计算输入是否是素数 但出了问题 这是我的代码 primeNumber X prime prime A 1 prime prime A B R is A mod B R 1 R A prime prime X B B lt A Ne
  • 将 X 插入到排序列表中的正确位置

    在序言中 如何将 X 插入到排序列表中的正确位置 我的尝试 insert X Y Rest X Y Rest X lt Y insert X Rest BiggerRest 您的方向是正确的 但您需要解决这三个问题 insert X X i
  • 如何为这个“移动块”Prolog 练习实现求解谓词?

    我正在使用 Ivan Bratko 的书 人工智能编程 学习 Prolog 我发现实施拟议练习的最后部分有些困难 该练习是一个使用图形来决定如何移动块并按顺序排列它们的程序 这是与程序必须执行的操作相关的图像 正如您在上图中看到的 可以使用
  • 序言中的“如果”?

    有没有办法在序言中执行 if 操作 例如如果变量为 0 则执行一些操作 将文本写入终端 甚至不需要 else 但我找不到 if 的任何文档 是的 ISO Prolog 中有这样一个控制结构 称为 gt 你像这样使用它 condition g
  • 简单的布尔表达式测试

    user compiling user for byte code formula 0 P Q P Q P user compiled 2 lines read 768 bytes written 37208 ms yes formula
  • Prolog,确定图是否是非循环的

    我需要定义一个谓词 acycling 1 它将一个图作为输入并确定该图是否是非循环的 所以根据我的理解 graph1 a b graph1 b c graph1 c a 将返回 no 和 graph2 a b graph2 b c 将返回是

随机推荐

  • 在 super.onBackPressed() 上的 onSaveInstanceState 之后无法执行此操作

    当用户按返回键退出应用程序时 我将显示插页式广告 mInterstitialAd setAdListener new AdListener Override public void onAdClosed onBackPressed line
  • 为什么 .then 不是一个函数?

    服务 js factory EventService function http cordovaSQLite return some code here populateData function data var items for i
  • Flutter 和 firebase [没有为“数据库事件”类定义 getter“值”。 firebase_database-9.0.3]

    Future
  • 仅将数据添加到特定列

    我正在尝试找到一种方法将数据从一个数据网格添加到另一个数据网格 并将该数据一次仅插入到我的第二个数据网格中的一列中 每次创建特定列Add按钮已被点击 到目前为止我的编码 private void btnFeedbackAddSupplier
  • 覆盖 Symfony2 中的单一路由

    如何覆盖 Symfony2 中的单个路由 我有一个捆绑包 其中包含bundle routing yml file 在扩展此父包的包中 我还有路由文件 routing xml请注意 这些文件的名称不同 在这个路由文件中 我喜欢覆盖单个父路由
  • 构建 R:--with-libtiff 未启用 TIFF 功能

    编译R 3 3 2从源头 我的标志包括 with libtiff 他们是 configure with system tre with blas with lapack with libtiff enable R shlib enable
  • 自动刷新过滤器

    我正在使用过滤器来显示添加内容后的时间 angular module filters fromNow function return function date return moment date fromNow 如何每分钟自动触发过滤器
  • 如何解决 YACC 移位/减少后增量运算符的冲突?

    我正在用 YACC 实际上是 Bison 编写语法 并且遇到了移位 归约问题 它是包含后缀递增和递减运算符的结果 这是语法的精简版本 token NUMBER ID INC DEC left left right PREINC left P
  • 我是否在 java.io.PipedInputStream 中发现了错误?

    我不确定 但我非常确定我在 Oracle Java 实现中发现了一个错误 或未记录的功能 我可以验证 1 7 0 67 和 1 8 0 31 是否受影响 症状 当管道已满时 对管道的写入可能会比管道再次空闲所需的时间多等待一秒 该问题的一个
  • iPhone SDK 3.0 - wait_fences:未能收到回复:10004003 [重复]

    这个问题在这里已经有答案了 我一直在开发 iPhone 应用程序 自从我开始在 SDK 3 0 上构建以来 每当应用程序尝试与我的网络服务器通信时 我都会收到此错误 一切似乎都运行良好 但我找不到任何可以解释该消息的根本原因的内容 任何帮助
  • 使用 userEvent.click 错误的 act() 警告响应测试库

    我有几个用 Jest 和 React 测试库编写的测试 它们都模拟获取并使用 userEvent click 调用来触发发出获取请求的提交按钮 组件中的状态得到更新 我做出断言 我正在使用 useEffect 挂钩来填充数据数组 但它仅在初
  • 如何使用 Youtube v3 API 获取 Youtube 视频的 mp4 url

    如何获取完整的 mp4 url 以使用除 Youtube 之外的其他来源从应用程序中的实际位置播放视频 gdata youtube API 已被弃用 所以我遇到了麻烦 任何帮助将不胜感激 谢谢 我做了一个非常简单的API https gis
  • 如何将休眠与 MS Access 结合使用?

    我想将休眠与 MS Access 一起使用 我应该使用哪种方言 您能给我一个带有 MS Access 的休眠配置文件示例吗 实际解决方案在这里 在花了 1 天尝试不同的解决方案 ODBC HXTT 等之后 我发现了这个美妙之处 http u
  • ASP.NET Core 路由不起作用

    路由器的配置方式如下 app UseMvc routes gt routes MapRoute name api template api action id app UseMvc routes gt routes MapRoute nam
  • 为什么 nl_langinfo(CODESET) 与 locale charmap 不同?

    此帖源自如何获取您的系统在 c c 中使用哪种编码 https stackoverflow com questions 1492918 how do you get what kind of encoding your system use
  • 从 Excel 单元格读取

    我在用EPPlus http epplus codeplex com 用于从 xlsx 文件读取的包 我需要从单元格中读取 TimeSpan 对象 Excel 单元格将包含 hh mm 格式的数据 例如 09 00 或 18 30 不带引号
  • Lua Web 开发使用什么 Web 服务器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Zend_Paginator 作为对象返回

    Zend Paginator 将结果作为标准数组返回 但我需要使结果作为类的实例返回 我该怎么做 例如 我想要所有新闻文章 因此需要我的项目作为 News Model Article 的实例返回 您还可以创建自定义 zend paginat
  • 如何从网页中的多个表中抓取内容

    我想从网页中的多个表中抓取内容 HTML 代码如下所示 div class fixtures table full table medium h2 class table header Date 1 h2 table class table
  • 解释基本 Prolog 结果

    我对 Prolog 的基础知识感到困惑 如果我有这个知识库 loves vincent mia loves marcellus mia loves pumpkin honey bunny loves honey bunny pumpkin