在CHR中展开
Unfolding in CHR
摘要:
程序转换是一种有吸引力的技术,它可以提高运行时的效率,空间消耗和更普遍地优化给定的程序。本质上,它由一系列的语法程序操作,保持某种语义等价。大多数程序转换系统使用的基本操作之一是展开,它包括用过程调用的定义替换过程调用。虽然有大量的文献转换和展开的顺序程序,很少有论文已经解决了这个问题的并发语言,据我们所知,没有其他考虑展开的并行程序。本文定义了一个正确的可编程逻辑程序展开系统。我们定义了一个展开规则,证明了它的正确性,并讨论了一些条件,可以用来删除一个展开规则,同时保持程序的意义。我们证明了上述转换的汇合和终止性质。
英文摘要:
Program transformation is an appealing technique which allows to improve run-time efficiency, space-consumption and more generally to optimize a given program. Essentially it consists of a sequence of syntactic program manipulations which preserves some kind of semantic equivalence. One of the basic operations which is used by most program transformation systems is unfolding which consists in the replacement of a procedure call by its definition. While there is a large body of literature on transformation and unfolding of sequential programs, very few papers have addressed this issue for concurrent languages and, to the best of our knowledge, no other has considered unfolding of CHR programs. This paper defines a correct unfolding system for CHR programs. We define an unfolding rule, show its correctness and discuss some conditions which can be used to delete an unfolded rule while preserving the program meaning. We prove that confluence and termination properties are preserved by the above transformations.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。