let report ~partials ~completes ~untried hmap fmt title ips =
  if ips <> [] then
    begin
      Format.fprintf fmt "%s@\n   %s@\n%s@\n@\n"
        bar title bar ;
      let ips = List.sort Property.compare ips in
      List.iter
        (fun ip ->
           let proofs = get_proofs hmap ip in
           let status =
             if proofs = [] then
               ( incr untried ; txt_unknown )
             else
               if List.exists (fun p -> p.p_pending=[]) proofs
               then ( incr completes ; txt_valid )
               else ( incr partials ; txt_partial )
           in
           let pkf = Property.get_kf ip in
           (match pkf with
           | None ->
             Format.fprintf fmt "[%s] Global @[%a@]@\n"
               status Property.pretty ip
           | Some kf ->
             Format.fprintf fmt "[%s] Function '%s' @[%a@]@\n"
               status (Kernel_function.get_name kf) Property.pretty ip);
           if Pending.get () || Emitter.get () then
             List.iter
               (fun p ->
                  begin
                    match Emitter.get () , Pending.get () , p.p_pending with
                      | _ , _ , [] ->
                          Format.fprintf fmt "     Emitter %s [complete]@\n"
                            p.p_emitter
                      | true , false , hs ->
                          Format.fprintf fmt "     Emitter %s [%d pending]@\n"
                            p.p_emitter (List.length hs) ;
                      | _ , true , _ ->
                          Format.fprintf fmt "     Emitter %s:@\n"
                            p.p_emitter
                      | false , false , _ -> assert false (* englobing 'if' *)
                  end ;
                  if Pending.get () then
                    List.iter
                      (fun h ->
                         match Property.get_kf h , pkf with
                         | Some hkf, Some kf when Kernel_function.equal hkf kf ->
                           Format.fprintf fmt "      - @[pending %a@]@\n"
                             Property.pretty h
                           | Some hkf , _ ->
                               Format.fprintf fmt "      - @[pending %a@ from function '%s'@]@\n"
                                 Property.pretty h (Kernel_function.get_name hkf)
                           | None , _ ->
                               Format.fprintf fmt "      - @[pending global %a@]@\n"
                                 Property.pretty h)
                      p.p_pending ;
                  Format.pp_print_flush fmt ()
               ) proofs
        ) ips ;
      Format.pp_print_newline fmt () ;
    end