converts the Boolean expression expr to disjunctive normal form.


converts the Boolean expression expr to the specified form.


finds an expression in the specified form that is equivalent to expr when cond is true.

Details and Options

  • BooleanConvert[expr,form] will produce an expression equivalent to expr.
  • Available forms are:
  • "DNF","SOP"disjunctive normal form, sum of products
    "CNF","POS"conjunctive normal form, product of sums
    "ESOP"exclusive sum of products
    "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
    "IMPLIES"Implies and Not
    "ITE","IF"If and constants
    "BFF"BooleanFunction form
    "BDT"Boolean decision tree
  • The expression expr can contain any Boolean or logical functions, including BooleanFunction, BooleanCountingFunction, etc.
  • BooleanConvert[bf,form] converts the internal form of a pure BooleanFunction object.
  • BooleanConvert supports a Method option that specifies the detailed method to use.


open allclose all

Basic Examples  (3)

Convert a Boolean expression to disjunctive normal form:

Convert xy to some common forms:

Convert xyz using the condition that x(yz) is true:

Show that the output is equivalent to the input when x(yz):

Scope  (2)

Convert a Boolean expression to different forms:

Disjunctive normal form:

Conjunctive normal form:

Exclusive sum of products:

Algebraic normal form:

Two-level Nand and Not:

Two-level Nor and Not:

Two-level And and Not:

Two-level Or and Not:

Implies and Not:

If and constants:

Boolean function form:

Boolean decision tree:

Show that they are all equivalent:

Convert 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:

Properties & Relations  (3)

The output from BooleanConvert is equivalent to its input:

The output from BooleanConvert 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:

Use BooleanMinimize to get the minimal length form:

The forms are equivalent:

Neat Examples  (1)

Introduced in 2008