Boolean constant TRUE

MuPAD^{®} uses a three state logic with the Boolean constants `TRUE`

, `FALSE`

,
and `UNKNOWN`

.

The Boolean constants `TRUE`

, `FALSE`

, `UNKNOWN`

are
of domain type `DOM_BOOL`

.

See and, or, not for the logical rules of the MuPAD three state logic.

Boolean constants are returned by system functions such as `bool`

and `is`

. These functions
evaluate Boolean expressions such as equations and inequalities.

The Boolean constants may be combined via `and`

, `or`

, and `not`

:

(TRUE and (not FALSE)) or UNKNOWN

The function `bool`

serves
for reducing Boolean expressions such as equations or inequalities
to one of the Boolean constants:

bool(x = x and 2 < 3 and 3 <> 4 or UNKNOWN)

The function `is`

evaluates
symbolic Boolean expressions with properties:

assume(x > 2): is(x^2 > 4), is(x^3 < 0), is(x^4 > 17)

unassume(x):

Boolean constants occur in the conditional part of program control
structures such as `if`

, `repeat`

, or `while`

statements. The
following loop searches for the smallest Mersenne prime larger than 500 (see `numlib::mersenne`

for
details). The function `isprime`

returns `TRUE`

if
its argument is a prime, and `FALSE`

otherwise. Once
a Mersenne prime is found, the `while`

-loop is interrupted by the `break`

statement:

p := 500: while TRUE do p := nextprime(p + 1): if isprime(2^p - 1) then print(p); break; end_if; end_while:

Note that the conditional part of `if`

, `repeat`

, and `while`

statements must evaluate to `TRUE`

or `FALSE`

.
Any other value leads to an error:

if UNKNOWN then "true" else "false" end_if

Error: Cannot evaluate to Boolean. [if]

delete p:

Was this topic helpful?