Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Iris
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Ike Mulder
Iris
Commits
32cc2890
Commit
32cc2890
authored
9 years ago
by
Robbert Krebbers
Browse files
Options
Downloads
Patches
Plain Diff
New destruct_and tactic that also deals with Boolean ands.
Contrary to destruct_conj from Program.
parent
39c7307f
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
algebra/sts.v
+5
-5
5 additions, 5 deletions
algebra/sts.v
prelude/tactics.v
+14
-1
14 additions, 1 deletion
prelude/tactics.v
with
19 additions
and
6 deletions
algebra/sts.v
+
5
−
5
View file @
32cc2890
...
...
@@ -240,12 +240,12 @@ Proof.
-
by
destruct
1
;
simpl
;
intros
?;
setoid_subst
.
-
by
intros
?
[|];
destruct
1
;
inversion_clear
1
;
constructor
;
setoid_subst
.
-
by
do
2
destruct
1
;
constructor
;
setoid_subst
.
-
destruct
3
;
simpl
in
*
;
destruct_
conjs
;
eauto
using
closed_op
;
-
destruct
3
;
simpl
in
*
;
destruct_
and
?
;
eauto
using
closed_op
;
match
goal
with
H
:
closed
_
_
|
-
_
=>
destruct
H
end
;
set_solver
.
-
intros
[];
simpl
;
intros
;
destruct_
conjs
;
split
;
-
intros
[];
simpl
;
intros
;
destruct_
and
?
;
split
;
eauto
using
closed_up
,
up_non_empty
,
closed_up_set
,
up_set_empty
with
sts
.
-
intros
????
(
z
&
Hy
&
?
&
Hxz
);
destruct
Hxz
;
inversion
Hy
;
clear
Hy
;
setoid_subst
;
destruct_
conjs
;
split_and
?;
setoid_subst
;
destruct_
and
?
;
split_and
?;
rewrite
disjoint_union_difference
//
;
eauto
using
up_set_non_empty
,
up_non_empty
,
closed_up
,
closed_disjoint
;
[]
.
eapply
closed_up_set
=>
s
?;
eapply
closed_disjoint
;
eauto
with
sts
.
...
...
@@ -283,7 +283,7 @@ Proof.
rewrite
?disjoint_union_difference
;
auto
.
split
;
[|
apply
intersection_greatest
;
auto
using
subseteq_up_set
with
sts
]
.
apply
intersection_greatest
;
[
auto
with
sts
|]
.
intros
s2
;
rewrite
elem_of_intersection
.
destruct_
conjs
.
intros
s2
;
rewrite
elem_of_intersection
.
destruct_
and
?
.
unfold
up_set
;
rewrite
elem_of_bind
;
intros
(?
&
s1
&
?
&
?
&
?)
.
apply
closed_steps
with
T2
s1
;
auto
with
sts
.
Qed
.
...
...
@@ -379,7 +379,7 @@ Lemma sts_update_auth s1 s2 T1 T2 :
steps
(
s1
,
T1
)
(
s2
,
T2
)
→
sts_auth
s1
T1
~~>
sts_auth
s2
T2
.
Proof
.
intros
?;
apply
validity_update
.
inversion
3
as
[|?
S
?
Tf
|];
simplify_eq
/=
;
destruct_
conjs
.
inversion
3
as
[|?
S
?
Tf
|];
simplify_eq
/=
;
destruct_
and
?
.
destruct
(
steps_closed
s1
s2
T1
T2
S
Tf
)
as
(?
&
?
&
?);
auto
;
[]
.
repeat
(
done
||
constructor
)
.
Qed
.
...
...
This diff is collapsed.
Click to expand it.
prelude/tactics.v
+
14
−
1
View file @
32cc2890
...
...
@@ -69,10 +69,23 @@ Tactic Notation "etrans" := etransitivity.
Note that [split_and] differs from [split] by only splitting conjunctions. The
[split] tactic splits any inductive with one constructor. *)
Tactic
Notation
"split_and"
:=
match
goal
with
|
-
_
∧
_
=>
split
end
.
Tactic
Notation
"split_and"
:=
match
goal
with
|
|
-
_
∧
_
=>
split
|
|
-
Is_true
(_
&&
_)
=>
apply
andb_True
;
split
end
.
Tactic
Notation
"split_and"
"?"
:=
repeat
split_and
.
Tactic
Notation
"split_and"
"!"
:=
hnf
;
split_and
;
split_and
?
.
Tactic
Notation
"destruct_and"
"?"
:=
repeat
match
goal
with
|
H
:
False
|
-
_
=>
destruct
H
|
H
:
_
∧
_
|
-
_
=>
destruct
H
|
H
:
Is_true
(
bool_decide
_)
|
-
_
=>
apply
(
bool_decide_unpack
_)
in
H
|
H
:
Is_true
(_
&&
_)
|
-
_
=>
apply
andb_True
in
H
;
destruct
H
end
.
Tactic
Notation
"destruct_and"
"!"
:=
progress
(
destruct_and
?)
.
(** The tactic [case_match] destructs an arbitrary match in the conclusion or
assumptions, and generates a corresponding equality. This tactic is best used
together with the [repeat] tactical. *)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment