sig
  type literal = Term.literal
  type config = Config.config
  type state = State.state
  type choice_point = State.choice_point
  type context = Context.context
  type raw_context_unifier = Context_unifier.raw_context_unifier
  type selected = Selection_types.selected
  class type log =
    object
      method apply_assert : Log.selected -> unit
      method apply_split_left : Log.choice_point -> Log.selected -> unit
      method apply_split_right : Log.selected -> unit
      method apply_split_unit : Log.selected -> unit
      method backtrack : unit
      method close : Log.raw_context_unifier -> unit
      method finalize : unit
      method incomplete : unit
      method jump : unit
    end
  val create : Log.config -> Log.state -> Log.context -> Log.log
end