diff --git a/iris/proofmode/coq_tactics.v b/iris/proofmode/coq_tactics.v index a2708b041d45ae268b9e521448b152e5f32a03b0..060f818cd72079f5a9826e21ab022840dcffb0cf 100644 --- a/iris/proofmode/coq_tactics.v +++ b/iris/proofmode/coq_tactics.v @@ -170,8 +170,14 @@ Proof. rewrite -persistent_and_affinely_sep_l. apply pure_elim_l=> ?. by rewrite HQ. Qed. -Lemma tac_pure_revert Δ φ Q : envs_entails Δ (⌜φ⌠→ Q) → (φ → envs_entails Δ Q). -Proof. rewrite envs_entails_eq. intros HΔ ?. by rewrite HΔ pure_True // left_id. Qed. +Lemma tac_pure_revert Δ φ P Q : + FromAffinely P ⌜ φ ⌠→ + envs_entails Δ (P -∗ Q) → + (φ → envs_entails Δ Q). +Proof. + rewrite /FromAffinely envs_entails_eq. intros <- -> ?. + by rewrite pure_True // affinely_True_emp affinely_emp left_id. +Qed. (** * Intuitionistic *) Lemma tac_intuitionistic Δ i j p P P' Q : diff --git a/iris/proofmode/ltac_tactics.v b/iris/proofmode/ltac_tactics.v index f4da0ed786ded955e152a2d499e932b067b69484..b651b3fbf069fb0c040d11c87a71dad0c90415da 100644 --- a/iris/proofmode/ltac_tactics.v +++ b/iris/proofmode/ltac_tactics.v @@ -651,7 +651,10 @@ Local Tactic Notation "iForallRevert" ident(x) := first [let A := type of x in idtac|fail 1 "iRevert:" x "not in scope"]; let A := type of x in lazymatch type of A with - | Prop => revert x; first [apply tac_pure_revert|err x] + | Prop => + revert x; first + [eapply tac_pure_revert; [iSolveTC (* [FromAffinely], should never fail *)|] + |err x] | _ => revert x; first [apply tac_forall_revert|err x] end.