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 };
  }