Computers can perform more than just mathematical tasks - they are also virtuosos in classical logic. Much as how
arithmetic involves manipulating [[harlowe:number|number]] with addition, multiplication and such, logic involves manipulating the
values ''%%true%%'' and ''%%false%%'' using its own operators. Those are not text [[harlowe:string|string]] - they are values as fundamental as
the natural numbers. In computer science, they are both called //Booleans//, after the 19th century mathematician
George Boole.

''%%is%%'' is a logical operator. Just as + adds the two numbers on each side of it, ''%%is%%'' compares two values on each
side and evaluates to ''%%true%%'' or ''%%false%%'' depending on whether they're identical. It works equally well with strings,
numbers, [[harlowe:Array|Array]], and anything else, but beware - the string ''%%"2"%%'' is not equal to the number 2.

There are several other logical operators available.
^Operator        ^ Purpose ^ Example ^
| ''%%is%%'' | Evaluates to ''%%true%%'' if both sides are equal, otherwise ''%%false%%''. | ''%%$bullets is 5%%'' |
| ''%%is not%%'' | Evaluates to ''%%true%%'' if both sides are not equal. | ''%%$friends is not $enemies%%'' |
| ''%%contains%%'' | Evaluates to ''%%true%%'' if the left side contains the right side. | ''%%"Fear" contains "ear"%%'' |
| ''%%is in%%'' | Evaluates to ''%%true%%'' if the right side contains the left side. | ''%%"ugh" is in "Through"%%'' |
| ''%%>%%'' | Evaluates to ''%%true%%'' if the left side is greater than the right side. | ''%%$money > 3.75%%'' |
| ''%%>=%%'' | Evaluates to ''%%true%%'' if the left side is greater than or equal to the right side. | ''%%$apples >= $carrots + 5%%'' |
| ''%%<%%'' | Evaluates to ''%%true%%'' if the left side is less than the right side. | ''%%$shoes < $people * 2%%'' |
| ''%%<=%%'' | Evaluates to ''%%true%%'' if the left side is less than or equal to the right side. | ''%%65 <= $age%%'' |
| ''%%and%%'' | Evaluates to ''%%true%%'' if both sides evaluates to ''%%true%%''. | ''%%$hasFriends and $hasFamily%%'' |
| ''%%or%%'' | Evaluates to ''%%true%%'' if either side is ''%%true%%''. | ''%%$fruit or $vegetable%%'' |
| ''%%not%%'' | Flips a ''%%true%%'' value to a ''%%false%%'' value, and vice versa. | ''%%not $stabbed%%'' |


Conditions can quickly become complicated. The best way to keep things straight is to use parentheses to
group things.