Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Simon Spies
Iris
Commits
1aa86df2
Commit
1aa86df2
authored
Jan 29, 2016
by
Ralf Jung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
complete basic lifting lemmas
parent
9a064367
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
0 deletions
+54
-0
barrier/lifting.v
barrier/lifting.v
+54
-0
No files found.
barrier/lifting.v
View file @
1aa86df2
...
...
@@ -251,3 +251,57 @@ Proof.
apply
const_elim_l
=>->.
rewrite
-
wp_value'
;
last
reflexivity
;
done
.
Qed
.
Lemma
wp_fst
e1
v1
e2
v2
E
Q
:
e2v
e1
=
Some
v1
→
e2v
e2
=
Some
v2
→
▷
Q
v1
⊑
wp
(
Σ
:
=
Σ
)
E
(
Fst
(
Pair
e1
e2
))
Q
.
Proof
.
intros
Hv1
Hv2
.
etransitivity
;
last
eapply
wp_lift_pure_step
with
(
φ
:
=
λ
e'
,
e'
=
e1
)
;
last
first
.
-
intros
?
?
?
?
Hstep
.
inversion_clear
Hstep
.
done
.
-
intros
?.
do
3
eexists
.
econstructor
;
eassumption
.
-
reflexivity
.
-
apply
later_mono
,
forall_intro
=>
e2'
.
apply
impl_intro_l
.
apply
const_elim_l
=>->.
rewrite
-
wp_value'
;
last
eassumption
;
done
.
Qed
.
Lemma
wp_snd
e1
v1
e2
v2
E
Q
:
e2v
e1
=
Some
v1
→
e2v
e2
=
Some
v2
→
▷
Q
v2
⊑
wp
(
Σ
:
=
Σ
)
E
(
Snd
(
Pair
e1
e2
))
Q
.
Proof
.
intros
Hv1
Hv2
.
etransitivity
;
last
eapply
wp_lift_pure_step
with
(
φ
:
=
λ
e'
,
e'
=
e2
)
;
last
first
.
-
intros
?
?
?
?
Hstep
.
inversion_clear
Hstep
;
done
.
-
intros
?.
do
3
eexists
.
econstructor
;
eassumption
.
-
reflexivity
.
-
apply
later_mono
,
forall_intro
=>
e2'
.
apply
impl_intro_l
.
apply
const_elim_l
=>->.
rewrite
-
wp_value'
;
last
eassumption
;
done
.
Qed
.
Lemma
wp_case_inl
e0
v0
e1
e2
E
Q
:
e2v
e0
=
Some
v0
→
▷
wp
(
Σ
:
=
Σ
)
E
(
e1
.[
e0
/])
Q
⊑
wp
(
Σ
:
=
Σ
)
E
(
Case
(
InjL
e0
)
e1
e2
)
Q
.
Proof
.
intros
Hv0
.
etransitivity
;
last
eapply
wp_lift_pure_step
with
(
φ
:
=
λ
e'
,
e'
=
e1
.[
e0
/])
;
last
first
.
-
intros
?
?
?
?
Hstep
.
inversion_clear
Hstep
;
done
.
-
intros
?.
do
3
eexists
.
econstructor
;
eassumption
.
-
reflexivity
.
-
apply
later_mono
,
forall_intro
=>
e1'
.
apply
impl_intro_l
.
by
apply
const_elim_l
=>->.
Qed
.
Lemma
wp_case_inr
e0
v0
e1
e2
E
Q
:
e2v
e0
=
Some
v0
→
▷
wp
(
Σ
:
=
Σ
)
E
(
e2
.[
e0
/])
Q
⊑
wp
(
Σ
:
=
Σ
)
E
(
Case
(
InjR
e0
)
e1
e2
)
Q
.
Proof
.
intros
Hv0
.
etransitivity
;
last
eapply
wp_lift_pure_step
with
(
φ
:
=
λ
e'
,
e'
=
e2
.[
e0
/])
;
last
first
.
-
intros
?
?
?
?
Hstep
.
inversion_clear
Hstep
;
done
.
-
intros
?.
do
3
eexists
.
econstructor
;
eassumption
.
-
reflexivity
.
-
apply
later_mono
,
forall_intro
=>
e2'
.
apply
impl_intro_l
.
by
apply
const_elim_l
=>->.
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