Skip to content
On this page

Booleans โ€‹

The type used to represent SmartPy booleans is sp.TBool.
The corresponding type in Michelson is

Michelson bool.

Have also a look at Comparison Operators.

Literals โ€‹

sp.bool(<boolean>)
Create a literal of type sp.TBool when boolean is a Python bool literal (True or False).

True, False
The usual way to input sp.TBool literals in SmartPy.

Example โ€‹

python
value = True
# or
value = sp.bool(True)

Operations โ€‹

Boolean negation โ€‹

~expr
Return the negation of expr, where expr must be a boolean.

Example โ€‹

python
sp.if ~expr:
    #...
Michelson NOT

Or โ€‹

expr1 | expr2
Return True if expr1 or expr2 are True. Both expr1 and expr2 must be boolean expressions.

Example โ€‹

python
sp.if (expr1) | (expr2):
    #...
Michelson OR

And โ€‹

expr1 & expr2
Return True if expr1 and expr2 are True. Both expr1 and expr2 must be boolean expressions.

Example โ€‹

python
sp.if (expr1) & (expr2):
    #...
Michelson AND

Exclusive or โ€‹

expr1 ^ expr2
Return True if expr1 and expr2 are different. Both expr1 and expr2 must be boolean expressions.

Example โ€‹

python
sp.if (expr1) ^ (expr2):
    #...
Michelson XOR

INFO

Unlike in Python, & and | do short-circuiting on SmartPy boolean expressions.

For example, the evaluation of ((x==x)ย |ย (self.data.xs[2]ย ==ย 0)) will not fail.

WARNING

Please note that not, and, and or cannot be overloaded in Python. Hence, we cannot use them to construct SmartPy expressions and, as is customary for custom Python libraries, we use ~, &, and | instead.