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

Prove $A$ assuming $\bot$ via deriving a contradiction.

In [3]:
F_assuming_F = FALSE.prove(assumptions=[FALSE])
F_assuming_F:  ⊢  
In [4]:
not_a_impl_F = F_assuming_F.as_implication(Not(A))
not_a_impl_F:  ⊢  
In [5]:
A_via_contradiction = not_a_impl_F.derive_via_contradiction(assumptions=[in_bool(A)])
A_via_contradiction: ,  ⊢  

Now we can derive $\bot \Rightarrow A$ via Deduction.

In [6]:
A_via_contradiction.as_implication(FALSE)
In [7]:
%qed
proveit.logic.booleans.implication.false_antecedent_implication has been proven.
Out[7]:
 step typerequirementsstatement
0generalization1  ⊢  
1deduction2  ⊢  
2instantiation3, 4, 5,  ⊢  
  :
3axiom  ⊢  
 proveit.logic.booleans.implication.affirmation_via_contradiction
4assumption  ⊢  
5deduction6  ⊢  
6assumption  ⊢