The Unknown truth value¶
The Unknown object is used in Sage in several places as return value
in addition to True and False, in order to signal uncertainty
about or inability to compute the result. Unknown can be identified
using is, or by catching UnknownError from a boolean operation.
Warning
Calling bool() with Unknown as argument will throw an
UnknownError. This also means that in the following cases,
and, not, and or fail or return a somewhat wrong value:
sage: not Unknown # should return Unknown
Traceback (most recent call last):
...
UnknownError: Unknown does not evaluate in boolean context
sage: Unknown and False # should return False
Traceback (most recent call last):
...
UnknownError: Unknown does not evaluate in boolean context
sage: Unknown or False # should return Unknown
Traceback (most recent call last):
...
UnknownError: Unknown does not evaluate in boolean context
EXAMPLES:
sage: def func(n):
....: if n > 0:
....: return True
....: elif n < 0:
....: return False
....: else:
....: return Unknown
Using direct identification:
sage: for n in [-3, 0, 12]:
....: res = func(n)
....: if res is True:
....: print("n={} is positive".format(n))
....: elif res is False:
....: print("n={} is negative".format(n))
....: else:
....: print("n={} is neither positive nor negative".format(n))
n=-3 is negative
n=0 is neither positive nor negative
n=12 is positive
Using UnknownError:
sage: for n in [-3, 0, 12]:
....: try:
....: if func(n):
....: print("n={} is positive".format(n))
....: else:
....: print("n={} is negative".format(n))
....: except UnknownError:
....: print("n={} is neither positive nor negative".format(n))
n=-3 is negative
n=0 is neither positive nor negative
n=12 is positive
AUTHORS:
Florent Hivert (2010): initial version.
Ralf Stephan, Vincent Delecroix (2018-2020): redesign
- sage.misc.unknown.Unknown = Unknown¶
- class sage.misc.unknown.UnknownClass¶
Bases:
sage.structure.unique_representation.UniqueRepresentationThe Unknown truth value
The
Unknownobject is used in Sage in several places as return value in addition toTrueandFalse, in order to signal uncertainty about or inability to compute the result.Unknowncan be identified usingis, or by catchingUnknownErrorfrom a boolean operation.Warning
Calling
bool()withUnknownas argument will throw anUnknownError. This also means that applyingand,not, andortoUnknownmight fail.