# Logic Type Bool¶

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

## Type¶

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.

## Constants¶

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

## Operations¶

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 |