Execution-Free Software Repair Using Prover-Guided Counterexamples

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing dynamic program repair (DPR) tools are inefficient and limited in their ability to fix a wide range of faults in software programs, often relying on dynamic analysis and simple heuristics, while static program repair (SPR) tools lack flexibility and are restricted to specific fault types.

Innovation Solution

A tool-based methodology that generates program repairs without execution, using a prover to produce counterexamples, infer invariants, and generate candidate fixes, which are verified through static program verification, allowing for a broader scope of fault correction without the need for test cases.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If dynamic program repair tools are used, then fault identification and fix validation can be performed, but the process is time consuming and relies on execution

Engineering Contradiction:
Improvefault identification accuracyVSAvoidrepair process time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent replaces dynamic execution-based verification with static proof-based verification. Instead of running the program to identify faults and validate fixes (mechanical execution), the system uses a prover to perform static analysis and generate counterexamples (logical reasoning), thereby reducing time while maintaining reliability.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The system performs preliminary actions by using the prover to analyze the program before actual execution is needed. The prover pre-identifies potential faults and generates counterexamples that guide the repair process, eliminating the need for time-consuming dynamic execution during fault identification and validation.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If simple heuristics are used for fix generation, then the process is faster, but the ability to fix a wide range of faults is limited

Engineering Contradiction:
Improvefix generation speedVSAvoidfault type coverage
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The system uses feedback from the prover's counterexamples to guide fix generation. The counterexamples provide specific information about why the program fails, enabling the system to generate targeted fixes that address the actual faults rather than relying on generic heuristics, thereby increasing both speed and versatility.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The system changes the approach from fixed heuristic rules to dynamic proof-based analysis. By using the prover to analyze specific program states and generate counterexamples, the system adapts its fix generation strategy to the actual faults detected, enabling it to handle a wider range of fault types efficiently.

Inventive Principle:
Principle #35Parameter changes

3Loss of time

If static program repair tools are used, then execution time is reduced, but flexibility and ability to fix various faults is limited

Engineering Contradiction:
Improveverification timeVSAvoidfault correction flexibility
Core Design Contradiction:
Loss of timeVSAdaptability or versatility

Solution Approach 1:

The patent makes the static verification system universal by enabling it to handle multiple fault types through a single unified approach. The prover-based system can identify and generate fixes for various fault categories (memory errors, logic errors, etc.) using the same counterexample-driven methodology, providing both time efficiency and versatility.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The system introduces dynamics to static analysis by using the prover to interactively generate counterexamples that adapt to the specific program being analyzed. This dynamic interaction between the prover and the program allows the static system to flexibly handle different fault types while maintaining time efficiency.

Inventive Principle:
Principle #15Dynamics

4Reliability

If test suites are used for validation, then fix verification can be performed, but the system is prone to overfitting and requires execution

Engineering Contradiction:
Improvefix validation accuracyVSAvoidvalidation system complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent replaces test suite-based validation with proof-based validation. Instead of running the program with test cases (mechanical execution), the system uses the prover to perform logical verification, eliminating overfitting issues and reducing complexity by removing the need for extensive test case generation and execution infrastructure.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS20250335334A1System and method for repairing computer programs automatically without execution
Publication Date: 2025.10.30 SIT AUTONOMOUS AG
  • US20250335334A1 patent drawing
  • US20250335334A1 patent drawing
  • US20250335334A1 patent drawing

AI summary

Systems and methods for automatically finding and fixing faults in software programs. The methodology is implemented by a tool that works solely on the basis of program text, using a prover. The tool verifies program code with a prover and if a fault is found, a set of counterexamples are generated that illustrate the causes of the proof failure. The tool uses the counterexample to infer invariants that characterize the circumstances under which the failure occurs. These invariants are used to generate candidate fixes, which are then validated by the prover. Correct fixes are applied to the program.