如何在 Prolog 中修复这个循环谓词?

2024-03-19

为什么这不能在 Prolog 中定义“已婚”?

married(X,Y):-married(Y,X).

这些类型的循环谓词不允许吗?我该如何解决它?

Thanks


如果我的语法错误请原谅我,我已经有一段时间没有使用 Prolog 了。


典型的解决方案是在子句中引入另一个级别,如下所示:

married(X, Y) :- wife(X, Y).
married(X, Y) :- wife(Y, X).

然后使用wife子句来指定关系:

wife(jane, bob).
wife(alice, john).

?- married(jane, X).
X = bob

更多信息可以在这里找到:CSc 8710,演绎数据库和逻辑编程,第 6 章 - 逻辑和数据库 http://tinman.cs.gsu.edu/~raj/8710/sp07/ch6.pdf,根据 6.5 - 特殊关系。

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

如何在 Prolog 中修复这个循环谓词? 的相关文章

  • 使用失败、回溯 Prolog 查找列表的最小值

    我想使用导致回溯的失败来计算列表的最小值 我如何改变分钟 分钟 X 分钟 以使其工作 min X A B X is the min of A B min X X Y X lt Y min Y X Y Y lt X member X X me
  • prolog中输入/输出参数的区别

    Prolog谓词定义中的输入和输出参数有什么区别吗 这与其他语言 例如Scheme 和C 相比如何 我希望我理解你的问题 您应该研究一下 Prolog 中如何实现统一 因为它会让事情变得更清晰 反正 简而言之 没有内置方法可以将 Prolo
  • 使用 Prolog 中的累加器计算多项式的计算问题

    背景 我需要编写一个谓词 eval P A R 其中 P表示多项式系数列表 即1 2x 3x 2表示为 1 2 3 A 代表 X 的值 R 是 X A 处多项式的结果 Example eval 3 1 2 3 R 产生 R 24 编辑 之前
  • 序言排列函数

    我是 Prolog 的新手 我知道排列的递归函数 即 per per L X P del X L L1 per L1 P 我想知道当我们收到时这个函数在最后一次迭代中的逻辑树per 它返回哪个元素 Sonia 您还没有给我们 del 谓词
  • Prolog 的良好初学者材料 [关闭]

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

    我最近一直在尝试理解 Prolog 并且一直在搞乱 Prolog 中的列表列表 我正在尝试创建一种我想在 p 中的面具 序言 我有一个谓词 它确定 Prolog 中两个列表列表 比如说 L1 和 L2 之间的差异 并将它们保存为列表列表 比
  • 编写 Prolog 谓词的最佳实践是什么,以便它以指定参数的不同方式工作

    我正在尝试实现一些简单的谓词 例如 my length 或 my append 如果我们事先知道我们想要找到列表的长度 或者我们想要附加两个列表 这对我来说很容易 即我知道什么是输入 什么是输出 在 Prolog 中 可以用其他方式做事 如
  • 获取 Prolog 中的解决方案列表

    我正在学习 Prolog 并且正在阅读一本名为 人工智能 Prolog 编程 的书 作为练习 我想学习如何扩展本书中的示例之一 有人可以帮忙吗 假设您有以下事实 parent pam bob pam is a parent of bob p
  • AllegroGraph 检查现有三元组

    我正在使用 AllegroGraph 4 我有一个三元组存储 并且只有在新的三元组尚不存在时我才会尝试添加它们 这是我的 Prolog 查询 select news alfas news a news tst has annotation
  • Prolog 变量查询中的“\+”问题

    我正在读 七周七种语言 atm 我对一些 Prolog 查询感到困惑 我不明白对 否 的回答 The friends pl文件看起来像这样 likes wallace cheese likes grommit cheese likes we
  • Prolog 中的聊天机器人

    我一直在尝试在序言中创建一个聊天机器人 作为作业 到目前为止 我已经在 pl 文件中创建了一个数据库 并且列出了很多可能的对话 我知道序言是这样工作的 例如如果我们有 Chatbot good 然后我们输入 Chatbot good 它会回
  • 在 Prolog 中表达“交换性”的替代方案?

    作为一个Prolog的初学者 我发现Prolog中的交换表达式非常不直观 例如 如果我想表达 X 和 Y 属于一个家庭 例如 family X Y married X Y relative X Y father son X Y 我还应该在定
  • 如何在 swi-prolog 的 prolog 文件中运行 prolog 查询?

    如果我有一个定义规则的 prolog 文件 并在 Windows 中的 prolog 终端中打开它 它会加载事实 然而 然后它显示 提示我手动输入一些内容 如何将代码添加到文件中 以便它实际上会评估这些特定的语句 就像我输入它们一样 像这样
  • 如何从序言中的列表中删除列表?

    我想在序言中实现以下问题 Given L1 1 2 3 4 and L2 2 3 4 调用名为remove list L1 L2 L 的函数将从L1中删除L2 所以L将是 1 但是 如果第二个列表的元素与 L1 中的元素顺序不同 或者更准确
  • Prolog 同构图

    这里尝试解决同构图问题 作业信息 判断2个无向图是否同构 没有孤立的顶点 顶点数小于30 图的边作为谓词给出 即 e 1 2 f 1 2 我正在尝试使用以下方法 对于每对边 即图 1 和图 2 中的每条边 Try to bind the v
  • 在 Prolog 中动态拆分列表

    我从序言开始几周 但我看到了更深入的操作列表的递归谓词的构造 我的问题是 是否可以构建一个谓词 将给定列表拆分为给定数量的其他列表 比如我想象的 split H T NumberLists Lists 递归实现 split 1 2 3 4
  • 如何在 Prolog 中计算数字序列的和

    任务是计算从0到M的自然数之和 我使用SWI Prolog编写了以下代码 my sum From To From gt To my sum From To S From 0 Next is 1 S is 1 my sum Next To S
  • 问题 - 序言中的形式语言

    我正在尝试构建一个 DCG 它可以识别与此形式匹配的所有列表 a n b 2m c 2m d n 我写下了以下规则 s gt s gt ad ad gt a ad d ad gt bc bc gt b b bc c c bc gt a gt
  • F# 和模糊逻辑

    我知道这可能听起来很奇怪 但我想知道 Microsoft Visual F 正在进入的这个新世界中的一件事 这种语言有很多应用 我要学习 关于解析 函数式编程 结构化编程 但是人工智能呢 模糊逻辑有什么应用吗 F 是一种适合模糊逻辑应用程序
  • Prolog:子句在源文件中不在一起

    我有这段代码 Family tree female pen male tom male bob female liz female pat female ann male jim parent pam bob parent tom bob

