Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Iris
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Simcha van Collem
Iris
Commits
9331a371
"theories/git-rts@gitlab.mpi-sws.org:aa755/iris.git" did not exist on "c2b96095eeb595276ec7a5a140a3e1f6b3fe3125"
Commit
9331a371
authored
9 years ago
by
Robbert Krebbers
Browse files
Options
Downloads
Patches
Plain Diff
Introduce notion of reducible, as in the appendix.
parent
ae972c48
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
iris/hoare_lifting.v
+4
-4
4 additions, 4 deletions
iris/hoare_lifting.v
iris/language.v
+5
-0
5 additions, 0 deletions
iris/language.v
iris/lifting.v
+2
-2
2 additions, 2 deletions
iris/lifting.v
iris/weakestpre.v
+1
-1
1 addition, 1 deletion
iris/weakestpre.v
with
12 additions
and
7 deletions
iris/hoare_lifting.v
+
4
−
4
View file @
9331a371
...
@@ -15,7 +15,7 @@ Import uPred.
...
@@ -15,7 +15,7 @@ Import uPred.
Lemma
ht_lift_step
E1
E2
Lemma
ht_lift_step
E1
E2
(
φ
:
iexpr
Σ
→
istate
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
P
P'
Q1
Q2
R
e1
σ1
:
(
φ
:
iexpr
Σ
→
istate
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
P
P'
Q1
Q2
R
e1
σ1
:
E1
⊆
E2
→
to_val
e1
=
None
→
E1
⊆
E2
→
to_val
e1
=
None
→
(
∃
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
)
→
reducible
e1
σ1
→
(
∀
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
φ
e2
σ2
ef
)
→
(
∀
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
φ
e2
σ2
ef
)
→
(
P
>
{
E2
,
E1
}
>
(
ownP
σ1
★
▷
P'
)
∧
∀
e2
σ2
ef
,
(
P
>
{
E2
,
E1
}
>
(
ownP
σ1
★
▷
P'
)
∧
∀
e2
σ2
ef
,
(
■
φ
e2
σ2
ef
★
ownP
σ2
★
P'
)
>
{
E1
,
E2
}
>
(
Q1
e2
σ2
ef
★
Q2
e2
σ2
ef
)
∧
(
■
φ
e2
σ2
ef
★
ownP
σ2
★
P'
)
>
{
E1
,
E2
}
>
(
Q1
e2
σ2
ef
★
Q2
e2
σ2
ef
)
∧
...
@@ -45,7 +45,7 @@ Qed.
...
@@ -45,7 +45,7 @@ Qed.
Lemma
ht_lift_atomic
E
Lemma
ht_lift_atomic
E
(
φ
:
iexpr
Σ
→
istate
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
P
e1
σ1
:
(
φ
:
iexpr
Σ
→
istate
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
P
e1
σ1
:
atomic
e1
→
atomic
e1
→
(
∃
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
)
→
reducible
e1
σ1
→
(
∀
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
φ
e2
σ2
ef
)
→
(
∀
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
φ
e2
σ2
ef
)
→
(
∀
e2
σ2
ef
,
{{
■
φ
e2
σ2
ef
★
P
}}
ef
?
@
coPset_all
{{
λ
_,
True
}})
⊑
(
∀
e2
σ2
ef
,
{{
■
φ
e2
σ2
ef
★
P
}}
ef
?
@
coPset_all
{{
λ
_,
True
}})
⊑
{{
ownP
σ1
★
▷
P
}}
e1
@
E
{{
λ
v
,
∃
σ2
ef
,
ownP
σ2
★
■
φ
(
of_val
v
)
σ2
ef
}}
.
{{
ownP
σ1
★
▷
P
}}
e1
@
E
{{
λ
v
,
∃
σ2
ef
,
ownP
σ2
★
■
φ
(
of_val
v
)
σ2
ef
}}
.
...
@@ -71,7 +71,7 @@ Proof.
...
@@ -71,7 +71,7 @@ Proof.
Qed
.
Qed
.
Lemma
ht_lift_pure_step
E
(
φ
:
iexpr
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
P
P'
Q
e1
:
Lemma
ht_lift_pure_step
E
(
φ
:
iexpr
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
P
P'
Q
e1
:
to_val
e1
=
None
→
to_val
e1
=
None
→
(
∀
σ1
,
∃
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
)
→
(
∀
σ1
,
reducible
e1
σ1
)
→
(
∀
σ1
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
σ1
=
σ2
∧
φ
e2
ef
)
→
(
∀
σ1
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
σ1
=
σ2
∧
φ
e2
ef
)
→
(
∀
e2
ef
,
(
∀
e2
ef
,
{{
■
φ
e2
ef
★
P
}}
e2
@
E
{{
Q
}}
∧
{{
■
φ
e2
ef
★
P
}}
e2
@
E
{{
Q
}}
∧
...
@@ -97,7 +97,7 @@ Qed.
...
@@ -97,7 +97,7 @@ Qed.
Lemma
ht_lift_pure_determistic_step
E
Lemma
ht_lift_pure_determistic_step
E
(
φ
:
iexpr
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
P
P'
Q
e1
e2
ef
:
(
φ
:
iexpr
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
P
P'
Q
e1
e2
ef
:
to_val
e1
=
None
→
to_val
e1
=
None
→
(
∀
σ1
,
prim_step
e1
σ1
e2
σ1
ef
)
→
(
∀
σ1
,
reducible
e1
σ1
)
→
(
∀
σ1
e2'
σ2
ef'
,
prim_step
e1
σ1
e2'
σ2
ef'
→
σ1
=
σ2
∧
e2
=
e2'
∧
ef
=
ef'
)
→
(
∀
σ1
e2'
σ2
ef'
,
prim_step
e1
σ1
e2'
σ2
ef'
→
σ1
=
σ2
∧
e2
=
e2'
∧
ef
=
ef'
)
→
({{
P
}}
e2
@
E
{{
Q
}}
∧
{{
P'
}}
ef
?
@
coPset_all
{{
λ
_,
True
}})
({{
P
}}
e2
@
E
{{
Q
}}
∧
{{
P'
}}
ef
?
@
coPset_all
{{
λ
_,
True
}})
⊑
{{
▷
(
P
★
P'
)
}}
e1
@
E
{{
Q
}}
.
⊑
{{
▷
(
P
★
P'
)
}}
e1
@
E
{{
Q
}}
.
...
...
This diff is collapsed.
Click to expand it.
iris/language.v
+
5
−
0
View file @
9331a371
...
@@ -18,6 +18,11 @@ Class Language (E V St : Type) := {
...
@@ -18,6 +18,11 @@ Class Language (E V St : Type) := {
Section
language
.
Section
language
.
Context
`{
Language
E
V
St
}
.
Context
`{
Language
E
V
St
}
.
Definition
reducible
(
e
:
E
)
(
σ
:
St
)
:=
∃
e'
σ'
ef
,
prim_step
e
σ
e'
σ'
ef
.
Lemma
reducible_not_val
e
σ
:
reducible
e
σ
→
to_val
e
=
None
.
Proof
.
intros
(?
&
?
&
?
&
?);
eauto
using
values_stuck
.
Qed
.
Lemma
atomic_of_val
v
:
¬
atomic
(
of_val
v
)
.
Lemma
atomic_of_val
v
:
¬
atomic
(
of_val
v
)
.
Proof
.
Proof
.
by
intros
Hat
;
apply
atomic_not_value
in
Hat
;
rewrite
to_of_val
in
Hat
.
by
intros
Hat
;
apply
atomic_not_value
in
Hat
;
rewrite
to_of_val
in
Hat
.
...
...
This diff is collapsed.
Click to expand it.
iris/lifting.v
+
2
−
2
View file @
9331a371
...
@@ -16,7 +16,7 @@ Transparent uPred_holds.
...
@@ -16,7 +16,7 @@ Transparent uPred_holds.
Lemma
wp_lift_step
E1
E2
Lemma
wp_lift_step
E1
E2
(
φ
:
iexpr
Σ
→
istate
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
Q
e1
σ1
:
(
φ
:
iexpr
Σ
→
istate
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
Q
e1
σ1
:
E1
⊆
E2
→
to_val
e1
=
None
→
E1
⊆
E2
→
to_val
e1
=
None
→
(
∃
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
)
→
reducible
e1
σ1
→
(
∀
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
φ
e2
σ2
ef
)
→
(
∀
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
φ
e2
σ2
ef
)
→
pvs
E2
E1
(
ownP
σ1
★
▷
∀
e2
σ2
ef
,
(
■
φ
e2
σ2
ef
∧
ownP
σ2
)
-★
pvs
E2
E1
(
ownP
σ1
★
▷
∀
e2
σ2
ef
,
(
■
φ
e2
σ2
ef
∧
ownP
σ2
)
-★
pvs
E1
E2
(
wp
E2
e2
Q
★
default
True
ef
(
flip
(
wp
coPset_all
)
(
λ
_,
True
))))
pvs
E1
E2
(
wp
E2
e2
Q
★
default
True
ef
(
flip
(
wp
coPset_all
)
(
λ
_,
True
))))
...
@@ -37,7 +37,7 @@ Proof.
...
@@ -37,7 +37,7 @@ Proof.
Qed
.
Qed
.
Lemma
wp_lift_pure_step
E
(
φ
:
iexpr
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
Q
e1
:
Lemma
wp_lift_pure_step
E
(
φ
:
iexpr
Σ
→
option
(
iexpr
Σ
)
→
Prop
)
Q
e1
:
to_val
e1
=
None
→
to_val
e1
=
None
→
(
∀
σ1
,
∃
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
)
→
(
∀
σ1
,
reducible
e1
σ1
)
→
(
∀
σ1
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
σ1
=
σ2
∧
φ
e2
ef
)
→
(
∀
σ1
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
→
σ1
=
σ2
∧
φ
e2
ef
)
→
(
▷
∀
e2
ef
,
■
φ
e2
ef
→
(
▷
∀
e2
ef
,
■
φ
e2
ef
→
wp
E
e2
Q
★
default
True
ef
(
flip
(
wp
coPset_all
)
(
λ
_,
True
)))
wp
E
e2
Q
★
default
True
ef
(
flip
(
wp
coPset_all
)
(
λ
_,
True
)))
...
...
This diff is collapsed.
Click to expand it.
iris/weakestpre.v
+
1
−
1
View file @
9331a371
...
@@ -9,7 +9,7 @@ Local Hint Extern 10 (✓{_} _) =>
...
@@ -9,7 +9,7 @@ Local Hint Extern 10 (✓{_} _) =>
Record
wp_go
{
Σ
}
(
E
:
coPset
)
(
Q
Qfork
:
iexpr
Σ
→
nat
→
res'
Σ
→
Prop
)
Record
wp_go
{
Σ
}
(
E
:
coPset
)
(
Q
Qfork
:
iexpr
Σ
→
nat
→
res'
Σ
→
Prop
)
(
k
:
nat
)
(
rf
:
res'
Σ
)
(
e1
:
iexpr
Σ
)
(
σ1
:
istate
Σ
)
:=
{
(
k
:
nat
)
(
rf
:
res'
Σ
)
(
e1
:
iexpr
Σ
)
(
σ1
:
istate
Σ
)
:=
{
wf_safe
:
∃
e2
σ2
ef
,
prim_step
e1
σ1
e2
σ2
ef
;
wf_safe
:
reducible
e1
σ1
;
wp_step
e2
σ2
ef
:
wp_step
e2
σ2
ef
:
prim_step
e1
σ1
e2
σ2
ef
→
prim_step
e1
σ1
e2
σ2
ef
→
∃
r2
r2'
,
∃
r2
r2'
,
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment