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
92768cff
Commit
92768cff
authored
May 24, 2016
by
Robbert Krebbers
Browse files
Make use of {[ x1; .. ; xn ]} set notation in barrier proof.
parent
b48f3087
Changes
2
Hide whitespace changes
Inline
Side-by-side
heap_lang/lib/barrier/proof.v
View file @
92768cff
...
...
@@ -79,7 +79,7 @@ Lemma ress_split i i1 i2 Q R1 R2 P I :
i
∈
I
→
i1
∉
I
→
i2
∉
I
→
i1
≠
i2
→
(
saved_prop_own
i
Q
★
saved_prop_own
i1
R1
★
saved_prop_own
i2
R2
★
(
Q
-
★
R1
★
R2
)
★
ress
P
I
)
⊢
ress
P
(
{
[
i1
]
}
∪
(
{
[
i2
]
}
∪
(
I
∖
{
[
i
]
}
)
))
.
⊢
ress
P
(
{
[
i1
;
i2
]
}
∪
I
∖
{
[
i
]
}
).
Proof
.
iIntros
{????}
"(#HQ&#H1&#H2&HQR&H)"
;
iDestruct
"H"
as
{
Ψ
}
"[HPΨ HΨ]"
.
iDestruct
(
big_sepS_delete
_
_
i
with
"HΨ"
)
as
"[#HΨi HΨ]"
;
first
done
.
...
...
@@ -88,8 +88,10 @@ 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
!
big_sepS_insert
''
;
[
|
abstract
set_solver
..].
by
iFrame
"HR1 HR2"
.
-
rewrite
!
big_sepS_insert
'
;
[
|
abstract
set_solver
..].
by
repeat
iSplit
.
rewrite
-
assoc_L
!
big_sepS_insert
''
;
[
|
abstract
set_solver
..].
by
iFrame
"HR1 HR2"
.
-
rewrite
-
assoc_L
!
big_sepS_insert
'
;
[
|
abstract
set_solver
..].
by
repeat
iSplit
.
Qed
.
(
**
Actual
proofs
*
)
...
...
@@ -178,8 +180,8 @@ Proof.
iPvs
(
saved_prop_alloc_strong
_
(
R2
:
∙
%
CF
iProp
)
(
I
∪
{
[
i1
]
}
))
as
{
i2
}
"[Hi2' #Hi2]"
;
iDestruct
"Hi2'"
as
%
Hi2
;
iPvsIntro
.
rewrite
->
not_elem_of_union
,
elem_of_singleton
in
Hi2
;
destruct
Hi2
.
iExists
(
State
p
(
{
[
i1
]
}
∪
(
{
[
i2
]
}
∪
(
I
∖
{
[
i
]
}
))
))
.
iExists
(
{
[
Change
i1
]
}
∪
{
[
Change
i2
]
}
).
iExists
(
State
p
(
{
[
i1
;
i2
]
}
∪
I
∖
{
[
i
]
}
)).
iExists
(
{
[
Change
i1
;
Change
i2
]
}
).
iSplit
;
[
by
eauto
using
split_step
|
iSplitL
].
-
iNext
.
rewrite
{
2
}/
barrier_inv
/=
.
iFrame
"Hl"
.
iApply
(
ress_split
_
_
_
Q
R1
R2
);
eauto
.
iFrame
"Hr HQR"
.
by
repeat
iSplit
.
...
...
heap_lang/lib/barrier/protocol.v
View file @
92768cff
...
...
@@ -68,7 +68,7 @@ Lemma split_step p i i1 i2 I :
i
∈
I
→
i1
∉
I
→
i2
∉
I
→
i1
≠
i2
→
sts
.
steps
(
State
p
I
,
{
[
Change
i
]
}
)
(
State
p
(
{
[
i1
]
}
∪
(
{
[
i2
]
}
∪
(
I
∖
{
[
i
]
}
)
))
,
{
[
Change
i1
;
Change
i2
]
}
).
(
State
p
(
{
[
i1
;
i2
]
}
∪
I
∖
{
[
i
]
}
),
{
[
Change
i1
;
Change
i2
]
}
).
Proof
.
intros
.
apply
rtc_once
.
constructor
;
first
constructor
.
-
destruct
p
;
set_solver
.
...
...
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