Towards Testing a Verifying Compiler
نویسندگان
چکیده
In this paper, we present our approach on testing a particular verification system that is industrially used to generate mathematical proofs of the correctness of C programs. Normally, the tools used in such a verification process are seldomly verified nor thoroughly tested, and their correctness is taken for granted. Our approach to obtain assurance in such tools does not rely on the knowledge of their internal details and enables regular users of these tools to write test cases for them. Those tests are then assessed using our domain-specific axiomatization coverage that measures the impact of the axiomatization, which is an integral component of the verification process. Furthermore, we explore several sources of test cases, as the risk of constructing buggy test cases is high due to the input domain’s complexity.
منابع مشابه
Testing-Based Compiler Validation for Synchronous Languages
In this paper we present a novel lightweight approach to validate compilers for synchronous languages. Instead of verifying a compiler for all input programs or providing a fixed suite of regression tests, we extend the compiler to generate a test-suite with high behavioral coverage and geared towards discovery of faults for every compiled artifact. We have implemented and evaluated our approac...
متن کاملVerifying a Simple Compiler Using Property-based Random Testing
This paper reports on the use of the Haskell QuickCheck library for testing the correctness of a simple functional compiler and abstract machine. We use QuickCheck to express the correctness of the abstract machine against a denotational semantics, to generate well-formed test programs and to automatically shrink counterexamples obtained when a test fails.
متن کاملExperience Report: Verifying a Simple Compiler Using Property-based Random Testing
This paper reports on the use of the Haskell QuickCheck library for testing the correctness of a simple functional compiler and abstract machine. We use QuickCheck to express the correctness of the abstract machine against a denotational semantics, to generate wellformed test programs and to automatically shrink counterexamples obtained when a test fails.
متن کاملTowards the Verifying Compiler
A verifying compiler is one that proves automatically that a program is correct before allowing it to be run. Correctness of a program is defined by placing assertions at strategic points in the program text, particularly at the interfaces between its components. From recent enquiries among software developers at Microsoft, I have discovered that assertions are widely used in program developmen...
متن کاملTowards a Formal Verification of a Secure and Distributed System and Its Applications
This paper presents research towards the formal speci cation and veri cation of a secure distributed system and secure application programs that run on it. We refer to the whole system | from hardware to application programs written in a concurrent programming language | as the Silo, and to a simpli ed view of the Silo as the miniSilo. Both miniSilo and Silo consist of a collection of microproc...
متن کامل