Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages 2012
DOI: 10.1145/2103656.2103719
|View full text |Cite
|
Sign up to set email alerts
|

An executable formal semantics of C with applications

Abstract: This paper describes an executable formal semantics of C. Being executable, the semantics has been thoroughly tested against the GCC torture test suite and successfully passes 99.2% of 776 test programs. It is the most complete and thoroughly tested formal definition of C to date. The semantics yields an interpreter, debugger, state space search tool, and model checker "for free". The semantics is shown capable of automatically finding program errors, both statically and at runtime. It is also used to enumerat… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
89
0

Year Published

2013
2013
2021
2021

Publication Types

Select...
5
3

Relationship

0
8

Authors

Journals

citations
Cited by 158 publications
(89 citation statements)
references
References 20 publications
0
89
0
Order By: Relevance
“…Functional big-step semantics can do this out-of-the-box, as can many small-step approaches [13,14]. Where semantics are defined in a relational bigstep style, one needs to build an interpreter that corresponds to the relation and verify that they are equivalent -essentially, building a functional big-step semantics anyway.…”
Section: Discussion and Related Workmentioning
confidence: 99%
“…Functional big-step semantics can do this out-of-the-box, as can many small-step approaches [13,14]. Where semantics are defined in a relational bigstep style, one needs to build an interpreter that corresponds to the relation and verify that they are equivalent -essentially, building a functional big-step semantics anyway.…”
Section: Discussion and Related Workmentioning
confidence: 99%
“…. , a n ]); 6. eq ret := (ret = v); 7. axiomSet := axiomSet ∪ {eqs pre ⇒ (eqs post ∪ eq ret )}; 8. end for 9. spec := simplify(axiomSet) 10. return spec of interest m is symbolically executed with fresh symbolic variables a 1 , .…”
Section: Inferring Specifications Using K's Symbolic Executionmentioning
confidence: 99%
“…A final limitations of our work is the lack of formal correctness proofs of the basic C translation and of the reengineering steps. While the evaluation (discussed in Section 5) extensively tested the translated applications without finding any unexpected behavior-which gives us good confidence in the robustness of the results-this still falls short of a fully formal approach such as [4]. This is planned as future work.…”
Section: Limitationsmentioning
confidence: 99%
“…4 In fact, to highlight the generality of the reengineering, the presentation will use a Java-like syntax; this will be palatable to readers familiar only with C-based programming languages without misrepresenting any conceptually relevant aspect. We assume knowledge of the standard terminology and notions of object-oriented programming [15].…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation