Commit 8b8d6ae2 by Robbert Krebbers

### Make iFrame finish the goal if everything has been framed.

parent 15480a66
 ... @@ -92,6 +92,9 @@ Separating logic specific tactics ... @@ -92,6 +92,9 @@ Separating logic specific tactics Notice that framing spatial hypotheses makes them disappear, but framing Coq Notice that framing spatial hypotheses makes them disappear, but framing Coq or persistent hypotheses does not make them disappear. or persistent hypotheses does not make them disappear. This tactic finishes the goal in case everything in the conclusion has been framed. - `iCombine "H1" "H2" as "H"` : turns `H1 : P1` and `H2 : P2` into - `iCombine "H1" "H2" as "H"` : turns `H1 : P1` and `H2 : P2` into `H : P1 ★ P2`. `H : P1 ★ P2`. ... ...
 ... @@ -432,17 +432,24 @@ Tactic Notation "iCombine" constr(H1) constr(H2) "as" constr(H) := ... @@ -432,17 +432,24 @@ Tactic Notation "iCombine" constr(H1) constr(H2) "as" constr(H) := |env_cbv; reflexivity || fail "iCombine:" H "not fresh"|]. |env_cbv; reflexivity || fail "iCombine:" H "not fresh"|]. (** Framing *) (** Framing *) Local Ltac iFrameFinish := lazy iota beta; try match goal with | |- _ ⊢ True => exact (uPred.pure_intro _ _ I) end. Local Ltac iFramePure t := Local Ltac iFramePure t := let φ := type of t in let φ := type of t in eapply (tac_frame_pure _ _ _ _ t); eapply (tac_frame_pure _ _ _ _ t); [apply _ || fail "iFrame: cannot frame" φ|]. [apply _ || fail "iFrame: cannot frame" φ |iFrameFinish]. Local Ltac iFrameHyp H := Local Ltac iFrameHyp H := eapply tac_frame with _ H _ _ _; eapply tac_frame with _ H _ _ _; [env_cbv; reflexivity || fail "iFrame:" H "not found" [env_cbv; reflexivity || fail "iFrame:" H "not found" |let R := match goal with |- Frame ?R _ _ => R end in |let R := match goal with |- Frame ?R _ _ => R end in apply _ || fail "iFrame: cannot frame" R apply _ || fail "iFrame: cannot frame" R |lazy iota beta]. |iFrameFinish]. Local Ltac iFrameAnyPure := Local Ltac iFrameAnyPure := repeat match goal with H : _ |- _ => iFramePure H end. repeat match goal with H : _ |- _ => iFramePure H end. ... ...
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!