logo
In [1]:
import proveit
from proveit import defaults
theory = proveit.Theory() # the theorem's theory
In [2]:
%proving commutation
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
commutation:
(see dependencies)
commutation may now be readily provable (assuming required theorems are usable).  Simply execute "%qed".

Not quite readily provable because of unusable proofs to avoid circular logic.

In [3]:
defaults.assumptions = commutation.conditions
defaults.assumptions:
In [4]:
commutation.instance_expr.conclude_via_mutual_implication()
In [5]:
%qed
proveit.logic.booleans.conjunction.commutation has been proven.
Out[5]:
 step typerequirementsstatement
0generalization1  ⊢  
1instantiation2, 3, 4, 5, 6,  ⊢  
  : , :
2conjecture  ⊢  
 proveit.logic.booleans.implication.eq_from_mutual_impl
3instantiation7, 9, 8,  ⊢  
  : , :
4instantiation7, 8, 9,  ⊢  
  : , :
5deduction10  ⊢  
6deduction11  ⊢  
7conjecture  ⊢  
 proveit.logic.booleans.conjunction.binary_closure
8assumption  ⊢  
9assumption  ⊢  
10instantiation14, 12, 13  ⊢  
  : , :
11instantiation14, 15, 16  ⊢  
  : , :
12instantiation18, 17  ⊢  
  : , :
13instantiation19, 17  ⊢  
  : , :
14theorem  ⊢  
 proveit.logic.booleans.conjunction.and_if_both
15instantiation18, 20  ⊢  
  : , :
16instantiation19, 20  ⊢  
  : , :
17assumption  ⊢  
18theorem  ⊢  
 proveit.logic.booleans.conjunction.right_from_and
19theorem  ⊢  
 proveit.logic.booleans.conjunction.left_from_and
20assumption  ⊢