Counter-Example Guided Loop Abstraction Refinement

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improveverification coverageVSAvoidproperty verification precision
Core Design Contradiction:
ReliabilityVSMeasurement precision

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.

Inventive Principle:
Principle #1Segmentation

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If loop abstraction is applied to verify properties, then scalability is improved, but precision deteriorates due to spurious counter-examples

Engineering Contradiction:
Improveverification scalabilityVSAvoidproperty verification precision
Core Design Contradiction:
ProductivityVSMeasurement precision

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.

Inventive Principle:
Principle #23Feedback

3Measurement precision

If iterative deepening is used for refinement, then precision is improved, but productivity deteriorates due to extensive computational requirements

Engineering Contradiction:
Improveproperty verification precisionVSAvoidverification efficiency
Core Design Contradiction:
Measurement precisionVSProductivity

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.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentEP3859532B1Method and system for counter example guided loop abstraction refinement
Publication Date: 2022.10.12 TATA CONSULTANCY SERVICES LTD
  • EP3859532B1 patent drawingFigure 1
  • EP3859532B1 patent drawingFigure 2
  • EP3859532B1 patent drawingFigure 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.