Log In Sign Up

A general formal memory framework in Coq for verifying the properties of programs based on higher-order logic theorem proving with increased

by   Zheng Yang, et al.

In recent years, a number of lightweight programs have been deployed in critical domains, such as in smart contracts based on blockchain technology. Therefore, the security and reliability of such programs should be guaranteed by the most credible technology. Higher-order logic theorem proving is one of the most reliable technologies for verifying the properties of programs. However, programs may be developed by different high-level programming languages, and a general, extensible, and reusable formal memory (GERM) framework that can simultaneously support different formal verification specifications, particularly at the code level, is presently unavailable for verifying the properties of programs. Therefore, the present work proposes a GERM framework to fill this gap. The framework simulates physical memory hardware structure, including a low-level formal memory space, and provides a set of simple, nonintrusive application programming interfaces and assistant tools using Coq that can support different formal verification specifications simultaneously. The proposed GERM framework is independent and customizable, and was verified entirely in Coq. We also present an extension of Curry-Howard isomorphism, denoted as execution-verification isomorphism (EVI), which combines symbolic execution and theorem proving for increasing the degree of automation in higher-order logic theorem proving assistant tools. We also implement a toy functional programming language in a generalized algebraic datatypes style and a formal interpreter in Coq based on the GERM framework. These implementations are then employed to demonstrate the application of EVI to a simple code segment.


Michael John Caldwell Gordon (FRS 1994), 28 February 1948 – 22 August 2017

Michael Gordon was a pioneer in the field of interactive theorem proving...

Verifying x86 Instruction Implementations

Verification of modern microprocessors is a complex task that requires a...

Formalising Filesystems in the ACL2 Theorem Prover: an Application to FAT32

In this work, we present an approach towards constructing executable spe...

Verifying Graph Programs with First-Order Logic

We consider Hoare-style verification for the graph programming language ...

Verifying Graph Programs with First-Order Logic (Extended Version)

We consider Hoare-style verification for the graph programming language ...

Optimization of Executable Formal Interpreters developed in Higher-order Theorem Proving Systems

In recent publications, we presented a novel formal symbolic process vir...