let print (config: config) =
  let print_flag = {
    Flags.apply =
      fun flag ->
        (* ignore unit options *)
        match flag#opt_to_string with
          | [] ->
              ()
                
          | _ ->
              Print.print_label flag#long_name (flag#value_to_string flag#value)
  }
  in
    print_endline ("Configuration:");
    List.iter
      (fun flag ->
         Flags.process_flag flag print_flag
      )
      config.flags.Flags.flags;
    print_newline ();

    print_endline ("Problem:");
    Print.print_label "Horn" (string_of_bool config.problem#isHorn);
    Print.print_label "BS" (string_of_bool config.problem#isBS);
    Print.print_label "Equality" (string_of_bool config.problem#containsEquality);
    print_newline ()