Deductive Verification for Functional Programming Features
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Deductive verification tools designed for imperative style programming features are unable to verify functional style features, limiting their ability to ensure the correctness of programs incorporating both programming paradigms, such as Java 8, which combines both.
Innovation Solution
The development of techniques and systems that enable deductive verification tools to interpret and verify functional programming features by converting them into imperative verification jobs, using methods like inlining and model programs, to generate mathematical proof obligations that can be processed by SMT solvers.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If deductive verification tools are designed for imperative style programming features, then verification of imperative features is achieved, but verification of functional style features is unable to be performed
Solution Approach 1:
The patent introduces an intermediary translation layer that converts functional programming constructs (lambda expressions, higher-order functions) into equivalent imperative representations that deductive verification tools can process. This mediator enables the verification tool to handle functional features without requiring fundamental redesign, thus improving adaptability while maintaining verification reliability.
Solution Approach 2:
The patent transforms the verification approach by changing the representation parameters of functional programming features. Instead of verifying functional code directly, the system translates functional constructs into imperative equivalents with modified parameters (e.g., converting lambda expressions to named functions with explicit parameters), enabling compatibility with existing verification tools while expanding their capability scope.
2Reliability
If deductive verification tools verify both functional and imperative features, then program correctness is improved, but tool complexity increases
Solution Approach 1:
The patent segments the verification process into distinct phases: translation of functional constructs to imperative equivalents, generation of verification conditions, and solving. This segmentation allows the tool to handle functional and imperative features separately through a unified translation framework, reducing overall complexity compared to creating entirely separate verification paths for each paradigm.
Solution Approach 2:
The patent implements a universal translation framework that handles both functional and imperative programming features through a common verification pathway. The system uses multi-functional translation rules that can process different programming paradigms uniformly, reducing tool complexity by avoiding the need for separate specialized verification mechanisms for each paradigm.
3Adaptability or versatility
If functional programming features are converted to imperative verification jobs, then verification capability is extended, but processing time increases
Solution Approach 1:
The patent performs preliminary translation of functional programming constructs into imperative equivalents before the actual verification process begins. By pre-processing and converting functional features during the translation phase rather than during verification, the system extends verification capability to functional code while minimizing the time impact on the core verification operations that use optimized imperative processing paths.
Data Source
AI summary
A processing device receives first specification information for an executable functional programming feature from a program and second specification information for the executable functional programming feature from a specification associated with the program. The processing device aggregates the first specification information with the second specification information to form combined specification information for the executable functional programming feature. The processing device verifies the executable programming feature using the combined specification information.


