From a148dd29df4a1071b6cd714b3923343d6a6524a6 Mon Sep 17 00:00:00 2001
From: Robbert Krebbers <mail@robbertkrebbers.nl>
Date: Tue, 8 May 2018 00:07:56 +0200
Subject: [PATCH] =?UTF-8?q?Small=20tweaks=20to=20`weak=5Fl=C3=B6b`.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Make `flöb_pre` and `flöb` local to the proof.
- The metavariables `Ψ` are used for predicates, so use a `Q` here.
---
 theories/bi/derived_laws_sbi.v | 26 ++++++++------------------
 1 file changed, 8 insertions(+), 18 deletions(-)

diff --git a/theories/bi/derived_laws_sbi.v b/theories/bi/derived_laws_sbi.v
index 43c87d15f..8b40c1edf 100644
--- a/theories/bi/derived_laws_sbi.v
+++ b/theories/bi/derived_laws_sbi.v
@@ -205,26 +205,17 @@ Proof. intros ?. by rewrite /Absorbing -later_absorbingly absorbing. Qed.
 
 Section löb.
   (* Proof following https://en.wikipedia.org/wiki/L%C3%B6b's_theorem#Proof_of_L%C3%B6b's_theorem *)
-  Definition flöb_pre (P Ψ : PROP) : PROP := (▷ Ψ → P)%I.
-
-  Local Instance flöb_pre_contractive P : Contractive (flöb_pre P).
-  Proof. solve_contractive. Qed.
-
-  Definition flöb (P : PROP) := fixpoint (flöb_pre P).
-
   Lemma weak_löb P : (▷ P ⊢ P) → (True ⊢ P).
   Proof.
-    set (Ψ := flöb P). assert (Ψ ⊣⊢ (▷ Ψ → P)) as HΨ.
-    { exact: fixpoint_unfold. }
+    pose (flöb_pre (P Q : PROP) := (▷ Q → P)%I).
+    assert (∀ P, Contractive (flöb_pre P)) by solve_contractive.
+    set (Q := fixpoint (flöb_pre P)).
+    assert (Q ⊣⊢ (▷ Q → P)) as HQ by (exact: fixpoint_unfold).
     intros HP. rewrite -HP.
-    assert (Ψ ⊢ (▷ Ψ → P)) as HΨ'%entails_impl_True by by rewrite -HΨ.
-    rewrite ->(later_intro (Ψ → _))%I in HΨ'.
-    rewrite ->later_impl in HΨ'.
-    rewrite ->later_impl in HΨ'.
-    assert (▷ Ψ ⊢ P) as HΨP.
-    { rewrite -HP. rewrite -(idemp (∧) (▷ Ψ))%I {2}(later_intro (▷ Ψ))%I.
-      apply impl_elim_l', entails_impl_True. done. }
-    rewrite -HΨP HΨ -2!later_intro.
+    assert (▷ Q ⊢ P) as HQP.
+    { rewrite -HP. rewrite -(idemp (∧) (▷ Q))%I {2}(later_intro (▷ Q))%I.
+      by rewrite {1}HQ {1}later_impl impl_elim_l. }
+    rewrite -HQP HQ -2!later_intro.
     apply (entails_impl_True _ P). done.
   Qed.
 
@@ -237,7 +228,6 @@ Section löb.
     rewrite assoc impl_elim_l.
     rewrite impl_elim_r. done.
   Qed.
-
 End löb.
 
 (* Iterated later modality *)
-- 
GitLab