Currently, PyEDA only supports constant zero and one. There is value to extending the set of Boolean constants to include the following values:
logical: either zero or one, but not both
illogical: both zero and one
These two values can be used to optimistically or pessimistically evaluate functions. For example, And(0, logical) would always be 0, but And(0, illogical) would always be illogical.
The encoding of logical will be 2, and the encoding of illogical will be 3.
The implementation needs to support this as an optional feature in a function representation. It makes sense for expressions, but not for all representations. For example, implicant tables use positional cube notation to represent multi-valued logic, which has different usage and semantics.
Currently, PyEDA only supports constant zero and one. There is value to extending the set of Boolean constants to include the following values:
These two values can be used to optimistically or pessimistically evaluate functions. For example,
And(0, logical)
would always be0
, butAnd(0, illogical)
would always beillogical
.The encoding of logical will be
2
, and the encoding of illogical will be3
.The implementation needs to support this as an optional feature in a function representation. It makes sense for expressions, but not for all representations. For example, implicant tables use positional cube notation to represent multi-valued logic, which has different usage and semantics.