let post_of_assigns_in_spec kf ki spec termination_kind =
  let add_behav acc bhv = 
    (* post for behavior is [\old(assumes) => out = f(in)]*)
    let add_assign (n, acc) (output, inputs) = 
      let output = match output with 
        | Nothing -> 
            Wp_parameters.fatal "Nothing as output in an assigns clause ?"
        | Location {Cil_types.it_content=lv} -> lv
      in 
      let acc = match termination_kind, output.term_node with
        | ExitsTLval (TResult _, _ )  -> acc
        | NormalTLval (TVar{lv_name = "\\exit_status"},_) -> acc
        | _, _ ->
            let p_eq = build_fimpl_call kf ki bhv n output inputs in
              p_eq::acc
      in
        n+1, acc
    in
    let _, bacc = List.fold_left add_assign (1, []) bhv.b_assigns in
    let p = Logic_const.pands bacc in
    let assumes = Logic_const.pold (build_bhv_assumes bhv) in
    let p = Logic_const.pimplies (assumes, p) in
    let p = Logic_const.new_predicate  p in
      (bhv,p)::acc
  in let acc = List.fold_left add_behav [] spec.spec_behavior in
    acc