谓词“contracting/1”是否会恢复已删除的不一致值?

2024-02-09

这个问题是在另一个问题之后提出的我之前发过帖子 https://stackoverflow.com/q/36260440/2936460关于 Prolog 中的自定义标签。

是否contracting/1谓词,当在自定义标签谓词中对变量进行赋值之后使用时,从域中永久删除“不一致”的值?或者回溯时这些值会恢复吗?


这些值当然是restored关于回溯。

它的本质是pureProlog 谓词,例如 CLP(FD) 约束,它们声明的所有内容都完全undone关于回溯。如果没有这一点,许多重要的声明性属性将不成立。看逻辑纯粹性 /questions/tagged/logical-purity了解更多信息。

你可以很容易地看出这也适用于clpfd:contracting/1,例如使用示例会话:



?- X in 0..5, X mod Y #= 2, Y in 0..2.
X in 0..5,
X mod Y#=2,
Y in 1..2.

?- X in 0..5, X mod Y #= 2, Y in 0..2, clpfd:contracting([X,Y]).
false.

?- X in 0..5, X mod Y #= 2, Y in 0..2, ( clpfd:contracting([X,Y]) ; true ).
X in 0..5,
X mod Y#=2,
Y in 1..2.
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谓词“contracting/1”是否会恢复已删除的不一致值? 的相关文章

  • AJAX VS PHP 动态网页?

    当您只能使用 php 来实现动态网页时 为什么要使用 AJAX 呢 使用 AJAX 的主要原因是用户体验 UX 现在 AJAX 不一定会改善每个实例的用户体验 所以在很多地方坚持使用纯 PHP 完全没问题 但想象一下这样的情况 网站上有一个
  • UserControl 中的 Web 控件为空?

    我构建了一个小型用户控件 它本质上是一个 DropDownList 其中包含一些基于目标属性设置的预设值 这是代码 public partial class Selector System Web UI UserControl public
  • Prolog DCG:找到最后一个元素

    我正在尝试更好地理解 DCG 的用途 为了做到这一点 我尝试将 LearnPrologNow 书中的一些练习转换为 DCG 表示法 然而 我却失败得很惨 我试图编写一个程序 仅命名列表中的最后一个元素 就这样 我只是想不出正确的 DCG 语
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 从动态服务器中抓取 html 列表数据

    哈喽大家好 抱歉提出转储问题 这是我最后的手段 我发誓我尝试了无数其他 Stackoverflow 问题 不同的框架等 但这些似乎没有帮助 我有以下问题 一个网站显示一个数据列表 前面有大量的 div li span 等标签 它是一个很大的
  • Hyperledger私有数据动态访问

    是否可以在 Hyperledger Fabric 1 4 中动态设置对私有数据的访问 与集合文件不同 我们必须添加可以访问特定 集合 的组织 是否可以通过链代码添加访问权限 我自己必须对此进行一些研究 但从 Fabric v1 4 开始 可
  • 这个版本的trace有什么问题?

    我有这个跟踪元解释器 它是为 swi prolog 编写的 trace Goal trace Goal 0 trace true Depth true trace fail Depth fail trace A gt B Depth A g
  • Prolog:从哪里开始解决类似扫雷的难题?

    我需要在序言中写一些类似扫雷的东西 我能够用 正常 语言做到这一点 但是当我尝试用序言开始编码时 我完全不知道如何开始 我需要一些提示 输入规格 板尺寸 m n m n 1 16 三元组列表 i j k 在哪里i 1 m j 1 n k 1
  • 查找列表中的最大值 - Prolog

    我刚刚接触 Prolog 并尝试编写一个谓词来查找整数列表的最大值 我需要写一个从头开始比较的内容 另一个从最后开始比较的内容 到目前为止 我有 max2 R max2 X Xs R X gt R max2 Xs X max2 X Xs R
  • WAM 中的扁平化形式

    WAM 教程重构指出查询 p Z h Z W f W 需要使用以下原则进行扁平化 话虽这么说 查询扁平化形式是 X3 h X2 X5 X4 f X5 X1 p X2 X3 X4 我对外部变量的定义感到困惑 请考虑以下内容 p Z h Y a
  • Angular 2+ 从注入动态模板的标记创建 ViewRef

    我想从动态插入到模板中的标记创建一个 ViewRef 根据以下代码示例这可能吗 模板 html
  • 动态添加字段到数据类对象

    我正在编写一个库来访问 REST API 它返回带有用户对象的 json 我将其转换为 dict 然后将其转换为数据类对象 问题是并非所有字段都是固定的 我想动态添加其他字段 未在我的数据类中指定 我可以简单地为我的对象分配值 但它们不会出
  • C# 4.0 动态对象和 WinAPI 接口,如 IShellItem(无需在 C# 源代码中定义它们)

    是否可以 使用 C 4 0 中的新动态关键字 使用接口 如 IShellItem 或其他 WinAPI 接口 而无需在 C 源代码中定义它们 或者至少不定义接口成员 我正在尝试类似的事情 const string IShellItemGui
  • 简单的布尔表达式测试

    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
  • 如何动态地将 &autoplay=1 添加到 youtube 嵌入代码?

    这是我网站上的 YouTube 嵌入代码示例
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • Prolog DCG set_prolog_flag double_quotes 源代码指令位置很重要;文档?

    我通过 SWI Prolog 惨痛地了解到 Prolog 指令的位置set prolog flag重要的是源代码文件 我发现的关于使用指令加载源代码文件的唯一有价值的文档位于加载Prolog源文件 http www swi prolog o
  • 如何在express中动态渲染/加载页面?

    我需要使用express gt 3 0 框架动态加载 渲染nodejs v1 8 15 中页面的一部分 一般来说 我想创建一个单页应用程序 我在页面顶部有一个带有链接的菜单 单击链接将更改下面的内容 就像 AJAX 页面加载一样 例如 gt
  • 动态调整大小的 boost::asio::buffer

    我正在阅读boost asio ip udp socket像这样 using boost asio ip udp char recv buf 128 udp endpoint sender endpoint size t len socke
  • check/3 谓词从列表中获取替代元素

    我有一个谓词check 3用作 例如 check A B C 所有三个参数都是列表 C是主列表 A包含具有奇数索引的项目 B包含具有偶数索引的项目 例如 check 1 3 2 4 1 2 3 4 is true check 1 2 3 4

随机推荐