From 247102649fe712f11a41ff1e2bf5876a01731106 Mon Sep 17 00:00:00 2001
From: Ralf Jung <jung@mpi-sws.org>
Date: Fri, 27 Oct 2017 10:54:02 +0200
Subject: [PATCH] changelog and comments

---
 CHANGELOG.md                    | 1 +
 theories/base_logic/primitive.v | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index bbe665ed4..9a1bebc64 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@ Coq development, but not every API-breaking change is listed.  Changes marked
 
 Changes in and extensions of the theory:
 
+* [#] Add new modality: â–  ("plainly").
 * [#] Camera morphisms have to be homomorphisms, not just monotone functions.
 * [#] A proof that `f` has a fixed point if `f^k` is contractive.
 * Constructions for least and greatest fixed points over monotone predicates
diff --git a/theories/base_logic/primitive.v b/theories/base_logic/primitive.v
index 71af3c09c..f251fbb1a 100644
--- a/theories/base_logic/primitive.v
+++ b/theories/base_logic/primitive.v
@@ -97,6 +97,9 @@ Definition uPred_wand {M} := unseal uPred_wand_aux M.
 Definition uPred_wand_eq :
   @uPred_wand = @uPred_wand_def := seal_eq uPred_wand_aux.
 
+(* Equivalently, this could be `∀ y, P n y`.  That's closer to the intuition
+   of "embedding the step-indexed logic in Iris", but the two are equivalent
+   because Iris is afine.  The following is easier to work with. *)
 Program Definition uPred_plainly_def {M} (P : uPred M) : uPred M :=
   {| uPred_holds n x := P n ε |}.
 Solve Obligations with naive_solver eauto using uPred_closed, ucmra_unit_validN.
@@ -480,6 +483,8 @@ Proof.
   by rewrite cmra_core_l cmra_core_idemp.
 Qed.
 
+(* The following two laws are very similar, and indeed they hold not just for â–¡
+   and ■, but for any modality defined as `M P n x := ∀ y, R x y → P n y`. *)
 Lemma persistently_impl_plainly P Q : (■ P → □ Q) ⊢ □ (■ P → Q).
 Proof.
   unseal; split=> /= n x ? HPQ n' x' ????.
-- 
GitLab