Module Diagnosis


module Diagnosis: sig .. end


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) reason list) array;
}
val empty_diagnosis : ('a, 'b, 'c) diagnosis
val io_reason : 'a Io.literate -> 'b Io.literate -> ('a, 'b) reason Io.literate
val io_diagnosis : 'a Io.literate ->
'b Io.literate ->
'c Io.literate -> ('a, 'b, 'c) diagnosis Io.literate