Static Analysis for Sound Interleaving Pruning in Model Checking
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Multithreaded programming introduces concurrency bugs and scalability issues in model checking due to exponential growth in processing time and power requirements, making it difficult to verify concurrent software effectively.
Innovation Solution
A hybrid approach that performs static analysis to identify redundant paths and prune the search space by generating an instrumented version of the program with locks, reducing the state space and processing time while maintaining accuracy through static instrumentation and enumerative model checking.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If DPOR techniques are used to verify concurrent software, then soundness and completeness are ensured, but processing time and power requirements grow exponentially
Solution Approach 1:
The patent performs static analysis before model checking to pre-identify invariants and generate pruning constraints. This preliminary action reduces the state space before enumerative model checking begins, preventing exponential growth in processing time while preserving soundness through mathematically guaranteed invariant properties
Solution Approach 2:
The patent extracts and removes redundant interleavings from the model checking process by identifying invariants that hold across multiple thread executions. By taking out these redundant paths through static analysis and constraint generation, the exponential state space explosion is prevented while maintaining verification completeness
2Reliability
If DPOR techniques are applied to real-life software, then concurrency bugs can be detected, but the exponential cost makes it difficult to scale
Solution Approach 1:
Static analysis is performed ahead of model checking to identify invariants and generate pruning constraints that reduce the search space. This preliminary processing enables scalable verification of real-life software by preventing exponential state space growth before it occurs during model checking
Solution Approach 2:
The patent introduces an intermediary static analysis phase that bridges the gap between raw source code and model checking. This intermediary generates invariants and constraints that mediate between the original program and the model checker, enabling scalable verification without sacrificing bug detection capability
3Loss of time
If static analysis is performed to identify invariants, then redundant interleavings can be pruned, but additional processing overhead is introduced
Solution Approach 1:
Static analysis is performed as a preliminary step to identify invariants and generate pruning constraints before model checking. Although this introduces initial overhead, it dramatically reduces the subsequent model checking time by eliminating redundant interleavings, resulting in net time savings for complex concurrent programs
Solution Approach 2:
The static analysis phase quickly identifies and skips over redundant interleavings by generating pruning constraints based on invariants. This allows the model checker to rush through only the necessary state space, avoiding wasted computation on equivalent executions and reducing overall processing time
Data Source
AI summary
An example embodiment includes a method for model checking a program. The method includes performing, by a processor, static analysis of source code of the program to inductively determine at least one invariant present in interleavings of by the program, and performing, by the processor, static instrumentation of the source code of program to generate an instrumented equivalent version of the program. The instrumented equivalent version of the program comprises locks to avoid execution of a subset of the interleavings corresponding to the at least one invariant. The instrumented equivalent version of the program is configured for enumerative model checking that avoids execution of the subset of the interleavings.


