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
Dan Frumin
iris-coq
Commits
f972b5a9
Commit
f972b5a9
authored
May 30, 2016
by
Robbert Krebbers
Browse files
Properties for uPred_big_opM and fn_insert.
parent
5eb59e13
Changes
2
Hide whitespace changes
Inline
Side-by-side
algebra/upred_big_op.v
View file @
f972b5a9
...
...
@@ -112,7 +112,7 @@ Section gmap.
Implicit
Types
Φ
Ψ
:
K
→
A
→
uPred
M
.
Lemma
big_sepM_mono
Φ
Ψ
m1
m2
:
m2
⊆
m1
→
(
∀
x
k
,
m2
!!
k
=
Some
x
→
Φ
k
x
⊢
Ψ
k
x
)
→
m2
⊆
m1
→
(
∀
k
x
,
m2
!!
k
=
Some
x
→
Φ
k
x
⊢
Ψ
k
x
)
→
([
★
map
]
k
↦
x
∈
m1
,
Φ
k
x
)
⊢
([
★
map
]
k
↦
x
∈
m2
,
Ψ
k
x
).
Proof
.
intros
HX
H
Φ
.
trans
([
★
map
]
k
↦
x
∈
m2
,
Φ
k
x
)
%
I
.
...
...
@@ -121,7 +121,7 @@ Section gmap.
apply
Forall_forall
=>
-
[
i
x
]
?
/=
.
by
apply
H
Φ
,
elem_of_map_to_list
.
Qed
.
Lemma
big_sepM_proper
Φ
Ψ
m1
m2
:
m1
≡
m2
→
(
∀
x
k
,
m1
!!
k
=
Some
x
→
m2
!!
k
=
Some
x
→
Φ
k
x
⊣⊢
Ψ
k
x
)
→
m1
≡
m2
→
(
∀
k
x
,
m1
!!
k
=
Some
x
→
m2
!!
k
=
Some
x
→
Φ
k
x
⊣⊢
Ψ
k
x
)
→
([
★
map
]
k
↦
x
∈
m1
,
Φ
k
x
)
⊣⊢
([
★
map
]
k
↦
x
∈
m2
,
Ψ
k
x
).
Proof
.
(
*
FIXME
:
Coq
bug
since
8.5
pl1
.
Without
the
@
in
[
@
lookup_weaken
]
it
gives
...
...
@@ -149,14 +149,30 @@ Section gmap.
Lemma
big_sepM_empty
Φ
:
([
★
map
]
k
↦
x
∈
∅
,
Φ
k
x
)
⊣⊢
True
.
Proof
.
by
rewrite
/
uPred_big_sepM
map_to_list_empty
.
Qed
.
Lemma
big_sepM_insert
Φ
(
m
:
gmap
K
A
)
i
x
:
m
!!
i
=
None
→
([
★
map
]
k
↦
y
∈
<
[
i
:=
x
]
>
m
,
Φ
k
y
)
⊣⊢
(
Φ
i
x
★
[
★
map
]
k
↦
y
∈
m
,
Φ
k
y
).
Proof
.
intros
?
;
by
rewrite
/
uPred_big_sepM
map_to_list_insert
.
Qed
.
Lemma
big_sepM_fn_insert
(
Ψ
:
K
→
A
→
uPred
M
→
uPred
M
)
(
Φ
:
K
→
uPred
M
)
m
i
x
P
:
m
!!
i
=
None
→
([
★
map
]
k
↦
y
∈
<
[
i
:=
x
]
>
m
,
Ψ
k
y
(
<
[
i
:=
P
]
>
Φ
k
))
⊣⊢
(
Ψ
i
x
P
★
[
★
map
]
k
↦
y
∈
m
,
Ψ
k
y
(
Φ
k
)).
Proof
.
intros
.
rewrite
big_sepM_insert
// fn_lookup_insert.
apply
sep_proper
,
big_sepM_proper
;
auto
=>
k
y
??
.
by
rewrite
fn_lookup_insert_ne
;
last
set_solver
.
Qed
.
Lemma
big_sepM_fn_insert
'
(
Φ
:
K
→
uPred
M
)
m
i
x
P
:
m
!!
i
=
None
→
([
★
map
]
k
↦
y
∈
<
[
i
:=
x
]
>
m
,
<
[
i
:=
P
]
>
Φ
k
)
⊣⊢
(
P
★
[
★
map
]
k
↦
y
∈
m
,
Φ
k
).
Proof
.
apply
(
big_sepM_fn_insert
(
λ
_
_
,
id
)).
Qed
.
Lemma
big_sepM_delete
Φ
(
m
:
gmap
K
A
)
i
x
:
m
!!
i
=
Some
x
→
([
★
map
]
k
↦
y
∈
m
,
Φ
k
y
)
⊣⊢
(
Φ
i
x
★
[
★
map
]
k
↦
y
∈
delete
i
m
,
Φ
k
y
).
Proof
.
intros
.
by
rewrite
-
big_sepM_insert
?
lookup_delete
// insert_delete. Qed.
Lemma
big_sepM_singleton
Φ
i
x
:
([
★
map
]
k
↦
y
∈
{
[
i
:=
x
]
}
,
Φ
k
y
)
⊣⊢
Φ
i
x
.
Proof
.
rewrite
-
insert_empty
big_sepM_insert
/=
;
last
auto
using
lookup_empty
.
...
...
@@ -222,7 +238,7 @@ Section gset.
Lemma
big_sepS_insert
Φ
X
x
:
x
∉
X
→
([
★
set
]
y
∈
{
[
x
]
}
∪
X
,
Φ
y
)
⊣⊢
(
Φ
x
★
[
★
set
]
y
∈
X
,
Φ
y
).
Proof
.
intros
.
by
rewrite
/
uPred_big_sepS
elements_union_singleton
.
Qed
.
Lemma
big_sepS_insert
'
(
Ψ
:
A
→
uPred
M
→
uPred
M
)
Φ
X
x
P
:
Lemma
big_sepS_
fn_
insert
(
Ψ
:
A
→
uPred
M
→
uPred
M
)
Φ
X
x
P
:
x
∉
X
→
([
★
set
]
y
∈
{
[
x
]
}
∪
X
,
Ψ
y
(
<
[
x
:=
P
]
>
Φ
y
))
⊣⊢
(
Ψ
x
P
★
[
★
set
]
y
∈
X
,
Ψ
y
(
Φ
y
)).
...
...
@@ -231,9 +247,9 @@ Section gset.
apply
sep_proper
,
big_sepS_proper
;
auto
=>
y
??
.
by
rewrite
fn_lookup_insert_ne
;
last
set_solver
.
Qed
.
Lemma
big_sepS_insert
'
'
Φ
X
x
P
:
Lemma
big_sepS_
fn_
insert
'
Φ
X
x
P
:
x
∉
X
→
([
★
set
]
y
∈
{
[
x
]
}
∪
X
,
<
[
x
:=
P
]
>
Φ
y
)
⊣⊢
(
P
★
[
★
set
]
y
∈
X
,
Φ
y
).
Proof
.
apply
(
big_sepS_insert
'
(
λ
y
,
id
)).
Qed
.
Proof
.
apply
(
big_sepS_
fn_
insert
(
λ
y
,
id
)).
Qed
.
Lemma
big_sepS_delete
Φ
X
x
:
x
∈
X
→
([
★
set
]
y
∈
X
,
Φ
y
)
⊣⊢
(
Φ
x
★
[
★
set
]
y
∈
X
∖
{
[
x
]
}
,
Φ
y
).
...
...
heap_lang/lib/barrier/proof.v
View file @
f972b5a9
...
...
@@ -88,9 +88,9 @@ Proof.
iNext
.
iRewrite
"Heq"
in
"HQR"
.
iIntros
"HP"
.
iSpecialize
(
"HPΨ"
with
"HP"
).
iDestruct
(
big_sepS_delete
_
_
i
with
"HPΨ"
)
as
"[HΨ HPΨ]"
;
first
done
.
iDestruct
(
"HQR"
with
"HΨ"
)
as
"[HR1 HR2]"
.
rewrite
-
assoc_L
!
big_sepS_insert
'
'
;
[
|
abstract
set_solver
..].
rewrite
-
assoc_L
!
big_sepS_
fn_
insert
'
;
[
|
abstract
set_solver
..].
by
iFrame
"HR1 HR2"
.
-
rewrite
-
assoc_L
!
big_sepS_insert
'
;
[
|
abstract
set_solver
..].
-
rewrite
-
assoc_L
!
big_sepS_
fn_
insert
;
[
|
abstract
set_solver
..].
by
repeat
iSplit
.
Qed
.
...
...
Write
Preview
Markdown
is supported
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