Counter-Example Guided Loop Abstraction Refinement
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional software verification methods fail to accurately verify properties of code with loops having large, unknown, or infinite bounds, often resulting in precision or scalability issues, and may produce spurious counter-examples or require extensive iterative deepening.
Innovation Solution
A method and system for counter-example guided loop abstraction refinement, which involves abstracting code into base cases and inductive steps, performing bounded model checking, refining the abstraction based on error traces, and applying loop abstraction using induction to ensure property assertions are safe.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If conventional verification methods are used on code with loops having large, unknown, or infinite bounds, then verification coverage is improved, but precision deteriorates and spurious counter-examples are produced
Solution Approach 1:
The patent segments the verification process into two distinct phases: (1) loop abstraction phase where loops are transformed into abstract representations with bounded iterations, and (2) bounded model checking phase where properties are verified on the abstracted code. This segmentation allows comprehensive verification coverage while maintaining precision by preventing spurious counter-examples from propagating to the original code.
Solution Approach 2:
The patent introduces an intermediary abstracted version of the code as a mediator between the original code and the verification process. This abstracted code serves as a safe approximation that preserves property verification results while eliminating the issues of large, unknown, or infinite loop bounds that cause spurious counter-examples in conventional verification.
2Productivity
If loop abstraction is applied to verify properties, then scalability is improved, but precision deteriorates due to spurious counter-examples
Solution Approach 1:
The patent implements a feedback mechanism where the bounded model checking results on the abstracted code are used to guide further refinement of the abstraction. When properties are verified on the abstracted code, this feedback confirms the validity of the abstraction, allowing scalable verification without sacrificing precision through spurious counter-examples.
3Measurement precision
If iterative deepening is used for refinement, then precision is improved, but productivity deteriorates due to extensive computational requirements
Solution Approach 1:
The patent performs preliminary loop abstraction before bounded model checking, transforming the original code with loops into an abstracted version with bounded iterations. This preliminary action eliminates the need for extensive iterative deepening during verification, as the abstraction itself provides the necessary bounds, thereby improving verification efficiency while maintaining precision.
Data Source
Figure 1
Figure 2
Figure 3A
AI summary
Software verification is a vital process to ensure reliability and robustness of software systems. The software verification is associated with verifying one or more properties associated with a piece of code. Conventional methods are unable to verify properties of piece of code with loops, especially in the presence of loops with a large, unknown or infinite bound, or a large number of complex conditions. The present disclosure receives an abstracted piece of code corresponding to an original piece of code to check whether the abstracted piece of code hence the original piece of code is safe or not. The system applies model checking over the abstracted piece of code to check one or more property assertions associated with an abstracted piece of code. If the property assertion fails in model checking, a trace leading to the violation of the one or more property assertions is identified and analyzed.