let update_action_call kf pre_ki ki called_func pre_call_st post_call_st =
  let ret_called = Kstmt (Kernel_function.find_return called_func) in
  let (_,pre_trans) =
    Data_for_aorai.get_func_pre (Kernel_function.get_name kf)
  in
  let (_,call_trans) =
    Data_for_aorai.get_func_pre (Kernel_function.get_name called_func)
  in
  let treat_one_state_post pre pre_call post_call =
    let current_actions = 
      Data_for_aorai.get_action_bindings kf pre_ki pre pre_call in
    let post_actions = 
      Data_for_aorai.get_action_bindings 
        called_func ret_called pre_call post_call
    in
    let res = compose_actions current_actions post_actions in
(*    Format.printf "Merging actions in %a: %s -> %s@.%aand@.%agive@.%a"
      Cil_datatype.Kinstr.pretty pre_ki
      pre.Promelaast.name post_call.Promelaast.name
      print_action_binding current_actions
      print_action_binding post_actions
      print_action_binding res; *)

    Data_for_aorai.merge_action_bindings kf ki pre post_call res
  in
  let treat_one_trans_call pre pre_call trans =
    if call_trans.(trans.numt) then begin
      Array.iteri
        (fun index b ->
          if b then begin
            let state = Data_for_aorai.getState index in
            treat_one_state_post pre pre_call state 
          end)
        post_call_st.(trans.stop.nums)
    end
  in
  let auto = Data_for_aorai.getAutomata () in
  let treat_one_call_state pre pre_call =
    let trans = Path_analysis.get_transitions_of_state pre_call auto in
    List.iter (treat_one_trans_call pre pre_call) trans
  in
  let treat_one_trans_pre pre trans =
    if pre_trans.(trans.numt) then begin
      Array.iteri
        (fun index b -> 
          if b then begin
            let state = Data_for_aorai.getState index in
            treat_one_call_state pre state
          end)
        pre_call_st.(trans.stop.nums)
    end
  in
  let update_one_action pre =
    let trans = Path_analysis.get_transitions_of_state pre auto in
    List.iter (treat_one_trans_pre pre) trans
  in
  let my_pre = active_before_call kf in
  Data_for_aorai.Aorai_state.Set.iter update_one_action my_pre