Open Access
An Executable Formal Semantics of C with Applications: Technical Report
Chucky Ellison,Grigore Rosu +1 more
TLDR
In this paper, the authors present an executable formal semantics of C. The semantics yields an interpreter, debugger, state space search tool, and model checker, which is shown capable of automatically finding program errors, both statically and at runtime.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 770 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 enumerate nondeterministic behavior.read more
Citations
More filters
Proceedings ArticleDOI
Compiler validation via equivalence modulo inputs
TL;DR: This work introduces equivalence modulo inputs (EMI), a simple, widely applicable methodology for validating optimizing compilers, and profiles a program's test executions and stochastically prune its unexecuted code to create a practical implementation.
Proceedings ArticleDOI
KEVM: A Complete Formal Semantics of the Ethereum Virtual Machine
Everett Hildenbrandt,Manasvi Saxena,Nishant Rodrigues,Xiaoran Zhu,Philip Daian,Dwight Guth,Brandon Moore,Daejun Park,Yi Zhang,Andrei Stefanescu,Grigore Rosu +10 more
TL;DR: KEVM is presented, an executable formal specification of the EVM's bytecode stack-based language built with the K Framework, designed to serve as a solid foundation for further formal analyses and to demonstrate the usability of the semantics.
Proceedings ArticleDOI
Test-case reduction for C compiler bugs
TL;DR: It is concluded that effective program reduction requires more than straightforward delta debugging, so three new, domain-specific test-case reducers are designed and implemented based on a novel framework in which a generic fixpoint computation invokes modular transformations that perform reduction operations.
Proceedings ArticleDOI
K-Java: A Complete Semantics of Java
Denis Bogdanas,Grigore Rosu +1 more
TL;DR: K-Java is presented, a complete executable formal semantics of Java 1.4 that is applied to model-check multi-threaded programs and is generic and ready to be used in other Java-related projects.
Proceedings ArticleDOI
Towards optimization-safe systems: analyzing the impact of undefined behavior
TL;DR: A novel model is proposed, which views unstable code in terms of optimizations that leverage undefined behavior, and a new static checker called Stack is introduced that precisely identifies unstable code.
References
More filters
Book
All About Maude - A High-Performance Logical Framework: How to Specify, Program, and Verify Systems in Rewriting Logic
Manuel Clavel,Francisco Durán,Steven Eker,Patrick Lincoln,Narciso Martí-Oliet,José Meseguer,Carolyn L. Talcott +6 more
TL;DR: This chapter discusses core Maude, a Hierarchy of Data Types: From Trees to Sets to Sets, and Object-Based Programming, which specifies Parameterized Data Structures in Maude.
Journal ArticleDOI
Finding and understanding bugs in C compilers
TL;DR: Csmith, a randomized test-case generation tool, is created and spent three years using it to find compiler bugs, and a collection of qualitative and quantitative results about the bugs it found are presented.
Book
A Computational Logic Handbook
TL;DR: Contains a precise and complete description of the computational logic develo by the authors; will serve also as a reference guide to the associated mechanical theorem proving system.
Journal ArticleDOI
An overview of the K semantic framework
TL;DR: The K definition of Challenge, a programming language that aims at challenging and exposing the limitations of the various existing semantic frameworks, is proposed and discussed.
Journal ArticleDOI
The origins of structural operational semantics
TL;DR: A structural approach to operational semantics as discussed by the authors was proposed by Plotkin et al. in the early 1970s, involving many people and building on previous work on programming languages and logic, including abstract syntax, the SECD machine, and abstract interpreting machines.