Public Software Certification for Formal-to-Natural Spec Translation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing software verification methods, such as formal verification and model checking, fail to ensure that the software behaves as intended due to the gap between formal and natural language specifications, leading to potential bugs from misunderstandings and ambiguity.
Innovation Solution
A system and method for public certification of software specifications that includes a verified software with an interpretation in an accessible language, allowing humans with mathematical training to verify the correctness of the translation from formal to natural language, ensuring that the software behaves as expected.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If formal verification is used to prove software correctness, then mathematical certainty is achieved, but human understanding of the specification is lost due to the gap between formal and natural language
Solution Approach 1:
The patent introduces an intermediary system that translates formal specifications into natural language representations. This mediator allows the formal verification results to be communicated in human-understandable terms, bridging the gap between mathematical proof and human comprehension without sacrificing the rigor of formal verification.
Solution Approach 2:
The patent segments the verification process into distinct components: formal specification, mathematical proof, and natural language interpretation. By separating these functions, the system can maintain mathematical certainty in the formal layer while providing human understanding through the natural language layer, allowing each component to specialize in its strength.
2Reliability
If private certification by formal verification is performed, then mathematical proof of correctness is obtained, but public verification and replication is difficult due to ambiguity in specification interpretation
Solution Approach 1:
The patent implements a feedback mechanism where the natural language interpretation is generated from the formal specification and made available for public review. This feedback loop allows the community to verify that the formal proof correctly captures the intended behavior, and to provide corrections or improvements, thereby enabling public verification while maintaining formal rigor.
Solution Approach 2:
The patent creates a copy of the formal specification in natural language that preserves the essential meaning and structure. This natural language copy serves as a public interface that allows anyone to understand and verify the software correctness without needing to master formal verification techniques, thus enabling public replication of the verification process.
3Ease of manufacture
If dynamic testing is used to verify software, then ease of implementation is maintained, but completeness of verification is insufficient because not all cases can be tested
Solution Approach 1:
The patent applies preliminary action by performing formal verification before deployment to establish mathematical guarantees of correctness. This upfront verification covers all possible cases theoretically, complementing dynamic testing which only covers specific executed paths. The formal verification is done in advance to prevent bugs rather than detect them during runtime testing.
Data Source
AI summary
Systems and methods to publicly certify a specification and its corresponding software for a software project. A publicly certified specification and its software can consist of a verified software that comes with an interpretation of the formal specification written in some accessible language, in such a way that at least an individual with mathematical training can check that the translation from the formal specification to a human language is, up to some extent, correct. The systems and method provided herein generate and revise a technical specification, a formal specification, algorithmic code and formally verified code for compilation and execution as a formally verified program.


