logo
In [1]:
import proveit
from proveit import defaults
#from proveit import Lambda, Iter, Indexed
from proveit import A, B, C, D, i, j, k, l, m, n
from proveit.logic import Or, TRUE, FALSE, Forall, Implies, Not, in_bool, And, Boolean, Equals, Set
from proveit.core_expr_types import A_1_to_m, C_1_to_n
from proveit.numbers import Natural, NaturalPos, Add, Exp, one, LessEq
from proveit.logic.booleans.disjunction  import left_in_bool, right_in_bool, multi_disjunction_def
theory = proveit.Theory() # the theorem's theory
In [2]:
%proving each_is_bool
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
each_is_bool:
(see dependencies)
In [3]:
defaults.assumptions = each_is_bool.all_conditions()
defaults.assumptions:
In [4]:
BeqT_or_BeqF = in_bool(B).unfold(assumptions=[in_bool(B)])
BeqT_or_BeqF:  ⊢  
In [5]:
BeqT = BeqT_or_BeqF.operands[0]
BeqT:
In [6]:
BeqT.evaluation(assumptions=[BeqT])
In [7]:
BeqF = BeqT_or_BeqF.operands[1]
BeqF:
In [8]:
BeqF.evaluation(assumptions=[BeqF])