The list segment predicate ls used in separation logic for verifying programs with pointers is well-suited to express properties on singly-linked lists. We study the effects of adding ls to the full quantifier-free separation logic with the separating conjunction and implication, which is motivated by the recent design of new fragments in which all these ingredients are used indifferently and verification tools start to handle the magic wand connective. This is a very natural extension that has not been studied so far. We show that the restriction without the separating implication can be solved in polynomial space by using an appropriate abstraction for memory states whereas the full extension is shown undecidable by reduction from first-order separation logic. Many variants of the logic and fragments are also investigated from the computational point of view when ls is added, providing numerous results about adding reachability predicates to quantifier-free separation logic.
翻译:列表段前端是用来进行分解逻辑的, 用于用指针来核查程序。 我们研究在单项链接的列表中显示属性。 我们研究的是, 将“ ” 添加为完全的量化的分解逻辑, 并带有分解的连带和隐含, 其动机是最近设计了新的碎片, 其中所有这些成分都被无差别地使用, 核查工具开始处理魔杖连接。 这是一个非常自然的延伸, 至今尚未对此进行研究 。 我们显示, 使用适当的内存状态抽象, 可以在多元空间中解决不分解的分解限制, 而完全扩展则通过减少一级分解逻辑来显示是无法分辨的。 从计算角度来调查逻辑和碎片的许多变体, 在添加“ ls ” 时, 提供了大量关于将可达性前提添加到免分解的分解逻辑的结果 。