PulseExploreJournal ClubDebatesTrendingResearchersJournals
Instagram
HomeExploreJournal ClubTrending
Synapse
⌘+K
Synapse
April 1, 1975ACM SIGPLAN Notices389 citations

SELECT—a formal system for testing and debugging programs by symbolic execution

View Full Paper
RBRobert S. BoyerBEB. ElspasKLKarl Levitt

Key Points

  • The central aim is to develop a systematic tool for formal debugging of programs using symbolic execution.
  • SELECT analyzes execution paths of programs written in a LISP subset and includes arrays.
  • It generates simplified conditions on input variables and symbolic values for output variables.
  • Users can insert constraint conditions and output assertions to guide test data selection.
  • SELECT successfully finds test data automatically in some examples, indicating its effectiveness.
  • User interaction is sometimes needed for specifying output assertions to aid in debugging.
  • The tool shows promise for revealing program errors but requires enhancements for greater power.

Abstract

SELECT is an experimental system for assisting in the formal systematic debugging of programs. It is intended to be a compromise between an automated program proving system and the current ad hoc debugging practice, and is similar to a system being developed by King et al. of IBM. SELECT systematically handles the paths of programs written in a LISP subset that includes arrays. For each execution path SELECT returns simplified conditions on input variables that cause the path to be executed, and simplified symbolic values for program variables at the path output. For conditions which form a system of linear equalities and inequalities SELECT will return input variable values that can serve as sample test data. The user can insert constraint conditions, at any point in the program including the output, in the form of symbolically executable assertions. These conditions can induce the system to select test data in user-specified regions. SELECT can also determine if the path is correct with respect to an output assertion. We present four examples demonstrating the various modes of system operation and their effectiveness in finding bugs. In some examples, SELECT was successful in automatically finding useful test data. In others, user interaction was required in the form of output assertions. SELECT appears to be a useful tool for rapidly revealing program errors, but for the future there is a need to expand its expressive and deductive power.

Ask AI
Helpful
Bookmark
Share
View Full Paper

Cite This Study

Boyer et al. (1975) studied this question.

synapsesocial.com/papers/6a11ea74f12454ca8d21bdd5https://doi.org/10.1145/390016.808445
Ask AI
Helpful
Bookmark
Share
View Full Paper

Also Consider

Synapse has enriched 5 closely related papers on similar clinical questions. Consider them for comparative context:

  1. 1Fine-Grained Assertion-Based Test Selection2024
  2. 2Optimizing transcriptome-based synthetic lethality predictions to improve precision oncology in early-stage breast cancer: BC-SELECT2024
  3. 3gSELECT: A Novel Pre-Analysis Machine-Learning Library Enabling Early Hypothesis Testing and Predictive Gene Selection in Single-Cell Data2025
  4. 4Hints on Test Data Selection: Help for the Practicing Programmer1978 · 2,079 citations
  5. 5Testing concolic execution through consistency checks2024