An efficient entailment proof system is essential to compositional verification using separation logic. Unfortunately, existing decision procedures are either inexpressive or inefficient. For example, Smallfoot is an efficient procedure but only works with hardwired lists and trees. Other procedures that can support general inductive predicates run exponentially in time as their proof search requires back-tracking to deal with a disjunction in the consequent. This paper presents a decision procedure to derive cyclic entailment proofs for general inductive predicates in polynomial time. Our procedure is efficient and does not require back-tracking; it uses normalisation rules that help avoid the introduction of disjunction in the consequent. Moreover, our decidable fragment is sufficiently expressive: It is based on compositional predicates and can capture a wide range of data structures, including sorted and nested list segments, skip lists with fast forward pointers, and binary search trees. We have implemented the proposal in a prototype tool and evaluated it over challenging problems taken from a recent separation logic competition. The experimental results confirm the efficiency of the proposed system.
翻译:有效的隐含证明系统是使用分离逻辑进行构成核查的关键。 不幸的是,现有的决定程序要么表现不力,要么效率低。 例如,小脚是一个有效的程序,但只能使用硬线列表和树木。 能够支持一般隐含性上游的其他程序在时间上成倍地运行,因为其证据搜索需要反向跟踪处理由此产生的脱钩现象。 本文提出了一个决策程序,为多元时间的一般诱导性上游产生循环隐含性证明。 我们的程序是有效的,不需要反向跟踪; 它使用正常化规则,帮助避免随之出现脱钩现象。 此外,我们可分解的碎片具有足够的明确性: 它基于构成性的前提,可以捕捉到广泛的数据结构,包括分类和嵌入式列表段,跳过与快速前导点的列表和二进搜索树。 我们已经在原型工具中实施了该建议,并评估了它对于最近分离逻辑竞争中遇到的挑战性问题的评估。 实验结果证实了拟议系统的效率。