Rely-Guarantee Semantics for Separation-Logic-Based Specification Extraction

Loading...
Thumbnail Image

Degree type

Doctor of Philosophy (PhD)

Graduate group

Computer and Information Science

Discipline

Computer Sciences

Subject

Funder

Grant number

License

Copyright date

2024

Distributor

Related resources

Contributor

Abstract

While formal verification promises correctness guarantees about software, these guarantees themselves must be verified. This dissertation focuses on the soundness of the Heapster verification tool, which converts imperative programs into functional specifications. Heapster is able to do this by using a type system based on separation logic to guarantee memory safety, ensuring that pointer operations can be erased in the functional program. We prove the soundness of this type system using a novel concept called rely-guarantee permissions as the semantics of types. These rely-guarantee permissions are derived from rely-guarantee reasoning, a technique for reasoning about concurrent code. We show that this approach is expressive enough to represent types to typecheck imperative programs that use complex features like pointers, linked lists, and Rust lifetimes. Additionally, we show that the semantics are flexible enough to represent the extraction of equivalent functional programs—with these features erased—as part of the typechecking process. To increase confidence in the correctness of these results and thus in the correctness of Heapster, all our proofs are formalized in Coq.

Date of degree

2024

Date Range for Data Collection (Start Date)

Date Range for Data Collection (End Date)

Digital Object Identifier

Series name and number

Volume number

Issue number

Publisher

Publisher DOI

Journal Issues

Comments

Recommended citation