From fd3aa4464bc53dfdce97e8ea6ff7aa0aafb8f806 Mon Sep 17 00:00:00 2001
From: Ralf Jung <jung@mpi-sws.org>
Date: Fri, 12 Feb 2016 18:15:15 +0100
Subject: [PATCH] upred: move the primes in the always lemmas to the more
 specific versions

---
 algebra/upred.v                 | 52 ++++++++++++++++-----------------
 heap_lang/lifting.v             |  2 +-
 program_logic/auth.v            |  2 +-
 program_logic/ghost_ownership.v |  2 +-
 program_logic/hoare.v           | 12 ++++----
 program_logic/hoare_lifting.v   | 26 ++++++++---------
 program_logic/invariants.v      |  6 ++--
 program_logic/lifting.v         |  4 +--
 program_logic/ownership.v       |  4 +--
 program_logic/pviewshifts.v     |  4 +--
 program_logic/viewshifts.v      | 14 ++++-----
 program_logic/weakestpre.v      |  4 +--
 12 files changed, 66 insertions(+), 66 deletions(-)

diff --git a/algebra/upred.v b/algebra/upred.v
index c3279bd97..c4f712575 100644
--- a/algebra/upred.v
+++ b/algebra/upred.v
@@ -724,7 +724,7 @@ Proof.
   intros x n ??; apply uPred_weaken with (unit x) n;
     eauto using cmra_included_unit.
 Qed.
-Lemma always_intro P Q : □ P ⊑ Q → □ P ⊑ □ Q.
+Lemma always_intro' P Q : □ P ⊑ Q → □ P ⊑ □ Q.
 Proof.
   intros HPQ x n ??; apply HPQ; simpl in *; auto using cmra_unit_validN.
   by rewrite cmra_unit_idemp.
@@ -751,7 +751,7 @@ Proof. done. Qed.
 
 (* Always derived *)
 Lemma always_mono P Q : P ⊑ Q → □ P ⊑ □ Q.
-Proof. intros. apply always_intro. by rewrite always_elim. Qed.
+Proof. intros. apply always_intro'. by rewrite always_elim. Qed.
 Hint Resolve always_mono.
 Global Instance always_mono' : Proper ((⊑) ==> (⊑)) (@uPred_always M).
 Proof. intros P Q; apply always_mono. Qed.
@@ -769,26 +769,26 @@ Proof.
 Qed.
 Lemma always_and_sep P Q : (□ (P ∧ Q))%I ≡ (□ (P ★ Q))%I.
 Proof. apply (anti_symm (⊑)); auto using always_and_sep_1. Qed.
-Lemma always_and_sep_l P Q : (□ P ∧ Q)%I ≡ (□ P ★ Q)%I.
+Lemma always_and_sep_l' P Q : (□ P ∧ Q)%I ≡ (□ P ★ Q)%I.
 Proof. apply (anti_symm (⊑)); auto using always_and_sep_l_1. Qed.
-Lemma always_and_sep_r P Q : (P ∧ □ Q)%I ≡ (P ★ □ Q)%I.
-Proof. by rewrite !(comm _ P) always_and_sep_l. Qed.
+Lemma always_and_sep_r' P Q : (P ∧ □ Q)%I ≡ (P ★ □ Q)%I.
+Proof. by rewrite !(comm _ P) always_and_sep_l'. Qed.
 Lemma always_sep P Q : (□ (P ★ Q))%I ≡ (□ P ★ □ Q)%I.
-Proof. by rewrite -always_and_sep -always_and_sep_l always_and. Qed.
+Proof. by rewrite -always_and_sep -always_and_sep_l' always_and. Qed.
 Lemma always_wand P Q : □ (P -★ Q) ⊑ (□ P -★ □ Q).
 Proof. by apply wand_intro_r; rewrite -always_sep wand_elim_l. Qed.
