posted on 2025-08-01, 14:32authored byD Marmsoler, AD Brucker
A common problem in verification is to ensure that the formal specification models the real-world system, i.e., the implementation, faithfully. Testing is a technique that can help to bridge the gap between a formal specification and its implementation. Fuzzing in general and grammar-based fuzzing in particular are successfully used for finding bugs in implementations. Traditional fuzzing applications rely on an implicit test specification that informally can be described as “the program under test does not crash”. In this paper, we present an approach using grammar-based fuzzing to ensure the conformance of a formal specification, namely the formal semantics of the Solidity Programming language, to a real-world implementation. For this, we derive an executable test-oracle from the formal semantics of Solidity in Isabelle/HOL. The derived test oracle is used during the fuzzing of the implementation to validate that the formal semantics and the implementation are in conformance.
TAP22: Tests and Proofs 2022: 16th International Conference on Tests and Proofs, 5 July 2022, Nantes, France
TAP 2022: Tests and Proofs, edited by L. Kovács and K. Meinke
This is the author accepted manuscript. The final version is available from Springer via the DOI in this record
Availability. Our formalization, the test framework, and the evaluation results
are available under BSD license (SPDX-License-Identifier: BSD-2-Clause)