sig
  module Events : EVENTS
  module Event : EVENT
  type update_rule = Prob_cache_common.Update_rules.Update_fn.t
  type prior_count = Events.t -> int
  type prior_exp = Events.t -> float
  type t
  val create :
    ?update_rule:Model_intf.S.update_rule ->
    ?prior_count:Model_intf.S.prior_count ->
    ?prior_exp:Model_intf.S.prior_exp -> name:string -> Model_intf.S.t
  val count : Events.t -> Model_intf.S.t -> int
  val observe :
    ?cnt:int -> ?exp:float -> Events.t -> Model_intf.S.t -> Model_intf.S.t
  val prob : ?cond:Events.t -> Events.t -> Model_intf.S.t -> float
  val exp : ?cond:Events.t -> Events.t -> Model_intf.S.t -> float
  val name : Model_intf.S.t -> string
end