logo
In [1]:
import proveit
theory = proveit.Theory() # the theorem's theory
In [2]:
%proving double_negate_consequent
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
double_negate_consequent:
(see dependencies)
In [3]:
double_negate_consequent.instance_expr.prove(
    assumptions=double_negate_consequent.conditions)
double_negate_consequent may now be readily provable (assuming required theorems are usable).  Simply execute "%qed".
In [4]:
%qed # automation can handle this one
proveit.logic.booleans.implication.double_negate_consequent has been proven.
Out[4]:
 step typerequirementsstatement
0generalization1  ⊢  
1deduction2  ⊢  
2instantiation3, 4,  ⊢  
  :
3theorem  ⊢  
 proveit.logic.booleans.negation.double_negation_intro
4modus ponens5, 6,  ⊢  
5assumption  ⊢  
6assumption  ⊢