let add_normal_assigns env pid label kind assigned wp =
    on_context env "add_assigns" wp Keep_opened Clear_assigns
      (fun env _noassigns prop ->
         if assigned = [] then prop (* everything assigned : nothing to do *)
         else
           try
             let frame = L.get_frame env in
             let from = Clabels.c_label label in
             let asgned = assigned_for_assigns_goal kind from env assigned in
             let goal = WpModel.assigns_goal
               frame  (* frame of model *)
               from   (* label from *)
               asgned (* assigned region *)
               Clabels.Here (* label to *)
             in
             F.p_and goal prop
           with e ->
             let (source,reason) = Wp_error.protect e in
             Datalib.Collector.add_warning
               ~severe:true ~source ~reason
               "Goal %a can not be translated"
               WpAnnot.pp_id pid ;
             F.p_false)