let add_disjoint_behaviors_props config ki spec acc =
  match spec.spec_disjoint_behaviors with [] -> acc
    | l ->
        let mk_disj_bhv b1 b2 = (* ~ (b1 /\ b2) *)
          let p = Logic_const.pands [b1; b2] in
            Logic_const.pnot p
        in
        let add_disj acc bhv_names =
          let id = (config.kf, ki, bhv_names) in
          let id = mk_disj_bhv_id id in
          let bhv_names = match bhv_names with
            | [] -> (* no names ==> all behaviors *)
                get_behavior_names ~with_default:false spec
            | _ -> bhv_names
          in
          let bhv_assumes = get_bhv_assumes spec bhv_names in
          let do_one_with_list prop b lb =
            let lp = List.map (mk_disj_bhv b) lb in
              Logic_const.pands (prop::lp)
          in
          let rec do_list prop l = match l with [] -> prop
            | b::tl ->
                let prop = do_one_with_list prop b tl in
                  do_list prop tl
          in let prop = do_list Logic_const.ptrue bhv_assumes in
            add_prop config acc Agoal (prepare_behaviors_spec ki id prop)
        in List.fold_left add_disj acc l