Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
George Pirlea
Iris
Commits
be558596
Commit
be558596
authored
Mar 06, 2016
by
Ralf Jung
Browse files
strengthen parallel composition: it strips away a later
parent
3f61f05d
Changes
2
Hide whitespace changes
Inline
Side-by-side
barrier/client.v
View file @
be558596
...
...
@@ -53,7 +53,8 @@ Section client.
wp_let
.
(
ewp
eapply
(
wp_par
heapN
N
(
λ
_
,
True
%
I
)
(
λ
_
,
True
%
I
)))
;
eauto
.
rewrite
2
!{
1
}[
heap_ctx
_
]
always_sep_dup
!
assoc
[(
_
★
heap_ctx
_
)%
I
]
comm
.
ecancel
[
heap_ctx
_
].
sep_split
right
:
[]
;
last
first
.
{
do
2
apply
forall_intro
=>
_
.
apply
wand_intro_l
.
eauto
with
I
.
}
{
do
2
apply
forall_intro
=>
_
.
apply
wand_intro_l
.
eauto
using
later_intro
with
I
.
}
sep_split
left
:
[
send
heapN
_
_
_;
heap_ctx
_;
y
↦
_
]%
I
.
-
(* The original thread, the sender. *)
(
ewp
eapply
wp_store
)
;
eauto
with
I
.
strip_later
.
...
...
@@ -68,7 +69,8 @@ Section client.
(
ewp
eapply
(
wp_par
heapN
N
(
λ
_
,
True
%
I
)
(
λ
_
,
True
%
I
)))
;
eauto
.
do
2
rewrite
{
1
}[
heap_ctx
_
]
always_sep_dup
.
ecancel
[
heap_ctx
_
].
rewrite
!
assoc
.
sep_split
right
:
[]
;
last
first
.
{
do
2
apply
forall_intro
=>
_
.
apply
wand_intro_l
.
eauto
with
I
.
}
{
do
2
apply
forall_intro
=>
_
.
apply
wand_intro_l
.
eauto
using
later_intro
with
I
.
}
sep_split
left
:
[
recv
heapN
_
_
_;
heap_ctx
_
]%
I
;
by
rewrite
-
worker_safe
comm
.
Qed
.
End
client
.
...
...
heap_lang/par.v
View file @
be558596
...
...
@@ -22,7 +22,7 @@ Local Notation iProp := (iPropG heap_lang Σ).
Lemma
par_spec
(
Ψ
1
Ψ
2
:
val
→
iProp
)
e
(
f1
f2
:
val
)
(
Φ
:
val
→
iProp
)
:
heapN
⊥
N
→
to_val
e
=
Some
(
f1
,
f2
)%
V
→
(
heap_ctx
heapN
★
#>
f1
#()
{{
Ψ
1
}}
★
#>
f2
#()
{{
Ψ
2
}}
★
∀
v1
v2
,
Ψ
1
v1
★
Ψ
2
v2
-
★
Φ
(
v1
,
v2
)%
V
)
∀
v1
v2
,
Ψ
1
v1
★
Ψ
2
v2
-
★
▷
Φ
(
v1
,
v2
)%
V
)
⊑
#>
par
e
{{
Φ
}}.
Proof
.
intros
.
rewrite
/
par
.
...
...
@@ -35,16 +35,15 @@ Proof.
wp_proj
;
eauto
using
to_of_val
.
wp_focus
(
f2
_
).
rewrite
wp_frame_r
wp_frame_l
.
apply
wp_mono
=>
v2
.
wp_let
.
ewp
eapply
join_spec
;
eauto
using
to_of_val
.
apply
sep_mono_r
.
apply
forall_intro
=>
v1
.
apply
wand_intro_l
.
wp_let
.
etransitivity
;
last
by
(
eapply
wp_value
,
to_val_Pair
;
eapply
to_of_val
).
rewrite
(
forall_elim
v1
)
(
forall_elim
v2
).
rewrite
assoc
.
eapply
wand_apply_r'
;
done
.
apply
forall_intro
=>
v1
.
apply
wand_intro_l
.
rewrite
(
forall_elim
v1
)
(
forall_elim
v2
).
rewrite
assoc
wand_elim_r
.
wp_let
.
eapply
wp_value
,
to_val_Pair
;
eapply
to_of_val
.
Qed
.
Lemma
wp_par
(
Ψ
1
Ψ
2
:
val
→
iProp
)
(
e1
e2
:
expr
[])
(
Φ
:
val
→
iProp
)
:
heapN
⊥
N
→
(
heap_ctx
heapN
★
#>
e1
{{
Ψ
1
}}
★
#>
e2
{{
Ψ
2
}}
★
∀
v1
v2
,
Ψ
1
v1
★
Ψ
2
v2
-
★
Φ
(
v1
,
v2
)%
V
)
∀
v1
v2
,
Ψ
1
v1
★
Ψ
2
v2
-
★
▷
Φ
(
v1
,
v2
)%
V
)
⊑
#>
ParV
e1
e2
{{
Φ
}}.
Proof
.
intros
.
rewrite
-
par_spec
//.
apply
sep_mono_r
.
...
...
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment