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
Rice Wine
Iris
Commits
2b300ebb
Commit
2b300ebb
authored
Jan 19, 2016
by
Ralf Jung
Browse files
use the heap_lang to show that we can actually instantiate IParam :)
parent
9f597f7b
Changes
3
Hide whitespace changes
Inline
Side-by-side
channel
/heap_lang.v
→
barrier
/heap_lang.v
View file @
2b300ebb
Require
Import
Autosubst
.
Autosubst
.
Require
Import
prelude
.
option
prelude
.
gmap
iris
.
language
.
Require
Import
prelude
.
option
prelude
.
gmap
iris
.
language
iris
.
parameter
.
Set
Bullet
Behavior
"Strict Subproofs"
.
...
...
@@ -318,7 +318,7 @@ Proof.
exists
K''
;
by
eauto
using
f_equal
,
f_equal2
,
f_equal3
,
v2e_inj
.
intros
Hfill
Hred
Hnval
.
Time
revert
K'
Hfill
;
induction
K
=>
K'
/=
Hfill
;
revert
K'
Hfill
;
induction
K
=>
K'
/=
Hfill
;
first
(
now
eexists
;
reflexivity
)
;
(
destruct
K'
;
simpl
;
(* The first case is: K' is EmpyCtx. *)
...
...
@@ -408,12 +408,7 @@ Section Language.
Definition
ectx_step
e1
σ
1 e2
σ
2
(
ef
:
option
expr
)
:
=
exists
K
e1'
e2'
,
e1
=
fill
K
e1'
/\
e2
=
fill
K
e2'
/\
prim_step
e1'
σ
1 e2
'
σ
2
ef
.
Instance
heap_lang
:
Language
expr
value
state
:
=
{|
of_val
:
=
v2e
;
to_val
:
=
e2v
;
atomic
:
=
atomic
;
prim_step
:
=
ectx_step
|}.
Instance
heap_lang
:
Language
expr
value
state
:
=
Build_Language
v2e
e2v
atomic
ectx_step
.
Proof
.
-
exact
v2v
.
-
exact
e2e
.
...
...
@@ -431,7 +426,7 @@ Section Language.
Lemma
fill_is_ctx
K
:
is_ctx
(
fill
K
).
Proof
.
split
.
-
intros
?
[
v
Hval
]
.
eapply
fill_value
.
eassumption
.
-
intros
?
H
n
val
.
by
eapply
fill_
not_
value
.
-
intros
?
?
?
?
?
(
K'
&
e1'
&
e2'
&
Heq1
&
Heq2
&
Hstep
).
exists
(
comp_ctx
K
K'
),
e1'
,
e2'
.
rewrite
-!
fill_comp
Heq1
Heq2
.
split
;
last
split
;
reflexivity
||
assumption
.
...
...
@@ -445,3 +440,9 @@ Section Language.
Qed
.
End
Language
.
(* This is just to demonstrate that we can instantiate IParam. *)
Module
IParam
.
Definition
Σ
:
=
IParamConst
heap_lang
unitRA
.
Print
Assumptions
Σ
.
End
IParam
.
iris/language.v
View file @
2b300ebb
...
...
@@ -14,6 +14,7 @@ Class Language (E V St : Type) := {
prim_step
e1
σ
1 e2
σ
2
ef
→
is_Some
(
to_val
e2
)
}.
Arguments
Build_Language
{
_
_
_
}
_
_
_
_
{
_
_
_
_
_
}.
Section
language
.
Context
`
{
Language
E
V
St
}.
...
...
iris/parameter.v
View file @
2b300ebb
...
...
@@ -17,7 +17,7 @@ Record iParam := IParam {
icmra_map
(
g
◎
f
)
x
≡
icmra_map
g
(
icmra_map
f
x
)
;
icmra_map_mono
{
A
B
}
(
f
:
A
-
n
>
B
)
:
CMRAMonotone
(
icmra_map
f
)
}.
Arguments
IParam
_
_
_
_
_
{
_
_
}
_
{
_
_
_
_
}.
Arguments
IParam
{
_
_
_
}
_
_
{
_
_
}
_
{
_
_
_
_
}.
Existing
Instances
ilanguage
.
Existing
Instances
icmra_empty
icmra_empty_spec
icmra_map_ne
icmra_map_mono
.
...
...
@@ -27,13 +27,12 @@ Proof.
by
intros
?
;
apply
equiv_dist
=>
n
;
apply
icmra_map_ne
=>
?
;
apply
equiv_dist
.
Qed
.
Definition
IParamConst
(
iexpr
ival
istate
:
Type
)
Definition
IParamConst
{
iexpr
ival
istate
:
Type
}
(
ilanguage
:
Language
iexpr
ival
istate
)
(
icmra
:
cmraT
)
{
icmra_empty
:
Empty
icmra
}
{
icmra_empty_spec
:
RAIdentity
icmra
}
:
iParam
.
eapply
(
IParam
iexpr
ival
istate
ilanguage
(
fun
_
=>
icmra
)
(
fun
_
_
_
=>
cid
)).
eapply
(
IParam
ilanguage
(
fun
_
=>
icmra
)
(
fun
_
_
_
=>
cid
)).
Unshelve
.
-
by
intros
.
-
by
intros
.
...
...
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