logo
In [1]:
import proveit
from proveit import defaults
from proveit import A
from proveit.logic.booleans import unfold_is_bool_explicit
from proveit.logic.booleans.negation import closure
neg_closure = closure
from proveit.logic.booleans.disjunction import constructive_dilemma
theory = proveit.Theory() # the theorem's theory
In [2]:
%proving unfold_is_bool
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
unfold_is_bool:
(see dependencies)
In [3]:
defaults.assumptions = unfold_is_bool.conditions
defaults.assumptions:
In [4]:
unfold_is_bool_explicit
In [5]:
explicit_form = unfold_is_bool_explicit.instantiate({A:A})
explicit_form:  ⊢  
In [6]:
explicit_form.derive_via_multi_dilemma(unfold_is_bool.instance_expr)
unfold_is_bool may now be readily provable (assuming required theorems are usable).  Simply execute "%qed".
In [7]:
%qed
proveit.logic.booleans.unfold_is_bool has been proven.
Out[7]: