Inter-procedural Analysis Using CTL Model Checking

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current software development methods are time-consuming and costly, often revealing bugs only after product deployment, necessitating inefficient late-stage detection and assurance processes.

Innovation Solution

An inter-procedural checking method using computational tree logic (CTL) syntax to analyze source code by mapping functions into recursive Kripke structures, allowing for automated model checking to identify potential bugs across multiple functions and procedures.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If traditional software development methods are used, then development time and cost are reduced in early stages, but bugs are only detected after product deployment causing time-consuming late-stage detection

Engineering Contradiction:
Improvebug detection timeVSAvoidsoftware reliability
Core Design Contradiction:
Loss of timeVSReliability

Solution Approach 1:

The patent applies preliminary action by performing static analysis and model checking during the development phase before product deployment. The system automatically generates control flow graphs, maps them to Kripke structures, and verifies temporal logic properties early in the development process, preventing bugs from reaching production and eliminating the need for time-consuming late-stage detection.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If inter-procedural analysis is performed across multiple functions, then comprehensive bug detection is achieved, but analysis complexity increases significantly

Engineering Contradiction:
Improvebug detection completenessVSAvoidanalysis complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent segments the analysis process into distinct modular components: control flow graph generation for each function, mapping to Kripke structures, temporal logic property specification, and model checking. This segmentation allows comprehensive inter-procedural analysis to be broken down into manageable steps that can be performed systematically across multiple functions without overwhelming complexity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces Kripke structures as an intermediary representation between the control flow graphs and temporal logic properties. This intermediary layer standardizes the transformation process and enables systematic verification of inter-procedural properties without directly managing the complexity of analyzing all function interactions simultaneously.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If automated model checking is implemented, then bug detection efficiency is improved, but tool complexity and setup requirements increase

Engineering Contradiction:
Improvebug detection efficiencyVSAvoidtool complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent implements self-service by providing automated tools that automatically generate control flow graphs, construct Kripke structures, and perform model checking without requiring manual intervention. The system autonomously analyzes source code, specifies temporal logic properties, and verifies them, eliminating the need for complex manual setup and reducing tool complexity barriers while maintaining high detection efficiency.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS8296735B2Inter-procedural analysis of computer programs
Publication Date: 2012.10.23 NAT ICT AUSTRALIA
  • US8296735B2 patent drawing
  • US8296735B2 patent drawing
  • US8296735B2 patent drawing

AI summary

This invention concerns inter-procedural analysis of computer programs. The need for inter-procedural analysis arises, for instance, where information is to be passed across the boundaries between functions; for example, by passing a pointer of variables to another function. The pointer needs to identify a valid memory location when used by a calling function. In one aspect the invention is a method and in another aspect the invention is a computer programmed to perform the method. The heart of the method involves the use of computational tree logic (CTL) model checking each sub-structure of the code to iteratively check alternately whether guarantees associated with the code are true, false or undetermined for each external assumption, and whether the internal assumptions are consistent with the guarantees of the caller sub-structures.