arXivDaily arXiv每日学术速递 周一至周五更新
arXiv周末暂无论文更新,休息一下吧,周末愉快~~
arXiv 1104.1998cs.LO
收藏

基于分离逻辑的摊销资源分析

Amortised Resource Analysis with Separation Logic

Robert Atkey

摘要:

Hofmann和Jost之后的基于类型的摊销资源分析--其中资源与数据结构的单个元素相关联,并在线性类型规则下分配给程序员--已经成功地为函数程序提供了具体的资源界限,并为推理提供了良好的支持。在这项工作中,我们翻译的想法摊销资源分析,命令指针操作语言嵌入的资源逻辑,基于仿射直觉逻辑的集束影响,在分离逻辑。分离逻辑组件允许我们断言堆上可变数据结构的存在和形状,而资源组件允许我们声明与结构的每个成员相关联的可消耗资源。我们提出了一个小的命令式语言的逻辑,基于Java字节码,程序和可变堆。我们已经正式的Coq证明助手内的逻辑和它的可靠性属性,并提取了认证的验证条件生成器。我们还描述了一个证明搜索过程,允许生成的验证条件被释放,同时使用线性规划来推断消耗性资源注释。我们证明了一些例子的逻辑,包括证明了循环尾列表上的原地列表反转的终止。

英文摘要:

Type-based amortised resource analysis following Hofmann and Jost---where resources are associated with individual elements of data structures and doled out to the programmer under a linear typing discipline---have been successful in providing concrete resource bounds for functional programs, with good support for inference. In this work we translate the idea of amortised resource analysis to imperative pointer-manipulating languages by embedding a logic of resources, based on the affine intuitionistic Logic of Bunched Implications, within Separation Logic. The Separation Logic component allows us to assert the presence and shape of mutable data structures on the heap, while the resource component allows us to state the consumable resources associated with each member of the structure. We present the logic on a small imperative language, based on Java bytecode, with procedures and mutable heap. We have formalised the logic and its soundness property within the Coq proof assistant and extracted a certified verification condition generator. We also describe an proof search procedure that allows generated verification conditions to be discharged while using linear programming to infer consumable resource annotations. We demonstrate the logic on some examples, including proving the termination of in-place list reversal on lists with cyclic tails.

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

↑