-Lemma always_sep_dup P : (□ P)%I ≡ (□ P ★ □ P)%I.
+Lemma always_sep_dup' P : (□ P)%I ≡ (□ P ★ □ P)%I.
 Proof. by rewrite -always_sep -always_and_sep (idemp _). Qed.
 Lemma always_wand_impl P Q : (□ (P -★ Q))%I ≡ (□ (P → Q))%I.
 Proof.
   apply (anti_symm (⊑)); [|by rewrite -impl_wand].
-  apply always_intro, impl_intro_r.
-  by rewrite always_and_sep_l always_elim wand_elim_l.
+  apply always_intro', impl_intro_r.
+  by rewrite always_and_sep_l' always_elim wand_elim_l.
 Qed.
-Lemma always_entails_l P Q : (P ⊑ □ Q) → P ⊑ (□ Q ★ P).
-Proof. intros; rewrite -always_and_sep_l; auto. Qed.
-Lemma always_entails_r P Q : (P ⊑ □ Q) → P ⊑ (P ★ □ Q).
-Proof. intros; rewrite -always_and_sep_r; auto. Qed.
+Lemma always_entails_l' P Q : (P ⊑ □ Q) → P ⊑ (□ Q ★ P).
+Proof. intros; rewrite -always_and_sep_l'; auto. Qed.
+Lemma always_entails_r' P Q : (P ⊑ □ Q) → P ⊑ (P ★ □ Q).
+Proof. intros; rewrite -always_and_sep_r'; auto. Qed.
 
 (* Own and valid *)
 Lemma ownM_op (a1 a2 : M) :
@@ -922,7 +922,7 @@ Local Notation AS := AlwaysStable.
 Global Instance const_always_stable φ : AS (■ φ : uPred M)%I.
 Proof. by rewrite /AlwaysStable always_const. Qed.
 Global Instance always_always_stable P : AS (â–¡ P).
-Proof. by intros; apply always_intro. Qed.
+Proof. by intros; apply always_intro'. Qed.
 Global Instance and_always_stable P Q: AS P → AS Q → AS (P ∧ Q).
 Proof. by intros; rewrite /AlwaysStable always_and; apply and_mono. Qed.
 Global Instance or_always_stable P Q : AS P → AS Q → AS (P ∨ Q).
@@ -967,17 +967,17 @@ Proof. unfold ASL=> ?; revert ys; induction xs=> -[|??]; constructor; auto. Qed.
 (* Derived lemmas for always stable *)
 Lemma always_always P `{!AlwaysStable P} : (□ P)%I ≡ P.
 Proof. apply (anti_symm (⊑)); auto using always_elim. Qed.
-Lemma always_intro' P Q `{!AlwaysStable P} : P ⊑ Q → P ⊑ □ Q.
-Proof. rewrite -(always_always P); apply always_intro. Qed.
-Lemma always_and_sep_l' P Q `{!AlwaysStable P} : (P ∧ Q)%I ≡ (P ★ Q)%I.
-Proof. by rewrite -(always_always P) always_and_sep_l. Qed.
-Lemma always_and_sep_r' P Q `{!AlwaysStable Q} : (P ∧ Q)%I ≡ (P ★ Q)%I.
-Proof. by rewrite -(always_always Q) always_and_sep_r. Qed.
-Lemma always_sep_dup' P `{!AlwaysStable P} : P ≡ (P ★ P)%I.
-Proof. by rewrite -(always_always P) -always_sep_dup. Qed.
-Lemma always_entails_l' P Q `{!AlwaysStable Q} : (P ⊑ Q) → P ⊑ (Q ★ P).
-Proof. by rewrite -(always_always Q); apply always_entails_l. Qed.
-Lemma always_entails_r' P Q `{!AlwaysStable Q} : (P ⊑ Q) → P ⊑ (P ★ Q).
-Proof. by rewrite -(always_always Q); apply always_entails_r. Qed.
+Lemma always_intro P Q `{!AlwaysStable P} : P ⊑ Q → P ⊑ □ Q.
+Proof. rewrite -(always_always P); apply always_intro'. Qed.
+Lemma always_and_sep_l P Q `{!AlwaysStable P} : (P ∧ Q)%I ≡ (P ★ Q)%I.
+Proof. by rewrite -(always_always P) always_and_sep_l'. Qed.
+Lemma always_and_sep_r P Q `{!AlwaysStable Q} : (P ∧ Q)%I ≡ (P ★ Q)%I.
+Proof. by rewrite -(always_always Q) always_and_sep_r'. Qed.
+Lemma always_sep_dup P `{!AlwaysStable P} : P ≡ (P ★ P)%I.
+Proof. by rewrite -(always_always P) -always_sep_dup'. Qed.
+Lemma always_entails_l P Q `{!AlwaysStable Q} : (P ⊑ Q) → P ⊑ (Q ★ P).
+Proof. by rewrite -(always_always Q); apply always_entails_l'. Qed.
+Lemma always_entails_r P Q `{!AlwaysStable Q} : (P ⊑ Q) → P ⊑ (P ★ Q).
+Proof. by rewrite -(always_always Q); apply always_entails_r'. Qed.
 
 End uPred_logic. End uPred.
