Higher-Order Symbolic Execution via Contracts
Sam Tobin-Hochstadt, David Van Horn

TL;DR
This paper introduces a novel symbolic execution method that uses behavioral contracts as symbolic values, enabling automated reasoning about higher-order programs with complex specifications.
Contribution
It extends symbolic execution with contract-based symbolic values, providing an operational semantics that soundly predicts behavior and scales to expressive contract languages.
Findings
Successfully verifies contract correctness in complex higher-order programs
Scales to expressive contract languages including recursive and dependent contracts
Enables automated contract verification and optimization justification
Abstract
We present a new approach to automated reasoning about higher-order programs by extending symbolic execution to use behavioral contracts as symbolic values, enabling symbolic approximation of higher-order behavior. Our approach is based on the idea of an abstract reduction semantics that gives an operational semantics to programs with both concrete and symbolic components. Symbolic components are approximated by their contract and our semantics gives an operational interpretation of contracts-as-values. The result is a executable semantics that soundly predicts program behavior, including contract failures, for all possible instantiations of symbolic components. We show that our approach scales to an expressive language of contracts including arbitrary programs embedded as predicates, dependent function contracts, and recursive contracts. Supporting this feature-rich language of…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Software Engineering Research · Security and Verification in Computing
