== A Fresh Look at Separation Algebras and Share Accounting ==
 = Accompaning Proof Development =

Robert Dockins, Aquinas Hobor, Andrew Appel

http://www.cs.princeton.edu/~appel/sa-accounting

-----------------------------------------------------------------

This proof development is intended to accompany the
paper "A Fresh Look at Separation Algebras and Share Accounting."
It contains the majority of the proofs and constructions found
in that paper. 

These proofs are known to compile with Coq 8.2.  The included
Makefile will build the entire proof development when
invoked with the default target.  "make gallinahtml"
will extract the embedded proof documentation as HTML.

-----------------------------------------------------------------

The following is a listing of the proof files contained in this
development with a short description.

ClassicalReasoningAboutComputation.v
  This file contains the axiom base for the development.  We assume
  the classical axiom, dependent unique choice, relational choice,
  functional extensionality and propositional extensionality.

base.v
  This exports the parts of the Coq standard library used throughout
  the development as well as a few custom convenience tactics.

sepalg.v
  This file defines our relational form of separation algebras
  with the disjointness axiom.  We also define the join_sub relation
  and the joins relation.  Additionally, elementary lemmas are
  proved.

sepalg_generators.v
  We define SA operators in this file.  All the operators mentioned
  in the paper appear here, along with a few others.

boolean_alg.v
  This file defines boolean algebras from an order-theoretic
   perspective.  We also define axioms relating to properties
   we desire of share models, including relativization, splitting
   and token factory axioms.

tree_shares.v
   Here we construct the boolean-labeled tree share model as discussed
   in the paper.  Note, however, that the proof of the token counting
   axioms follow a slightly different path than the proof in the paper.
   This is mostly because reasoning about sets in Coq is inconvenient.

shares.v
   This file simply repackages the construction from tree_shares.v
   into a nicer interface for downstream users.  We also define
   the notion of a "positive" share; that is a nonunit share.

sepalg_model.v
   This file contains a proof of soundness of the system HBI
   with respect to the model presented in the paper.

heap_model.v
   This file instantiates the logical model using the heaps
   construction from the paper with our share model, defines
   the enhanced points-to operator from the paper, and proves
   the lemmas about it presented in the paper.
