# Logic¶

## Booleans¶

The type of booleans, written B or Bool, represents logical truth and falsehood. The two values of this type are written true and false. (For convenience True and False also work.)

• Logical AND can be written and, &&, or ∧.
• Logical OR is written or, ||, or ∨.
• Logical negation (NOT) is written not or ¬.
Disco> true and false
false
Disco> true || false
true
Disco> not (true ∧ true)
false
Disco> ¬ (false or false or false or true)
false


## Equality testing¶

If you have two disco values of the type, in almost all cases you can compare them to see whether they are equal using =, resulting in a Bool value.

Disco> 2 = 5
false
Disco> 3 * 7 = 2*10 + 1
true
Disco> (3/5)^2 + (4/5)^2 = 1
true
Disco> false = false
true


The /= operator tests whether two values are not equal; it is just the logical negation of =.

## Comparison¶

Again, in almost all cases values can be compared to see which is less or greater, using operators <, <=, >, or >=.

Disco> 2 < 5
true
Disco> false < true
true
Disco> (5 : Z7) < (9 : Z7)
false


(The last example is false because (9 : Z7) is equivalent to (2 : Z7).)

Comparisons can also be chained; the result is obtained by comparing each pair of values according to the comparison between them, and taking the logical AND of all the results. For example:

Disco> 1 < 3 < 8 < 99
true
Disco> 2.2 < 5.9 > 3.7 < 8.8 > 1.0 < 9
true