Dynamic Symbolic Execution of Higher-Order Functions
Shu-Hung You (1), Robert Bruce Findler (1), Christos Dimoulas (1), ((1) PLT@Northwestern)

TL;DR
This paper introduces a novel concolic testing approach for higher-order functions, enabling effective bug detection by modeling inputs with canonical shapes and leveraging SMT solvers, addressing limitations of traditional methods.
Contribution
It presents the first design, semantics, and prototype for concolic testing of higher-order functions, capturing complex interactions with inputs for bug detection.
Findings
Proves that the concolic tester will find bugs if they exist in higher-order functions.
Implemented a prototype that successfully discovers bugs in literature programs.
Demonstrates the effectiveness of the approach through validation on real higher-order programs.
Abstract
The effectiveness of concolic testing deteriorates as the size of programs increases. A promising way out is to test programs modularly, e.g., on a per function or class basis. Alas, this idea hits a roadblock in modern programming languages In modern languages, components expect functions, objects, and even classes as inputs. The crux of the problem is that existing concolic testing techniques cannot faithfully capture the complex interactions between a higher-order program and its inputs in order to distill it in a first-order formula that an SMT solver can work with. In this paper, we take the first step towards solving the problem; we offer a design, semantics, and prototype for concolic testing of higher-order functions. Inspired by work on higher-order symbolic execution, our model constructs inputs for higher-order functions with a canonical shape. This enables the concolic…
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
TopicsSoftware Testing and Debugging Techniques · Software Reliability and Analysis Research · Software Engineering Research
