问题标签 [sld-resolution]

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 回答
2255 浏览

prolog - Prolog SLD 树生成器

我的任务是编写一个工具,为给定的 Prolog 程序和查询可视化 SLD 树。因此,由于我不想自己实现整个 Prolog 解析器和解释器,所以我正在寻找为我生成该树的库或程序,因此我只需要执行可视化部分。最好的情况是 C++ 库,但任何通用语言都可以(或将树输出为 xml 文档或类似文件的程序)到目前为止我找不到任何东西,所以我把希望寄托在你们身上。

最好的问候 Uzaku

0 投票
2 回答
323 浏览

prolog - Prolog 中如何解释匿名变量?

一个关于匿名变量在给定一组程序规则的 Prolog 查询解析中扮演什么角色的快速而简单的问题。因此,按照我理解 SLD 解析的最简单形式如何工作的方式,SLD 树是通过从一组目标术语中获取一些术语(基于选择规则,例如 FIRST)并遍历所有程序规则以查看哪个规则的左手边(可以这么说的结果)可以与手头的术语统一。统一两个给定项的方法是取两个项的差异集,看看是否可以用变量替换项,使差异消失,你可以通过连续取最左边的单个差异并检查是否,在两个集合中构成差异,

现在,当匿名变量 (_) 发挥作用时,我怀疑正确有效地执行此操作的诀窍在于改变确定两个术语之间最左边差异的方式,以便在其中一个是匿名变量时忽略一对术语。显然正确的方法是重命名目标中 _ 的每个实例,并将程序设置为新的变量名并使用它们来解决。

它实际上是如何完成的?我的想法是否足够,或者还有更多?(此外,如果在我理解 SLD 解析工作的方式中缺少某些东西,我将不胜感激,除非否定、调用、封装、算术谓词和更复杂的东西。)

0 投票
1 回答
230 浏览

prolog - 如何为此查询绘制 SLD 树

a ↔ b
 ↙ ↑<br /> c → d

并且path(X,Y,k)true如果图中存在从X到到的路径,Y其中最多k使用非ℇ-边沿该路径。如何为查询绘制 SLD 树?-path(a,a,s(s(0)).

0 投票
1 回答
53 浏览

prolog - 有谁知道这个序言代码的 SLD 树可能是什么?

所以这是一个序言代码,我不知道 SLD 树是什么。我知道它不应该在深度优先分辨率下工作,我只想用树来可视化它。

提前致谢!

0 投票
0 回答
81 浏览

prolog - 在 Prolog 中绘制 SLD 树的工具

举个例子,我有以下 SWI-Prolog 程序(反转列表):

是否有任何用于 Ubuntu 20.04 的工具来查看 SLD 树?
像下面这样,解决了查询: inverte([a,b,c], X).
在此处输入图像描述