Quine-McCluskey, then cyclic core, then heuristic cover search.
The impicants are sorted by the number of covered minterms once
before the optimization. The length of the implications is used
as the heuristic value.

*)

|

Qmc_SimpleHeuristic_SortEachTime

(*

Quine-McCluskey, then cyclic core, then heuristic cover search.
The impicants are sorted by the number of covered minterms after
each step. The length of the implications is used as the
heuristic value.

*)

|

Qmc_SimpleHeuristic_AdvancedHeuristic

(*

Quine-McCluskey, then cyclic core, then heuristic cover search.
The impicants are sorted after each step.
Advanced heuristic formula (see thesis) is used
to calculate the heuristic value

*)

|

Qmc_SimpleHeuristic_Best

(*

Quine-McCluskey, then cyclic core, then heuristic cover search.
The impicants are sorted by after each step.
Advanced heurisitc or the length of the
implications is used as heuristic value, depending on the
better results.

*)

|

Qmc_PetricksMethod

(*

Quine-McCluskey and then Petrick's method.

*)

|

In_Place_Heuristic

(*

EXPREREMNTAL, NOT TESTED: A heuristic optimization method that
uses the Expand and Irrendundant (Here simple heuristic with
advanced heuristic formaula) steps instead of the QMC algorithm

*)

The algorithm for the optimization.

val set_verbose_mode : bool -> unit

Turns on or off the output of debug messages.
This is turned off by default.

val set_result_verification : bool -> unit

Sets whether the optimization results should be verfied.
This is done by testing of the equivalence of the original
expression and the minimized one. This is turned off by default.

Optimizes the given expression with the suitable algoirthm.
When there is more then 12 non essential prime implicants
Qmc_SimpleHeuristic_Best is used, otherwise Qmc_PetricksMethod.
The result is a tuple of the minimized expression and a boolean
which indicates whether the optimization was exact (true) or not.

Loads a dnf expression from file with the given name. The file should
contain one minterm per line. The format of the minterm
representations is as following: '1' means true, '0' means false and
'x' means don't matter. Lines starting with any other
characters then '0', '1' or 'x' are ignored.