mirror of
https://github.com/c-cube/sidekick.git
synced 2025-12-10 05:03:59 -05:00
62 lines
1.8 KiB
OCaml
62 lines
1.8 KiB
OCaml
(*
|
|
MSAT is free software, using the Apache license, see file LICENSE
|
|
Copyright 2014 Guillaume Bury
|
|
Copyright 2014 Simon Cruanes
|
|
*)
|
|
|
|
module Fsat : sig
|
|
|
|
include Formula_intf.S with type t = private int
|
|
|
|
exception Bad_atom
|
|
(** Exception raised when a problem with atomic formula encoding is detected. *)
|
|
|
|
val make : int -> t
|
|
(** Returns the literal corresponding to the integer.
|
|
@raise Bad_atom if given [0] as argument.*)
|
|
|
|
val fresh : unit -> t
|
|
(** [new_atom ()] returns a fresh literal.
|
|
@raise Bad_atom if there are no more integer available to represent new atoms. *)
|
|
|
|
val neg : t -> t
|
|
(** [neg a] returns the negation of a literal. Involutive, i.e [neg (neg a) = a]. *)
|
|
|
|
val abs : t -> t
|
|
val sign : t -> bool
|
|
val apply_sign : bool -> t -> t
|
|
val set_sign : bool -> t -> t
|
|
(** Convenienc functions for manipulating literals. *)
|
|
|
|
val hash : t -> int
|
|
val equal : t -> t -> bool
|
|
val compare : t -> t -> int
|
|
(** Usual hash and comparison functions. For now, directly uses
|
|
[Pervasives] and [Hashtbl] builtins. *)
|
|
|
|
val iter : (t -> unit) -> unit
|
|
(** Allows iteration over all atoms created (even if unused). *)
|
|
|
|
end
|
|
|
|
module Tseitin : Tseitin.S with type atom = Fsat.t
|
|
|
|
module Make(Dummy : sig end) : sig
|
|
(** Fonctor to make a pure SAT Solver module with built-in literals. *)
|
|
|
|
include Solver.S with type St.formula = Fsat.t
|
|
|
|
val print_atom : Format.formatter -> atom -> unit
|
|
(** Print the atom on the given formatter. *)
|
|
|
|
val print_clause : Format.formatter -> St.clause -> unit
|
|
(** Print the clause on the given formatter. *)
|
|
|
|
val print_proof : Format.formatter -> Proof.proof -> unit
|
|
(** Print the given proof in dot format. *)
|
|
|
|
val print_dimacs : Format.formatter -> St.clause list -> unit
|
|
(** Prints a cnf in dimacs format on the given formatter *)
|
|
|
|
end
|
|
|