Symbolic Execution Abstraction for Path Explosion

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Traditional symbolic execution faces the state explosion problem, leading to time-consuming and resource-intensive test input generation due to the exponential increase in paths to explore, making it impractical for larger software programs.

Innovation Solution

The method of mixed symbolic and abstraction execution, where symbolic values are constrained by derived abstractions, reducing the number of paths explored by generating a declarative function based on the return value and exploring only paths that satisfy the abstraction, referred to as 'lazy symbolic execution'.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional symbolic execution is used to generate test inputs, then comprehensive path coverage can be achieved, but the state explosion problem causes exponential increase in processing time and resource consumption

Engineering Contradiction:
Improvepath coverageVSAvoidtest input generation time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the symbolic execution process by dividing the program into functions and further into basic blocks. Each function is analyzed separately with its own abstraction, and basic blocks are processed incrementally. This segmentation prevents the exponential state explosion by handling one function at a time rather than the entire program simultaneously, thus reducing the computational burden while maintaining path coverage.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary abstraction derivation for each function before executing symbolic paths. By pre-computing abstractions that capture essential function behavior and constraints, the system prepares in advance to filter and guide subsequent path exploration. This preliminary action reduces the search space early, preventing exponential state growth during actual path execution.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If traditional symbolic execution explores all possible paths, then complete software verification can be achieved, but resource consumption becomes prohibitive for larger programs

Engineering Contradiction:
Improvesoftware verification completenessVSAvoidprocessing resources
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The patent changes the parameter representation by introducing abstractions that summarize function behavior in terms of input-output relationships and invariant properties. Instead of tracking every possible concrete state, the system uses abstract parameters (predicates, constraints, and function signatures) that capture essential verification information. This parameter transformation reduces the state space from exponential to manageable levels while preserving verification completeness.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent extracts and separates the analysis of each function into independent units with dedicated abstractions. By taking out individual functions from the whole program and analyzing them separately with their own symbolic execution contexts, the system avoids the combinatorial explosion that would result from analyzing all functions simultaneously. Each function's abstraction is then reused across multiple call sites, reducing redundant processing.

Inventive Principle:
Principle #2Taking out (Extraction)

3Measurement precision

If symbolic execution maintains detailed symbolic values for all variables, then precise path analysis can be performed, but the complexity of managing symbolic states increases significantly

Engineering Contradiction:
Improvepath analysis precisionVSAvoidsymbolic state management complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments symbolic state management by scope, creating separate symbolic contexts for each function and basic block. Symbolic variables and their constraints are localized to specific function boundaries rather than being globally managed. This segmentation reduces the complexity of tracking symbolic states by limiting the scope of each symbolic context to only what is necessary for that particular function, while maintaining precise path analysis within each segment.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9152543B1Symbolic execution with automatic abstractions
Publication Date: 2015.10.06 FUJITSU LTD
  • US9152543B1 patent drawing
  • US9152543B1 patent drawing
  • US9152543B1 patent drawing

AI summary

A method of testing software may include generating a symbolic value for a return value of a software function of a software program during mixed symbolic and abstraction execution (“mixed execution”) of the software program. Additionally, the mixed execution may maintain symbolic values, abstract values, and constraints of one or more variables of the software function. The method may also include deriving, during the mixed execution, an abstraction for the symbolic value. The abstraction may constrain the symbolic value and may be derived based on the return value of the paths that satisfy the abstraction. Further, the method may include exploring, during the mixed execution, the one or more paths of the software function that correspond to the return value based on the symbolic value, as constrained by the abstraction, such that a number of the one or more paths explored during the symbolic execution is constrained by the abstraction.