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
Marianna Rapoport
iris-coq
Commits
20de7e7c
Commit
20de7e7c
authored
Jul 11, 2016
by
Robbert Krebbers
Browse files
Strengthen some gmap lemmas by using Leibniz equality.
parent
72a05023
Changes
1
Hide whitespace changes
Inline
Side-by-side
algebra/gmap.v
View file @
20de7e7c
...
...
@@ -205,15 +205,12 @@ Qed.
Lemma
singleton_valid
i
x
:
✓
({[
i
:
=
x
]}
:
gmap
K
A
)
↔
✓
x
.
Proof
.
rewrite
!
cmra_valid_validN
.
by
setoid_rewrite
singleton_validN
.
Qed
.
Lemma
insert_singleton_opN
n
m
i
x
:
m
!!
i
=
None
→
<[
i
:
=
x
]>
m
≡
{
n
}
≡
{[
i
:
=
x
]}
⋅
m
.
Lemma
insert_singleton_op
m
i
x
:
m
!!
i
=
None
→
<[
i
:
=
x
]>
m
=
{[
i
:
=
x
]}
⋅
m
.
Proof
.
intros
Hi
j
;
destruct
(
decide
(
i
=
j
))
as
[->|].
-
by
rewrite
lookup_op
lookup_insert
lookup_singleton
Hi
right_id
.
-
by
rewrite
lookup_op
lookup_insert_ne
//
lookup_singleton_ne
//
left_id
.
intros
Hi
;
apply
map_eq
=>
j
;
destruct
(
decide
(
i
=
j
))
as
[->|].
-
by
rewrite
lookup_op
lookup_insert
lookup_singleton
Hi
right_id
_L
.
-
by
rewrite
lookup_op
lookup_insert_ne
//
lookup_singleton_ne
//
left_id
_L
.
Qed
.
Lemma
insert_singleton_op
m
i
x
:
m
!!
i
=
None
→
<[
i
:
=
x
]>
m
≡
{[
i
:
=
x
]}
⋅
m
.
Proof
.
rewrite
!
equiv_dist
;
naive_solver
eauto
using
insert_singleton_opN
.
Qed
.
Lemma
core_singleton
(
i
:
K
)
(
x
:
A
)
cx
:
pcore
x
=
Some
cx
→
core
({[
i
:
=
x
]}
:
gmap
K
A
)
=
{[
i
:
=
cx
]}.
...
...
@@ -252,9 +249,9 @@ Proof.
*
by
rewrite
Hi
lookup_op
lookup_singleton
lookup_delete
.
*
by
rewrite
lookup_op
lookup_singleton_ne
//
lookup_delete_ne
//
left_id
.
Qed
.
Lemma
dom_op
m1
m2
:
dom
(
gset
K
)
(
m1
⋅
m2
)
≡
dom
_
m1
∪
dom
_
m2
.
Lemma
dom_op
m1
m2
:
dom
(
gset
K
)
(
m1
⋅
m2
)
=
dom
_
m1
∪
dom
_
m2
.
Proof
.
apply
elem_of_equiv
;
intros
i
;
rewrite
elem_of_union
!
elem_of_dom
.
apply
elem_of_equiv
_L
=>
i
;
rewrite
elem_of_union
!
elem_of_dom
.
unfold
is_Some
;
setoid_rewrite
lookup_op
.
destruct
(
m1
!!
i
),
(
m2
!!
i
)
;
naive_solver
.
Qed
.
...
...
@@ -303,8 +300,8 @@ Section freshness.
{
rewrite
-
not_elem_of_union
-
dom_op
-
not_elem_of_union
;
apply
is_fresh
.
}
exists
(<[
i
:
=
x
]>
m
)
;
split
.
{
by
apply
HQ
;
last
done
;
apply
not_elem_of_dom
.
}
rewrite
insert_singleton_op
N
;
last
by
apply
not_elem_of_dom
.
rewrite
-
assoc
-
insert_singleton_op
N
;
rewrite
insert_singleton_op
;
last
by
apply
not_elem_of_dom
.
rewrite
-
assoc
-
insert_singleton_op
;
last
by
apply
not_elem_of_dom
;
rewrite
dom_op
not_elem_of_union
.
by
apply
insert_validN
;
[
apply
cmra_valid_validN
|].
Qed
.
...
...
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