next up previous contents
Next: Boolean function extensions Up: Canonical form Previous: File Header   Contents

Boolean functions

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


$\textstyle \parbox{110mm}{
Variables may be defined as Boolean functions using ...
...$' refer to previously defined functions or
manipulators instead of variables.}$

NOT


$\textstyle \parbox{110mm}{
The unary Boolean function {\tt NOT} has a value eq...
...ace of {\tt NOT} (functions cannot be complemented in
this way). Examples are:}$


not(x32)
-x32

AND


$\textstyle \parbox{110mm}{
The binary Boolean function {\tt AND} has value {\em...
...f at least one of its
arguments has value {\em F}.
Examples are the following:}$


and(x3, x4)
and x3 x4

NAND


$\textstyle \parbox{110mm}{
The binary Boolean function {\tt NAND} has value {\e...
...lue {\em T} if at least one of its
arguments has value {\em F}.
An example is:}$


nand(x3, x4)

OR


$\textstyle \parbox{110mm}{
This binary Boolean function has value {\em T} if on...
...and has value {\em F} if both its arguments have value
{\em F}. An example is:}$


or(and(x3, x4), x5)

NOR


$\textstyle \parbox{110mm}{
This binary Boolean function has value {\em F} if at...
... T} and has value {\em T} if both arguments have
value {\em F}. An example is:}$


nor(x3, ite(a, b, -c))

EQU


$\textstyle \parbox{110mm}{
This binary Boolean function has value {\em T} if bo...
...mple {\tt equ} acts
as a way to assign the value {\em T} to variable {\tt x4}.}$


equ(T, x4)

XOR


$\textstyle \parbox{110mm}{
This binary Boolean function has value {\em T} if it...
...{\em F} if its two arguments
have been assigned the same value. An example is:}$


xor(x3, x4)
This is functionally equivalent to:
equ(x3, not(x4))

IMP


$\textstyle \parbox{110mm}{
This binary Boolean function has value {\em T} if e...
... its first argument has value {\em F} and second value {\em T}.
An example is:}$


imp(x3, x4)

NIMP


$\textstyle \parbox{110mm}{
This binary Boolean function has value {\em F} if ei...
... its first argument has value {\em F} and second value {\em T}.
An example is:}$


nimp(x3, x4)

ITE


$\textstyle \parbox{110mm}{
The ternary Boolean function {\tt ITE} has the value...
...first argument has value {\em F}.
Examples of this function are the following:}$


ite(ite( x3, $5, -x5), x4, x7)
ite ite x3 $5 -x5 x4 x7


next up previous contents
Next: Boolean function extensions Up: Canonical form Previous: File Header   Contents
Sean Weaver 2007-01-08