A generic framework for symbolic execution: A coinductive approach

We propose a language-independent symbolic execution framework. The approach is parameterised by a language definition, which consists of a signature for the syntax and execution infrastructure of the language, a model interpreting the signature, and rewrite rules for the language's operational...

Full description

Saved in:
Bibliographic Details
Published in:Journal of symbolic computation Vol. 80; pp. 125 - 163
Main Authors: Lucanu, Dorel, Rusu, Vlad, Arusoaie, Andrei
Format: Journal Article
Language:English
Published: Elsevier Ltd 01.05.2017
Elsevier
Subjects:
ISSN:0747-7171, 1095-855X
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:We propose a language-independent symbolic execution framework. The approach is parameterised by a language definition, which consists of a signature for the syntax and execution infrastructure of the language, a model interpreting the signature, and rewrite rules for the language's operational semantics. Then, symbolic execution amounts to computing symbolic paths using a derivative operation. We prove that the symbolic execution thus defined has the properties naturally expected from it, meaning that the feasible symbolic executions of a program and the concrete executions of the same program mutually simulate each other. We also show how a coinduction-based extension of symbolic execution can be used for the deductive verification of programs. We show how the proposed symbolic-execution approach, and the coinductive verification technique based on it, can be seamlessly implemented in language definition frameworks based on rewriting such as the K framework. A prototype implementation of our approach has been developed in K. We illustrate it on the symbolic analysis and deductive verification of nontrivial programs.
ISSN:0747-7171
1095-855X
DOI:10.1016/j.jsc.2016.07.012