Abstraction Logic: The Marriage of Contextual Refinement and Separation Logic

09/07/2021
by   Youngju Song, et al.
0

Contextual refinement and separation logics are successful verification techniques that are very different in nature. First, the former guarantees behavioral refinement between a concrete program and an abstract program while the latter guarantees safety of a concrete program under certain conditions (expressed in terms of pre and post conditions). Second, the former does not allow any assumption about the context when locally reasoning about a module while the latter allows rich assumptions. In this paper, we present a new verification technique, called abstraction logic (AL), that inherently combines contextual refinement and separation logics such as Iris and VST, thereby taking the advantages of both. Specifically, AL allows us to locally verify a concrete module against an abstract module under separation-logic-style pre and post conditions about external modules. AL are fully formalized in Coq and provides a proof mode that supports a combination of simulation-style reasoning using our own tactics and SL-style reasoning using IPM (Iris Proof Mode). Using the proof mode, we verified various examples to demonstrate reasoning about ownership (based on partial commutative monoids) and purity (i.e., termination with no system call), cyclic and higher-order reasoning about mutual recursion and function pointers, and reusable and gradual verification via intermediate abstractions. Also, the verification results are combined with CompCert, so that we formally establish behavioral refinement from top-level abstract programs, all the way down to their assembly code.

READ FULL TEXT

page 1

page 3

research
03/14/2022

Conditional Contextual Refinement (CCR)

Contextual refinement (CR) is one of the standard notions of specifying ...
research
09/16/2021

Trillium: Unifying Refinement and Higher-Order Distributed Separation Logic

We present a unification of refinement and Hoare-style reasoning in a fo...
research
10/23/2018

Ordering Strict Partial Orders to Model Behavioral Refinement

Software is now ubiquitous and involved in complex interactions with the...
research
01/29/2019

Abstract I/O Specification

We recently proposed an approach for the specification and modular forma...
research
08/15/2022

Exact Separation Logic

Over-approximating (OX) program logics, such as separation logic, are us...
research
03/02/2023

Securing Verified IO Programs Against Unverified Code in F*

We introduce SCIO*, a formally secure compilation framework for statical...
research
01/28/2020

Unifying graded and parameterised monads

Monads are a useful tool for structuring effectful features of computati...

Please sign up or login with your details

Forgot password? Click here to reset