diff --git a/heap_lang/lifting.v b/heap_lang/lifting.v
index 4c643b9a7..2904ef540 100644
--- a/heap_lang/lifting.v
+++ b/heap_lang/lifting.v
@@ -36,7 +36,7 @@ Proof.
   apply sep_mono, later_mono; first done.
   apply forall_intro=>e2; apply forall_intro=>σ2; apply forall_intro=>ef.
   apply wand_intro_l.
-  rewrite always_and_sep_l' -assoc -always_and_sep_l'.
+  rewrite always_and_sep_l -assoc -always_and_sep_l.
   apply const_elim_l=>-[l [-> [-> [-> ?]]]].
   by rewrite (forall_elim l) right_id const_equiv // left_id wand_elim_r.
 Qed.
diff --git a/program_logic/auth.v b/program_logic/auth.v
index afffd9862..128cb1c92 100644
--- a/program_logic/auth.v
+++ b/program_logic/auth.v
@@ -32,7 +32,7 @@ Section auth.
       rewrite [(_ ★ φ _)%I]comm -assoc. apply sep_mono; first done.
       rewrite /auth_own -own_op auth_both_op. done. }
     rewrite (inv_alloc N) /auth_ctx pvs_frame_r. apply pvs_mono.
-    by rewrite always_and_sep_l'.
+    by rewrite always_and_sep_l.
   Qed.
 
   Context {Hφ : ∀ n, Proper (dist n ==> dist n) φ}.
diff --git a/program_logic/ghost_ownership.v b/program_logic/ghost_ownership.v
index 141904a52..16c09f5e7 100644
--- a/program_logic/ghost_ownership.v
+++ b/program_logic/ghost_ownership.v
@@ -77,7 +77,7 @@ Proof.
   rewrite /own ownG_valid; apply valid_mono=> ?; apply to_globalF_validN.
 Qed.
 Lemma own_valid_r γ a : own i γ a ⊑ (own i γ a ★ ✓ a).
