Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation 2019
DOI: 10.1145/3314221.3314618
|View full text |Cite
|
Sign up to set email alerts
|

Lazy counterfactual symbolic execution

Abstract: We present counterfactual symbolic execution, a new approach that produces counterexamples that localize the causes of failure of static verification. First, we develop a notion of symbolic weak head normal form and use it to define lazy symbolic execution reduction rules for non-strict languages like Haskell. Second, we introduce counterfactual branching, a new method to identify places where verification fails due to imprecise specifications (as opposed to incorrect code). Third, we show how to use counterfa… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
4
0

Year Published

2019
2019
2024
2024

Publication Types

Select...
4
2
1

Relationship

0
7

Authors

Journals

citations
Cited by 13 publications
(4 citation statements)
references
References 46 publications
0
4
0
Order By: Relevance
“…Symbolic execution [4,12] is typically being applied to imperative programming languages, but in recent years it has been used for functional programming languages as well. Ongoing work by Hallahan et al [8,9] aims to implement a symbolic execution engine for Haskell. Giantsios et al [7] use symbolic execution for a mix of concrete and symbolic testing of Erlang programs.…”
Section: Symbolic Executionmentioning
confidence: 99%
“…Symbolic execution [4,12] is typically being applied to imperative programming languages, but in recent years it has been used for functional programming languages as well. Ongoing work by Hallahan et al [8,9] aims to implement a symbolic execution engine for Haskell. Giantsios et al [7] use symbolic execution for a mix of concrete and symbolic testing of Erlang programs.…”
Section: Symbolic Executionmentioning
confidence: 99%
“…Other techniques, such as symbolic execution for verification (see e.g. [Hallahan et al 2019;Nguyen et al 2017]) or using term rewriting systems (see e.g. [Giesl et al 2011[Giesl et al , 2006[Giesl et al , 2004) can be used instead or in complement to our approach.…”
Section: Related Workmentioning
confidence: 99%
“…Symbolic execution for functional programming languages struggles with higher order features. This topic is under active study, and is not the focus of our work (Hallahan, Xue, Bland, Jhala, & Piskac, 2019;Hallahan, Xue, & Piskac., 2017). Therefore, we restrict symbols to only represent values of basic types.…”
Section: Languagementioning
confidence: 99%
“…In recent years it has been used for functional programming languages as well. To name some examples, there is ongoing work by Hallahan et al (2019) to implement a symbolic execution engine for Haskell. Giantsios, Papaspyrou, and Sagonas (2017) use symbolic execution for a mix of concrete and symbolic testing of programs written in a subset of Core Erlang.…”
Section: Symbolic Executionmentioning
confidence: 99%