logo
In [1]:
import proveit
from proveit import A
from proveit.logic import TRUE, FALSE, Implies, Not, Equals
from proveit.logic.booleans  import true_axiom
from proveit.logic.booleans.implication import false_antecedent_implication
from proveit.logic.booleans.negation  import not_t
theory = proveit.Theory() # the theorem's theory
In [2]:
%proving double_negation_elim_lemma
With these allowed/disallowed theorem/theory presumptions (e.g., to avoid circular dependencies), we begin our proof of
double_negation_elim_lemma:
(see dependencies)

Use the above theorem to perform proof-by-cases. Start with the $A=\top$ case.

In [3]:
true_axiom
In [4]:
true_axiom.as_implication(Not(Not(TRUE)))

Now for the $A=\bot$ case.

In [5]:
Not(Not(FALSE)).disprove()
In [6]:
Implies(Not(Not(FALSE)), FALSE).prove()

We will now be able to prove our theorem by cases.

In [7]:
%qed
proveit.logic.booleans.negation.double_negation_elim_lemma has been proven.