Learned Predicates for Software Behavior Modeling
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Traditional static and dynamic analysis techniques struggle to discover complex relationships between input variables and runtime values in software programs, particularly when multiple control paths exhibit different behaviors, making it difficult to identify test inputs effectively.
Innovation Solution
A system that includes a modeling component to learn relationships between test inputs and runtime values using machine learning techniques, representing these relationships as learned predicates, and a constraint solver to generate targeted test inputs that exercise specific control paths, thereby uncovering complex program behaviors.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If traditional static analysis techniques are used to evaluate code, then analysis can be performed without running the program, but the techniques struggle to discover complex relationships between input variables and runtime values
Solution Approach 1:
The patent introduces learned predicates as intermediary mathematical expressions that mediate between input variables and runtime values. These predicates serve as a bridge that captures complex relationships without requiring full program execution, thereby improving measurement precision while managing analysis complexity through a layered approach.
Solution Approach 2:
The patent replaces traditional mechanical static analysis methods with machine learning-based modeling. Instead of relying on symbolic reasoning and manual analysis, the system uses learned predicates generated through machine learning to automatically capture complex variable relationships, substituting mechanical analysis with intelligent modeling.
2Adaptability or versatility
If dynamic analysis techniques are used to execute the program with different test inputs, then runtime behavior can be observed, but it is difficult to identify test inputs that exercise specific control paths
Solution Approach 1:
The patent implements feedback by using learned predicates to guide test input generation. The modeling component continuously learns from observed runtime values and feeds this knowledge back into the fuzzing process, refining test input generation to target specific control paths. This closed-loop approach improves control path coverage while reducing the difficulty of identifying effective test inputs.
Solution Approach 2:
The patent performs preliminary action by pre-learning predicates that describe relationships between input variables and runtime values before executing targeted tests. This preliminary modeling phase prepares the system to efficiently generate test inputs that are likely to exercise specific control paths, reducing the difficulty of test input identification during actual testing.
3Reliability
If multiple control paths with different behaviors are analyzed, then comprehensive program behavior can be captured, but the complexity of modeling relationships increases
Solution Approach 1:
The patent applies segmentation by dividing the complex modeling task into separate learned predicates for different control paths. Each predicate models relationships specific to particular control path segments, allowing comprehensive program behavior coverage while managing modeling complexity through modular, path-specific models rather than a single monolithic model.
Data Source
AI summary
The described implementations relate to analysis of computing programs. One implementation provides a technique that can include accessing values of input variables that are processed by test code and runtime values that are produced by the test code while processing the input variables. The technique can also include modeling relationships between the runtime values and the values of the input variables. The relationships can reflect discontinuous functions of the input variables.