-Proof. apply (uPred.always_entails_r' _ _), own_valid. Qed.
+Proof. apply (uPred.always_entails_r _ _), own_valid. Qed.
 Global Instance own_timeless γ a : Timeless a → TimelessP (own i γ a).
 Proof. unfold own; apply _. Qed.
 
diff --git a/program_logic/hoare.v b/program_logic/hoare.v
index 59619a203..0b9f597d9 100644
--- a/program_logic/hoare.v
+++ b/program_logic/hoare.v
@@ -32,14 +32,14 @@ Proof. by intros P P' HP e ? <- Q Q' HQ; apply ht_mono. Qed.
 Lemma ht_val E v :
   {{ True : iProp Λ Σ }} of_val v @ E {{ λ v', v = v' }}.
 Proof.
-  apply (always_intro' _ _), impl_intro_l.
+  apply (always_intro _ _), impl_intro_l.
   by rewrite -wp_value; apply const_intro.
 Qed.
 Lemma ht_vs E P P' Q Q' e :
   ((P ={E}=> P') ∧ {{ P' }} e @ E {{ Q' }} ∧ ∀ v, Q' v ={E}=> Q v)
   ⊑ {{ P }} e @ E {{ Q }}.
 Proof.
-  apply (always_intro' _ _), impl_intro_l.
+  apply (always_intro _ _), impl_intro_l.
   rewrite (assoc _ P) {1}/vs always_elim impl_elim_r.
   rewrite assoc pvs_impl_r pvs_always_r wp_always_r.
   rewrite -(pvs_wp E e Q) -(wp_pvs E e Q); apply pvs_mono, wp_mono=> v.
@@ -50,7 +50,7 @@ Lemma ht_atomic E1 E2 P P' Q Q' e :
   ((P ={E1,E2}=> P') ∧ {{ P' }} e @ E2 {{ Q' }} ∧ ∀ v, Q' v ={E2,E1}=> Q v)
   ⊑ {{ P }} e @ E1 {{ Q }}.
 Proof.
-  intros ??; apply (always_intro' _ _), impl_intro_l.
+  intros ??; apply (always_intro _ _), impl_intro_l.
   rewrite (assoc _ P) {1}/vs always_elim impl_elim_r.
   rewrite assoc pvs_impl_r pvs_always_r wp_always_r.
   rewrite -(wp_atomic E1 E2) //; apply pvs_mono, wp_mono=> v.
@@ -60,7 +60,7 @@ Lemma ht_bind `{LanguageCtx Λ K} E P Q Q' e :
   ({{ P }} e @ E {{ Q }} ∧ ∀ v, {{ Q v }} K (of_val v) @ E {{ Q' }})
   ⊑ {{ P }} K e @ E {{ Q' }}.
 Proof.
-  intros; apply (always_intro' _ _), impl_intro_l.
+  intros; apply (always_intro _ _), impl_intro_l.
   rewrite (assoc _ P) {1}/ht always_elim impl_elim_r.
   rewrite wp_always_r -wp_bind //; apply wp_mono=> v.
   by rewrite (forall_elim v) /ht always_elim impl_elim_r.
@@ -71,7 +71,7 @@ Proof. intros. by apply always_mono, impl_mono, wp_mask_frame_mono. Qed.
 Lemma ht_frame_l E P Q R e :
   {{ P }} e @ E {{ Q }} ⊑ {{ R ★ P }} e @ E {{ λ v, R ★ Q v }}.
 Proof.
-  apply always_intro, impl_intro_l.
+  apply always_intro', impl_intro_l.
   rewrite always_and_sep_r -assoc (sep_and P) always_elim impl_elim_r.
   by rewrite wp_frame_l.
 Qed.
@@ -82,7 +82,7 @@ Lemma ht_frame_later_l E P R e Q :
   to_val e = None →
   {{ P }} e @ E {{ Q }} ⊑ {{ ▷ R ★ P }} e @ E {{ λ v, R ★ Q v }}.
 Proof.
-  intros; apply always_intro, impl_intro_l.
+  intros; apply always_intro', impl_intro_l.
   rewrite always_and_sep_r -assoc (sep_and P) always_elim impl_elim_r.
   by rewrite wp_frame_later_l //; apply wp_mono=>v; rewrite pvs_frame_l.
 Qed.
diff --git a/program_logic/hoare_lifting.v b/program_logic/hoare_lifting.v
index fd876ea96..97e4ae95a 100644
--- a/program_logic/hoare_lifting.v
+++ b/program_logic/hoare_lifting.v
@@ -26,14 +26,14 @@ Lemma ht_lift_step E1 E2
     {{ Q2 e2 σ2 ef }} ef ?@ coPset_all {{ λ _, True }})
   ⊑ {{ P }} e1 @ E2 {{ R }}.
 Proof.
-  intros ?? Hsafe Hstep; apply (always_intro' _ _), impl_intro_l.
+  intros ?? Hsafe Hstep; apply (always_intro _ _), impl_intro_l.
   rewrite (assoc _ P) {1}/vs always_elim impl_elim_r pvs_always_r.
   rewrite -(wp_lift_step E1 E2 φ _ e1 σ1) //; apply pvs_mono.
-  rewrite always_and_sep_r' -assoc; apply sep_mono; first done.
+  rewrite always_and_sep_r -assoc; apply sep_mono; first done.
   rewrite (later_intro (∀ _, _)) -later_sep; apply later_mono.
   apply forall_intro=>e2; apply forall_intro=>σ2; apply forall_intro=>ef.
   rewrite (forall_elim e2) (forall_elim σ2) (forall_elim ef).
-  apply wand_intro_l; rewrite !always_and_sep_l'.
+  apply wand_intro_l; rewrite !always_and_sep_l.
   rewrite (assoc _ _ P') -(assoc _ _ _ P') assoc.
   rewrite {1}/vs -always_wand_impl always_elim wand_elim_r.
   rewrite pvs_frame_r; apply pvs_mono.
@@ -62,15 +62,15 @@ Proof.
   apply and_intro; [by rewrite -vs_reflexive; apply const_intro|].
   apply forall_mono=>e2; apply forall_mono=>σ2; apply forall_mono=>ef.
   apply and_intro; [|apply and_intro; [|done]].
-  * rewrite -vs_impl; apply (always_intro' _ _),impl_intro_l;rewrite and_elim_l.
+  * rewrite -vs_impl; apply (always_intro _ _),impl_intro_l; rewrite and_elim_l.
     rewrite !assoc; apply sep_mono; last done.
-    rewrite -!always_and_sep_l' -!always_and_sep_r'; apply const_elim_l=>-[??].
+    rewrite -!always_and_sep_l -!always_and_sep_r; apply const_elim_l=>-[??].
     by repeat apply and_intro; try apply const_intro.
-  * apply (always_intro' _ _), impl_intro_l; rewrite and_elim_l.
-    rewrite -always_and_sep_r'; apply const_elim_r=>-[[v Hv] ?].
+  * apply (always_intro _ _), impl_intro_l; rewrite and_elim_l.
+    rewrite -always_and_sep_r; apply const_elim_r=>-[[v Hv] ?].
     rewrite -(of_to_val e2 v) // -wp_value.
     rewrite -(exist_intro σ2) -(exist_intro ef) (of_to_val e2) //.
-    by rewrite -always_and_sep_r'; apply and_intro; try apply const_intro.
+    by rewrite -always_and_sep_r; apply and_intro; try apply const_intro.
 Qed.
 
 Lemma ht_lift_pure_step E (φ : expr Λ → option (expr Λ) → Prop) P P' Q e1 :
@@ -82,12 +82,12 @@ Lemma ht_lift_pure_step E (φ : expr Λ → option (expr Λ) → Prop) P P' Q e1
     {{ ■ φ e2 ef ★ P' }} ef ?@ coPset_all {{ λ _, True }})
   ⊑ {{ ▷(P ★ P') }} e1 @ E {{ Q }}.
 Proof.
-  intros ? Hsafe Hstep; apply (always_intro' _ _), impl_intro_l.
+  intros ? Hsafe Hstep; apply (always_intro _ _), impl_intro_l.
   rewrite -(wp_lift_pure_step E φ _ e1) //.
   rewrite (later_intro (∀ _, _)) -later_and; apply later_mono.
   apply forall_intro=>e2; apply forall_intro=>ef; apply impl_intro_l.
   rewrite (forall_elim e2) (forall_elim ef).
-  rewrite always_and_sep_l' !always_and_sep_r' {1}(always_sep_dup' (â–  _)).
+  rewrite always_and_sep_l !always_and_sep_r {1}(always_sep_dup (â–  _)).
   rewrite {1}(assoc _ (_ ★ _)%I) -(assoc _ (■ _)%I).
   rewrite (assoc _ (â–  _)%I P) -{1}(comm _ P) -(assoc _ P).
   rewrite (assoc _ (■ _)%I) assoc -(assoc _ (■ _ ★ P))%I.
@@ -111,11 +111,11 @@ Proof.
   rewrite -(ht_lift_pure_step _ (λ e2' ef', e2 = e2' ∧ ef = ef')); eauto.
   apply forall_intro=>e2'; apply forall_intro=>ef'; apply and_mono.
   * apply (always_intro' _ _), impl_intro_l.
-    rewrite -always_and_sep_l' -assoc; apply const_elim_l=>-[??]; subst.
+    rewrite -always_and_sep_l -assoc; apply const_elim_l=>-[??]; subst.
     by rewrite /ht always_elim impl_elim_r.
   * destruct ef' as [e'|]; simpl; [|by apply const_intro].
-    apply (always_intro' _ _), impl_intro_l.
-    rewrite -always_and_sep_l' -assoc; apply const_elim_l=>-[??]; subst.
+    apply (always_intro _ _), impl_intro_l.
+    rewrite -always_and_sep_l -assoc; apply const_elim_l=>-[??]; subst.
     by rewrite /= /ht always_elim impl_elim_r.
 Qed.
 
diff --git a/program_logic/invariants.v b/program_logic/invariants.v
index 99961ffb9..e2190a870 100644
--- a/program_logic/invariants.v
+++ b/program_logic/invariants.v
@@ -72,16 +72,16 @@ Lemma inv_fsa {A : Type} {FSA} (FSAs : FrameShiftAssertion (A:=A) FSA)
 Proof.
   move=>HN.
   rewrite /inv sep_exist_r. apply exist_elim=>i.
-  rewrite always_and_sep_l' -assoc. apply const_elim_sep_l=>HiN.
+  rewrite always_and_sep_l -assoc. apply const_elim_sep_l=>HiN.
   rewrite -(fsa_trans3 E (E ∖ {[encode i]})) //; last by solve_elem_of+.
   (* Add this to the local context, so that solve_elem_of finds it. *)
   assert ({[encode i]} ⊆ nclose N) by eauto.
-  rewrite (always_sep_dup' (ownI _ _)).
+  rewrite (always_sep_dup (ownI _ _)).
   rewrite {1}pvs_openI !pvs_frame_r.
   apply pvs_mask_frame_mono ; [solve_elem_of..|].
   rewrite (comm _ (â–·_)%I) -assoc wand_elim_r fsa_frame_l.
   apply fsa_mask_frame_mono; [solve_elem_of..|]. intros a.
-  rewrite assoc -always_and_sep_l' pvs_closeI pvs_frame_r left_id.
+  rewrite assoc -always_and_sep_l pvs_closeI pvs_frame_r left_id.
   apply pvs_mask_frame'; solve_elem_of.
 Qed.
 
diff --git a/program_logic/lifting.v b/program_logic/lifting.v
index 91a19e33c..ab3bdf53f 100644
--- a/program_logic/lifting.v
+++ b/program_logic/lifting.v
@@ -71,7 +71,7 @@ Proof.
   rewrite -pvs_intro. apply sep_mono, later_mono; first done.
   apply forall_intro=>e2'; apply forall_intro=>σ2'.
   apply forall_intro=>ef; apply wand_intro_l.
-  rewrite always_and_sep_l' -assoc -always_and_sep_l'.
+  rewrite always_and_sep_l -assoc -always_and_sep_l.
   apply const_elim_l=>-[v2' [Hv ?]] /=.
   rewrite -pvs_intro.
   rewrite (forall_elim v2') (forall_elim σ2') (forall_elim ef) const_equiv //.
@@ -90,7 +90,7 @@ Proof.
   apply sep_mono, later_mono; first done.
   apply forall_intro=>e2'; apply forall_intro=>σ2'; apply forall_intro=>ef'.
   apply wand_intro_l.
-  rewrite always_and_sep_l' -assoc -always_and_sep_l'.
+  rewrite always_and_sep_l -assoc -always_and_sep_l.
   apply const_elim_l=>-[-> [-> ->]] /=. by rewrite wand_elim_r.
 Qed.
 
diff --git a/program_logic/ownership.v b/program_logic/ownership.v
index dff05bd9d..e06c6e6d3 100644
--- a/program_logic/ownership.v
+++ b/program_logic/ownership.v
@@ -33,7 +33,7 @@ Qed.
 Global Instance ownI_always_stable i P : AlwaysStable (ownI i P).
 Proof. by rewrite /AlwaysStable always_ownI. Qed.
 Lemma ownI_sep_dup i P : ownI i P ≡ (ownI i P ★ ownI i P)%I.
-Proof. apply (uPred.always_sep_dup' _). Qed.
+Proof. apply (uPred.always_sep_dup _). Qed.
 
 (* physical state *)
 Lemma ownP_twice σ1 σ2 : (ownP σ1 ★ ownP σ2 : iProp Λ Σ) ⊑ False.
@@ -58,7 +58,7 @@ Qed.
 Lemma ownG_valid m : (ownG m) ⊑ (✓ m).
 Proof. by rewrite /ownG uPred.ownM_valid; apply uPred.valid_mono=> n [? []]. Qed.
 Lemma ownG_valid_r m : (ownG m) ⊑ (ownG m ★ ✓ m).
-Proof. apply (uPred.always_entails_r' _ _), ownG_valid. Qed.
+Proof. apply (uPred.always_entails_r _ _), ownG_valid. Qed.
 Global Instance ownG_timeless m : Timeless m → TimelessP (ownG m).
 Proof. rewrite /ownG; apply _. Qed.
 
diff --git a/program_logic/pviewshifts.v b/program_logic/pviewshifts.v
index 2f576280c..3eaeb77d9 100644
--- a/program_logic/pviewshifts.v
+++ b/program_logic/pviewshifts.v
@@ -138,10 +138,10 @@ Lemma pvs_frame_l E1 E2 P Q : (P ★ pvs E1 E2 Q) ⊑ pvs E1 E2 (P ★ Q).
 Proof. rewrite !(comm _ P); apply pvs_frame_r. Qed.
 Lemma pvs_always_l E1 E2 P Q `{!AlwaysStable P} :
   (P ∧ pvs E1 E2 Q) ⊑ pvs E1 E2 (P ∧ Q).
-Proof. by rewrite !always_and_sep_l' pvs_frame_l. Qed.
+Proof. by rewrite !always_and_sep_l pvs_frame_l. Qed.
 Lemma pvs_always_r E1 E2 P Q `{!AlwaysStable Q} :
   (pvs E1 E2 P ∧ Q) ⊑ pvs E1 E2 (P ∧ Q).
-Proof. by rewrite !always_and_sep_r' pvs_frame_r. Qed.
+Proof. by rewrite !always_and_sep_r pvs_frame_r. Qed.
 Lemma pvs_impl_l E1 E2 P Q : (□ (P → Q) ∧ pvs E1 E2 P) ⊑ pvs E1 E2 Q.
 Proof. by rewrite pvs_always_l always_elim impl_elim_l. Qed.
 Lemma pvs_impl_r E1 E2 P Q : (pvs E1 E2 P ∧ □ (P → Q)) ⊑ pvs E1 E2 Q.
diff --git a/program_logic/viewshifts.v b/program_logic/viewshifts.v
index d666a056f..eba86d1c8 100644
--- a/program_logic/viewshifts.v
+++ b/program_logic/viewshifts.v
@@ -23,7 +23,7 @@ Implicit Types P Q R : iProp Λ Σ.
 
 Lemma vs_alt E1 E2 P Q : (P ⊑ pvs E1 E2 Q) → P ={E1,E2}=> Q.
 Proof.
-  intros; rewrite -{1}always_const; apply always_intro, impl_intro_l.
+  intros; rewrite -{1}always_const. apply (always_intro _ _), impl_intro_l.
   by rewrite always_const right_id.
 Qed.
 
@@ -50,7 +50,7 @@ Proof. by intros ?; apply vs_alt, pvs_timeless. Qed.
 Lemma vs_transitive E1 E2 E3 P Q R :
   E2 ⊆ E1 ∪ E3 → ((P ={E1,E2}=> Q) ∧ (Q ={E2,E3}=> R)) ⊑ (P ={E1,E3}=> R).
 Proof.
-  intros; rewrite -always_and; apply always_intro, impl_intro_l.
+  intros; rewrite -always_and; apply (always_intro _ _), impl_intro_l.
   rewrite always_and assoc (always_elim (P → _)) impl_elim_r.
   by rewrite pvs_impl_r; apply pvs_trans.
 Qed.
@@ -62,13 +62,13 @@ Proof. apply vs_alt, pvs_intro. Qed.
 
 Lemma vs_impl E P Q : □ (P → Q) ⊑ (P ={E}=> Q).
 Proof.
-  apply always_intro, impl_intro_l.
+  apply always_intro', impl_intro_l.
   by rewrite always_elim impl_elim_r -pvs_intro.
 Qed.
 
 Lemma vs_frame_l E1 E2 P Q R : (P ={E1,E2}=> Q) ⊑ (R ★ P ={E1,E2}=> R ★ Q).
 Proof.
-  apply always_intro, impl_intro_l.
+  apply always_intro', impl_intro_l.
   rewrite -pvs_frame_l always_and_sep_r -always_wand_impl -assoc.
   by rewrite always_elim wand_elim_r.
 Qed.
@@ -79,7 +79,7 @@ Proof. rewrite !(comm _ _ R); apply vs_frame_l. Qed.
 Lemma vs_mask_frame E1 E2 Ef P Q :
   Ef ∩ (E1 ∪ E2) = ∅ → (P ={E1,E2}=> Q) ⊑ (P ={E1 ∪ Ef,E2 ∪ Ef}=> Q).
 Proof.
-  intros ?; apply always_intro, impl_intro_l; rewrite (pvs_mask_frame _ _ Ef)//.
+  intros ?; apply always_intro', impl_intro_l; rewrite (pvs_mask_frame _ _ Ef)//.
   by rewrite always_elim impl_elim_r.
 Qed.
 
@@ -90,8 +90,8 @@ Lemma vs_open_close N E P Q R :
   nclose N ⊆ E →
   (inv N R ★ (▷ R ★ P ={E ∖ nclose N}=> ▷ R ★ Q)) ⊑ (P ={E}=> Q).
 Proof.
-  intros; apply (always_intro' _ _), impl_intro_l.
-  rewrite always_and_sep_r' assoc [(P ★ _)%I]comm -assoc.
+  intros; apply (always_intro _ _), impl_intro_l.
+  rewrite always_and_sep_r assoc [(P ★ _)%I]comm -assoc.
   rewrite -(pvs_open_close E N) //. apply sep_mono; first done.
   apply wand_intro_l.
   (* Oh wow, this is annyoing... *)
diff --git a/program_logic/weakestpre.v b/program_logic/weakestpre.v
index 728a8042f..f62849532 100644
--- a/program_logic/weakestpre.v
+++ b/program_logic/weakestpre.v
@@ -216,10 +216,10 @@ Proof.
 Qed.
 Lemma wp_always_l E e Q R `{!AlwaysStable R} :
   (R ∧ wp E e Q) ⊑ wp E e (λ v, R ∧ Q v).
-Proof. by setoid_rewrite (always_and_sep_l' _ _); rewrite wp_frame_l. Qed.
+Proof. by setoid_rewrite (always_and_sep_l _ _); rewrite wp_frame_l. Qed.
 Lemma wp_always_r E e Q R `{!AlwaysStable R} :
   (wp E e Q ∧ R) ⊑ wp E e (λ v, Q v ∧ R).
-Proof. by setoid_rewrite (always_and_sep_r' _ _); rewrite wp_frame_r. Qed.
+Proof. by setoid_rewrite (always_and_sep_r _ _); rewrite wp_frame_r. Qed.
 Lemma wp_impl_l E e Q1 Q2 : ((□ ∀ v, Q1 v → Q2 v) ∧ wp E e Q1) ⊑ wp E e Q2.
 Proof.
   rewrite wp_always_l; apply wp_mono=> // v.
-- 
GitLab