logo
In [1]:
import proveit
from proveit import defaults
from proveit import A, B
from proveit.logic import Equals, TRUE, FALSE
from proveit.logic.booleans.implication import Implies
from proveit.logic.booleans.implication import not_true_via_contradiction
from proveit.logic.booleans.negation import Not
theory = proveit.Theory() # the theorem's theory
In [2]:
%proving negated_reflex
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
negated_reflex:
(see dependencies)
In [3]:
defaults.assumptions = negated_reflex.all_conditions()
defaults.assumptions:
In [4]:
BeqT = Equals(B,TRUE)
BeqT:
In [5]:
AimplBeqT = BeqT.prove(assumptions=[BeqT]).as_implication(A)
AimplBeqT:  ⊢  
In [6]:
n_impl_a_b = Not(Implies(A,B))
n_impl_a_b:
In [7]:
AimplB = n_impl_a_b.operands[0]
AimplB:
In [8]:
n_impl_a_b.evaluation()
In [9]:
contradiction = n_impl_a_b.derive_contradiction(assumptions=[B, Not(Implies(A,B))])
contradiction: ,  ⊢  
In [10]:
B_impl_F = contradiction.as_implication(B)
B_impl_F:  ⊢  
In [11]:
B_impl_F.derive_via_contradiction()
In [12]:
Implies(B, A).prove()
negated_reflex may now be readily provable (assuming required theorems are usable).  Simply execute "%qed".
In [13]:
%qed
proveit.logic.booleans.implication.negated_reflex has been proven.
Out[13]:
 step typerequirementsstatement
0generalization1  ⊢  
1instantiation2, 3  ⊢  
  : , :
2theorem  ⊢  
 proveit.logic.booleans.implication.untrue_antecedent_implication
3instantiation4, 5  ⊢  
  :
4theorem  ⊢  
 proveit.logic.booleans.implication.not_true_via_contradiction
5deduction6  ⊢  
6instantiation7, 8, 9,  ⊢  
  :
7theorem  ⊢  
 proveit.logic.booleans.negation.negation_contradiction
8deduction10  ⊢  
9assumption  ⊢  
10assumption  ⊢