sig
  type config = Config.config
  type statistic = Statistic.statistic
  type counter = Counter.counter
  type var = Var.var
  type symbol = Symbol.symbol
  type term = Term.term
  type literal = Term.literal
  type clause = Term.clause
  type choice_point = State.choice_point
  type state = State.state
  type problem = Problem.problem
  type bound = Bound.bound
  type finite_domain = Finite_domain.finite_domain
  type element = private {
    el_id : int;
    el_literal : Context.literal;
    el_choice_point : Context.choice_point;
    el_pars : Context.var list;
    el_generation : int;
    el_is_fd_incomplete : bool;
    mutable el_compacted : int;
  }
  type context
  val create :
    Context.config -> Context.statistic -> Context.state -> Context.context
  val from_file :
    string ->
    Context.config -> Context.statistic -> Context.state -> Context.context
  val null_element : Context.element
  val assert_element : Context.element
  val plus_v_element : Context.element
  val minus_v_element : Context.element
  val add :
    Context.context -> Context.literal -> int -> bool -> Context.element
  val is_universal : Context.context -> bool
  val element_equal : Context.element -> Context.element -> bool
  val element_for_literal :
    Context.context -> Context.literal -> Context.element option
  val most_recent_element : Context.context -> Context.element
  val is_more_recent : Context.element -> Context.element -> bool
  val iter : (Context.element -> unit) -> Context.context -> unit
  val fold : ('-> Context.element -> 'a) -> '-> Context.context -> 'a
  val check_contradictory :
    Context.context -> Context.literal -> Context.element option
  val check_subsumed :
    Context.context -> Context.literal -> Context.element option
  val check_productive :
    Context.context ->
    Context.literal -> Context.literal -> Context.element option
  val is_true : Context.context -> Context.literal -> bool
  val find_all_unifiable :
    Context.context -> Context.literal -> Context.element list
  val find_all_subsuming :
    Context.context -> Context.literal -> Context.element list
  val element_to_string : Context.element -> string
  val print_context : Context.context -> Pervasives.out_channel -> unit
  val print_DIG :
    Context.context -> Pervasives.out_channel -> Context.problem -> unit
  val print_tptp_model :
    Context.context ->
    Pervasives.out_channel ->
    Context.problem -> Context.finite_domain option -> Context.bound -> unit
  val print_multiplication_tables :
    Context.context ->
    Pervasives.out_channel -> Context.problem -> Context.bound -> unit
  val print_max_size : Context.context -> unit
  val backtrack : Context.context -> unit
end