From 81d722c3329882f60ec1de0666cc84628ef52133 Mon Sep 17 00:00:00 2001
From: Ralf Jung <jung@mpi-sws.org>
Date: Thu, 6 Jul 2017 09:58:02 -0700
Subject: [PATCH] README

---
 README.md | 39 +++++++++++++++++++++++++++++----------
 1 file changed, 29 insertions(+), 10 deletions(-)

diff --git a/README.md b/README.md
index 9307af4c..2fec6cd7 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # LAMBDA-RUST COQ DEVELOPMENT
 
-This is the Coq formalization of lambda-Rust.
+This is the Coq development accompanying lambda-Rust.
 
 ## Prerequisites
 
@@ -11,21 +11,40 @@ This version is known to compile with:
  - A development version of [Iris](https://gitlab.mpi-sws.org/FP/iris-coq/)
 
 The easiest way to install the correct versions of the dependencies is through
-opam.  Once you got opam set up, just run `make build-dep` to install the right
-versions of the dependencies.  When the dependencies change (e.g., a newer
-version of Iris is needed), just run `make build-dep` again.
+opam.  Coq packages are available on the coq-released repository, set up by the
+command:
 
-Alternatively, you can manually determine the required Iris commit by consulting
-the `opam.pins` file.
+    opam repo add coq-released https://coq.inria.fr/opam/released
+
+Once you got opam set up, just run `make build-dep` to install the right
+versions of the dependencies.  When the dependencies change, just run `make
+build-dep` again.
 
 ## Building Instructions
 
 Run `make` to build the full development.
 
+## Structure
+
+* The folder [lang](theories/lang) contains the formalization of the lambda-Rust
+  core language, including the theorem showing that programs with data races get
+  stuck.
+* The folder [lifetime](theories/lifetime) proves the rules of the lifetime
+  logic, including derived constructions like (non-)atomic persistent borrows.
+* The folder [typing](theories/typing) defines the domain of semantic types,
+  interpretations of all the judgments, as well as proofs of all typing rules.
+  * The subfolder [examples](theories/typing/examples) shows how the examples
+    from the technical appendix can be type-checked in Coq.
+  * The subfolder [lib](theories/typing/lib) contains proofs of safety of some
+    unsafely implement types from the Rust standard library and some user
+    crates: `Cell`, `RefCell`, `Rc`, `Arc`, `Mutex`, `RwLock`, `mem::swap`,
+    `thread::spawn`, `take_mut::take`, `alias::once` as well as converting `&&T`
+    to `&Box<T>`.
+
 ## For Developers: How to update the Iris dependency
 
-- Do the change in Iris, push it.
-- In lambdaRust, change opam.pins to point to the new commit.
-- Run "make build-dep" (in lambdaRust) to install the new version of Iris.
-- You may have to do "make clean" as Coq will likely complain about .vo file
+* Do the change in Iris, push it.
+* In lambdaRust, change opam.pins to point to the new commit.
+* Run "make build-dep" (in lambdaRust) to install the new version of Iris.
+* You may have to do "make clean" as Coq will likely complain about .vo file
   mismatches.
-- 
GitLab