package msat

  1. Overview
  2. Docs
val mcsat : bool
type term = Fsmt.Term.t
type formula = Fsmt.Formula.t
type proof = Fsmt.proof
type lit = St.lit = {
  1. lid : int;
  2. term : term;
  3. mutable level : int;
  4. mutable weight : float;
  5. mutable assigned : term option;
}
type var = St.var = {
  1. vid : int;
  2. pa : atom;
  3. na : atom;
  4. mutable seen : bool;
  5. mutable level : int;
  6. mutable weight : float;
  7. mutable reason : reason;
}
and atom = St.atom = {
  1. aid : int;
  2. var : var;
  3. neg : atom;
  4. lit : formula;
  5. mutable is_true : bool;
  6. mutable watched : clause Vec.t;
}
and clause = St.clause = {
  1. name : string;
  2. tag : int option;
  3. atoms : atom Vec.t;
  4. learnt : bool;
  5. c_level : int;
  6. mutable cpremise : premise;
  7. mutable activity : float;
  8. mutable removed : bool;
}
and reason = St.reason =
  1. | Semantic of int
  2. | Bcp of clause option
and premise = St.premise =
  1. | Lemma of proof
  2. | History of clause list
type t = St.t
val of_lit : lit -> t
val of_atom : atom -> t
val destruct : t -> (lit -> 'a) -> (atom -> 'a) -> 'a
type elt = St.elt
val nb_elt : unit -> int
val get_elt : int -> elt
val iter_elt : (elt -> unit) -> unit
val elt_of_lit : lit -> elt
val elt_of_var : var -> elt
val destruct_elt : elt -> (lit -> 'a) -> (var -> 'a) -> 'a
val get_elt_id : elt -> int
val get_elt_level : elt -> int
val get_elt_weight : elt -> float
val set_elt_level : elt -> int -> unit
val set_elt_weight : elt -> float -> unit
val dummy_var : var
val dummy_atom : atom
val dummy_clause : clause
val add_term : term -> lit
val add_atom : formula -> atom
val make_boolean_var : formula -> var * bool
val empty_clause : clause
val make_clause : ?tag:int -> string -> atom list -> int -> bool -> premise -> int -> clause
val fresh_name : unit -> string
val fresh_lname : unit -> string
val fresh_tname : unit -> string
val fresh_hname : unit -> string
val print_lit : Format.formatter -> lit -> unit
val print_atom : Format.formatter -> atom -> unit
val print_clause : Format.formatter -> clause -> unit
val pp_lit : Format.formatter -> lit -> unit
val pp_atom : Format.formatter -> atom -> unit
val pp_clause : Format.formatter -> clause -> unit