arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 1808.04867cs.LO
收藏

一种用于切片的断言语言

An Assertion language for slicing Constraint Logic Languages

Moreno Falaschi, Carlos Olarte

摘要:

约束逻辑程序设计(CLP)是一种结合两种声明性范式的语言方案:约束求解和逻辑程序设计。并发约束编程(CCP)是一种声明式的并发模型,其中代理通过告诉和询问共享存储中的约束进行交互。在以前的论文中,我们开发了一个动态切片CCP的框架,用户首先确定(部分)计算是错误的。然后,她标记(选择)与她想要更深入研究的数据(约束)和过程相对应的最终状态的某些部分。切片的自动过程开始,部分计算通过去除不相关的信息而被“净化”。在本文中,我们给出了两个主要贡献。首先,我们将框架扩展到CLP,从而推广了以前的工作。第二,我们提供了一个断言语言,适用于CCP和CLP,它允许用户指定她的程序中的计算的一些属性。如果计算中的状态不满足断言,则识别出一些“错误”信息,并且可以开始自动切片过程。通过这种方式,我们向切片过程自动化迈进了一步。我们表明,我们的框架可以与以前的半自动的,给用户更多的选择和灵活性。我们的例子和实验表明,我们的方法的有用性。

英文摘要:

Constraint Logic Programming (CLP) is a language scheme for combining two declarative paradigms: constraint solving and logic programming. Concurrent Constraint Programming (CCP) is a declarative model for concurrency where agents interact by telling and asking constraints in a shared store. In a previous paper, we developed a framework for dynamic slicing of CCP where the user first identifies that a (partial) computation is wrong. Then, she marks (selects) some parts of the final state corresponding to the data (constraints) and processes that she wants to study more deeply. An automatic process of slicing begins, and the partial computation is "depurated" by removing irrelevant information. In this paper we give two major contributions. First, we extend the framework to CLP, thus generalizing the previous work. Second, we provide an assertion language suitable for both, CCP and CLP, which allows the user to specify some properties of the computations in her program. If a state in a computation does not satisfy an assertion then some "wrong" information is identified and an automatic slicing process can start. This way we make one step further towards automatizing the slicing process. We show that our framework can be integrated with the previous semi-automatic one, giving the user more choices and flexibility. We show by means of examples and experiments the usefulness of our approach.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