【24h】

Proof Techniques for Synthesis of Sorting Algorithms

机译:综合排序算法的证明技术

获取原文
获取原文并翻译 | 示例

摘要

In the context of constructive synthesis of sorting algorithms, starting from the specification of the problem (input and output conditions), the proof of existence of a sorted tuple is performed inductively and we design, implement, and experiment with different proof techniques: First we use a back-chaining mechanism similar to a Prolog engine for first order logic, in which meta-variables are used for finding the existential witnesses. In order to overcome the search space explosion, we introduce various specific prove-solve methods for the theory of tuples. For instance, the equivalence relation on tuples "have same elements'' can be treated using a normal form based on multisets -- this leads to a very efficient inference rule for rewriting. When reasoning about sorting, we also have an ordering relation between elements. We extend this to an ordering between an element and a tuple, and even between tuples. Ordering relations create specific problems in Prolog style reasoning, because of transitivity and reflexivity. We demonstrate that ordering can be treated very efficiently by decomposing atomic statements into simpler ones (containing only symbols instead of terms), both for goals (backward reasoning) as well as for assumptions (forward reasoning). This leads to an interesting combination of backward and forward inferences which goes beyond and complements Prolog style reasoning. Finally, we develop a solving mechanism for finding sorted tuples, which performs the proof more efficiently, by combining relatively simple inference rules and small searches with goal directed solving rules. The techniques are implemented in the Theorem a system and are able to produce automatically proofs and algorithms for various problems: Insertion Sort, Insertion, Merge Sort, and Merge. Besides the special proof techniques, this work also gives useful hints about finding appropriate induction principles for tuples, as well as for the construction of appropriate collection-n of properties of tuples which are necessary for reasoning about sorting.
机译:在排序算法的结构性综合中,从问题的说明(输入和输出条件)开始,归纳地执行已排序元组的存在证明,然后我们设计,实现和试验不同的证明技术:首先,对于一阶逻辑,使用类似于Prolog引擎的反向链接机制,在这种机制中,元变量用于查找存在的见证人。为了克服搜索空间爆炸,我们为元组理论引入了各种特定的证明-解决方法。例如,可以使用基于多集的范式来处理“具有相同元素”的元组上的等价关系-这导致了非常有效的重写规则,在进行排序时,元素之间也具有排序关系我们将其扩展到元素与元组之间,甚至元组之间的排序,由于可传递性和自反性,排序关系在Prolog样式推理中产生了特定的问题,证明了通过将原子语句分解为更简单的命令,可以非常有效地处理排序。目标(向后推理)和假设(正向推理)都包含一个(仅包含符号而不是术语),这导致了向前和向后推理的有趣组合,这超出并补充了Prolog风格推理。通过结合相对简单的推理规则,开发一种找到排序的元组的求解机制,从而更有效地执行证明以及针对目标的解决规则的小型搜索。这些技术在定理系统中实现,并且能够针对各种问题自动生成证明和算法:插入排序,插入,合并排序和合并。除了特殊的证明技术外,这项工作还为找到合适的元组归纳原理以及构建合理的元组属性收集提供了有用的提示,这对于排序的推理是必需的。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号