Logic Type Bool

Felix provides a type for simple logic which tradiationally is called bool after mathematician George Bool.


In Felix, bool is a special case of a more general mechanism we will meet later. It is an alias for the type 2, which is the type that handles two alternatives:

typedef bool = 2;

The typedef binder binds a name to an existing type, that is, it creates an alias.


There are two predefined constants of type bool, true and false.


The prefix operator not provides negation, infix and conjunction, and infix or disjunction, with weak precedences, of decreasing strength.

not a and b or c

is parsed as

((not a) and b) or c

These operators are all weaker than the comparisons they often take as arguments, so that

a < b and b < c

is parsed as

(a < b) and (b < c)

Summary: Logical operations

Operator Type Syntax Semantics
or bool * bool -> bool Infix Disjunction
and bool * bool -> bool Infix Conjunction
not bool -> bool Prefix Negation