Abstract:Abstract. We propose a deductive reasoning approach to the automatic verification of temporal properties of pointer programs, based on cyclic proof. We present a proof system whose judgements express that a program has a certain temporal property over memory state assertions in separation logic, and whose rules operate directly on the temporal modalities as well as symbolically executing programs. Cyclic proofs in our system are, as usual, finite proof graphs subject to a natural, decidable soundness condition… Show more
“…The techniques and metatheory of cyclic proofs originates in the logic and proof theory community. Most related to our current work is the application of cyclic proof to reasoning about program correctness [7,35,43], as well as to proving pure entailments of Separation Logic with inductively defined predicates [6,41,42]. In particular, our use of cardinalities with Separation Logic coincides with the approach used by Rowe and Brotherston [35].…”
Section: Related Workmentioning
confidence: 98%
“…SSL ⟲ currently has no support for loops, which are often a more natural and efficient alternative to recursion in imperative programs. There are several existing techniques for deductive verification of loops using cyclic proofs [7,43]; hence we believe the general cyclic synthesis technique could be extended to also handle them. To keep proof search tractable, however, we might not want to support both recursion and loops in our target language; a better idea might be to synthesize tail-recursive programs and then translate them into loops using standard techniques.…”
We describe the first approach to automatically synthesizing heap-manipulating programs with auxiliary recursive procedures. Such procedures occur routinely in data structure transformations (e.g., flattening a tree into a list) or traversals of composite structures (e.g., n-ary trees). Our approach, dubbed cyclic program synthesis, enhances deductive program synthesis with a novel application of cyclic proofs. Specifically, we observe that the machinery used to form cycles in cyclic proofs can be reused to systematically and efficiently abduce recursive auxiliary procedures.We develop the theory of cyclic program synthesis by extending Synthetic Separation Logic (SSL), a logical framework for deductive synthesis of heap-manipulating programs from Separation Logic specifications. We implement our approach as a tool called Cypress, and showcase it by automatically synthesizing a number of programs manipulating linked data structures using recursive auxiliary procedures and mutual recursion, many of which were beyond the reach of existing program synthesis tools.CCS Concepts: • Software and its engineering → Automatic programming.
“…The techniques and metatheory of cyclic proofs originates in the logic and proof theory community. Most related to our current work is the application of cyclic proof to reasoning about program correctness [7,35,43], as well as to proving pure entailments of Separation Logic with inductively defined predicates [6,41,42]. In particular, our use of cardinalities with Separation Logic coincides with the approach used by Rowe and Brotherston [35].…”
Section: Related Workmentioning
confidence: 98%
“…SSL ⟲ currently has no support for loops, which are often a more natural and efficient alternative to recursion in imperative programs. There are several existing techniques for deductive verification of loops using cyclic proofs [7,43]; hence we believe the general cyclic synthesis technique could be extended to also handle them. To keep proof search tractable, however, we might not want to support both recursion and loops in our target language; a better idea might be to synthesize tail-recursive programs and then translate them into loops using standard techniques.…”
We describe the first approach to automatically synthesizing heap-manipulating programs with auxiliary recursive procedures. Such procedures occur routinely in data structure transformations (e.g., flattening a tree into a list) or traversals of composite structures (e.g., n-ary trees). Our approach, dubbed cyclic program synthesis, enhances deductive program synthesis with a novel application of cyclic proofs. Specifically, we observe that the machinery used to form cycles in cyclic proofs can be reused to systematically and efficiently abduce recursive auxiliary procedures.We develop the theory of cyclic program synthesis by extending Synthetic Separation Logic (SSL), a logical framework for deductive synthesis of heap-manipulating programs from Separation Logic specifications. We implement our approach as a tool called Cypress, and showcase it by automatically synthesizing a number of programs manipulating linked data structures using recursive auxiliary procedures and mutual recursion, many of which were beyond the reach of existing program synthesis tools.CCS Concepts: • Software and its engineering → Automatic programming.
“…[3,4,5,10,13,14,16,17]), we have developed an infinitary proof theory for TC logic which, as far as we know, is the first system that is (cut-free) complete with respect to the standard semantics. More specifically, our system employs infinite-height, rather than infinite-width proofs, whose soundness is underpinned by the principle of infinite descent: proofs are permitted to be infinite, non-well-founded trees, but subject to the restriction that every infinite path in the proof admits some infinite descent.…”
Transitive closure logic is a known extension of first-order logic obtained by introducing a transitive closure operator. While other extensions of first-order logic with inductive definitions are a priori parametrized by a set of inductive definitions, the addition of the transitive closure operator uniformly captures all finitary inductive definitions. We present an infinitary proof system for transitive closure logic which is an infinite descent-style counterpart to the existing (explicit induction) proof system for the logic. We show that, as for similar systems for first-order logic with inductive definitions, our infinitary system is complete for the standard semantics and subsumes the explicit system. Moreover, the uniformity of the transitive closure operator allows semantically meaningful complete restrictions to be defined using simple syntactic criteria.
“…The latter offers a system parameterized by a set of inductive predicates with associated rules, rather than a single rule for induction as with the others. The cyclic machinery has also been used to effectively search for proofs of inductive properties and automatically verify properties of inductive programs, especially in the context of separation logic [78,68,16,17,18].…”
Induction and coinduction are both used extensively within mathematics and computer science. Algebraic formulations of these principles make the duality between them apparent, but do not account well for the way they are commonly used in deduction. Generally, the formalization of these reasoning methods employs inference rules that express a general explicit (co)induction scheme. Non-well-founded proof theory provides an alternative, more robust approach for formalizing implicit (co)inductive reasoning. This approach has been extremely successful in recent years in supporting implicit inductive reasoning, but is not as well-developed in the context of coinductive reasoning. This paper reviews the general method of non-well-founded proofs, and puts forward a concrete natural framework for (co)inductive reasoning, based on (co)closure operators, that offers a concise framework in which inductive and coinductive reasoning are captured as we intuitively understand and use them. Through this framework we demonstrate the enormous potential of non-well-founded deduction, both in the foundational theoretical exploration of (co)inductive reasoning and in the provision of proof support for (co)inductive reasoning within (semi-)automated proof tools.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.