finds a minimal-length disjunctive normal form representation of expr.


finds a minimal-length representation for expr in the specified form.


finds a minimal-length expression in the specified form that is equivalent to expr when cond is true.

Details and Options

  • BooleanMinimize[expr,form] always produces an expression equivalent to expr.
  • Available forms are:
  • "DNF","SOP"disjunctive normal form, sum of products
    "CNF","POS"conjunctive normal form, product of sums
    "ANF"algebraic normal form
    "NOR"two-level Nor and Not
    "NAND"two-level Nand and Not
    "AND"two-level And and Not
    "OR"two-level Or and Not
  • In general, there may be several minimal-length representations for a particular expression in a certain form. BooleanMinimize gives one of them.
  • BooleanMinimize supports a Method option that specifies the detailed method to use.


open allclose all

Basic Examples  (2)

Find the minimal disjunctive normal form:

A Boolean counting function in disjunctive normal form:

Find a minimal disjunctive normal form:

Scope  (2)

A Boolean function of five variables represented in DNF:

Minimal-length DNF:

Minimal-length CNF:

Minimal-length NAND form:

Minimal-length NOR form:

Minimal-length ANF:

Show that all the forms are equivalent:

Minimize a Boolean function using a "care set" or condition:

The resulting forms are equivalent when cond is true:

They are not equivalent without the condition:

Typically the forms are longer without conditions:

Applications  (1)

Distribution of Minimal Size  (1)

Compute the minimal DNF representation:

Plot the size as a function of index:

Get its distribution:

Compute the size for the first 1000 four-variable functions:

Properties & Relations  (4)

The output from BooleanMinimize is equivalent to its input:

The output from BooleanMinimize with condition is conditionally equivalent to its input:

The forms f and g are equivalent when cond is true:

They are not equivalent on their own:

The minimal lengths "DNF", "CNF", "NAND", or "NOR" are not unique:

BooleanMinimize will produce an expression of length 3:

Another equivalent expression of length 3 is given by exchanging b and c:

Similar examples for "CNF", "NAND", and "NOR":

Use BooleanConvert when the minimal length form is not required:

BooleanConvert can also convert to additional forms:

Wolfram Research (2008), BooleanMinimize, Wolfram Language function,


Wolfram Research (2008), BooleanMinimize, Wolfram Language function,


@misc{reference.wolfram_2020_booleanminimize, author="Wolfram Research", title="{BooleanMinimize}", year="2008", howpublished="\url{}", note=[Accessed: 27-February-2021 ]}


@online{reference.wolfram_2020_booleanminimize, organization={Wolfram Research}, title={BooleanMinimize}, year={2008}, url={}, note=[Accessed: 27-February-2021 ]}


Wolfram Language. 2008. "BooleanMinimize." Wolfram Language & System Documentation Center. Wolfram Research.


Wolfram Language. (2008). BooleanMinimize. Wolfram Language & System Documentation Center. Retrieved from