sig
  type predicate =
      True
    | False
    | And of Ast.Predicate.predicate list
    | Or of Ast.Predicate.predicate list
    | Not of Ast.Predicate.predicate
    | Implies of Ast.Predicate.predicate * Ast.Predicate.predicate
    | Iff of Ast.Predicate.predicate * Ast.Predicate.predicate
    | All of Ast.Symbol.symbol * Ast.Predicate.predicate
    | Exist of Ast.Symbol.symbol * Ast.Predicate.predicate
    | Atom of Ast.Expression.expression
  val normalize : Ast.Predicate.predicate -> Ast.Predicate.predicate
  val conjoinL : Ast.Predicate.predicate list -> Ast.Predicate.predicate
  val disjoinL : Ast.Predicate.predicate list -> Ast.Predicate.predicate
  val implies :
    Ast.Predicate.predicate ->
    Ast.Predicate.predicate -> Ast.Predicate.predicate
  val iff :
    Ast.Predicate.predicate ->
    Ast.Predicate.predicate -> Ast.Predicate.predicate
  val negate : Ast.Predicate.predicate -> Ast.Predicate.predicate
  val negateAtom : Ast.Predicate.predicate -> Ast.Predicate.predicate
  val convertDNF : Ast.Predicate.predicate -> Ast.Predicate.predicate
  val to_dnf : Ast.Predicate.predicate -> Ast.Predicate.predicate list
  val toString : Ast.Predicate.predicate -> string
  val print : Format.formatter -> Ast.Predicate.predicate -> unit
  val allVarExps : Ast.Predicate.predicate -> Ast.Expression.expression list
  val allVarExps_deep : Ast.Predicate.predicate -> Ast.Expression.lval list
  val getAtoms : Ast.Predicate.predicate -> Ast.Predicate.predicate list
  val map :
    (Ast.Symbol.symbol -> Ast.Symbol.symbol) ->
    ((Ast.Expression.lval -> bool) ->
     Ast.Expression.expression -> Ast.Expression.expression) ->
    Ast.Predicate.predicate -> Ast.Predicate.predicate
  val alpha_convert :
    (Ast.Expression.lval -> Ast.Expression.lval) ->
    Ast.Predicate.predicate -> Ast.Predicate.predicate
  val deep_alpha_convert :
    (Ast.Expression.lval -> Ast.Expression.expression) ->
    Ast.Predicate.predicate -> Ast.Predicate.predicate
  val substitute :
    (Ast.Expression.expression * Ast.Expression.expression) list ->
    Ast.Predicate.predicate -> Ast.Predicate.predicate
  val canonicize : Ast.Predicate.predicate -> Ast.Predicate.predicate
end