Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Why3
why3
Commits
eeaa18b0
Commit
eeaa18b0
authored
Jun 09, 2013
by
Johannes Kanig
Committed by
Andrei Paskevich
Jun 09, 2013
Browse files
fastwp: Eassign
parent
a1c5709c
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/whyml/mlw_wp.ml
View file @
eeaa18b0
...
@@ -1836,8 +1836,34 @@ and fast_wp_desc (env : wp_env) (s : Subst.t) (r : res_type) (e : expr)
...
@@ -1836,8 +1836,34 @@ and fast_wp_desc (env : wp_env) (s : Subst.t) (r : res_type) (e : expr)
post
=
{
s
=
post_state
;
ne
=
ne
};
post
=
{
s
=
post_state
;
ne
=
ne
};
exn
=
exn
exn
=
exn
}
}
|
Eassign
_
->
assert
false
|
Eassign
(
pl
,
e1
,
reg
,
pv
)
->
let
rec
get_term
d
=
match
d
.
e_node
with
|
Eghost
e
|
Elet
(
_
,
e
)
|
Erec
(
_
,
e
)
->
get_term
e
|
Evalue
v
->
vs_result
e1
,
t_var
v
.
pv_vs
|
Elogic
t
->
vs_result
e1
,
t
|
_
->
let
ity
=
ity_of_expr
e1
in
let
id
=
id_fresh
?
loc
:
e1
.
e_loc
"o"
in
(* must be a pvsymbol or restore_pv will fail *)
let
npv
=
create_pvsymbol
id
~
ghost
:
e1
.
e_ghost
ity
in
npv
.
pv_vs
,
t_var
npv
.
pv_vs
in
let
res
,
t
=
get_term
e1
in
let
t
=
fs_app
pl
.
pl_ls
[
t
]
pv
.
pv_vs
.
vs_ty
in
let
wp1
=
fast_wp_expr
env
s
(
res
,
xresult
)
e1
in
let
s2
,
glue
=
Subst
.
havoc
env
(
Sreg
.
singleton
reg
)
wp1
.
post
.
s
in
let
t
=
Subst
.
term
s2
t
in
let
ne
=
t_and_simp_l
[
wp1
.
post
.
ne
;
glue
;
t_equ
t
(
t_var
pv
.
pv_vs
)]
in
{
ok
=
wp_label
e
wp1
.
ok
;
exn
=
wp1
.
exn
;
post
=
{
s
=
s2
;
ne
=
wp_label
e
ne
}
}
and
fast_wp_fun_defn
env
{
fun_lambda
=
l
}
=
and
fast_wp_fun_defn
env
{
fun_lambda
=
l
}
=
(* OK: forall bl. pl => ok(e)
(* OK: forall bl. pl => ok(e)
...
...
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