Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
iris
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
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
Tej Chajed
iris
Commits
5f96abdc
Commit
5f96abdc
authored
9 years ago
by
Ralf Jung
Browse files
Options
Downloads
Patches
Plain Diff
progress on signal_spec
parent
55eee5a6
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
barrier/barrier.v
+21
-5
21 additions, 5 deletions
barrier/barrier.v
with
21 additions
and
5 deletions
barrier/barrier.v
+
21
−
5
View file @
5f96abdc
...
@@ -100,10 +100,10 @@ Section proof.
...
@@ -100,10 +100,10 @@ Section proof.
Context
(
HeapI
:
gid
)
`{
!
HeapInG
Σ
HeapI
}
(
HeapG
:
gname
)
(
HeapN
:
namespace
)
.
Context
(
HeapI
:
gid
)
`{
!
HeapInG
Σ
HeapI
}
(
HeapG
:
gname
)
(
HeapN
:
namespace
)
.
Context
(
StsI
:
gid
)
`{
!
STSInG
heap_lang
Σ
StsI
sts
}
.
Context
(
StsI
:
gid
)
`{
!
STSInG
heap_lang
Σ
StsI
sts
}
.
Context
(
SpI
:
gid
)
`{
!
SavedPropInG
heap_lang
Σ
SpI
}
.
Context
(
SpI
:
gid
)
`{
!
SavedPropInG
heap_lang
Σ
SpI
}
.
(* TODO We could alternatively construct the namespaces to be disjoint.
(* TODO: What is the best way to assert that HeapN and N are "disjoi
nt
"
,
as
But that would take a lot of flexibility from the clie
nt,
who probably
in, neither is a prefix of th
e
o
the
r? This should be usable by automatic
wants to also us
e the
heap_ctx elsewhere. *)
proofs, e.g., tha
t HeapN
⊆ coPset_all ∖ N. *)
Contex
t
(
HeapN
_disj
:
ndisj
HeapN
N
)
.
Notation
iProp
:=
(
iPropG
heap_lang
Σ
)
.
Notation
iProp
:=
(
iPropG
heap_lang
Σ
)
.
...
@@ -148,7 +148,23 @@ Section proof.
...
@@ -148,7 +148,23 @@ Section proof.
apply
forall_intro
=>
-
[
p
I
]
.
apply
wand_intro_l
.
rewrite
-!
assoc
.
apply
forall_intro
=>
-
[
p
I
]
.
apply
wand_intro_l
.
rewrite
-!
assoc
.
apply
const_elim_sep_l
=>
Hs
.
destruct
p
;
last
done
.
apply
const_elim_sep_l
=>
Hs
.
destruct
p
;
last
done
.
rewrite
{
1
}
/
barrier_inv
=>
/=
{
Hs
}
.
rewrite
later_sep
.
rewrite
{
1
}
/
barrier_inv
=>
/=
{
Hs
}
.
rewrite
later_sep
.
eapply
wp_store
.
eapply
wp_store
;
eauto
with
I
.
{
(* FIXME can we make this more automatic? *)
apply
ndisj_disjoint
in
HeapN_disj
.
solve_elem_of
.
}
rewrite
-!
assoc
.
apply
sep_mono_r
.
etransitivity
;
last
eapply
later_mono
.
{
(* Is this really the best way to strip the later? *)
erewrite
later_sep
.
apply
sep_mono_r
.
apply
later_intro
.
}
apply
wand_intro_l
.
rewrite
-
(
exist_intro
(
State
High
I
))
.
rewrite
-
(
exist_intro
∅
)
.
rewrite
const_equiv
/=
;
last
first
.
{
constructor
;
first
constructor
;
rewrite
/=
/
tok
/=
;
solve_elem_of
+.
}
rewrite
left_id
-
later_intro
{
2
}
/
barrier_inv
-!
assoc
.
apply
sep_mono_r
.
rewrite
!
assoc
[(_
★
P
)
%
I
]
comm
!
assoc
-2
!
assoc
.
apply
sep_mono
;
last
first
.
{
apply
wand_intro_l
.
eauto
with
I
.
}
(* Now we come to the core piece of the proof: Updating from waiting to ress. *)
rewrite
/
waiting
/
ress
sep_exist_l
.
apply
exist_elim
=>{
Q
}
Q
.
rewrite
later_wand
{
1
}(
later_intro
P
)
!
assoc
wand_elim_r
.
(* TODO: Now we need stuff about Π★{set I} *)
Abort
.
Abort
.
Lemma
wait_spec
l
P
(
Q
:
val
→
iProp
)
:
Lemma
wait_spec
l
P
(
Q
:
val
→
iProp
)
:
...
...
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