问题标签 [gnu-prolog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1645 浏览

prolog - 为什么 gnu prolog 不支持“假”谓词?(我已更改为 swi)

我一直在使用 gprolog thingy 在 prolog 中做一些事情。但是现在在测试更多代码时,我发现它不支持“false”。swi支持哪个?

0 投票
1 回答
1687 浏览

prolog - 在 gprolog 中写入文件

如何将从 prolog 程序获得的所有解决方案写入文件?

0 投票
1 回答
725 浏览

c - 如何在 C 和 gprolog 之间进行接口?

我在接口 C 和 Prolog 代码方面有点不幸。我们在 C 中有一些数据收集代码,在 Gnu-Prolog 中有一些分析代码。那么接口 C 和 gprolog 的最佳方法是什么?我目前正在尝试使用 gprolog 包中包含的 C 库从 C 中调用 Prolog。

注意:我正在使用 ubuntu 机器。

我面临的问题之一是如何迭代列表。我终于意识到,虽然你可以从 n 个元素中创建一个列表,但你必须以 Prolog 的方式对其进行迭代——获取头部并获取尾部并递归。

0 投票
4 回答
597 浏览

prolog - 带有变量的 Prolog 查询中的 `\+` 问题

我正在阅读“七周内七种语言”的自动取款机,但我对一些我不理解“否”响应的 Prolog 查询感到困惑。

friends.pl文件如下所示:

我可以对其进行一些简单的查询,例如:

这一切都在预料之中。现在,我想在查询中引入一个变量。我的意图是 Prolog 会给我一份华莱士所有朋友的名单。我期待X = grommit,但我得到no

它甚至没有尝试将X( _16) 与grommit. 为什么?

0 投票
2 回答
1336 浏览

prolog - Prolog 中 bagof/3 的问题

据我了解,谓词 setof/3 和 bagof/3 可用于生成问题解决方案的列表。(链接到 gprolog 手册)

正如预期的那样,以下查询的解决方案是 a、b 和 c。

现在我试试这个:

在我看来,解决方案应该是 [a,b,c] 。我究竟做错了什么?

我正在为 Mac OS 使用 gprolog 1.4.0。


编辑:解决方案

我真正需要的是 (^)/2 运算符,但是这里给出的答案是完全正确的,非常感谢您的帮助。如果有人有类似的问题,这里是我当前从 3 维网格中选择单元格的代码。

0 投票
1 回答
132 浏览

prolog - 列出转换

我是 prolog 的新手,我正在尝试扁平化一个列表,如下所示:

所需的输出是:

我怎样才能做到这一点?

0 投票
3 回答
1339 浏览

module - 使用 prolog 进行大型编程

我试图保持我的 Prolog 代码模块化,我想知道是否有人对如何做到这一点有任何建议。我使用 simple consults 执行此操作的方式,但是随着我的文件数量增加并且屈服于名称冲突,这变得越来越麻烦。是否有任何类似于“典型”导入的构造,例如

在源文件的顶部?如果它是特定于程序的,我正在使用gprolog. 提前感谢您的帮助。

0 投票
1 回答
216 浏览

prolog - 为什么 gprolog 不将 modus ponens 的使用联系在一起?

我正在阅读Learn Prolog Now , 1.1.2 Knowledge Base 2,他们在其中写了关于将 modus ponens 的使用链接在一起的内容。

KB2.pl 文件:

查询时:

提交给gprolog,它应该是response的yes,因为它应该能够从yolanda高兴的事实中推断出来。

但 gprolog 以no. 这是为什么?

0 投票
3 回答
1880 浏览

open-source - GNU Prolog 重言式检查器

我正在寻找用 GNU Prolog 编写的重言式检查器的开源实现(也可以接受 SWI-Prolog 的实现,但首选 GNU Prolog)。

我想为程序输入提供如下查询:

或者

当然,符号可以不同,如下所示:

我期望的结果布尔答案,例如“是/否”、“等于/不同”、“找到证明/未能找到证明”或类似的。

我在ftp://ftp.cs.yorku.ca/pub/peter/SVT/GNU/上找到了 GNU-Prolog 的重言式检查器,但没有附加许可证,也不知道如何应用Gnu Prolog 算术约束算术功能为了用算术扩展逻辑模型。

  • 还有其他类似的求解器吗?
  • 一些示例如何使用算术能力来扩展模型。

谢谢,格雷格。

PS 根据算术,我正在寻找部分支持 - 我只想处理一些基本情况,如果提出的解决方案能够正确处理经典逻辑并打开,我可以使用简单的启发式手动编码(也欢迎 gnu-prolog 整数函数示例) -源代码会很好扩展:)。

PPS 正如@larsmans 所指出的,根据哥德尔的不完备性定理,没有办法证明“所有”公式。这就是为什么我正在寻找可以证明的东西,可以从给定的公理和规则集证明什么,因为我正在寻找 Gnu Prolog 程序,我正在寻找此类公理和规则集的示例;)。当然检查器可能会失败 - 我期待它会在“某些”情况下工作:)。- 另一方面,有哥德尔的完备性定理;)。

0 投票
1 回答
337 浏览

prolog - Prolog 兼容层 - 可用的编程库

在一个 Prolog 实现中缺少一些谓词,而这些谓词在其他实现中可用。

我们可以实现缺少谓词,我们称之为“Prolog 兼容层”。

你知道 Prolog(尤其是 GNU-Prolog)的“Prolog 兼容层”吗?

请按以下方式构建答案:

  • 带链接的标题。
  • “实现” - 您可能想使用的 prolog 实现
  • “兼容性” - 完成兼容层的 prolog 实现
  • “功能” - 兼容性功能列表(您可以加粗您的收藏夹)
  • “附加信息” - 评论、要求、限制等。
  • “许可证” - 许可证信息

PS 问题的灵感来自另一个问题:Prolog 语法问题