Analyzing Graph Transformation Systems through Constraint Handling Rules
图转换系统和约束处理规则是基于规则的非确定性状态转换系统。GTS以其强大的融合和程序等价性分析而闻名,为此,我们在这项工作中提供了将其应用于GTS的基础。我们给出了一个健全的和完整的嵌入GTS的可移植性,研究了一个嵌入的GTS的融合,并提供了一个程序等价性分析GTS通过嵌入。结果证实了适用的CHR为基础的程序分析嵌入在CHR的其他形式主义。
2010-06-15 cs.LO cs.PL
Diagrammatic confluence for Constraint Handling Rules
汇流是约束处理规则(英语:Constraint Handling Rules)的一个基本属性,因为在其他重写形式主义中,它保证了计算不依赖于规则应用顺序,也因为它暗示了程序声明视图的逻辑一致性。在本文中,我们关注的是证明的合流的非终止的可编程逻辑器件的程序。为此,我们从vanOostrom的递减图方法导出了一个新的临界对判据,它推广了所有已有的判据。随后,我们改进的结果上的模块化的融合,它允许模块化的组合可能非终止合流程序,而不会损失的汇合。
2012-10-09 cs.PL
SMCHR: Satisfiability Modulo Constraint Handling Rules
约束处理规则(CHR)是一种基于规则的高级程序设计语言,用于规范和实现约束求解器。处理表示约束的平面合取的全局存储。默认情况下,focal不支持具有更复杂命题结构(包括析取、否定等)的目标,或VoIP依赖于主机系统来提供这些特征。在本文中,我们介绍了可满足性模约束处理规则(SMSSTO):一个紧密集成的现代布尔可满足性(SAT)求解器的量词自由公式与任意命题结构的SMSSTO。SMCNOW本质上是一个可满足性模理论(SMT)求解器,其中理论T在CHR中实现。SMCNOW的执行算法基于惰性子句生成,其中每当应用规则时都会生成SAT求解器的新子句。我们还将探讨建立SMCNET系统的实际方面,包括扩展一个“内置”的约束求解器,支持统一和合理化的平等。
2012-10-19 cs.PL
Visualization of Constraint Handling Rules: Semantics and Applications
本文提出了一种对约束处理规则的动画扩展($CHR^{vis}$)。可视化总是帮助程序员理解数据和调试程序。一张图片胜过千言万语。它可以帮助识别问题所在或显示某些东西是如何工作的。它甚至可以说明一个关系,否则是不清楚的。$CHR^{vis}$旨在将动画和可视化功能嵌入到可编程逻辑器件程序中。因此,它使用户能够在执行程序时使这些执行动画化。本文旨在为$CHR^{vis}$提供操作语义。文中还讨论了$CHR^{vis}$程序的正确性。文中还介绍了新扩张的一些应用。
2017-06-04 cs.PL cs.SE
(Co-)Inductive semantics for Constraint Handling Rules
在本文中,我们解决的问题,定义一个不动点语义的约束处理规则(约束处理规则),捕获的行为的简化和传播规则在一个健全的和完整的方式,就其声明性语义。首先,我们证明了一组简化规则的状态的逻辑读取可以通过CHR的抽象操作语义生成的转换系统上的最小不动点来表征。同样,我们证明了一组传播规则的状态的逻辑读取可以通过最大不动点来表征。然后,为了利用这两种类型的规则,而不失去定点特征,我们提出了一个持久的操作语义。我们最后建立,这种语义的特点是两个嵌套的不动点,我们所得到的语言是一个优雅的框架,使用共归纳推理程序。
2011-08-01 cs.LO cs.PL
Constraint Handling Rules with Multiset Comprehension Patterns
SQL是一种声明性、并发性和提交性的基于选择规则的约束程序设计语言。我们扩展了多集理解模式,为程序员提供了编写多集重写规则,可以匹配存储中的变量数量的约束的能力。这使得为协调大量数据或需要聚合操作的算法编写更具可读性、简洁性和声明性的代码成为可能。我们将此扩展称为$\mathit{CHR}^\mathit{cp}$。我们给出了$\mathit{CHR}^\mathit{cp}$的高级抽象语义,然后是低级操作语义。然后,我们将展示这个操作语义相对于抽象语义的合理性。
2014-06-09 cs.PL
Quantified Constraint Handling Rules
University of Angers(昂热大学)
通过启用动态绑定器和访问用户定义的约束,我们将QCSP(量化约束满足问题)框架转换为QSTO(量化约束处理规则)框架。QCSP提供了一个自然的框架来表达PSPACE问题作为有限的两个玩家的游戏。但是要定义QCSP模型,绑定器必须是以前已知的,即使最坏的情况不会发生,也不能动态地构建。为了克服这个问题,我们定义了新的Qingdom的形式主义,允许动态地建立在解决绑定器。我们的QCSP模型表现出最先进的性能静态粘结剂和优于以前的QCSP方法时,粘结剂是动态的。
2019-09-18 cs.AI cs.PL
chrKanren: Constraint Handling Rules in a Relational Language
Harvard University(哈佛大学);University of Alabama at Birmingham(阿拉巴马大学伯明翰分校)
介绍chrKanren这一miniKanren方言,支持CHR。展示如何将CHR约束传播机制集成到miniKanren搜索流语言,使其完备,并通过chrKanren展示了miniKanren中约束的新应用,如语义统一和类型及示例导向合成。
2026-07-24 cs.PL
Visualization of Constraint Handling Rules
在过去的二十年里,约束处理规则(Constraint Handling Rules,缩写为CLR)已经发展成为一种通用语言。任何通用语言都需要自己的开发工具。特别是可视化工具,为程序员和语言初学者的许多任务提供了便利。本文介绍了正在进行的工作对可视化的可编程逻辑器件的程序。这个过程是通过源到源转换完成的。它的目标是达到一个通用的Transformer,以可视化在CHR中实现的不同算法。注:第30届国际逻辑编程会议(ICLP 2014)博士联盟,7月19日至22日,奥地利维也纳,接受了论文的扩展摘要/完整版本。
2014-05-15 cs.PL
Type Classes and Constraint Handling Rules
类型类是对传统的基于Hindley-Milner的类型系统的优雅扩展。它们用于现代类型化语言,如Haskell,以支持符号的受控重载。Haskell 98只支持单参数和构造函数类型的类。其他扩展,如多参数类型类,是非常需要的,但仍然没有得到Haskell的正式支持。扩展会产生一些微妙的问题,这可能会导致丢失可行的类型推断或模糊的程序。类型分类系统的适当逻辑基础似乎缺失了。这样的基础将允许扩展的特点和严格的研究。我们建议采用约束处理规则作为一种工具,研究和开发的类型类系统在一个统一的方式。
2000-06-26 cs.PL
Optimizing compilation of constraint handling rules in HAL
本文讨论了约束处理规则的优化编译问题。CHR是一种多头承诺选择约束语言,通常用于编写增量约束求解器。CHR通常作为编译为底层语言的语言扩展来实现。在本文中,我们将展示如何使用不同种类的信息在编译的CHR,以获得访问效率,以及更好的翻译的CHR规则到底层语言,在这种情况下是HAL。所使用的信息种类包括类型、模式、确定性、函数依赖性和约束的对称性。我们还展示了如何分析可重构程序,以确定这些信息的功能依赖关系,对称性和其他种类的信息支持优化。
2004-08-10 cs.PL
Automatic Differentiation using Constraint Handling Rules in Prolog
自动微分是一种技术,它允许程序员通过组合大范围的数值和计算原语来定义数值计算,并使底层系统支持计算结果相对于其任何输入的偏导数,而不进行任何有限差分近似,也不操纵表示计算的大型符号表达式。本文介绍了一种新的方法,反向模式自动微分使用约束逻辑编程,具体地说,约束处理规则(约束处理规则)库的SWI Prolog,在一个非常小的(50行代码)的实现。当应用于概率语法中参数学习的内部-外部算法的基于微分的实现时,基于TensorFlow的实现大大优于两个著名的优化可微函数的框架Theano和TensorFlow。
2017-06-01 cs.MS cs.PL cs.SC
Implementing Constraint Handling Rules as a Domain-Specific Language Embedded in Java
基于逻辑和约束的程序设计语言和技术,例如约束处理规则(Constraint Handling Rules,缩写为CLR),可以支持许多常见的编程任务,这些任务可以以搜索可行或最优解的形式来表达。在大规模、分布式和动态云应用程序的配置管理中,使用XML开发新的约束求解器特别有趣,其中动态配置和组件选择是编程环境的一个组成部分。用Java的一个子集的特定于领域的语言编写CHR风格的约束求解器-而不是使用单独的语言层-解决了许多集成,开发周期中断,测试和调试问题,这些问题阻碍或难以在主流编程环境中采用基于CHR的方法。此外,原型实现公开了一个定义良好的API,该API支持事务性存储行为、安全终止和通过事件通知进行调试。
2013-08-19 cs.PL
Exploring Parallel Execution Strategies for Constraint Handling Rules - Work-in-Progress Report
约束处理规则(英语:Constraint Handling Rules)是一种基于规则的声明性形式和语言。并发性是固有的,因为规则可以并行地应用于约束的子集。并行实现的可扩展性,无论是在软件中,它在硬件中,使用不同的执行策略,并行执行的可扩展性程序取决于实现语言。在这份报告中,我们的目标是从一个更一般的概念角度来分析并行执行的并行程序。我们想通过实验来看看,当并行程序自动并行化时,可能会发生什么。为了这个目的,一个顺序模拟的并行可执行系统编码不同的并行执行策略。在对文献中的一些典型示例的详尽实验中,可以将并行执行和顺序执行进行比较。处理器的数量可以是有界的或无界的,以便进行更多的理论分析。因此,对于不同的问题类别和一般情况,可以对执行策略的影响进行一些初步但具有指示性的观察。
2018-08-23 cs.DC cs.PL
Using Constraint Handling Rules to Provide Static Type Analysis for the Q Functional Language
我们描述了一个应用程序的Prolog:一个类型检查工具的Q函数式语言。Q是一种简洁的向量处理语言,是APL的后代,它越来越受欢迎,特别是在金融应用中。Q是一种动态类型语言,很像Prolog。使用静态类型扩展Q提高了程序的可读性和程序员的生产力,因为类型错误是在编译时被工具发现的,而不是通过调试程序执行。类型检查器使用由Prolog约束处理规则处理的约束。在分析过程中,我们为每个程序表达式确定可能的类型值,并检测不一致性。由于Q的大多数内置函数名都是重载的,即它们的含义取决于参数类型,因此必须实现一个相当复杂的约束系统。
2011-12-16 cs.PL
Parallelism, Concurrency and Distribution in Constraint Handling Rules: A Survey
约束处理规则是一种有效的并发声明式程序设计语言,也是一种通用的计算逻辑形式。可编程逻辑程序由转换多组约束的保护反应规则组成。XML的主要特性之一是其固有的并发性。直观地说,规则可以并行地应用于多重集的各个部分。在这个全面的调查中,我们给出了并发和并行以及分布式语义的概述,标准的和更奇特的,多年来已经提出了在不同层次的细化。这些语义的范围从抽象到具体。它们是由正式的健全性结果。它们的正确性建立在并行计算和顺序计算之间的对应关系上。我们提出了共同的简洁的示例编程,已被广泛用于实验和基准测试。我们审查并行可编程逻辑器件在软件和硬件中的实现。实验结果表明,一致的并行加速比。大多数实现都可以在线获得。并行形式主义也可以用来实现和推理并发模型。为此,软件事务模型,Actor模型,有色Petri网和Join-Calculus已经忠实地编码在CHR中。在逻辑编程理论与实践(TPLP)中考虑。
2018-04-06 cs.DC cs.PL
Intelligent search strategies based on adaptive Constraint Handling Rules
自适应约束处理与约束处理规则(约束处理规则)的最先进的实现允许智能搜索策略的应用,以解决约束满足问题(CSP)。本报告比较了改进版本的冲突导向的backjumping和两个变种的动态回溯相对于时间回溯的一些AIM的情况下,这是一个基准集的随机3-SAT问题。因此,在Java中与这些不同的搜索策略相结合的布尔约束求解器的并行实现与在SICStus Prolog中与时间回溯相结合的相同布尔约束求解器的并行实现进行比较。这一比较表明,在搜索过程中增加“情报”可能会大大减少搜索步骤的数量。此外,它们的Java实现的运行时在大多数情况下比按时间顺序回溯的实现更快。更具体地说,冲突导向的反向跳转甚至比SICStus Prolog实现的时间回溯更快,尽管我们的Java实现缺少SICStus Prolog系统中的优化。逻辑程序设计理论与实践(Theory and Practice of Logic Programming,TPLP)
2004-11-18 cs.AI cs.PL
Justifications in Constraint Handling Rules for Logical Retraction in Dynamic Algorithms
Ulm University(乌尔姆大学)
我们提出了一个简单的源到源的转换,引入用户定义的约束的理由到XML程序设计语言。然后,两个规则的方案足以允许在计算期间逻辑收回(删除,移除)约束。无需从头开始重新计算,这些规则不仅删除了约束,还撤消了涉及约束的规则应用程序的所有结果。我们证明了一个关于规则方案的融合结果,并证明了它的正确性。当算法是用汇编语言编写时,约束既表示数据又表示操作。在本质上,约束已经是增量的,即可以在运行时添加约束。逻辑上的收缩增加了衰老。因此,任何用JavaScript编写的算法都将成为完全动态的。操作可以被撤销,数据可以在计算中的任何时候被删除,而不会影响结果的正确性。我们提出了两个经典的动态算法的例子,写在我们的原型实现的EQUIPMENT与理由,可在网上:保持最小的一组不断变化的数字和最短路径的图的边缘变化。
2017-09-11 cs.AI cs.LO cs.PL
Applying Constraint Handling Rules to HPSG
约束处理规则(Constraint Handling Rules,简称CLR)为约束逻辑程序设计中的一个过度复杂化问题提供了一个现实的解决方案:如何将递归函数或关系与约束相结合,同时避免非终止性问题。本文重点介绍了一些其他的好处,特别是它们的实现SICStus Prolog,提供了计算语言学家的语法设计工具。通过包容检查来应用XML规则,并且仅当它们的变量被实例化或绑定时才进行这种检查。前者的功能是最好的难以模拟使用更原始的coroutining语句,如SICStus时/2,后者根本不存在任何形式之前,CHR。为了提供一个案例研究,在这些如何可以应用到语法开发,我们考虑属性逻辑引擎(ALE),一个Prolog预处理器的逻辑编程与类型化的特征结构,并将其扩展为中心语驱动短语结构语法(HPSG)的完整语法开发系统,HPSG是一种流行的基于约束的语言学理论,使用类型化特征结构。在此上下文中,HPSG不仅可以用于扩展特征结构描述的约束语言,以包括声明方式的关系,而且还可以为具有复杂前提的约束和正确解释HPSG类型系统所需的特征值同现约束提供支持。
2000-07-07 cs.CL cs.PL
Polymorphic Type Inference for Dynamic Languages
本文提出一种结合一阶多态性、交集/并集类型及子类型的类型系统,并设计可靠且可终止的类型重构算法,使未标注函数获得多态类型以表达重载行为,适用于动态语言类型化。
2023-11-17 cs.PL
Towards a Generic Framework to Generate Explanatory Traces of Constraint Solving and Rule-Based Reasoning
在这份报告中,我们展示了如何使用简单流畅演算(SFC)来指定通用跟踪程序,即产生通用跟踪的跟踪程序。通用跟踪是可以由软件组件的不同实现产生并独立于被跟踪组件使用的跟踪。这种方法是用来定义一种方法,用于扩展一个基于Java的CHRor平台,称为CHROME(约束处理规则在线模型驱动引擎)与可扩展的通用跟踪程序。该方法包括SFC中的跟踪器规范,扩展它的方法,以及将其与CHROME集成的方式,从而产生CHROME-REF平台(用于推理解释设施),这是一个具有解释性轨迹的约束求解和基于规则的推理引擎。
2010-01-13 cs.PL
Automatic Test Data Generation and Model Checking with CHR
我们提出了一个例子,应用约束处理规则自动测试数据生成和模型检验验证的任务关键软件的卫星控制。
2014-06-09 cs.PL cs.SE
Why Can't You Behave? Non-termination Analysis of Direct Recursive Rules with Constraints
本文关注的是基于规则的程序出错。规则应用程序的不良行为是计算不终止或失败。我们提出了一个静态的程序分析的非终止性问题的递归约束处理规则(约束处理规则)的语言。是一种涉及约束推理的高级并发声明语言。它与许多其他基于规则的方法密切相关,因此其结果具有更广泛的意义。在这样的语言中,非终止性是由于递归规则的无限应用。失败是由于在计算过程中矛盾约束的积累。我们给出了线性直接递归简化规则的潜在非终止性和失效(以及确定终止性)的具有所谓的不良行为条件的定理。递归规则中约束之间的逻辑关系在这种程序分析中起着至关重要的作用。我们认为,我们的方法可以扩展到其他类型的递归和更一般的一类规则。因此,本文可以作为一个基本的参考和进一步研究的起点。
2017-01-10 cs.LO cs.PL cs.SE
The Semantics of Graph Programs
GP(图形程序)是一种基于规则的、非确定性的程序设计语言,用于在高抽象级别上解决图形问题,使程序员从处理低级别的数据结构中解放出来。GP的核心由四个结构组成:一组条件图转换规则的单步应用,顺序组合,分支和迭代。我们提出了一个形式化的语义GP的结构操作语义的风格。我们的语义的一个特殊功能是使用失败的程序来定义GP的强大的分支和迭代命令。
2010-03-24 cs.LO cs.PL
Shape Neutral Analysis of Graph-based Data-structures
格式错误的数据结构可能导致运行时错误,如任意内存访问或损坏。尽管如此,低级别堆操作程序的数据结构属性推理仍然具有挑战性。在本文中,我们提出了一个基于约束的程序分析,检查数据结构的完整性,w.r.t.给定目标数据结构属性,因为堆由程序操纵。我们的方法是使用来自目标程序的类型定义自动生成属性的求解器。生成的求解器是使用内置堆、整数和等式求解器的约束处理规则(Constraint Handling Rules,简称CLR)扩展实现的。我们的程序分析的一个关键属性是目标数据结构属性是形状中性的,即,该分析不检查与给定数据结构图形形状相关的属性,例如双链表与树。尽管如此,分析可以检测到错误的数据结构操作程序,包括那些使用列表,树,DAG,图形等,我们提出了一个实现,使用的可满足性模约束处理规则(SMESTO)系统。实验结果表明,我们的方法可以很好地为现实世界的C程序。
2018-05-03 cs.PL
A Devil's Advocate against Termination of Direct Recursion
魔鬼的拥护者是一个反对一个主张的人,不是作为一个坚定的对手,而是为了确定这个主张的有效性。我们感兴趣的是一个反对终止程序的魔鬼代言人。他通过产生一个可以导致原始程序不终止的恶意程序来做到这一点。通过检查和运行恶意程序,可以深入了解不终止的潜在原因,并产生终止的反例。我们介绍我们的方法使用并发程序设计语言约束处理规则(约束)。与其他声明性语言一样,非终止性通过无限递归发生。给定一个自递归规则,我们自动地从它生成一个或多个魔鬼规则。魔鬼规则的构造很简单,不需要猜测。魔鬼的规则很简单。例如,对于具有单递归的规则,它们是非递归的。我们表明,魔鬼的规则是最大的邪恶在以下意义上:对于任何程序,包含自递归规则和任何无限计算,通过该规则在该程序中,有一个相应的无限计算与递归规则和魔鬼的规则。在这种情况下,恶意规则充当非终止性的有限见证。另一方面,如果魔鬼规则不表现出无限的计算,递归规则是无条件终止的。我们还确定的情况下,静态分析的魔鬼的规则决定终止或不终止的递归规则。
2017-01-10 cs.LO cs.PL cs.SE