sig
  module T : DATA
  type t = T.t
  val create : cnt:int -> exp:float -> Data.S.t
  val count : Data.S.t -> int
  val expect : Data.S.t -> float
  val update :
    cnt:int ->
    exp:float ->
    update_rule:Update_rules.Update_fn.t ->
    prior_count:('-> int) ->
    prior_exp:('-> float) -> '-> Data.S.t option -> Data.S.t
end