let iof_and_size_cstrs_of_adaptability_cstrs ?(verbose = false) k k'
    adaptability_cstrs =
  let simpl_adaptability_cstrs =
    simplified_adaptability_cstrs_of_adaptability_cstrs adaptability_cstrs
  in
  if verbose then begin
    Format.printf "Simplified adaptability constraints:@\n  @[%a@]@\n"
      fprint_simpl_adaptability_cstrs simpl_adaptability_cstrs
  end;
  let adjusted_cstrs =
    adjusted_adaptability_cstrs_of_simplified_adaptability_cstrs
      simpl_adaptability_cstrs
  in
  if verbose then begin
    Format.printf "Adjusted adaptability constraints:@\n  @[%a@]@\n"
      fprint_simpl_adaptability_cstrs adjusted_cstrs
  end;
  let choice = make_choice k k' adjusted_cstrs in
  if verbose then begin
    Format.printf "Choice of number of ones (k = %d and k' = %d):@\n  @[%a@]@\n"
      choice.k
      choice.k'
      fprint_choice choice
  end;
  let synchronizability_cstrs, precedence_cstrs =
    synchronizability_and_precedence_cstrs_of_adjusted_adaptability_cstrs
      adjusted_cstrs
  in
  if verbose then begin
    Format.printf "Synchronizability and precedence constraints:@\n";
    Format.printf "  @[%a@\nand@\n%a@]@\n"
      fprint_synchronizability_cstrs synchronizability_cstrs
      fprint_precedence_cstrs precedence_cstrs
  end;
  let iof_and_size_cstrs =
    iof_and_size_cstrs_of_synchronizability_and_precedence_cstrs
      choice synchronizability_cstrs precedence_cstrs
  in
  iof_and_size_cstrs