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
01984d7c
Commit
01984d7c
authored
Feb 23, 2016
by
Ralf Jung
Browse files
consistently use the inG and inGF pattern for the barrier
parent
7e6fe5f0
Changes
2
Hide whitespace changes
Inline
Side-by-side
barrier/barrier.v
View file @
01984d7c
...
...
@@ -124,15 +124,23 @@ End barrier_proto.
the
module
into
our
namespaces
.
But
Coq
doesn
'
t
seem
to
support
that
...
??
*
)
Import
barrier_proto
.
(
*
The
functors
we
need
.
*
)
(
**
The
monoids
we
need
.
*
)
(
*
Not
bundling
heapG
,
as
it
may
be
shared
with
other
users
.
*
)
Class
barrierG
Σ
`
{
heapG
Σ
}
:=
BarrierG
{
barrier_stsG
:>
stsG
heap_lang
Σ
sts
;
barrier_savedPropG
:>
savedPropG
heap_lang
Σ
;
}
.
Definition
barrierGF
:
iFunctors
:=
[
stsGF
sts
;
agreeF
].
Instance
inGF_barrierG
`
{
heapG
Σ
}
`
{
inGF
heap_lang
Σ
(
stsGF
sts
)
}
`
{
inGF
heap_lang
Σ
agreeF
}
:
barrierG
Σ
.
Proof
.
split
;
apply
_.
Qed
.
(
**
Now
we
come
to
the
Iris
part
of
the
proof
.
*
)
Section
proof
.
Context
{
Σ
:
iFunctorG
}
(
N
:
namespace
).
Context
`
{
heapG
Σ
}
(
heapN
:
namespace
).
(
*
These
are
exactly
the
elements
of
barrierGF
*
)
Context
`
{
inGF
heap_lang
Σ
(
stsGF
sts
)
}
`
{
inGF
heap_lang
Σ
agreeF
}
.
Context
{
Σ
:
iFunctorG
}
`
{
barrierG
Σ
}
.
Context
(
N
:
namespace
)
(
heapN
:
namespace
).
Local
Hint
Immediate
i_states_closed
low_states_closed
:
sts
.
Local
Hint
Resolve
signal_step
wait_step
split_step
:
sts
.
...
...
@@ -477,9 +485,7 @@ Section proof.
End
proof
.
Section
spec
.
Context
{
Σ
:
iFunctorG
}
.
Context
`
{
heapG
Σ
}
.
Context
`
{
inGF
heap_lang
Σ
(
stsGF
sts
)
}
`
{
inGF
heap_lang
Σ
agreeF
}
.
Context
{
Σ
:
iFunctorG
}
`
{!
heapG
Σ
}
`
{!
barrierG
Σ
}
.
Local
Notation
iProp
:=
(
iPropG
heap_lang
Σ
).
...
...
barrier/client.v
View file @
01984d7c
...
...
@@ -5,10 +5,8 @@ Import uPred.
Definition
client
:=
(
let
:
"b"
:=
newchan
'
()
in
wait
"b"
)
%
L
.
Section
client
.
Context
{
Σ
:
iFunctorG
}
(
N
:
namespace
).
Context
`
{
heapG
Σ
}
(
heapN
:
namespace
).
(
*
TODO
:
This
should
be
abstracted
away
somehow
.
*
)
Context
`
{
inGF
heap_lang
Σ
(
stsGF
barrier_proto
.
sts
)
}
`
{
inGF
heap_lang
Σ
agreeF
}
.
Context
{
Σ
:
iFunctorG
}
`
{!
heapG
Σ
}
`
{!
barrierG
Σ
}
.
Context
(
N
:
namespace
)
(
heapN
:
namespace
).
Local
Notation
iProp
:=
(
iPropG
heap_lang
Σ
).
...
...
Write
Preview
Supports
Markdown
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