let mk_assign_strategy_for_froms config bhv pre n assign =
let bname = behavior_name_of_config config in
let bname = match bname with None -> "default" | Some bname -> bname in
let bname = (bname^"_assign_"^(string_of_int n)) in
let get_pre () =
let pre_init = WpFroms.mk_assign_pre assign in
let pre_init = prepare_pre config Kglobal bhv pre_init in
let pre = add_prop config pre Ahyp pre_init in
pre
in
let annots = mk_assign_annots_for_froms config bhv pre assign in
{
behavior_name = Some bname;
info = config;
has_asgn_goal = false;
has_prop_goal = true;
has_inv_prop = [];
get_annots =
(fun e -> try Hannots.find annots e with Not_found -> empty_acc);
global_axioms = get_global_annotations ();
called_preconditions = (fun _kf -> []);
called_postconditions = (fun kf -> call_post_for_froms kf Normal);
called_exit_postconditions = (fun kf -> call_post_for_froms kf Exits);
called_assigns =
(fun kf -> get_ext_fct_assigns (Kernel_function.get_spec kf));
strategy_kind = SKfroms { get_pre = get_pre };
}