Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.org

Compiling

Requirements:

To compile just hit “make”

Files

basics.v

This file sets up the basic definitions for our language. It starts by defining various types used throughout the development, including the syntax of expressions and commands. To simplify the rest of the development, this semantics is parameterized over a type of program states and a few functions over that type, so that we can instantiate it with “raw” program states (as done in the first, unstructured version of the language), and program states with restricted names (cf. structured.v). Instead of being defined relationally, as done in the paper, we opt for an executable definition, which defines an interpreter for the language that takes a starting state, a program, and a number of steps to run for, and returns the result of running that command on that state. This means that we prove our main results here by induction on the number of steps, as opposed to induction on a relation.

structured.v

This file defines the instance of the language semantics based on the free name restriction construction. It also prove the main results of the paper for that semantics.

logic.v

This file defines some basic heap-building functions, following the section on program verification, and proves some properties about them. It does not define triples, and it does not include the program verification examples.

cast.v

This file proves a weaker integrity property for an unstructured version of the semantics that features a cast operator.

About

A formalization of properties of a simple imperative, memory-safe language.

Resources

Releases

No releases published
You can’t perform that action at this time.