sig
type ('a, 'b) reason =
Not_available of 'a
| Requested of 'a
| Dependency of 'a * 'a list
| Empty_disjunction of 'a * 'b list
| Conflict of 'a * 'a
type ('a, 'b, 'c) diagnosis = {
dg_closure_size : int;
dg_conflicts : int;
dg_disjunctions : int;
dg_dependencies : int;
dg_failures : ('a * ('b, 'c) Diagnosis.reason list) array;
}
val empty_diagnosis : ('a, 'b, 'c) Diagnosis.diagnosis
val io_reason :
'a Io.literate -> 'b Io.literate -> ('a, 'b) Diagnosis.reason Io.literate
val io_diagnosis :
'a Io.literate ->
'b Io.literate ->
'c Io.literate -> ('a, 'b, 'c) Diagnosis.diagnosis Io.literate
end