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
Iris
c
Commits
1f9caecf
Commit
1f9caecf
authored
Jun 20, 2018
by
Léon Gondelman
Browse files
add vcg_wp_unknown
parent
a10e080f
Changes
1
Show whitespace changes
Inline
Side-by-side
theories/vcgen/vcgen.v
View file @
1f9caecf
...
@@ -131,8 +131,18 @@ Section vcg.
...
@@ -131,8 +131,18 @@ Section vcg.
|
dCAlloc
_
|
dCUnknown
_
=>
None
|
dCAlloc
_
|
dCUnknown
_
=>
None
end
.
end
.
(* TODO: change the fail though cases, in the same way as the unknown case
of vcg_wp. Also factor that out in a function vcg_unknown *)
Definition
vcg_wp_unknown
(
R
:
iProp
Σ
)
(
E
:
known_locs
)
(
de
:
dcexpr
)
(
m
:
denv
)
(
Φ
:
known_locs
→
denv
→
dval
→
wp_expr
)
:
wp_expr
:
=
mapsto_wand_list
m
$
Base
$
awp
(
dcexpr_interp
E
de
)
R
(
λ
v
,
∃
E'
m'
dv
,
⌜
v
=
dval_interp
E'
dv
⌝
∧
⌜
E
`
prefix_of
`
E'
⌝
∧
denv_interp
E'
m'
∗
wp_interp_sane
E'
(
Φ
E'
m'
dv
))%
I
.
Arguments
vcg_wp_unknown
:
simpl
never
.
Definition
vcg_wp_load
(
E
:
known_locs
)
(
dv
:
dval
)
(
m
:
denv
)
Definition
vcg_wp_load
(
E
:
known_locs
)
(
dv
:
dval
)
(
m
:
denv
)
(
Φ
:
denv
→
dval
→
wp_expr
)
:
wp_expr
:
=
(
Φ
:
denv
→
dval
→
wp_expr
)
:
wp_expr
:
=
match
is_dloc
E
dv
with
match
is_dloc
E
dv
with
...
@@ -188,9 +198,7 @@ Section vcg.
...
@@ -188,9 +198,7 @@ Section vcg.
|
Some
(
mIn
,
mOut
,
dv2
)
=>
|
Some
(
mIn
,
mOut
,
dv2
)
=>
vcg_wp
E
mIn
de1
R
(
λ
E
mIn
dv1
,
vcg_wp
E
mIn
de1
R
(
λ
E
mIn
dv1
,
vcg_wp_store
E
dv1
dv2
(
denv_merge
mOut
mIn
)
(
Φ
E
))
vcg_wp_store
E
dv1
dv2
(
denv_merge
mOut
mIn
)
(
Φ
E
))
|
None
=>
|
None
=>
vcg_wp_unknown
R
E
de
m
Φ
mapsto_wand_list
m
$
Base
$
awp
(
dcexpr_interp
E
de
)
R
(
λ
v
,
wp_interp
E
(
Φ
E
[]
(
dValUnknown
v
)))
end
end
end
end
|
dCBinOp
op
de1
de2
=>
|
dCBinOp
op
de1
de2
=>
...
@@ -203,9 +211,7 @@ Section vcg.
...
@@ -203,9 +211,7 @@ Section vcg.
|
Some
(
mIn
,
mOut
,
dv2
)
=>
|
Some
(
mIn
,
mOut
,
dv2
)
=>
vcg_wp
E
mIn
de1
R
(
λ
E
mIn
dv1
,
vcg_wp
E
mIn
de1
R
(
λ
E
mIn
dv1
,
vcg_wp_bin_op
E
op
dv1
dv2
(
denv_merge
mOut
mIn
)
(
Φ
E
))
vcg_wp_bin_op
E
op
dv1
dv2
(
denv_merge
mOut
mIn
)
(
Φ
E
))
|
None
=>
|
None
=>
vcg_wp_unknown
R
E
de
m
Φ
mapsto_wand_list
m
$
Base
$
awp
(
dcexpr_interp
E
de
)
R
(
λ
v
,
wp_interp
E
(
Φ
E
[]
(
dValUnknown
v
)))
end
end
end
end
|
dCUnOp
op
de
=>
|
dCUnOp
op
de
=>
...
@@ -217,14 +223,7 @@ Section vcg.
...
@@ -217,14 +223,7 @@ Section vcg.
|
dCSeq
de1
de2
=>
|
dCSeq
de1
de2
=>
vcg_wp
E
m
de1
R
(
λ
E
m
_
,
vcg_wp
E
m
de1
R
(
λ
E
m
_
,
UMod
(
vcg_wp
E
(
denv_unlock
m
)
de2
R
Φ
))
UMod
(
vcg_wp
E
(
denv_unlock
m
)
de2
R
Φ
))
|
_
=>
|
_
=>
vcg_wp_unknown
R
E
de
m
Φ
mapsto_wand_list
m
$
Base
$
awp
(
dcexpr_interp
E
de
)
R
(
λ
v
,
∃
E'
m'
dv
,
⌜
v
=
dval_interp
E'
dv
⌝
∧
⌜
E
`
prefix_of
`
E'
⌝
∧
denv_interp
E'
m'
∗
wp_interp_sane
E'
(
Φ
E'
m'
dv
))%
I
end
.
end
.
End
vcg
.
End
vcg
.
...
@@ -248,9 +247,6 @@ Section vcg_spec.
...
@@ -248,9 +247,6 @@ Section vcg_spec.
-
simpl
.
intros
E
.
by
apply
U_mono
.
-
simpl
.
intros
E
.
by
apply
U_mono
.
Qed
.
Qed
.
Lemma
mapsto_wand_list_spec
E
m
t
:
Lemma
mapsto_wand_list_spec
E
m
t
:
wp_interp
E
(
mapsto_wand_list
m
t
)
-
∗
denv_interp
E
m
-
∗
wp_interp
E
t
.
wp_interp
E
(
mapsto_wand_list
m
t
)
-
∗
denv_interp
E
m
-
∗
wp_interp
E
t
.
Proof
.
Proof
.
...
...
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