问题标签 [iso-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 投票
1 回答
367 浏览

prolog - 测试该术语是不同变量的列表

ISO Prolog 中测试不同变量列表的最紧凑和规范的方法是什么?我们称之为元逻辑谓词is_varset/1

因此,如果它的参数是一个完全不同的变量列表,它应该会成功。请注意,列表始终[]在其末尾包含 a。如果变量位于末尾,我们称其为部分列表(因此不是列表)。如果一个非变量项作为既不是[]也不是变量的后缀出现,那么这既不是部分列表也不是列表

术语既不是部分列表也不是列表的一个值得注意的特殊情况是无限列表。它们包含至少两个相同的后缀,实际上它们拥有无限这样的后缀。无限列表超出了标准的范围——所有创建它们的尝试都会导致结果未定义的 STO 统一。尽管如此,一些系统仍然支持它们,因此对于那些无限列表来说,理想情况下is_varset/1应该会失败。

以下是ISO/IEC 13211-1:1995 中内置函数的概述,包括 Cor.2:2012。

0 投票
4 回答
768 浏览

prolog - 两个变量列表的交集

如何在 ISO Prolog 中为线性时间运行的两个变量列表的交集定义一个(元逻辑)谓词?变量可以以任何确定的顺序出现。没有像变量的“年龄”这样的实现相关属性必须影响结果。

与 类似library(ordsets),我们称关系varset_intersection(As, Bs, As_cap_Bs).

也就是说,第三个参数是一个输出参数,它与前两个参数的交集相统一。

请参阅当前 ISO 标准(包括Cor.2的 ISO/IEC 13211-1:1995 )的内置列表

(请注意,我确实在几年前的另一个问题中回答了这个问题。但是,它对谷歌来说仍然是隐藏和不可见的。)

0 投票
1 回答
719 浏览

prolog - ISO Prolog 谓词的复杂性

标准 Prolog 谓词的时间复杂度上限是否有任何保证?

例如:在任何符合标准的 Prolog 系统中是否确定sort(+List, ?SortedList)在 O(nlog(n)) 时间内运行(n 是 的长度)?List

0 投票
4 回答
1093 浏览

prolog - 两个变量列表的相等性

如何使用当前 ISO 标准(ISO/IEC 13211-1 :1995,包括Cor. 2 )。

换句话说,如果一个唯一变量列表是另一个变量的排列,则谓词应该成功。与 类比library(ordsets),我们称这个元逻辑谓词 varset_seteq(As, Bs).

请注意,与 相比ord_seteq/2,此谓词不能是简单As == Bs的 。

0 投票
2 回答
1302 浏览

prolog - Prolog 的逻辑更新视图如何用于断言和撤回?

有人可以详细解释一下关于断言和撤回的 Prolog 逻辑视图吗?

例如在下面的代码中,Prolog 在第一次运行中返回 true,而在随后的运行中返回 false。我不知道为什么因为 asserta(nextBound(100))满足时的 Prolog 逻辑视图,nice(X) 在它开始时仍然被冻结,所以这个变化应该被忽略并且nextbound(100)必须是错误的。

0 投票
2 回答
579 浏览

prolog - 无法在 Jekejeke Prolog 中创建 Fact

我正在使用七周内的七种语言 Prolog 教程并尝试使用 Android Jekejeke 运行时运行一些示例。例如,如果我添加

从教程中,我明白了。

我尝试使用断言,如如何在 SWI-Prolog 中创建事实?,但后来它说那assert是未定义的,而不是喜欢。

大概我错过了一些关于运行时如何工作的基本知识,或者它的 prolog.it 方言。

0 投票
4 回答
486 浏览

prolog - 实现用户定义的算术函数

如何添加一个函数(例如,hammingweight)并在右侧出现的表达式中使用它是一些(is)/2目标?

像goal_expansion 或term_expansion 这样的东西在这里有帮助吗?

我承认这不是一个大特性,但它可以增加我的一些 Prolog 程序的可读性。

编写自定义(is)/2谓词(实现自定义表达式求值器)是可行的,但我希望将运行时开销保持在较低水平,因为在这种情况下我不想牺牲运行时开销的可读性。

0 投票
1 回答
88 浏览

testing - 测试“安全术语顺序”谓词

在最近的一个问题中(如何在 ISO Prolog 中定义(和命名)相应的安全术语比较谓词?)@false 要求实现术语排序谓词lt/2,这是 ISO 内置的一个变体(@<)/2

的真值是在和lt(T1,T2)中的任意变量绑定中是稳定的。T1T2

在各种答案中,提出了不同的实现(基于隐式/显式术语遍历)。评论中提出了一些警告和提示,反例也是如此。

所以我的问题是:如何测试候选实现?一些蛮力的方法?或者更聪明的东西?

无论如何,请分享您的自动测试机器lt/2!这是为了更大的利益

0 投票
0 回答
91 浏览

iso-prolog - 警告:谓词 =/2 未知

我正在尝试将为 SICStus Prolog 编写的文件传输到 TuProlog。

我收到错误消息:

警告:谓词 =/2 未知。

(代码在 SICStus 中有效,但在 TuProlog 中无效)。

我应该用什么代替=/2TuProlog?语法有什么区别?

0 投票
2 回答
1631 浏览

prolog - 负整数的表示

ISO-Prolog 是否对负整数的表示及其操作有任何规定/建议?2的补码,也许吧?

作为程序员/用户提问:在对负整数执行位级运算时,我可以安全地做出任何假设吗?