logo
In [1]:
import proveit
from proveit import defaults
from proveit import A, B
from proveit.logic import TRUE, Not, Equals, NotEquals, in_bool
theory = proveit.Theory() # the theorem's theory
In [2]:
%proving untrue_antecedent_implication
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
untrue_antecedent_implication:
(see dependencies)
In [3]:
defaults.assumptions = (A, NotEquals(A, TRUE))
defaults.assumptions:
In [4]:
contradiction = NotEquals(A, TRUE).derive_contradiction()
contradiction: ,  ⊢  
In [5]:
not_b_contradiction = contradiction.as_implication(Not(Equals(B, TRUE)))
not_b_contradiction: ,  ⊢  
untrue_antecedent_implication may now be readily provable (assuming required theorems are usable).  Simply execute "%qed".
In [6]:
BeqT_via_contradiction = not_b_contradiction.derive_via_contradiction()
BeqT_via_contradiction: ,  ⊢  
In [7]:
B_via_contradiction = B.prove()
B_via_contradiction: ,  ⊢  
In [8]:
B_via_contradiction.as_implication(A)
In [9]:
%qed
proveit.logic.booleans.implication.untrue_antecedent_implication has been proven.
Out[9]:
 step typerequirementsstatement
0generalization1  ⊢  
1deduction2  ⊢  
2instantiation3, 4,  ⊢  
  :
3axiom  ⊢  
 proveit.logic.booleans.eq_true_elim
4instantiation5, 6, 7,  ⊢  
  :
5axiom  ⊢  
 proveit.logic.booleans.implication.affirmation_via_contradiction
6instantiation8  ⊢  
  : , :
7deduction9,  ⊢  
8axiom  ⊢  
 proveit.logic.equality.equality_in_bool
9instantiation10, 11, 12,  ⊢  
  : , :
10theorem  ⊢  
 proveit.logic.equality.not_equals_contradiction
11instantiation13, 14  ⊢  
  :
12assumption  ⊢  
13axiom  ⊢  
 proveit.logic.booleans.eq_true_intro
14assumption  ⊢