sig
  exception InvalidArgument of string
  type feature = int
  exception BadContinuity of Oc45.S.feature
  exception DiscreteFeatOutOfBounds of Oc45.S.feature * int
  type category = int
  type contData
  type dataVal = Discrete of int | Continuous of Oc45.S.contData
  type data = Oc45.S.dataVal array
  type trainVal = { data : Oc45.S.data; category : Oc45.S.category; }
  type trainSet
  type decisionTree
  val c45 : Oc45.S.trainSet -> Oc45.S.decisionTree
  val classify : Oc45.S.decisionTree -> Oc45.S.data -> Oc45.S.category
  val emptyTrainSet : int -> int -> bool array -> Oc45.S.trainSet
  val addData : Oc45.S.trainVal -> Oc45.S.trainSet -> Oc45.S.trainSet
  val addDataList :
    Oc45.S.trainVal list -> Oc45.S.trainSet -> Oc45.S.trainSet
  val getSet : Oc45.S.trainSet -> Oc45.S.trainVal list
  val setFeatureMax : int -> int -> Oc45.S.trainSet -> unit
  val getNbFeatures : Oc45.S.trainSet -> int
  val getFeatureMax : Oc45.S.trainSet -> int array
  val getFeatContinuity : Oc45.S.trainSet -> bool array
  val getNbCategories : Oc45.S.trainSet -> int
  val getSetSize : Oc45.S.trainSet -> int
  val toDot :
    Format.formatter ->
    (Format.formatter -> Oc45.S.contData -> unit) ->
    Oc45.S.decisionTree -> unit
  val toDotStdout :
    (Format.formatter -> Oc45.S.contData -> unit) ->
    Oc45.S.decisionTree -> unit
end