sig
  type 'a report_ele =
      Leaf of (unit -> string)
    | Tag of 'Report.tag
    | List of 'Report.liste
    | Cond of 'Report.cond
    | Sub of 'Report.sub
  and 'a tag = {
    mutable tag : string;
    mutable atts : (string * (unit -> string)) list;
    mutable tag_subs : 'Report.report_ele list;
  }
  and 'a liste = {
    mutable list_subs : '-> 'Report.report_ele list;
    mutable f : unit -> 'a list;
  }
  and 'a cond = {
    mutable cond : unit -> bool;
    mutable subs_then : 'Report.report_ele list;
    mutable subs_else : 'Report.report_ele list;
  }
  and 'a sub = { mutable sub_rep : unit -> 'Report.report; }
  and 'a report = { mutable rep_eles : 'Report.report_ele list; }
  val coerce : '-> 'b
  val compute : ?html:bool -> Format.formatter -> 'Report.report -> unit
  val compute_file : ?html:bool -> string -> 'Report.report -> unit
end