diff --git a/tests/proofmode.v b/tests/proofmode.v index b0168e1f845bad2434b70e23505979fb307d7991..2d395c27ebb6b39b32344675e1722aa8de104b3d 100644 --- a/tests/proofmode.v +++ b/tests/proofmode.v @@ -111,6 +111,10 @@ Lemma test_iSpecialize_auto_frame P Q R : (P -∗ True -∗ True -∗ Q -∗ R) -∗ P -∗ Q -∗ R. Proof. iIntros "H ? HQ". by iApply ("H" with "[$]"). Qed. +Lemma test_iSpecialize_Coq_entailment P Q R : + P → (P -∗ Q) → Q. +Proof. iIntros (HP HPQ). iDestruct (HPQ $! HP) as "?". done. Qed. + Lemma test_iEmp_intro P Q R `{!Affine P, !Persistent Q, !Affine R} : P -∗ Q → R -∗ emp. Proof. iIntros "HP #HQ HR". iEmpIntro. Qed. diff --git a/theories/proofmode/class_instances_bi.v b/theories/proofmode/class_instances_bi.v index 8e7d610ffab3026da670b122d7940dda4508232f..ac035af9326a8f726b5c8e87006c31fd214d50d1 100644 --- a/theories/proofmode/class_instances_bi.v +++ b/theories/proofmode/class_instances_bi.v @@ -806,6 +806,8 @@ Proof. rewrite /IntoForall=> HP. by rewrite HP persistently_forall. Qed. Global Instance into_forall_embed `{BiEmbed PROP PROP'} {A} P (Φ : A → PROP) : IntoForall P Φ → IntoForall ⎡P⎤ (λ a, ⎡Φ a⎤%I). Proof. by rewrite /IntoForall -embed_forall => <-. Qed. +Global Instance into_forall_wand P Q : IntoForall (P -∗ Q) (λ _ : bi_emp_valid P, Q). +Proof. rewrite /IntoForall. apply forall_intro=><-. rewrite emp_wand //. Qed. (* FromForall *) Global Instance from_forall_forall {A} (Φ : A → PROP) :