Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Iris
Iris
Commits
6fc0ecff
Commit
6fc0ecff
authored
Jan 30, 2017
by
Robbert Krebbers
Browse files
Remove redundant cases in iIntro tactic.
parent
1805a435
Pipeline
#3797
passed with stage
in 4 minutes and 29 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
theories/proofmode/tactics.v
View file @
6fc0ecff
...
@@ -769,19 +769,21 @@ Tactic Notation "iIntros" constr(pat) :=
...
@@ -769,19 +769,21 @@ Tactic Notation "iIntros" constr(pat) :=
let
rec
go
pats
:
=
let
rec
go
pats
:
=
lazymatch
pats
with
lazymatch
pats
with
|
[]
=>
idtac
|
[]
=>
idtac
(* Optimizations to avoid generating fresh names *)
|
IPureElim
::
?pats
=>
iIntro
(?)
;
go
pats
|
IPureElim
::
?pats
=>
iIntro
(?)
;
go
pats
|
IAlwaysElim
IAnom
::
?pats
=>
let
H
:
=
iFresh
in
iIntro
#
H
;
go
pats
|
IAnom
::
?pats
=>
let
H
:
=
iFresh
in
iIntro
H
;
go
pats
|
IAlwaysElim
(
IName
?H
)
::
?pats
=>
iIntro
#
H
;
go
pats
|
IAlwaysElim
(
IName
?H
)
::
?pats
=>
iIntro
#
H
;
go
pats
|
IName
?H
::
?pats
=>
iIntro
H
;
go
pats
|
IName
?H
::
?pats
=>
iIntro
H
;
go
pats
(* Introduction patterns that can only occur at the top-level *)
|
IPureIntro
::
?pats
=>
iPureIntro
;
go
pats
|
IPureIntro
::
?pats
=>
iPureIntro
;
go
pats
|
IAlwaysIntro
::
?pats
=>
iAlways
;
go
pats
|
IAlwaysIntro
::
?pats
=>
iAlways
;
go
pats
|
IModalIntro
::
?pats
=>
iModIntro
;
go
pats
|
IModalIntro
::
?pats
=>
iModIntro
;
go
pats
|
ISimpl
::
?pats
=>
simpl
;
go
pats
|
IForall
::
?pats
=>
repeat
iIntroForall
;
go
pats
|
IForall
::
?pats
=>
repeat
iIntroForall
;
go
pats
|
IAll
::
?pats
=>
repeat
(
iIntroForall
||
iIntro
)
;
go
pats
|
IAll
::
?pats
=>
repeat
(
iIntroForall
||
iIntro
)
;
go
pats
(* Clearing and simplifying introduction patterns *)
|
ISimpl
::
?pats
=>
simpl
;
go
pats
|
IClear
?H
::
?pats
=>
iClear
H
;
go
pats
|
IClear
?H
::
?pats
=>
iClear
H
;
go
pats
|
IClearFrame
?H
::
?pats
=>
iFrame
H
;
go
pats
|
IClearFrame
?H
::
?pats
=>
iFrame
H
;
go
pats
(* Introduction + destruct *)
|
IAlwaysElim
?pat
::
?pats
=>
|
IAlwaysElim
?pat
::
?pats
=>
let
H
:
=
iFresh
in
iIntro
#
H
;
iDestructHyp
H
as
pat
;
go
pats
let
H
:
=
iFresh
in
iIntro
#
H
;
iDestructHyp
H
as
pat
;
go
pats
|
?pat
::
?pats
=>
|
?pat
::
?pats
=>
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment