Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
George Pirlea
Iris
Commits
a1cf5cb9
Commit
a1cf5cb9
authored
Feb 18, 2019
by
Ralf Jung
Browse files
we need unlocked value lambdas
parent
42eb5ad3
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
6 additions
and
6 deletions
+6
-6
HeapLang.md
HeapLang.md
+5
-5
theories/heap_lang/lib/par.v
theories/heap_lang/lib/par.v
+1
-1
No files found.
HeapLang.md
View file @
a1cf5cb9
...
...
@@ -117,11 +117,11 @@ The normal `e1 ||| e2` notation uses expression lambdas, because clearly we want
value lambda). However, the
*specification*
for parallel composition should use
value lambdas, because prior to applying it the term will be reduced as much as
possible to achieve a normal form. To facilitate this, we define a copy of the
`e1 ||| e2`
notation in the value scope that uses value lambdas.
This is not
actually a value, but we still but it in the value scope to
differentiate from
the other notation that uses expression lambdas. (In the
future, we might
decide to add a separate scope for this.) Then, we write the
canonical
specification using the notation in the value scope.
`e1 ||| e2`
notation in the value scope that uses
*unlocked*
value lambdas.
This is not
actually a value, but we still but it in the value scope to
differentiate from
the other notation that uses expression lambdas. (In the
future, we might
decide to add a separate scope for this.) Then, we write the
canonical
specification using the notation in the value scope.
This works very well for non-recursive notions. For
`while`
loops, the
situation is unfortunately more complex and proving the desired specification
...
...
theories/heap_lang/lib/par.v
View file @
a1cf5cb9
...
...
@@ -12,7 +12,7 @@ Definition par : val :=
let
:
"v1"
:
=
join
"handle"
in
(
"v1"
,
"v2"
).
Notation
"e1 ||| e2"
:
=
(
par
(
λ
:
<>,
e1
)%
E
(
λ
:
<>,
e2
)%
E
)
:
expr_scope
.
Notation
"e1 ||| e2"
:
=
(
par
(
λ
:
<>,
e1
)%
V
(
λ
:
<>,
e2
)%
V
)
:
val_scope
.
Notation
"e1 ||| e2"
:
=
(
par
(
LamV
BAnon
e1
%
E
)
(
LamV
BAnon
e2
%
E
)
)
:
val_scope
.
Section
proof
.
Local
Set
Default
Proof
Using
"Type*"
.
...
...
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