Skip to content
Snippets Groups Projects
Commit a71965c4 authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Fix issue #95.

parent baa7a380
No related branches found
No related tags found
No related merge requests found
...@@ -492,12 +492,15 @@ Qed. ...@@ -492,12 +492,15 @@ Qed.
(** * Implication and wand *) (** * Implication and wand *)
Lemma tac_impl_intro Δ Δ' i P Q : Lemma tac_impl_intro Δ Δ' i P Q :
env_spatial_is_nil Δ = true (if env_spatial_is_nil Δ then Unit else PersistentP P)
envs_app false (Esnoc Enil i P) Δ = Some Δ' envs_app false (Esnoc Enil i P) Δ = Some Δ'
(Δ' Q) Δ P Q. (Δ' Q) Δ P Q.
Proof. Proof.
intros ?? HQ. rewrite (persistentP Δ) envs_app_sound //; simpl. intros ?? <-. destruct (env_spatial_is_nil Δ) eqn:?.
by rewrite right_id always_wand_impl always_elim HQ. - rewrite (persistentP Δ) envs_app_sound //; simpl.
by rewrite right_id always_wand_impl always_elim.
- apply impl_intro_l. rewrite envs_app_sound //; simpl.
by rewrite always_and_sep_l right_id wand_elim_r.
Qed. Qed.
Lemma tac_impl_intro_persistent Δ Δ' i P P' Q : Lemma tac_impl_intro_persistent Δ Δ' i P P' Q :
IntoPersistentP P P' IntoPersistentP P P'
......
...@@ -299,8 +299,10 @@ Local Tactic Notation "iIntro" constr(H) := ...@@ -299,8 +299,10 @@ Local Tactic Notation "iIntro" constr(H) :=
first first
[ (* (?Q → _) *) [ (* (?Q → _) *)
eapply tac_impl_intro with _ H; (* (i:=H) *) eapply tac_impl_intro with _ H; (* (i:=H) *)
[reflexivity || fail 1 "iIntro: introducing" H [env_cbv; apply _ ||
"into non-empty spatial context" let P := lazymatch goal with |- PersistentP ?P => P end in
fail 1 "iIntro: introducing non-persistent" H ":" P
"into non-empty spatial context"
|env_reflexivity || fail "iIntro:" H "not fresh" |env_reflexivity || fail "iIntro:" H "not fresh"
|] |]
| (* (_ -∗ _) *) | (* (_ -∗ _) *)
......
...@@ -77,6 +77,9 @@ Proof. ...@@ -77,6 +77,9 @@ Proof.
done. done.
Qed. Qed.
Lemma test_iIntros_persistent P Q `{!PersistentP Q} : (P Q P Q)%I.
Proof. iIntros "H1 H2". by iFrame. Qed.
Lemma test_fast_iIntros P Q : Lemma test_fast_iIntros P Q :
( x y z : nat, ( x y z : nat,
x = plus 0 x y = 0 z = 0 P Q foo (x x))%I. x = plus 0 x y = 0 z = 0 P Q foo (x x))%I.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment