From acdea9ecaa4ec52f8f93d1a4789dfc48f677dd35 Mon Sep 17 00:00:00 2001
From: Ralf Jung <jung@mpi-sws.org>
Date: Thu, 27 Oct 2016 13:46:23 +0200
Subject: [PATCH] Move global functor to base_logic

---
 README.md                                     | 20 +++++++++++--------
 _CoqProject                                   |  6 +++---
 {program_logic => base_logic/lib}/iprop.v     |  0
 {program_logic => base_logic/lib}/own.v       |  2 +-
 .../lib}/saved_prop.v                         |  2 +-
 heap_lang/lib/barrier/proof.v                 |  4 ++--
 heap_lang/lib/barrier/protocol.v              |  2 +-
 program_logic/iris.v                          |  5 +++--
 8 files changed, 23 insertions(+), 18 deletions(-)
 rename {program_logic => base_logic/lib}/iprop.v (100%)
 rename {program_logic => base_logic/lib}/own.v (99%)
 rename {program_logic => base_logic/lib}/saved_prop.v (97%)

diff --git a/README.md b/README.md
index ad3253864..c09bcdbdc 100644
--- a/README.md
+++ b/README.md
@@ -35,19 +35,23 @@ running:
 * The folder [base_logic](base_logic) defines the Iris base logic and the
   primitive connectives.  It also contains derived constructions that are
   entirely independent of the choice of resources.
+  * The subfolder [lib](base_logic/lib) contains some generally useful
+    derived constructions.  Most importantly, it defines composeable
+    dynamic resources and ownership of them; the other constructions depend
+    on this setup.
 * The folder [program_logic](program_logic) specializes the base logic to build
-  Iris, the program logic.  Most crucially, this includes world satisfaction
-  and weakest preconditions.  Furthermore, some language-independent derived
-  constructions (e.g., STSs) are defined in this folder.
-* The folder [heap_lang](heap_lang) defines the ML-like concurrent heap language
-  * The subfolder [lib](heap_lang/lib) contains a few derived constructions
-    within this language, e.g., parallel composition.
-    Most notable here s [lib/barrier](heap_lang/lib/barrier), the implementation
-    and proof of a barrier as described in <http://doi.acm.org/10.1145/2818638>.
+  Iris, the program logic.   This includes weakest preconditions that are
+  defined for any language satisfying some generic axioms, and some derived
+  constructions that work for any such language.
 * The folder [proofmode](proofmode) contains the Iris proof mode, which extends
   Coq with contexts for persistent and spatial Iris assertions. It also contains
   tactics for interactive proofs in Iris. Documentation can be found in
   [ProofMode.md](ProofMode.md).
+* The folder [heap_lang](heap_lang) defines the ML-like concurrent heap language
+  * The subfolder [lib](heap_lang/lib) contains a few derived constructions
+    within this language, e.g., parallel composition.
+    Most notable here is [lib/barrier](heap_lang/lib/barrier), the implementation
+    and proof of a barrier as described in <http://doi.acm.org/10.1145/2818638>.
 * The folder [tests](tests) contains modules we use to test our infrastructure.
   Users of the Iris Coq library should *not* depend on these modules; they may
   change or disappear without any notice.
diff --git a/_CoqProject b/_CoqProject
index 8d3655da7..863188830 100644
--- a/_CoqProject
+++ b/_CoqProject
@@ -67,7 +67,9 @@ base_logic/big_op.v
 base_logic/hlist.v
 base_logic/soundness.v
 base_logic/double_negation.v
-program_logic/iprop.v
+base_logic/lib/iprop.v
+base_logic/lib/own.v
+base_logic/lib/saved_prop.v
 program_logic/adequacy.v
 program_logic/lifting.v
 program_logic/invariants.v
@@ -80,8 +82,6 @@ program_logic/language.v
 program_logic/ectx_language.v
 program_logic/ectxi_language.v
 program_logic/ectx_lifting.v
-program_logic/own.v
-program_logic/saved_prop.v
 program_logic/auth.v
 program_logic/sts.v
 program_logic/namespaces.v
diff --git a/program_logic/iprop.v b/base_logic/lib/iprop.v
similarity index 100%
rename from program_logic/iprop.v
rename to base_logic/lib/iprop.v
diff --git a/program_logic/own.v b/base_logic/lib/own.v
similarity index 99%
rename from program_logic/own.v
rename to base_logic/lib/own.v
index f23b3eb14..1c2316258 100644
--- a/program_logic/own.v
+++ b/base_logic/lib/own.v
@@ -1,6 +1,6 @@
-From iris.program_logic Require Export iprop.
 From iris.algebra Require Import iprod gmap.
 From iris.base_logic Require Import big_op.
+From iris.base_logic Require Export iprop.
 From iris.proofmode Require Import classes.
 Import uPred.
 
diff --git a/program_logic/saved_prop.v b/base_logic/lib/saved_prop.v
similarity index 97%
rename from program_logic/saved_prop.v
rename to base_logic/lib/saved_prop.v
index 22cfc0014..0cac08c87 100644
--- a/program_logic/saved_prop.v
+++ b/base_logic/lib/saved_prop.v
@@ -1,4 +1,4 @@
-From iris.program_logic Require Export own.
+From iris.base_logic Require Export own.
 From iris.algebra Require Import agree.
 From iris.prelude Require Import gmap.
 Import uPred.
diff --git a/heap_lang/lib/barrier/proof.v b/heap_lang/lib/barrier/proof.v
index 84f9abdbe..59057fc9a 100644
--- a/heap_lang/lib/barrier/proof.v
+++ b/heap_lang/lib/barrier/proof.v
@@ -2,8 +2,8 @@ From iris.program_logic Require Export weakestpre.
 From iris.heap_lang Require Export lang.
 From iris.heap_lang.lib.barrier Require Export barrier.
 From iris.prelude Require Import functions.
-From iris.base_logic Require Import big_op.
-From iris.program_logic Require Import saved_prop sts.
+From iris.base_logic Require Import big_op lib.saved_prop.
+From iris.program_logic Require Import sts.
 From iris.heap_lang Require Import proofmode.
 From iris.heap_lang.lib.barrier Require Import protocol.
 
diff --git a/heap_lang/lib/barrier/protocol.v b/heap_lang/lib/barrier/protocol.v
index f59a64247..e347613a1 100644
--- a/heap_lang/lib/barrier/protocol.v
+++ b/heap_lang/lib/barrier/protocol.v
@@ -1,5 +1,5 @@
 From iris.algebra Require Export sts.
-From iris.program_logic Require Import own.
+From iris.base_logic Require Import lib.own.
 From iris.prelude Require Export gmap.
 
 (** The STS describing the main barrier protocol. Every state has an index-set
diff --git a/program_logic/iris.v b/program_logic/iris.v
index f0c91c294..7abeea65b 100644
--- a/program_logic/iris.v
+++ b/program_logic/iris.v
@@ -1,4 +1,5 @@
-From iris.program_logic Require Export own language.
+From iris.base_logic Require Export lib.own.
+From iris.program_logic Require Export language.
 From iris.prelude Require Export coPset.
 From iris.algebra Require Import gmap auth agree gset coPset.
 
@@ -27,4 +28,4 @@ Instance subG_irisΣ {Σ Λ} : subG (irisΣ Λ) Σ → irisPreG Λ Σ.
 Proof.
   intros [?%subG_inG [?%subG_inG
     [?%subG_inG ?%subG_inG]%subG_inv]%subG_inv]%subG_inv; by constructor.
-Qed.
\ No newline at end of file
+Qed.
-- 
GitLab