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

A bit of refactoring in the proof mode code.

parent c6af67f9
No related branches found
No related tags found
No related merge requests found
...@@ -470,6 +470,12 @@ Local Tactic Notation "iIntro" "#" constr(H) := ...@@ -470,6 +470,12 @@ Local Tactic Notation "iIntro" "#" constr(H) :=
|(* subgoal *)] |(* subgoal *)]
|fail 1 "iIntro: nothing to introduce"]. |fail 1 "iIntro: nothing to introduce"].
Local Tactic Notation "iIntro" constr(H) "as" constr(p) :=
lazymatch p with
| true => iIntro #H
| _ => iIntro H
end.
Local Tactic Notation "iIntro" "_" := Local Tactic Notation "iIntro" "_" :=
iStartProof; iStartProof;
first first
...@@ -741,10 +747,7 @@ Ltac iSpecializePat_go H1 pats := ...@@ -741,10 +747,7 @@ Ltac iSpecializePat_go H1 pats :=
iRevertHyp H1 with (fun p => iRevertHyp H1 with (fun p =>
iSpecializePat_go H2tmp pats1; iSpecializePat_go H2tmp pats1;
[.. (* side-conditions of [iSpecialize] *) [.. (* side-conditions of [iSpecialize] *)
|lazymatch p with |iIntro H1 as p]);
| true => iIntro #H1
| _ => iIntro H1
end]);
(* We put the stuff below outside of the closure to get less verbose (* We put the stuff below outside of the closure to get less verbose
Ltac backtraces (which would otherwise include the whole closure). *) Ltac backtraces (which would otherwise include the whole closure). *)
[.. (* side-conditions of [iSpecialize] *) [.. (* side-conditions of [iSpecialize] *)
...@@ -1531,12 +1534,7 @@ Tactic Notation "iRevertIntros" constr(Hs) "with" tactic(tac) := ...@@ -1531,12 +1534,7 @@ Tactic Notation "iRevertIntros" constr(Hs) "with" tactic(tac) :=
lazymatch Hs with lazymatch Hs with
| [] => tac | [] => tac
| ESelPure :: ?Hs => fail "iRevertIntros: % not supported" | ESelPure :: ?Hs => fail "iRevertIntros: % not supported"
| ESelIdent ?p ?H :: ?Hs => | ESelIdent ?p ?H :: ?Hs => iRevertHyp H; go Hs; iIntro H as p
iRevertHyp H; go Hs;
match p with
| true => iIntro #H
| false => iIntro H
end
end in end in
try iStartProof; let Hs := iElaborateSelPat Hs in go Hs. try iStartProof; let Hs := iElaborateSelPat Hs in go Hs.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment