Deductive Verification for Functional Programming Features

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

VSEngineering 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

Engineering Contradiction:
Improveverification capabilityVSAvoidprogram correctness
Core Design Contradiction:
Adaptability or versatilityVSReliability

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

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.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If deductive verification tools verify both functional and imperative features, then program correctness is improved, but tool complexity increases

Engineering Contradiction:
Improveprogram correctnessVSAvoidverification tool complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

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.

Inventive Principle:
Principle #1Segmentation

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.

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

3Adaptability or versatility

If functional programming features are converted to imperative verification jobs, then verification capability is extended, but processing time increases

Engineering Contradiction:
Improveverification capabilityVSAvoidverification processing time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

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.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10733074B1Deductive verification for programs using functional programming features
Publication Date: 2020.08.04 AMAZON TECH INC
  • US10733074B1 patent drawing
  • US10733074B1 patent drawing
  • US10733074B1 patent drawing

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.