Automatically Verifying Temporal Properties of Pointer Programs with Cyclic Proof
Automatically Verifying Temporal Properties of Pointer Programs with Cyclic Proof
复制标题
使用循环证明自动验证指针程序的时间属性
DOI:
10.1007/s10817-019-09532-0
复制
发表时间:
2017
期刊:
影响因子:
--
通讯作者:
J. Brotherston
中科院分区:
文献类型:
--
作者:
Gadi Tellez;J. Brotherston
In this article, we investigate the automated verification of temporal properties of heap-aware programs. We propose a deductive reasoning approach based on cyclic proof. Judgements in our proof system assert that a program has a certain temporal property over memory state assertions, written in separation logic with user-defined inductive predicates, while the proof rules of the system unfold temporal modalities and predicate definitions as well as symbolically executing programs. Cyclic proofs in our system are, as usual, finite proof graphs subject to a natural, decidable soundness condition, encoding a form of proof by infinite descent. We present a proof system tailored to proving CTL properties of nondeterministic pointer programs, and then adapt this system to handle fair execution conditions. We show both versions of the system to be sound, and provide an implementation of each in the Cyclist theorem prover, yielding an automated tool that is capable of automatically discovering proofs of (fair) temporal properties of pointer programs. Experimental evaluation of our tool indicates that our approach is viable, and offers an interesting alternative to traditional model checking techniques.