2017
DOI: 10.1145/3060143
|View full text |Cite
|
Sign up to set email alerts
|

Verifying Procedural Programs via Constrained Rewriting Induction

Abstract: This paper aims to develop a verification method for procedural programs via a transformation into Logically Constrained Term Rewriting Systems (LCTRSs). To this end, we extend transformation methods based on integer TRSs to handle arbitrary data types, global variables, function calls and arrays, as well as encode safety checks. Then we adapt existing rewriting induction methods to LCTRSs and propose a simple yet effective method to generalize equations. We show that we can automatically verify memory safety … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
39
0

Year Published

2018
2018
2022
2022

Publication Types

Select...
6
2

Relationship

3
5

Authors

Journals

citations
Cited by 27 publications
(39 citation statements)
references
References 58 publications
0
39
0
Order By: Relevance
“…In this section, we recall LCTRSs, following the definitions in [7,5]. We also recall a small imperative language SIMP + with global variables and function calls.…”
Section: Preliminariesmentioning
confidence: 99%
See 1 more Smart Citation
“…In this section, we recall LCTRSs, following the definitions in [7,5]. We also recall a small imperative language SIMP + with global variables and function calls.…”
Section: Preliminariesmentioning
confidence: 99%
“…To capture the existing approaches for constrained rewriting in one setting, the framework of a logically constrained term rewriting system (an LCTRS, for short) has been proposed [7]. Transformations of C programs with integers, characters, arrays of integers, global variables, and so on into LCTRSs have been discussed in [5].…”
Section: Introductionmentioning
confidence: 99%
“…We formalize the semantics of LCTRSs as a reduction relation over a particular model that combines order-sorted terms with builtin elements such as integers, booleans, arrays, etc. The new approach, introduced in Section 3, is simpler than the usual semantics for constrained term rewriting systems [18,20,19,13], but it also lifts several technical restrictions that are important for our case studies. 3.…”
Section: Introductionmentioning
confidence: 99%
“…On the other hand, RI-based methods are procedures within RI frameworks to apply inference rules under specified strategies. In recent years, various RI-based methods for constrained rewriting (see, e.g., constrained TRSs [9,19], conditional and constrained TRSs [2], Z-TRSs [6], and logically constrained TRSs [11]) have been developed [2,20,6,12,8]. Constrained systems have built-in semantics for some function and predicate symbols and have been used as a computation model of not only functional but also imperative programs [4,7,9,5,21,12,8].…”
Section: Introductionmentioning
confidence: 99%
“…Some RI frameworks succeed in proving equivalence of an imperative program and its functional specification such that a proof based on Hoare logic needs a loop invariant (cf. [8]). From such experiences, we are interested in differences between RI frameworks and other verification methods.…”
Section: Introductionmentioning
confidence: 99%