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
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