diff --git a/theories/base_logic/bi.v b/theories/base_logic/bi.v index 516274c0272a46e7dbfd3becb19cbd1e5d4d4114..1def67daf1732c2238785f2646e7fd06ad887890 100644 --- a/theories/base_logic/bi.v +++ b/theories/base_logic/bi.v @@ -180,7 +180,7 @@ Global Instance ownM_ne : NonExpansive (@uPred_ownM M) := uPred_primitive.ownM_n Global Instance cmra_valid_ne {A : cmraT} : NonExpansive (@uPred_cmra_valid M A) := uPred_primitive.cmra_valid_ne. -(** Re-exporting primitive Own and valid lemmas *) +(** Re-exporting primitive lemmas that are not in any interface *) Lemma ownM_op (a1 a2 : M) : uPred_ownM (a1 ⋅ a2) ⊣⊢ uPred_ownM a1 ∗ uPred_ownM a2. Proof. exact: uPred_primitive.ownM_op. Qed. @@ -194,6 +194,14 @@ Lemma bupd_ownM_updateP x (Φ : M → Prop) : x ~~>: Φ → uPred_ownM x ⊢ |==> ∃ y, ⌜Φ y⌠∧ uPred_ownM y. Proof. exact: uPred_primitive.bupd_ownM_updateP. Qed. +(* This is really just a special case of an entailment +between two [siProp], but we do not have the infrastructure +to express the more general case. This temporary proof rule will +be replaced by the proper one eventually. *) +Lemma internal_eq_entails {A B : ofeT} (a1 a2 : A) (b1 b2 : B) : + (∀ n, a1 ≡{n}≡ a2 → b1 ≡{n}≡ b2) → a1 ≡ a2 ⊢ b1 ≡ b2. +Proof. exact: uPred_primitive.internal_eq_entails. Qed. + Lemma ownM_valid (a : M) : uPred_ownM a ⊢ ✓ a. Proof. exact: uPred_primitive.ownM_valid. Qed. Lemma cmra_valid_intro {A : cmraT} P (a : A) : ✓ a → P ⊢ (✓ a). diff --git a/theories/base_logic/upred.v b/theories/base_logic/upred.v index fe44e03230e8ab0cde1d8fd13a986b0e558ae034..2155c2a192d407f448ae19ad49fdf1a97afb7b4c 100644 --- a/theories/base_logic/upred.v +++ b/theories/base_logic/upred.v @@ -722,6 +722,14 @@ Proof. unseal=> ?. split=> n x ?. by apply (discrete_iff n). Qed. +(* This is really just a special case of an entailment +between two [siProp], but we do not have the infrastructure +to express the more general case. This temporary proof rule will +be replaced by the proper one eventually. *) +Lemma internal_eq_entails {A B : ofeT} (a1 a2 : A) (b1 b2 : B) : + (∀ n, a1 ≡{n}≡ a2 → b1 ≡{n}≡ b2) → a1 ≡ a2 ⊢ b1 ≡ b2. +Proof. unseal=>Hsi. split=>n x ?. apply Hsi. Qed. + (** Basic update modality *) Lemma bupd_intro P : P ⊢ |==> P. Proof.