From a wff and its negation, anything is true. Theorem *2.21 of
[WhiteheadRussell] p. 104. Also
called the Duns Scotus law. (Contributed
by NM, 5-Aug-1993.) (Proof shortened by Wolf Lammen, 14-Sep-2012.)

Deduction converting double-negation into the original wff, aka the
double negation rule. A translation of natural deduction rule
-C, => ; see natded21573. This is
definition NNC in [Pfenning] p. 17.
This rule is valid in classical
logic (which MPE uses), but not intuitionistic logic. (Contributed by
DAW, 8-Feb-2017.)

The rule of modus tollens. The rule says, "if is not true, and
implies
, then must also be not
true." Modus
tollens is short for "modus tollendo tollens," a Latin phrase
that means
"the mood that by denying affirms" [Sanford] p. 39. It is also called
denying the consequent. Modus tollens is closely related to modus
ponens ax-mp8. (Contributed by NM, 19-Aug-1993.) (Proof
shortened by
Wolf Lammen, 11-Sep-2013.)

Peirce's axiom. This odd-looking theorem is the "difference" between
an
intuitionistic system of propositional calculus and a classical system and
is not accepted by intuitionists. When Peirce's axiom is added to an
intuitionistic system, the system becomes equivalent to our classical
system ax-15 through ax-37. A curious fact about this theorem is
that
it requires ax-37 for its proof even though the result has no
negation
connectives in it. (Contributed by NM, 5-Aug-1993.) (Proof shortened by
Wolf Lammen, 9-Oct-2012.)

The Inversion Axiom of the infinite-valued sentential logic (L-infinity)
of Lukasiewicz. Using dfor2401, we can see that this essentially
expresses "disjunction commutes." Theorem *2.69 of [WhiteheadRussell]
p. 108. (Contributed by NM, 12-Aug-2004.)

The definition df-bi178 in this section is our first definition, which
introduces and defines the biconditional connective . We define a wff
of the form as an abbreviation for
.

Unlike most traditional developments, we have chosen not to have a separate
symbol such as "Df." to mean "is defined as." Instead,
we will later use the
biconditional connective for this purpose (df-or360
is its first use), as it
allows us to use logic to manipulate definitions directly. This greatly
simplifies many proofs since it eliminates the need for a separate mechanism
for introducing and eliminating definitions.

The definition df-bi178 in this section is our first definition, which
introduces and defines the biconditional connective . We define a
wff of the form as an abbreviation for
.

Unlike most traditional developments, we have chosen not to have a
separate symbol such as "Df." to mean "is defined as."
Instead, we will
later use the biconditional connective for this purpose (df-or360
is its
first use), as it allows us to use logic to manipulate definitions
directly. This greatly simplifies many proofs since it eliminates the
need for a separate mechanism for introducing and eliminating
definitions. Of course, we cannot use this mechanism to define the
biconditional itself, since it hasn't been introduced yet. Instead, we
use a more general form of definition, described as follows.

In its most general form, a definition is simply an assertion that
introduces a new symbol (or a new combination of existing symbols, as in
df-3an938) that is eliminable and does not strengthen
the existing
language. The latter requirement means that the set of provable
statements not containing the new symbol (or new combination) should
remain exactly the same after the definition is introduced. Our
definition of the biconditional may look unusual compared to most
definitions, but it strictly satisfies these requirements.

The justification for our definition is that if we mechanically replace
(the definiendum i.e. the thing being
defined) with
(the definiens i.e. the
defining expression) in the definition, the definition becomes the
previously proved theorem bijust176. It is impossible to use df-bi178
to
prove any statement expressed in the original language that can't be
proved from the original axioms, because if we simply replace each
instance of df-bi178 in the proof with the corresponding bijust176 instance,
we will end up with a proof from the original axioms.

Note that from Metamath's point of view, a definition is just another
axiom - i.e. an assertion we claim to be true - but from our high level
point of view, we are not strengthening the language. To indicate this
fact, we prefix definition labels with "df-" instead of
"ax-". (This
prefixing is an informal convention that means nothing to the Metamath
proof verifier; it is just a naming convention for human readability.)

See dfbi1185, dfbi2610, and dfbi3864
for theorems suggesting typical
textbook definitions of , showing that our definition has the
properties we expect. Theorem dfbi1185 is particularly useful if we want
to eliminate from an expression to convert it to primitives.
Theorem dfbi611 shows this definition rewritten in an
abbreviated form
after conjunction is introduced, for easier understanding.

Contrast with
(df-or360), (wi4), (df-nan1294),
and (df-xor1311) . In some sense
returns true if two
truth values are equal; (df-cleq2394) returns true if two classes
are equal. (Contributed by NM, 5-Aug-1993.)

This proof of dfbi1185, discovered by Gregory Bush on 8-Mar-2004, has
several curious properties. First, it has only 17 steps directly from the
axioms and df-bi178, compared to over 800 steps were the proof of
dfbi1185
expanded into axioms. Second, step 2 demands only the property of
"true";
any axiom (or theorem) could be used. It might be thought, therefore,
that it is in some sense redundant, but in fact no proof is shorter than
this (measured by number of steps). Third, it illustrates how
intermediate steps can "blow up" in size even in short proofs.
Fourth,
the compressed proof is only 182 bytes (or 17 bytes in D-proof notation),
but the generated web page is over 200kB with intermediate steps that are
essentially incomprehensible to humans (other than Gregory Bush). If
there were an obfuscated code contest for proofs, this would be a
contender. This "blowing up" and incomprehensibility of the
intermediate
steps vividly demonstrate the advantages of using many layered
intermediate theorems, since each theorem is easier to understand.
(Contributed by Gregory Bush, 10-Mar-2004.) (New usage is discouraged.)
(Proof modification is discouraged.)