随机推荐

  • JavaScript 中的 getElementsByClassName().forEach() 函数不起作用

    我试图使用 JavaScript 通过类名获取 HTML 的每个元素 然后根据 a 中的值更改其高度和宽度range object onchange 浏览器显示错误 document getElementsByClassName forEa
  • VB6 有什么好的 TDD 工具或资源吗?

    是的 我知道我已经落后于时代了 但是我这里有一个古老的 VB6 编辑器应用程序 我相信没有人会很快升级到 NET 它使用了几个第三方 DLL 工具 并且由于它仍然使用旧的 RichEdit 控件 我基本上可以仅用这个工具来创建我自己的 Bu
  • 匹配法语和德语字符的正则表达式

    我正在解析请求参数以查找任何易受攻击的字符以防止 XSS 威胁 我们的网络应用程序支持英语以外的法语和德语 我使用以下正则表达式来实现此目的 但它无法处理法语和德语 a zA Z0 9 r n 对此的任何建议都将受到高度赞赏 p L 将匹配
  • 如何确定 PostScript 字体的高度和深度?

    我正在寻找估计 PostScript 字体高度 上升部分的空间 和深度 下降部分的空间 的 PostScript 代码 字体的边界框可以吗 FontBBox 用于此目的 这是我的问题的一些背景 字体的字形位于基线上 显然 带有下降部分的字形
  • 使用并行赋值交换数组元素

    感兴趣这个问题 https stackoverflow com questions 4181808 swapping in ruby 我玩过一些数组和方法调用的并行赋值 这是一个典型的示例 尝试按数组中的值交换两个成员 deck A B C
  • symfony2创建没有实体类的表单

    使用Symfony2 3 4 我正在尝试创建一个不使用类型的表单 它实际上是一个非常小的表单 只有两个选择从数据库加载它们的选项 到目前为止它有效 我不能做的是获取表单数据 在控制器 提交时 我尝试按照说明进行操作here http sym
  • Firebase Firestore,查询用户朋友的帖子

    我正在寻找使用 Firebase 创建社交媒体源 我的数据结构如下 users uid details friends uid friends sub collection fuid details posts postId postedB
  • lock(){} 是锁定资源,还是锁定一段代码?

    我仍然很困惑 当我们写这样的东西时 Object o new Object var resource new Dictionary
  • 是否可以指定何时运行构建功能?

    TeamCity 8 1 4 内部版本 30168 我注意到构建功能始终作为构建步骤中第一步的第一部分运行 但是是否可以使构建功能运行 例如作为步骤2的第一部分 或者作为 Step1 的最后一部分 任何帮助表示赞赏 如果感兴趣 这是我的具体
  • 如何在 R 数据框中用 NA 替换空字符串?

    我的第一个方法是使用na strings 当我从 csv 读取数据时 由于某种原因这不起作用 我也尝试过 df df lt NA 这给了我一个错误 不能使用矩阵或数组进行列索引 我只尝试了该专栏 df col df col lt NA 这会
  • 试飞已过期

    我正在尝试使用试飞 https developer apple com app store Testflight 新的 分享我的应用程序 我现在已经与我的 3 位内部测试人员分享了iTunes连接 https itunesconnect a
  • JPA:查询实体内的可嵌入列表

    我正在尝试根据实体列表中的某些条件 提取 可嵌入类 借助 JPQL 或 Criteria API 我不是这方面的专家 所以请帮助我 已经用谷歌搜索了 4 个小时 没有任何结果 这些是课程 Entity public class PostOf
  • 强化修复经常被误用的身份验证

    当我使用 Fortify 进行扫描时 我在下面的代码中遇到了诸如 经常被误用 身份验证 之类的漏洞 这个问题有解决办法吗 我看过相关帖子 但没能找到解决方案 使用 ESAPI 我提供了主机名和 ipadress 的正则表达式 但它不起作用
  • 在php中获取上个月的日期

    我想知道上个月的日期 我写了这个 prevmonth date M Y 这给了我当前的月份 年份 我不知道是否应该使用strtotime mktime 有什么关于时间戳的吗 我是否需要在之后添加一些内容来重置 以便我网站上的所有时间戳的日期
  • F# 中的对象表达式和捕获状态

    是什么让第一次实施KO type IToto abstract Toto unit gt unit new IToto with member this Toto fun gt new IToto with member this Toto
  • DTO 到实体映射工具

    我有一个实体类Person及其对应的DTO类PersonDto public class Person Entity public virtual string Name get set public virtual string Phon
  • jquery:设置选项类型编号中的最小最大输入

    我有这部分代码
  • 使用 CasperJS 等待元素具有特定文本

    我正在使用 CasperJS 读取某个网页 我想做的是在 CasperJS 中加载网页 然后 等待某个 HTML 元素具有特定文本 所以我想做的是 var casper require casper create casper start
  • 此模拟对象上不存在方法 - Laravel 、 Mockery

    我正在尝试测试一个简单的课程 我正在关注这个教程 http code tutsplus com tutorials testing laravel controllers net 31456 http code tutsplus com t
  • 如何在 Prolog 中修复这个循环谓词?

    为什么这不能在 Prolog 中定义 已婚 married X Y married Y X 这些类型的循环谓词不允许吗 我该如何解决它 Thanks 如果我的语法错误请原谅我 我已经有一段时间没有使用 Prolog 了 典型的解决方案是在子