#### msat 0.9.1 0.9 0.8.3 0.8.2 0.8.1 0.8 0.7 0.6.1 0.6 0.5.1 0.5 0.4.1 0.4 0.3 0.2 0.1

Library containing a SAT solver that can be parametrized by a theory
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library msat.tseitin
Module .

## Parameters

`module F : Arg`

## Signature

`type atom = F.t`

The type of atomic formulas.

`type t`

The type of arbitrary boolean formulas. Arbitrary boolean formulas can be built using functions in this module, and then converted to a CNF, which is a list of clauses that only use atomic formulas.

`val f_true : t`

The `true` formula, i.e a formula that is always satisfied.

`val f_false : t`

The `false` formula, i.e a formula that cannot be satisfied.

`val make_atom : atom -> t`

`make_atom p` builds the boolean formula equivalent to the atomic formula `p`.

`val make_not : t -> t`

Creates the negation of a boolean formula.

`val make_and : t list -> t`

Creates the conjunction of a list of formulas. An empty conjunction is always satisfied.

`val make_or : t list -> t`

Creates the disjunction of a list of formulas. An empty disjunction is never satisfied.

`val make_xor : t -> t -> t`

`make_xor p q` creates the boolean formula "`p` xor `q`".

`val make_imply : t -> t -> t`

`make_imply p q` creates the boolean formula "`p` implies `q`".

`val make_equiv : t -> t -> t`

`make_equiv p q` creates the boolena formula "`p` is equivalent to `q`".

`val make_cnf : t -> atom list list`

`make_cnf f` returns a conjunctive normal form of `f` under the form: a list (which is a conjunction) of lists (which are disjunctions) of atomic formulas.

`val pp : Format.formatter -> t -> unit`

`print fmt f` prints the formula on the formatter `fmt`.