latte-prelude.classic

The axioms of classical logic, and basic derived proof rules.

By convention, all the imports from this namespace must be done in a qualified way, i.e. favor classic/not-not-impl instead of the unqualifed not-not-impl.

excluded-middle-ax

(excluded-middle-ax [A :type])
(or A (not A))

Axiom: The law of excluded middle for classical logic.

This axiom can be assumed for classical (sometimes called “non-constructive”) reasoning.

not-impl-or-intro

(not-impl-or-intro [A :type] [B :type])
(==> (==> (not A) B) (or A B))

Theorem: An alternative elimination rule for disjunction.

Remark: this introduction is only provable in classical logic.

not-not

(not-not [A :type])
(<=> A (not (not A)))

Theorem: The double-negation law of classical logic.

not-not-impl

(not-not-impl [A :type])
(==> (not (not A)) A)

Theorem: The double-negation law of classical logic, obtained from the axiom of the excluded middle (the only-if part of double negation).

This can be seen as an elimination rule for ¬¬ (not-not) propositions.