A Boolean function may be expressed two ways:
<variable>
<function-identifier> arg1 arg2 ...
where <function-identifier> is one of the following predefined
function identifiers, and arg# is either a variable, a Boolean
function or a reference to a Boolean function. The token <variable>
is a character string and its use in an input file creates a simple Boolean
function which is identified by that name, the value of which is the value
of the variable named <variable>. Every Boolean function is
implemented as a BDD (see Section 10.1) and may have value T, or F, or have no value, depending on its arguments: values of
Boolean functions are given as follows for each <function-identifier>.
Remark: Each function takes a fixed number of arguments, hence, commas and parenthesis are considered whitespace and are ignored, however, their use is recommended to enhance the human readability of input files.
VAR
NOT
not(x32)
-x32
AND
and(x3, x4)
and x3 x4
NAND
nand(x3, x4)
OR
or(and(x3, x4), x5)
NOR
nor(x3, ite(a, b, -c))
EQU
equ(T, x4)
XOR
xor(x3, x4)
This is functionally equivalent to:
equ(x3, not(x4))
IMP
imp(x3, x4)
NIMP
nimp(x3, x4)
ITE
ite(ite( x3, $5, -x5), x4, x7)
ite ite x3 $5 -x5 x4 x7