sig
  type sign =
      Pos
    | StratifiedNegAsFailure
    | StratifiedNegAsFailureNotSubsumed
    | Findall
    | Neg2
  module BodyLiteral :
    sig
      type literal
      val get_sign : Ic.BodyLiteral.literal -> Ic.sign
      val get_predicate : Ic.BodyLiteral.literal -> Predicate.predicate
      val get_atom : Ic.BodyLiteral.literal -> Term.term
      val get_reader : Ic.BodyLiteral.literal -> Access.Reader.reader
      val get_foreign_context : Ic.BodyLiteral.literal -> Term.context
      val get_is_delta : Ic.BodyLiteral.literal -> bool
      val get_builtin : Ic.BodyLiteral.literal -> Term.p
      val make_literal :
        Predicate.predicate_table ->
        Term.symbol_table -> Term.term -> Ic.BodyLiteral.literal
      val print_optim_info : Ic.BodyLiteral.literal -> unit
    end
  module HeadLiteral :
    sig
      type literal
      val get_atom : Ic.HeadLiteral.literal -> Term.term
      val get_predicate : Ic.HeadLiteral.literal -> Predicate.predicate
      val make_literal :
        Predicate.predicate_table -> Term.term -> Ic.HeadLiteral.literal
    end
  module Aux :
    sig
      type aux
      val make_aux :
        Cfg.cfg ->
        Predicate.predicate_table ->
        Term.symbol_table -> NegativeUnits.store -> Ic.Aux.aux
    end
  module DisjunctiveHead :
    sig
      type head
      val get_literals :
        Ic.DisjunctiveHead.head -> Ic.HeadLiteral.literal list
    end
  type body = Body of Ic.BodyLiteral.literal list
  type head =
      False
    | Unit of Ic.HeadLiteral.literal
    | Conjunction of Ic.HeadLiteral.literal list
    | Disjunction of Ic.DisjunctiveHead.head
  type clause
  val get_body : Ic.clause -> Ic.body
  val get_head : Ic.clause -> Ic.head
  val get_news : Ic.clause -> News.news
  val get_id : Ic.clause -> string
  val get_source : Ic.clause -> Term.term
  val make_clause : Ic.Aux.aux -> Term.term -> Ic.clause
  val clause_delta_clauses :
    Predicate.predicate list -> Ic.clause -> Ic.clause list
  val initialize_clause : Ic.clause -> News.news -> unit
  val eval_clause : Ic.clause -> unit
  val reset_gen_id : unit -> unit
  exception BranchClosed of Fact.proof
end