| Metamath
Proof Explorer Theorem List (p. 382 of 507) | < Previous Next > | |
| Bad symbols? Try the
GIF version. |
||
|
Mirrors > Metamath Home Page > MPE Home Page > Theorem List Contents > Recent Proofs This page: Page List |
||
| Color key: | (1-31307) |
(31308-32830) |
(32831-50693) |
| Type | Label | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Statement | ||||||||||||||||||||||||
| Theorem | pibp21 38101* | Property P000021 of pi-base. The class of weakly countably compact topologies, or limit point compact topologies. A space 𝑋 is weakly countably compact if every infinite subset of 𝑋 has a limit point. (Contributed by ML, 9-Dec-2020.) | ||||||||||||||||||||||
| ⊢ 𝑋 = ∪ 𝐽 & ⊢ 𝑊 = {𝑥 ∈ Top ∣ ∀𝑦 ∈ (𝒫 ∪ 𝑥 ∖ Fin)∃𝑧 ∈ ∪ 𝑥𝑧 ∈ ((limPt‘𝑥)‘𝑦)} ⇒ ⊢ (𝐽 ∈ 𝑊 ↔ (𝐽 ∈ Top ∧ ∀𝑦 ∈ (𝒫 𝑋 ∖ Fin)∃𝑧 ∈ 𝑋 𝑧 ∈ ((limPt‘𝐽)‘𝑦))) | ||||||||||||||||||||||||
| Theorem | pibt1 38102* | Theorem T000001 of pi-base. A compact topology is also countably compact. See pibp16 38099 and pibp19 38100 for the definitions of the relevant properties. (Contributed by ML, 8-Dec-2020.) | ||||||||||||||||||||||
| ⊢ 𝐶 = {𝑥 ∈ Top ∣ ∀𝑦 ∈ 𝒫 𝑥((∪ 𝑥 = ∪ 𝑦 ∧ 𝑦 ≼ ω) → ∃𝑧 ∈ (𝒫 𝑦 ∩ Fin)∪ 𝑥 = ∪ 𝑧)} ⇒ ⊢ (𝐽 ∈ Comp → 𝐽 ∈ 𝐶) | ||||||||||||||||||||||||
| Theorem | pibt2 38103* | Theorem T000002 of pi-base, a countably compact topology is also weakly countably compact. See pibp19 38100 and pibp21 38101 for the definitions of the relevant properties. This proof uses the axiom of choice. (Contributed by ML, 30-Mar-2021.) | ||||||||||||||||||||||
| ⊢ 𝑋 = ∪ 𝐽 & ⊢ 𝐶 = {𝑥 ∈ Top ∣ ∀𝑦 ∈ 𝒫 𝑥((∪ 𝑥 = ∪ 𝑦 ∧ 𝑦 ≼ ω) → ∃𝑧 ∈ (𝒫 𝑦 ∩ Fin)∪ 𝑥 = ∪ 𝑧)} & ⊢ 𝑊 = {𝑥 ∈ Top ∣ ∀𝑦 ∈ (𝒫 ∪ 𝑥 ∖ Fin)∃𝑧 ∈ ∪ 𝑥𝑧 ∈ ((limPt‘𝑥)‘𝑦)} ⇒ ⊢ (𝐽 ∈ 𝐶 → 𝐽 ∈ 𝑊) | ||||||||||||||||||||||||
| Theorem | wl-section-prop 38104 |
Intuitionistic logic is now developed separately, so we need not first
focus on intuitionally valid axioms ax-1 6 and
ax-2 7
any longer.
Alternatively, I start from Jan Lukasiewicz's axiom system here, i.e., ax-mp 5, ax-luk1 38105, ax-luk2 38106 and ax-luk3 38107. I rather copy this system than use luk-1 1688 to luk-3 1690, since the latter are theorems, while we need axioms here. (Contributed by Wolf Lammen, 23-Feb-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ 𝜑 ⇒ ⊢ 𝜑 | ||||||||||||||||||||||||
| Axiom | ax-luk1 38105 |
1 of 3 axioms for propositional calculus due to Lukasiewicz. Copy of
luk-1 1688 and imim1 84, but introduced as an axiom. It
focuses on a basic
property of a valid implication, namely that the consequent has to be true
whenever the antecedent is. So if 𝜑 and 𝜓 are somehow
parametrized expressions, then 𝜑 → 𝜓 states that 𝜑 strengthen
𝜓, in that 𝜑 holds only for a (often
proper) subset of those
parameters making 𝜓 true. We easily accept, that when
𝜓 is
stronger than 𝜒 and, at the same time 𝜑 is
stronger than
𝜓, then 𝜑 must be stronger than
𝜒.
This transitivity is
expressed in this axiom.
A particular result of this strengthening property comes into play if the antecedent holds unconditionally. Then the consequent must hold unconditionally as well. This specialization is the foundational idea behind logical conclusion. Such conclusion is best expressed in so-called immediate versions of this axiom like imim1i 64 or syl 18. Note that these forms are weaker replacements (i.e. just frequent specialization) of the closed form presented here, hence a mere convenience. We can identify in this axiom up to three antecedents, followed by a consequent. The number of antecedents is not really fixed; the fewer we are willing to "see", the more complex the consequent grows. On the other side, since 𝜒 is a variable capable of assuming an implication itself, we might find even more antecedents after some substitution of 𝜒. This shows that the ideas of antecedent and consequent in expressions like this depends on, and can adapt to, our current interpretation of the whole expression. In this axiom, up to two antecedents happen to be of complex nature themselves, i.e. are an embedded implication. Logically, this axiom is a compact notion of simpler expressions, which I will later coin implication chains. Herein all antecedents and the consequent appear as simple variables, or their negation. Any propositional expression is equivalent to a set of such chains. This axiom, for example, is dissected into following chains, from which it can be recovered losslessly: (𝜓 → (𝜒 → (𝜑 → 𝜒))); (¬ 𝜑 → (𝜒 → (𝜑 → 𝜒))); (𝜓 → (¬ 𝜓 → (𝜑 → 𝜒))); (¬ 𝜑 → (¬ 𝜓 → (𝜑 → 𝜒))). (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) | ||||||||||||||||||||||
| ⊢ ((𝜑 → 𝜓) → ((𝜓 → 𝜒) → (𝜑 → 𝜒))) | ||||||||||||||||||||||||
| Axiom | ax-luk2 38106 |
2 of 3 axioms for propositional calculus due to Lukasiewicz. Copy of
luk-2 1689 or pm2.18 129, but introduced as an axiom. The core idea
behind
this axiom is, that if something can be implied from both an antecedent,
and separately from its negation, then the antecedent is irrelevant to the
consequent, and can safely be dropped. This is perhaps better seen from
the following slightly extended version (related to pm2.65 195):
((𝜑 → 𝜑) → ((¬ 𝜑 → 𝜑) → 𝜑)). (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) | ||||||||||||||||||||||
| ⊢ ((¬ 𝜑 → 𝜑) → 𝜑) | ||||||||||||||||||||||||
| Axiom | ax-luk3 38107 |
3 of 3 axioms for propositional calculus due to Lukasiewicz. Copy of
luk-3 1690 and pm2.24 125, but introduced as an axiom.
One might think that the similar pm2.21 124 (¬ 𝜑 → (𝜑 → 𝜓)) is
a valid replacement for this axiom. But this is not true, ax-3 8 is not
derivable from this modification.
This can be shown by designing carefully operators ¬ and → on a
finite set of primitive statements. In propositional logic such
statements are ⊤ and ⊥, but we can assume more and other
primitives in our universe of statements. So we denote our primitive
statements as phi0 , phi1 and phi2. The actual meaning of the statements
are not important in this context, it rather counts how they behave under
our operations ¬ and →, and which of them we assume to hold
unconditionally (phi1, phi2). For our disproving model, I give that
information in tabular form below. The interested reader may check by
hand, that all possible interpretations of ax-mp 5, ax-luk1 38105, ax-luk2 38106
and pm2.21 124 result in phi1 or phi2, meaning they always hold. But for
wl-luk-ax3 38119 we can find a counter example resulting in phi0, not a
statement always true.
The verification of a particular set of axioms in a given model is tedious
and error prone, so I wrote a computer program, first checking this for
me, and second, hunting for a counter example. Here is the result, after
9165 fruitlessly computer generated models:
ax-3 fails for phi2, phi2 number of statements: 3 always true phi1 phi2 Negation is defined as ----------------------------------------------------------------------
Implication is defined as ----------------------------------------------------------------------
(Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → (¬ 𝜑 → 𝜓)) | ||||||||||||||||||||||||
| Theorem | wl-section-boot 38108 | In this section, I provide the first steps needed for convenient proving. The presented theorems follow no common concept other than being useful in themselves, and apt to rederive ax-1 6, ax-2 7 and ax-3 8. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ 𝜑 ⇒ ⊢ 𝜑 | ||||||||||||||||||||||||
| Theorem | wl-luk-imim1i 38109 | Inference adding common consequents in an implication, thereby interchanging the original antecedent and consequent. Copy of imim1i 64 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) | ||||||||||||||||||||||
| ⊢ (𝜑 → 𝜓) ⇒ ⊢ ((𝜓 → 𝜒) → (𝜑 → 𝜒)) | ||||||||||||||||||||||||
| Theorem | wl-luk-syl 38110 | An inference version of the transitive laws for implication luk-1 1688. Copy of syl 18 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → 𝜓) & ⊢ (𝜓 → 𝜒) ⇒ ⊢ (𝜑 → 𝜒) | ||||||||||||||||||||||||
| Theorem | wl-luk-imtrid 38111 | A syllogism rule of inference. The first premise is used to replace the second antecedent of the second premise. Copy of syl5 35 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → 𝜓) & ⊢ (𝜒 → (𝜓 → 𝜃)) ⇒ ⊢ (𝜒 → (𝜑 → 𝜃)) | ||||||||||||||||||||||||
| Theorem | wl-luk-pm2.18d 38112 | Deduction based on reductio ad absurdum. Copy of pm2.18d 128 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → (¬ 𝜓 → 𝜓)) ⇒ ⊢ (𝜑 → 𝜓) | ||||||||||||||||||||||||
| Theorem | wl-luk-con4i 38113 | Inference rule. Copy of con4i 115 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (¬ 𝜑 → ¬ 𝜓) ⇒ ⊢ (𝜓 → 𝜑) | ||||||||||||||||||||||||
| Theorem | wl-luk-pm2.24i 38114 | Inference rule. Copy of pm2.24i 151 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ 𝜑 ⇒ ⊢ (¬ 𝜑 → 𝜓) | ||||||||||||||||||||||||
| Theorem | wl-luk-a1i 38115 | Inference rule. Copy of a1i 11 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ 𝜑 ⇒ ⊢ (𝜓 → 𝜑) | ||||||||||||||||||||||||
| Theorem | wl-luk-mpi 38116 | A nested modus ponens inference. Copy of mpi 21 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ 𝜓 & ⊢ (𝜑 → (𝜓 → 𝜒)) ⇒ ⊢ (𝜑 → 𝜒) | ||||||||||||||||||||||||
| Theorem | wl-luk-imim2i 38117 | Inference adding common antecedents in an implication. Copy of imim2i 17 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → 𝜓) ⇒ ⊢ ((𝜒 → 𝜑) → (𝜒 → 𝜓)) | ||||||||||||||||||||||||
| Theorem | wl-luk-imtrdi 38118 | A syllogism rule of inference. The second premise is used to replace the consequent of the first premise. Copy of syl6 36 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → (𝜓 → 𝜒)) & ⊢ (𝜒 → 𝜃) ⇒ ⊢ (𝜑 → (𝜓 → 𝜃)) | ||||||||||||||||||||||||
| Theorem | wl-luk-ax3 38119 | ax-3 8 proved from Lukasiewicz's axioms. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ ((¬ 𝜑 → ¬ 𝜓) → (𝜓 → 𝜑)) | ||||||||||||||||||||||||
| Theorem | wl-luk-ax1 38120 | ax-1 6 proved from Lukasiewicz's axioms. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → (𝜓 → 𝜑)) | ||||||||||||||||||||||||
| Theorem | wl-luk-pm2.27 38121 | This theorem, called "Assertion", can be thought of as closed form of modus ponens ax-mp 5. Theorem *2.27 of [WhiteheadRussell] p. 104. Copy of pm2.27 43 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → ((𝜑 → 𝜓) → 𝜓)) | ||||||||||||||||||||||||
| Theorem | wl-luk-com12 38122 | Inference that swaps (commutes) antecedents in an implication. Copy of com12 33 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → (𝜓 → 𝜒)) ⇒ ⊢ (𝜓 → (𝜑 → 𝜒)) | ||||||||||||||||||||||||
| Theorem | wl-luk-pm2.21 38123 | From a wff and its negation, anything follows. Theorem *2.21 of [WhiteheadRussell] p. 104. Also called the Duns Scotus law. Copy of pm2.21 124 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (¬ 𝜑 → (𝜑 → 𝜓)) | ||||||||||||||||||||||||
| Theorem | wl-luk-con1i 38124 | A contraposition inference. Copy of con1i 148 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (¬ 𝜑 → 𝜓) ⇒ ⊢ (¬ 𝜓 → 𝜑) | ||||||||||||||||||||||||
| Theorem | wl-luk-ja 38125 | Inference joining the antecedents of two premises. Copy of ja 188 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (¬ 𝜑 → 𝜒) & ⊢ (𝜓 → 𝜒) ⇒ ⊢ ((𝜑 → 𝜓) → 𝜒) | ||||||||||||||||||||||||
| Theorem | wl-luk-imim2 38126 | A closed form of syllogism (see syl 18). Theorem *2.05 of [WhiteheadRussell] p. 100. Copy of imim2 59 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ ((𝜑 → 𝜓) → ((𝜒 → 𝜑) → (𝜒 → 𝜓))) | ||||||||||||||||||||||||
| Theorem | wl-luk-a1d 38127 | Deduction introducing an embedded antecedent. Copy of imim2 59 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → 𝜓) ⇒ ⊢ (𝜑 → (𝜒 → 𝜓)) | ||||||||||||||||||||||||
| Theorem | wl-luk-ax2 38128 | ax-2 7 proved from Lukasiewicz's axioms. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ ((𝜑 → (𝜓 → 𝜒)) → ((𝜑 → 𝜓) → (𝜑 → 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-luk-id 38129 | Principle of identity. Theorem *2.08 of [WhiteheadRussell] p. 101. Copy of id 23 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → 𝜑) | ||||||||||||||||||||||||
| Theorem | wl-luk-notnotr 38130 | Converse of double negation. Theorem *2.14 of [WhiteheadRussell] p. 102. In classical logic (our logic) this is always true. In intuitionistic logic this is not always true; in intuitionistic logic, when this is true for some 𝜑, then 𝜑 is stable. Copy of notnotr 131 with a different proof. (Contributed by Wolf Lammen, 17-Dec-2018.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (¬ ¬ 𝜑 → 𝜑) | ||||||||||||||||||||||||
| Theorem | wl-luk-pm2.04 38131 | Swap antecedents. Theorem *2.04 of [WhiteheadRussell] p. 100. This was the third axiom in Frege's logic system, specifically Proposition 8 of [Frege1879] p. 35. Copy of pm2.04 91 with a different proof. (Contributed by Wolf Lammen, 7-Jul-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ ((𝜑 → (𝜓 → 𝜒)) → (𝜓 → (𝜑 → 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-section-impchain 38132 |
An implication like (𝜓 → 𝜑) with one antecedent can easily be
extended by prepending more and more antecedents, as in
(𝜒
→ (𝜓 → 𝜑)) or (𝜃 → (𝜒 → (𝜓 → 𝜑))). I
call these expressions implication chains, and the number of antecedents
(number of nodes minus one) denotes their length. A given length often
marks just a required minimum value, since the consequent 𝜑 itself
may represent an implication, or even an implication chain, such hiding
part of the whole chain. As an extension, it is useful to consider a
single variable 𝜑 as a degenerate implication chain of
length zero.
Implication chains play a particular role in logic, as all propositional expressions turn out to be convertible to one or more implication chains, their nodes as simple as a variable, or its negation. So there is good reason to focus on implication chains as a sort of normalized expressions, and build some general theorems around them, with proofs using recursive patterns. This allows for theorems referring to longer and longer implication chains in an automated way. The theorem names in this section contain the text fragment 'impchain' to point out their relevance to implication chains, followed by a number indicating the (minimal) length of the longest chain involved. (Contributed by Wolf Lammen, 6-Jul-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ 𝜑 ⇒ ⊢ 𝜑 | ||||||||||||||||||||||||
| Theorem | wl-impchain-mp-x 38133 | This series of theorems provide a means of exchanging the consequent of an implication chain via a simple implication. In the main part, Theorems ax-mp 5, syl 18, syl6 36, syl8 77 form the beginning of this series. These theorems are replicated here, but with proofs that aim at a recursive scheme, allowing to base a proof on that of the previous one in the series. (Contributed by Wolf Lammen, 17-Nov-2019.) | ||||||||||||||||||||||
| ⊢ ⊤ | ||||||||||||||||||||||||
| Theorem | wl-impchain-mp-0 38134 |
This theorem is the start of a proof recursion scheme where we replace
the consequent of an implication chain. The number '0' in the theorem
name indicates that the modified chain has no antecedents.
This theorem is in fact a copy of ax-mp 5, and is repeated here to emphasize the recursion using similar theorem names. (Contributed by Wolf Lammen, 6-Jul-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ 𝜓 & ⊢ (𝜓 → 𝜑) ⇒ ⊢ 𝜑 | ||||||||||||||||||||||||
| Theorem | wl-impchain-mp-1 38135 | This theorem is in fact a copy of wl-luk-syl 38110, and repeated here to demonstrate a recursive proof scheme. The number '1' in the theorem name indicates that a chain of length 1 is modified. (Contributed by Wolf Lammen, 6-Jul-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜒 → 𝜓) & ⊢ (𝜓 → 𝜑) ⇒ ⊢ (𝜒 → 𝜑) | ||||||||||||||||||||||||
| Theorem | wl-impchain-mp-2 38136 | This theorem is in fact a copy of wl-luk-imtrdi 38118, and repeated here to demonstrate a recursive proof scheme. The number '2' in the theorem name indicates that a chain of length 2 is modified. (Contributed by Wolf Lammen, 6-Jul-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜃 → (𝜒 → 𝜓)) & ⊢ (𝜓 → 𝜑) ⇒ ⊢ (𝜃 → (𝜒 → 𝜑)) | ||||||||||||||||||||||||
| Theorem | wl-impchain-com-1.x 38137 |
It is often convenient to have the antecedent under focus in first
position, so we can apply immediate theorem forms (as opposed to
deduction, tautology form). This series of theorems swaps the first with
the last antecedent in an implication chain. This kind of swapping is
self-inverse, whence we prefer it over, say, rotating theorems. A
consequent can hide a tail of a longer chain, so theorems of this series
appear as swapping a pair of antecedents with fixed offsets. This form of
swapping antecedents is flexible enough to allow for any permutation of
antecedents in an implication chain.
The first elements of this series correspond to com12 33, com13 89, com14 97 and com15 102 in the main part. The proofs of this series aim at automated proving using a simple recursive scheme. It employs the previous theorem in the series along with a sample from the wl-impchain-mp-x 38133 series developed before. (Contributed by Wolf Lammen, 17-Nov-2019.) | ||||||||||||||||||||||
| ⊢ ⊤ | ||||||||||||||||||||||||
| Theorem | wl-impchain-com-1.1 38138 |
A degenerate form of antecedent swapping. The number '1' in the theorem
name indicates that it handles a chain of length 1.
Since there is just one antecedent in the chain, there is nothing to swap. Nondegenerated forms begin with wl-impchain-com-1.2 38139, for more see there. (Contributed by Wolf Lammen, 7-Jul-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜓 → 𝜑) ⇒ ⊢ (𝜓 → 𝜑) | ||||||||||||||||||||||||
| Theorem | wl-impchain-com-1.2 38139 |
This theorem is in fact a copy of wl-luk-com12 38122, and repeated here to
demonstrate a simple proof scheme. The number '2' in the theorem name
indicates that a chain of length 2 is modified.
See wl-impchain-com-1.x 38137 for more information how this proof is generated. (Contributed by Wolf Lammen, 7-Jul-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜒 → (𝜓 → 𝜑)) ⇒ ⊢ (𝜓 → (𝜒 → 𝜑)) | ||||||||||||||||||||||||
| Theorem | wl-impchain-com-1.3 38140 |
This theorem is in fact a copy of com13 89, and repeated here to
demonstrate a simple proof scheme. The number '3' in the theorem name
indicates that a chain of length 3 is modified.
See wl-impchain-com-1.x 38137 for more information how this proof is generated. (Contributed by Wolf Lammen, 7-Jul-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜃 → (𝜒 → (𝜓 → 𝜑))) ⇒ ⊢ (𝜓 → (𝜒 → (𝜃 → 𝜑))) | ||||||||||||||||||||||||
| Theorem | wl-impchain-com-1.4 38141 |
This theorem is in fact a copy of com14 97, and repeated here to
demonstrate a simple proof scheme. The number '4' in the theorem name
indicates that a chain of length 4 is modified.
See wl-impchain-com-1.x 38137 for more information how this proof is generated. (Contributed by Wolf Lammen, 7-Jul-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜂 → (𝜃 → (𝜒 → (𝜓 → 𝜑)))) ⇒ ⊢ (𝜓 → (𝜃 → (𝜒 → (𝜂 → 𝜑)))) | ||||||||||||||||||||||||
| Theorem | wl-impchain-com-n.m 38142 |
This series of theorems allow swapping any two antecedents in an
implication chain. The theorem names follow a pattern wl-impchain-com-n.m
with integral numbers n < m, that swaps the m-th antecedent with n-th
one
in an implication chain. It is sufficient to restrict the length of the
chain to m, too, since the consequent can be assumed to be the tail right
of the m-th antecedent of any arbitrary sized implication chain. We
further assume n > 1, since the wl-impchain-com-1.x 38137 series already
covers the special case n = 1.
Being able to swap any two antecedents in an implication chain lays the foundation of permuting its antecedents arbitrarily. The proofs of this series aim at automated proofing using a simple scheme. Any instance of this series is a triple step of swapping the first and n-th antecedent, then the first and the m-th, then the first and the n-th antecedent again. Each of these steps is an instance of the wl-impchain-com-1.x 38137 series. (Contributed by Wolf Lammen, 17-Nov-2019.) | ||||||||||||||||||||||
| ⊢ ⊤ | ||||||||||||||||||||||||
| Theorem | wl-impchain-com-2.3 38143 | This theorem is in fact a copy of com23 87. It starts a series of theorems named after wl-impchain-com-n.m 38142. For more information see there. (Contributed by Wolf Lammen, 12-Nov-2019.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜃 → (𝜒 → (𝜓 → 𝜑))) ⇒ ⊢ (𝜃 → (𝜓 → (𝜒 → 𝜑))) | ||||||||||||||||||||||||
| Theorem | wl-impchain-com-2.4 38144 | This theorem is in fact a copy of com24 96. It is another instantiation of theorems named after wl-impchain-com-n.m 38142. For more information see there. (Contributed by Wolf Lammen, 17-Nov-2019.) (Proof modification is discouraged.) (New usage is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜂 → (𝜃 → (𝜒 → (𝜓 → 𝜑)))) ⇒ ⊢ (𝜂 → (𝜓 → (𝜒 → (𝜃 → 𝜑)))) | ||||||||||||||||||||||||
| Theorem | wl-impchain-com-3.2.1 38145 | This theorem is in fact a copy of com3r 88. The proof is an example of how to arrive at arbitrary permutations of antecedents, using only swapping theorems. The recursion principle is to first swap the correct antecedent to the position just before the consequent, and then employ a theorem handling an implication chain of length one less to reorder the others. (Contributed by Wolf Lammen, 17-Nov-2019.) (Proof modification is discouraged.) (New usage is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜃 → (𝜒 → (𝜓 → 𝜑))) ⇒ ⊢ (𝜓 → (𝜃 → (𝜒 → 𝜑))) | ||||||||||||||||||||||||
| Theorem | wl-impchain-a1-x 38146 |
If an implication chain is assumed (hypothesis) or proven (theorem) to
hold, then we may add any extra antecedent to it, without changing its
truth. This is expressed in its simplest form in wl-luk-a1i 38115, that
allows prepending an arbitrary antecedent to an implication chain. Using
our antecedent swapping theorems described in wl-impchain-com-n.m 38142, we
may then move such a prepended antecedent to any desired location within
all antecedents. The first series of theorems of this kind adds a single
antecedent somewhere to an implication chain. The appended number in the
theorem name indicates its position within all antecedents, 1 denoting the
head position. A second theorem series extends this idea to multiple
additions (TODO).
Adding antecedents to an implication chain usually weakens their universality. The consequent afterwards depends on more conditions than before, which renders the implication chain less versatile. So you find this proof technique mostly when you adjust a chain to a hypothesis of a rule. A common case are syllogisms merging two implication chains into one. The first elements of the first series correspond to a1i 11, a1d 26 and a1dd 51 in the main part. The proofs of this series aim at automated proving using a simple recursive scheme. It employs the previous theorem in the series along with a sample from the wl-impchain-com-1.x 38137 series developed before. (Contributed by Wolf Lammen, 20-Jun-2020.) | ||||||||||||||||||||||
| ⊢ ⊤ | ||||||||||||||||||||||||
| Theorem | wl-impchain-a1-1 38147 | Inference rule, a copy of a1i 11. Head start of a recursive proof pattern. (Contributed by Wolf Lammen, 20-Jun-2020.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ 𝜑 ⇒ ⊢ (𝜓 → 𝜑) | ||||||||||||||||||||||||
| Theorem | wl-impchain-a1-2 38148 | Inference rule, a copy of a1d 26. First recursive proof based on the previous instance. (Contributed by Wolf Lammen, 20-Jun-2020.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → 𝜓) ⇒ ⊢ (𝜑 → (𝜒 → 𝜓)) | ||||||||||||||||||||||||
| Theorem | wl-impchain-a1-3 38149 | Inference rule, a copy of a1dd 51. A recursive proof depending on previous instances, and demonstrating the proof pattern. (Contributed by Wolf Lammen, 20-Jun-2020.) (New usage is discouraged.) (Proof modification is discouraged.) | ||||||||||||||||||||||
| ⊢ (𝜑 → (𝜓 → 𝜒)) ⇒ ⊢ (𝜑 → (𝜓 → (𝜃 → 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-ifp-ncond1 38150 | If one case of an if- condition is false, the other automatically follows. (Contributed by Wolf Lammen, 21-Jul-2024.) | ||||||||||||||||||||||
| ⊢ (¬ 𝜓 → (if-(𝜑, 𝜓, 𝜒) ↔ (¬ 𝜑 ∧ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-ifp-ncond2 38151 | If one case of an if- condition is false, the other automatically follows. (Contributed by Wolf Lammen, 21-Jul-2024.) | ||||||||||||||||||||||
| ⊢ (¬ 𝜒 → (if-(𝜑, 𝜓, 𝜒) ↔ (𝜑 ∧ 𝜓))) | ||||||||||||||||||||||||
| Theorem | wl-ifpimpr 38152 | If one case of an if- condition is a consequence of the other, the expression in df-ifp 1079 can be shortened. (Contributed by Wolf Lammen, 12-Jun-2024.) | ||||||||||||||||||||||
| ⊢ ((𝜒 → 𝜓) → (if-(𝜑, 𝜓, 𝜒) ↔ ((𝜑 ∧ 𝜓) ∨ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-ifp4impr 38153 | If one case of an if- condition is a consequence of the other, the expression in dfifp4 1082 can be shortened. (Contributed by Wolf Lammen, 18-Jun-2024.) | ||||||||||||||||||||||
| ⊢ ((𝜒 → 𝜓) → (if-(𝜑, 𝜓, 𝜒) ↔ ((𝜑 ∨ 𝜒) ∧ 𝜓))) | ||||||||||||||||||||||||
| Theorem | wl-df-3xor 38154 |
Alternative definition of whad 1623 based on hadifp 1637. See df-had 1624 to
learn how it is currently introduced. The only use case so far is being a
binary addition primitive for df-sad 16534. If inputs are viewed as binary
digits (true is 1, false is 0), the result is what a binary single-bit
addition with carry-in yields in the low bit of their sum.
The core meaning is to check whether an odd number of three inputs are true. The ⊻ operation tests this for two inputs. So, if the first input is true, the two remaining inputs need to amount to an even (or: not an odd) number, else to an odd number. The idea of an odd number of inputs being true carries over to other than 3 inputs by recursion: In an informal notation we depend the case with n+1 inputs, 𝜑 being the additional one, recursively on that of n inputs: "(n+1)-xor" ↔ if-(𝜑, ¬ "n-xor" , "n-xor" ). The base case is "0-xor" being ⊥, because zero inputs never contain an odd number among them. Then we find, after simplifying, in our informal notation: "2-xor" (𝜑, 𝜓) ↔ (𝜑 ⊻ 𝜓) (see wl-2xor 38169). Our definition here follows exactly the above pattern. In microprocessor technology an addition limited to a range (a one-bit range in our case) is called a "wrap-around operation". The name "had", as in df-had 1624, by contrast, is somehow suggestive of a "half adder" instead. Such a circuit, for one, takes two inputs only, no carry-in, and then yields two outputs - both sum and carry. That's why we use "3xor" instead of "had" here. (Contributed by Wolf Lammen, 24-Apr-2024.) | ||||||||||||||||||||||
| ⊢ (hadd(𝜑, 𝜓, 𝜒) ↔ if-(𝜑, ¬ (𝜓 ⊻ 𝜒), (𝜓 ⊻ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-df3xor2 38155 | Alternative definition of wl-df-3xor 38154, using triple exclusive disjunction, or XOR3. You can add more input by appending each one with a ⊻. Copy of hadass 1627. (Contributed by Mario Carneiro, 4-Sep-2016.) df-had redefined. (Revised by Wolf Lammen, 1-May-2024.) | ||||||||||||||||||||||
| ⊢ (hadd(𝜑, 𝜓, 𝜒) ↔ (𝜑 ⊻ (𝜓 ⊻ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-df3xor3 38156 | Alternative form of wl-df3xor2 38155. Copy of df-had 1624. (Contributed by Mario Carneiro, 4-Sep-2016.) df-had redefined. (Revised by Wolf Lammen, 1-May-2024.) | ||||||||||||||||||||||
| ⊢ (hadd(𝜑, 𝜓, 𝜒) ↔ ((𝜑 ⊻ 𝜓) ⊻ 𝜒)) | ||||||||||||||||||||||||
| Theorem | wl-3xortru 38157 | If the first input is true, then triple xor is equivalent to the biconditionality of the other two inputs. (Contributed by Mario Carneiro, 4-Sep-2016.) df-had redefined. (Revised by Wolf Lammen, 24-Apr-2024.) | ||||||||||||||||||||||
| ⊢ (𝜑 → (hadd(𝜑, 𝜓, 𝜒) ↔ ¬ (𝜓 ⊻ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-3xorfal 38158 | If the first input is false, then triple xor is equivalent to the exclusive disjunction of the other two inputs. (Contributed by Mario Carneiro, 4-Sep-2016.) df-had redefined. (Revised by Wolf Lammen, 29-Apr-2024.) | ||||||||||||||||||||||
| ⊢ (¬ 𝜑 → (hadd(𝜑, 𝜓, 𝜒) ↔ (𝜓 ⊻ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-3xorbi 38159 | Triple xor can be replaced with a triple biconditional. Unlike ⊻, you cannot add more inputs by simply stacking up more biconditionals, and still express an "odd number of inputs". (Contributed by Wolf Lammen, 24-Apr-2024.) | ||||||||||||||||||||||
| ⊢ (hadd(𝜑, 𝜓, 𝜒) ↔ (𝜑 ↔ (𝜓 ↔ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-3xorbi2 38160 | Alternative form of wl-3xorbi 38159. (Contributed by Mario Carneiro, 4-Sep-2016.) df-had redefined. (Revised by Wolf Lammen, 24-Apr-2024.) | ||||||||||||||||||||||
| ⊢ (hadd(𝜑, 𝜓, 𝜒) ↔ ((𝜑 ↔ 𝜓) ↔ 𝜒)) | ||||||||||||||||||||||||
| Theorem | wl-3xorbi123d 38161 | Equivalence theorem for triple xor. (Contributed by Mario Carneiro, 4-Sep-2016.) df-had redefined. (Revised by Wolf Lammen, 24-Apr-2024.) | ||||||||||||||||||||||
| ⊢ (𝜑 → (𝜓 ↔ 𝜒)) & ⊢ (𝜑 → (𝜃 ↔ 𝜏)) & ⊢ (𝜑 → (𝜂 ↔ 𝜁)) ⇒ ⊢ (𝜑 → (hadd(𝜓, 𝜃, 𝜂) ↔ hadd(𝜒, 𝜏, 𝜁))) | ||||||||||||||||||||||||
| Theorem | wl-3xorbi123i 38162 | Equivalence theorem for triple xor. Copy of hadbi123i 1626. (Contributed by Mario Carneiro, 4-Sep-2016.) | ||||||||||||||||||||||
| ⊢ (𝜓 ↔ 𝜒) & ⊢ (𝜃 ↔ 𝜏) & ⊢ (𝜂 ↔ 𝜁) ⇒ ⊢ (hadd(𝜓, 𝜃, 𝜂) ↔ hadd(𝜒, 𝜏, 𝜁)) | ||||||||||||||||||||||||
| Theorem | wl-3xorrot 38163 | Rotation law for triple xor. (Contributed by Mario Carneiro, 4-Sep-2016.) df-had redefined. (Revised by Wolf Lammen, 24-Apr-2024.) | ||||||||||||||||||||||
| ⊢ (hadd(𝜑, 𝜓, 𝜒) ↔ hadd(𝜓, 𝜒, 𝜑)) | ||||||||||||||||||||||||
| Theorem | wl-3xorcoma 38164 | Commutative law for triple xor. Copy of hadcoma 1629. (Contributed by Mario Carneiro, 4-Sep-2016.) (Proof shortened by Wolf Lammen, 17-Dec-2023.) | ||||||||||||||||||||||
| ⊢ (hadd(𝜑, 𝜓, 𝜒) ↔ hadd(𝜓, 𝜑, 𝜒)) | ||||||||||||||||||||||||
| Theorem | wl-3xorcomb 38165 | Commutative law for triple xor. (Contributed by Mario Carneiro, 4-Sep-2016.) df-had redefined. (Revised by Wolf Lammen, 24-Apr-2024.) | ||||||||||||||||||||||
| ⊢ (hadd(𝜑, 𝜓, 𝜒) ↔ hadd(𝜑, 𝜒, 𝜓)) | ||||||||||||||||||||||||
| Theorem | wl-3xornot1 38166 | Flipping the first input flips the triple xor. wl-3xorrot 38163 can rotate any input to the front, so flipping any one of them does the same. (Contributed by Wolf Lammen, 1-May-2024.) | ||||||||||||||||||||||
| ⊢ (¬ hadd(𝜑, 𝜓, 𝜒) ↔ hadd(¬ 𝜑, 𝜓, 𝜒)) | ||||||||||||||||||||||||
| Theorem | wl-3xornot 38167 | Triple xor distributes over negation. Copy of hadnot 1632. (Contributed by Mario Carneiro, 4-Sep-2016.) (Proof shortened by Wolf Lammen, 11-Jul-2020.) | ||||||||||||||||||||||
| ⊢ (¬ hadd(𝜑, 𝜓, 𝜒) ↔ hadd(¬ 𝜑, ¬ 𝜓, ¬ 𝜒)) | ||||||||||||||||||||||||
| Theorem | wl-1xor 38168 |
In the recursive scheme
"(n+1)-xor" ↔ if-(𝜑, ¬ "n-xor" , "n-xor" ) we set n = 0 to formally arrive at an expression for "1-xor". The base case "0-xor" is replaced with ⊥, as a sequence of 0 inputs never has an odd number being part of it. (Contributed by Wolf Lammen, 11-May-2024.) | ||||||||||||||||||||||
| ⊢ (if-(𝜓, ¬ ⊥, ⊥) ↔ 𝜓) | ||||||||||||||||||||||||
| Theorem | wl-2xor 38169 |
In the recursive scheme
"(n+1)-xor" ↔ if-(𝜑, ¬ "n-xor" , "n-xor" ) we set n = 1 to formally arrive at an expression for "2-xor". It is based on "1-xor", that is known to be equivalent to its only input (see wl-1xor 38168). (Contributed by Wolf Lammen, 11-May-2024.) | ||||||||||||||||||||||
| ⊢ (if-(𝜑, ¬ 𝜓, 𝜓) ↔ (𝜑 ⊻ 𝜓)) | ||||||||||||||||||||||||
| Theorem | wl-df-3mintru2 38170 |
Alternative definition of wcad 1639. See df-cad 1640 to learn how it is
currently introduced. The only use case so far is being a binary addition
primitive for df-sad 16534. If inputs are viewed as binary digits
(true is
1, false is 0), the result is whether ordinary binary full addition yields
a carry bit. That is what the name df-cad 1640 is derived from: "carry of
an addition". Here we stick with this abbreviated form of our
notation
above, but still use "adder carry" as a shorthand for "at
least 2 out of
3" in text.
The core meaning is to check whether at least two of three inputs are true. So, if the first input is true, at least one of the two remaining must be true, else even both. This theorem is the in-between of "at least 1 out of 3", given by triple disjunction df-3or 1104, and "(at least) 3 out of 3", expressed by triple conjunction df-3an 1105. The notion above can be generalized to other input numbers with other minimum values as follows. Let us introduce informally a logical operation "n-mintru-m" taking n inputs, and requiring at least m of them be true to let the operation itself be true. There now exists a recursive scheme to define it for increasing n, m. We start with the base case n = 0. Here "n-mintru-0" is equivalent to ⊤ (any sequence of inputs contains at least zero true inputs), the other "0-mintru-m" is for any m > 0 equivalent to ⊥, because a sequence of zero inputs never has a positive number of them true. The general case adds a new input 𝜑 to a given sequence of n inputs, and reduces that case for all integers m to that of the smaller sequence by recursion, informally written as: "(n+1)-mintru-(m+1)" ↔ if-(𝜑, "n-mintru-m" , "n-mintru-(m+1)" ) Our definition here matches "3-mintru-2" with inputs 𝜑, 𝜓 and 𝜒. Starting from the base cases we find after simplifications: "2-mintru-2" (𝜓, 𝜒) ↔ (𝜓 ∧ 𝜒) (wl-2mintru2 38177), and "2-mintru-1" (𝜓, 𝜒) ↔ (𝜓 ∨ 𝜒) (wl-2mintru1 38176). Plugging these expressions into the formula above for n = 3, m = 2 yields exactly our definition here. (Contributed by Wolf Lammen, 2-May-2024.) | ||||||||||||||||||||||
| ⊢ (cadd(𝜑, 𝜓, 𝜒) ↔ if-(𝜑, (𝜓 ∨ 𝜒), (𝜓 ∧ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-df2-3mintru2 38171 | The adder carry in disjunctive normal form. An alternative highly symmetric definition emphasizing the independence of order of the inputs 𝜑, 𝜓 and 𝜒. Copy of cador 1641. (Contributed by Mario Carneiro, 4-Sep-2016.) df-cad redefined. (Revised by Wolf Lammen, 12-Jun-2024.) | ||||||||||||||||||||||
| ⊢ (cadd(𝜑, 𝜓, 𝜒) ↔ ((𝜑 ∧ 𝜓) ∨ (𝜑 ∧ 𝜒) ∨ (𝜓 ∧ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-df3-3mintru2 38172 | The adder carry in conjunctive normal form. An alternative highly symmetric definition emphasizing the independence of order of the inputs 𝜑, 𝜓 and 𝜒. Copy of cadan 1642. (Contributed by Mario Carneiro, 4-Sep-2016.) df-cad redefined. (Revised by Wolf Lammen, 18-Jun-2024.) | ||||||||||||||||||||||
| ⊢ (cadd(𝜑, 𝜓, 𝜒) ↔ ((𝜑 ∨ 𝜓) ∧ (𝜑 ∨ 𝜒) ∧ (𝜓 ∨ 𝜒))) | ||||||||||||||||||||||||
| Theorem | wl-df4-3mintru2 38173 | An alternative definition of the adder carry. Copy of df-cad 1640. (Contributed by Mario Carneiro, 4-Sep-2016.) df-cad redefined. (Revised by Wolf Lammen, 19-Jun-2024.) | ||||||||||||||||||||||
| ⊢ (cadd(𝜑, 𝜓, 𝜒) ↔ ((𝜑 ∧ 𝜓) ∨ (𝜒 ∧ (𝜑 ⊻ 𝜓)))) | ||||||||||||||||||||||||
| Theorem | wl-1mintru1 38174 |
Using the recursion formula:
"(n+1)-mintru-(m+1)" ↔ if-(𝜑, "n-mintru-m" , "n-mintru-(m+1)" ) for "1-mintru-1" (meaning "at least 1 out of 1 input is true") by plugging in n = 0, m = 0, and simplifying. The expressions "0-mintru-0" and "0-mintru-1" are base cases of the recursion, meaning "in a sequence of zero inputs, at least 0 / 1 input is true", respectively equivalent to ⊤ / ⊥. Negating an "n-mintru1" operation means: All n inputs 𝜑.. 𝜃 are false. This is also conveniently expressed as ¬ (𝜑 ∨.. ∨ 𝜃). Applying this idea here (n = 1) yields the obvious result that in an input sequence of size 1 only then all will be false, if its single input is. (Contributed by Wolf Lammen, 10-May-2024.) | ||||||||||||||||||||||
| ⊢ (if-(𝜒, ⊤, ⊥) ↔ 𝜒) | ||||||||||||||||||||||||
| Theorem | wl-1mintru2 38175 |
Using the recursion formula:
"(n+1)-mintru-(m+1)" ↔ if-(𝜑, "n-mintru-m" , "n-mintru-(m+1)" ) for "1-mintru-2" (meaning "at least 2 out of a single input are true") by plugging in n = 0, m = 1, and simplifying. The expressions "0-mintru-1" and "0-mintru-2" are base cases of the recursion, meaning "in a sequence of zero inputs at least 1 / 2 input is true", evaluate both to ⊥. Since no sequence of inputs has a longer subsequence of whatever property, the resulting ⊥ is to be expected. Negating a "n-mintru2" operation has an interesting interpretation: at most one input is true, so all inputs exclude each other mutually. Such an exclusion is expressed by a NAND operation (𝜑 ⊼ 𝜓), not by a XOR. Applying this idea here (n = 1) leads to the obvious "In a single input sequence 'at most one is true' always holds". (Contributed by Wolf Lammen, 10-May-2024.) | ||||||||||||||||||||||
| ⊢ (if-(𝜒, ⊥, ⊥) ↔ ⊥) | ||||||||||||||||||||||||
| Theorem | wl-2mintru1 38176 |
Using the recursion formula
"(n+1)-mintru-(m+1)" ↔ if-(𝜑, "n-mintru-m" , "n-mintru-(m+1)" ) for "2-mintru-1" (meaning "at least 1 out of 2 inputs is true") by plugging in n = 1, m = 0, and simplifying. The expression "1-mintru-0" is a base case (meaning at least zero inputs out of 1 are true), evaluating to ⊤, and wl-1mintru1 38174 shows "1-mintru-1" is equivalent to the only input. Negating an "n-mintru1" operation means: All n inputs 𝜑.. 𝜃 are false. This is also conveniently expressed as ¬ (𝜑 ∨.. ∨ 𝜃), in accordance with the result here. (Contributed by Wolf Lammen, 10-May-2024.) | ||||||||||||||||||||||
| ⊢ (if-(𝜓, ⊤, 𝜒) ↔ (𝜓 ∨ 𝜒)) | ||||||||||||||||||||||||
| Theorem | wl-2mintru2 38177 |
Using the recursion formula
"(n+1)-mintru-(m+1)" ↔ if-(𝜑, "n-mintru-m" , "n-mintru-(m+1)" ) for "2-mintru-2" (meaning "2 out of 2 inputs are true") by plugging in n = 1, m = 1, and simplifying. See wl-1mintru1 38174 and wl-1mintru2 38175 to see that "1-mintru-1" / "1-mintru-2" evaluate to 𝜒 / ⊥ respectively. Negating a "n-mintru2" operation means 'at most one input is true', so all inputs exclude each other mutually. Such an exclusion is expressed by a NAND operation (𝜑 ⊼ 𝜓), not by a XOR. Applying this idea here (n = 2) yields the expected NAND in case of a pair of inputs. (Contributed by Wolf Lammen, 10-May-2024.) | ||||||||||||||||||||||
| ⊢ (if-(𝜓, 𝜒, ⊥) ↔ (𝜓 ∧ 𝜒)) | ||||||||||||||||||||||||
| Theorem | wl-df3maxtru1 38178 |
Assuming "(n+1)-maxtru1" ↔ ¬
"(n+1)-mintru-2", we can deduce from
the recursion formula given in wl-df-3mintru2 38170, that a similiar one
"(n+1)-maxtru1" ↔ if-(𝜑,-. "n-mintru-1" , "n-maxtru1" ) is valid for expressing 'at most one input is true'. This can also be rephrased as a mutual exclusivity of propositional expressions (no two of a sequence of inputs can simultaneously be true). Of course, this suggests that all inputs depend on variables 𝜂, 𝜁... Whatever wellformed expression we plugin for these variables, it will render at most one of the inputs true. The here introduced mutual exclusivity is possibly useful for case studies, where we want the cases be sort of 'disjoint'. One can further imagine that a complete case scenario demands that the 'at most' is sharpened to 'exactly one'. This does not impose any difficulty here, as one of the inputs will then be the negation of all others be or'ed. As one input is determined, 'at most one' is sufficient to describe the general form here. Since cadd is an alias for 'at least 2 out of three are true', its negation is under focus here. (Contributed by Wolf Lammen, 23-Jun-2024.) | ||||||||||||||||||||||
| ⊢ (¬ cadd(𝜑, 𝜓, 𝜒) ↔ if-(𝜑, (𝜓 ⊽ 𝜒), (𝜓 ⊼ 𝜒))) | ||||||||||||||||||||||||
| Axiom | ax-wl-13v 38179* |
A version of ax13v 2408 with a distinctor instead of a distinct
variable
condition.
Had we additionally required 𝑥 and 𝑦 be distinct, too, this theorem would have been a direct consequence of ax-5 1943. So essentially this theorem states, that a distinct variable condition between set variables can be replaced with a distinctor expression. (Contributed by Wolf Lammen, 23-Jul-2021.) | ||||||||||||||||||||||
| ⊢ (¬ ∀𝑥 𝑥 = 𝑦 → (𝑦 = 𝑧 → ∀𝑥 𝑦 = 𝑧)) | ||||||||||||||||||||||||
| Theorem | wl-ax13lem1 38180* | A version of ax-wl-13v 38179 with one distinct variable restriction dropped. For convenience, 𝑦 is kept on the right side of equations. This proof bases on ideas from NM, 24-Dec-2015. (Contributed by Wolf Lammen, 23-Jul-2021.) | ||||||||||||||||||||||
| ⊢ (¬ ∀𝑥 𝑥 = 𝑦 → (𝑧 = 𝑦 → ∀𝑥 𝑧 = 𝑦)) | ||||||||||||||||||||||||
| Theorem | wl-cleq-0 38181* |
Disclaimer: The material presented here is just my (WL's) personal perception. I am not an expert in this field, so some or all of the text here can be misleading, or outright wrong. This and the following texts should be read as explorations rather than as definite statements, open to doubt, alternatives, and reinterpretation.
PrefaceThree specific theorems are under focus in the following pages: df-cleq 2758, df-clel 2841, and df-clab 2745. Only technical concepts necessary to explain these will be introduced, along with a selection of supporting theorems. The three theorems are central to a bootstrapping process that introduces objects into set.mm. We will first examine how Metamath in general creates basic new ideas from scratch, and then look at how these methods are applied specifically to classes, capable of representing objects in set theory. In Zermelo-Fraenkel set theory with the axiom of choice (ZFC), these three theorems are (more or less) independent of each other, which means they can be introduced in different orders. From my own experience, another order has pedagogical advantages: it helps grasping not only the overall concept better, but also the intricate details that I first found difficult to comprehend. Reordering theorems, though syntactically possible, sometimes may cause doubts when intermediate results are not strictly tied to ZFC only. The purpose of set.mm is to provide a formal framework capable of proving the results of ZFC, provided that formulas are properly interpreted. In fact, there is freedom of interpretation. The database set.mm develops from the very beginning, where nothing is assumed or fixed, and gradually builts up to the full abstraction of ZFC. Along the way, results are only preliminary, and one may at any point branch off and pursue a different path toward another variant of set theory. This openess is already visible in axiom ax-mp 5, where the symbol → can be understood as as implication, bi-conditional, or conjunction. The notation and symbol shapes are suggestive, but their interpretation is not mandatory. The point here is that Metamath, as a purely syntactic system, can sometimes allow freedoms, unavailable to semantically fixed systems, which presuppose only a single ultimate goal. (Contributed by Wolf Lammen, 28-Sep-2025.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-cleq-1 38182* |
Disclaimer: The material presented here is just my (WL's) personal perception. I am not an expert in this field, so some or all of the text here can be misleading, or outright wrong. This text should be read as an exploration rather than as definite statements, open to doubt, alternatives, and reinterpretation.
Grammars and Parsable contentsA Metamath program is a text-based tool. Its input consists of primarily human-readable and editable text stored in *.mm files. For automated processing, these files follow a strict structure. This enables automated analysis of their contents, verification of proofs, proof assistance, and the generation of output files - for example, the HTML page of this dummy theorem. A set.mm file contains numerous such structured instructions serving these purposes. This page provides a brief explanation of the general concepts behind structured text, as exemplified by set.mm. The study of structured text originated in linguistics, and later computer science formalized it further for text like data and program code. The rules describing such structures are collectively known as grammar. Metamath also introduces a grammar to support automation and establish a high degree of confidence in its correctness. It could have been described using the terminology of earlier scientific disciplines, but instead it uses its own language. When a text exhibits a sufficiently regular structure, its form can be described by a set of syntax rules, or grammar. Such rules consist of terminal symbols (fixed, literal elements) and non-terminal symbols, which can recursively be expanded using the grammar's rewrite rules. A program component that applies a grammar to text is called a parser. The parser decomposes the text into smaller parts, called syntactic units, while often maintaining contextual information. These units may then be handed over to subsequent components for further processing, such as populating a database or generating output. In these pages, we restrict our attention to strictly formatted material consisting of formulas with logical and mathematical content. These syntactic units are embedded in higher-level structures such as chapters, together with commands that, for example, control the HTML output. Conceptually, the parsing process can be viewed as consisting of two stages. The top-level stage applies a simple built-in grammar to identify its structural units. Each unit is a text region marked on both sides with predefined tokens (in Metamath: keywords), beginning with the escape character "$". Text regions containing logical or mathematical formulas are then passed to a second-stage parser, which applies a different grammar. Unlike the first, this grammar is not built-in but is dynamically constructed. In what follows, we will ignore the first stage of parsing, since its role is only to extract the relevant material embedded within text primarily intended for human readers. (Contributed by Wolf Lammen, 18-Aug-2025.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-cleq-2 38183* |
Disclaimer: The material presented here is just my (WL's) personal perception. I am not an expert in this field, so some or all of the text here can be misleading, or outright wrong. This text should be read as an exploration rather than as definite statements, open to doubt, alternatives, and reinterpretation.
Vocabulary
Sentence:
Bound / Free / Dependent: An occurrence of such a variable in any formula 𝜑 is said to be bound. if 𝜑 quantifies that variable, as in ∀𝑥𝜑. Variables not bound by a quantifier are called free. Variables of type "class" are always free, since quantifiers do not apply to them. A free variable often indicates a parameter dependency; however, the formula 𝑥 = 𝑥 shows that this is not necessarily the case. In Metamath, a variable expressing a real dependency is also called "effectively free" (see nfequid 2046, with thanks to SN for pointing out this theorem).
Instance:
Attribute: Multiple objects forming an instance may share common attributes. A variable inherits the attributes of the instance it represents. (Contributed by Wolf Lammen, 12-Oct-2025.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-cleq-3 38184* |
Disclaimer: The material presented here is just my (WL's) personal perception. I am not an expert in this field, so some or all of the text here can be misleading, or outright wrong. This text should be read as an exploration rather than as definite statements, open to doubt, alternatives, and reinterpretation.
Introducing a New Concept: Well-formed formulasThe parser that processes strictly formatted Metamath text with logical or mathematical content constructs its grammar dynamically. New syntax rules are added on the fly whenever they are needed to parse upcoming formulas. Only a minimal set of built-in rules - those required to introduce new grammar rules - is predefined; everything else must be supplied by set.mm itself as syntactic units identified by the first-stage parser. Text regions beginning with the tokens "$c" or "$v", for example, are part of such grammar extensions. We will outline the extension process used when introducing an entirely new concept that cannot build on any prior material. As a simple example, we will trace here the steps involved in defining formulas, the expressions used for hypotheses and statements - a concept first-order logic needs from the very beginning to articulate its ideas. 1. Introduce a type code To mark new formulas and variables later used in theorems, the constant "wff" is reserved. It abbreviates "well-formed formula", a term that already suggests that such formulas must be syntactically valid and therefore parseable to enable automatic processing. 2. Introduce variables Variables with unique names such as 𝜑, 𝜓, ..., intended to later represent formulas of type "wff". In grammar terms, they correspond to non-terminal symbols. These variables are marked with the type "wff". Variables are fundamental in Metamath, since they enable substitution during proofs: variables of a particular type can be consistently replaced by any formula of the same type. In grammar terms, this corresponds to applying a rewrite rule. At this step, however, no rewrite rule exists; we can only substitute one "wff" variable for another. This suffices only for very elementary theorems such as idi 1. In the formal language of Metamath these variables are not interpreted with concrete statements, but serve purely as placeholders for substitution. 3. Add primitive formulas Rewrite rules describing primitive formulas of type "wff" are then added to the grammar. Typically, they describe an operator (a constant in the grammar) applied to one or more variables, possibly of different types (e.g. ∀𝑥𝜑, although at this stage only "wff" is available). Since variables are non-terminal symbols, more complex formulas can be constructed from primitive ones, by consistently replacing variables with any wff formula - whether involving the same operator or different ones introduced by other rewrite rules. Whenever such a replacement introduces variables again, they may in turn recursively be replaced. If an operator takes two variables of type wff, it is called a binary connective in logic. The first such operator encountered is (𝜑 → 𝜓). Based on its token, its intended meaning is material implication, though this interpretation is not fixed from the outset. 4. Specify the properties of primitive formulas Once the biconditional connective is available for formulas, new connectives can be defined by specifying replacement formulas that rely solely on previously introduced material. Such definitions makes it possible to eliminate the definiens. At the very beginning, however, this is not possible for well-formed formulas, since little or no prior material exists. Instead, the semantics of an expression such as (𝜑 → 𝜓) are progressively constrained by axioms - that is, theorems without proof. The first such axiom for material implication is ax-mp 5, with additional axioms following later. (Contributed by Wolf Lammen, 21-Aug-2025.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-cleq-4 38185* |
Disclaimer: The material presented here is just my (WL's) personal perception. I am not an expert in this field, so some or all of the text here can be misleading, or outright wrong. This text should be read as an exploration rather than as definite statements, open to doubt, alternatives, and reinterpretation.
Introducing a New Concept: ClassesIn wl-cleq-3 38184 we examined how the basic notion of a well-formed formula is introduced in set.mm. A similar process is used to add the notion of a class to Metamath. This process is somewhat more involved, since two parallel variants are established: sets and the broader notion of classes, which include sets (see 3a. below). In Zermelo-Fraenkel set theory (ZF) classes will serve as a convenient shorthand that simplifies formulas and proofs. Ultimately, only sets - a part of all classes - are intended to exist as actual objects. In the First Order Logic (FOL) portion of set.mm objects themselves are not used - only variables representing them. It is not even assumed that objects must be sets at all. In principle, the universe of discourse could consist of anything - vegetables, text strings, and so on. For this reason, the type code "setvar", used for object variables, is somewhat of a misnomer. Its final meaning - and the name that goes with it - becomes justified only in later developments. We will now revisit the four basic steps presented in wl-cleq-3 38184, this time focusing on object variables and paying special attention to the additional complexities that arise from extending sets to classes. 1. Introduce type codes 1a. Reserve a type code for classes, specifically the grammar constant "class". Initially, this type code applies to class variables and will later, beyond these four steps, also be assigned to formulas that define specific classes, i.e. instances. 1b. Reserve a type code for set variables, represented by the grammar constant "setvar". The name itself indicates that this type code will never be assigned to a formula describing a specific set, but only to variables containing such objects. 2. Introduce variables 2a. Use variables with unique names such as 𝐴, 𝐵, ..., to represent classes. These class variables are assigned the type code "class", ensuring that only formulas of type "class" can be substituted for them during proofs. 2b. Use variables with unique names such as 𝑎, 𝑏 , ..., to represent sets. These variables are assigned the type code "setvar". During a substitution in a proof, a variable of type "setvar" may only be replaced with another variable of this type. No specific formula, or object, of this type exists. 3. Add primitive formulas 3a. Add the rewrite rule cv 1569 to set.mm, allowing variables of type "setvar" to also aquire type "class". In this way, a variable of "setvar" type can serve as a substitute for a class variable. 3b. Add the rewrite rules wcel 2146 and wceq 1570 to set.mm, making the formulas 𝐴 ∈ 𝐵 and 𝐴 = 𝐵 valid well-formed formulas (wff). Since variables of type "setvar" can be substituted for class variables, 𝑥 ∈ 𝑦 and 𝑥 = 𝑦 are also provably valid wff. In the FOL part of set.mm, only these specific formulas play a role and are therefore treated as primitive there. The underlying universe may not contain sets, and the notion of a class is not even be required. Additional mixed-type formulas, such as 𝑥 ∈ 𝐴, 𝐴 ∈ 𝑥, 𝑥 = 𝐴, and 𝐴 = 𝑥 exist. When the theory is later refined to distinguish between sets and classes, the results from FOL remain valid and naturally extend to these mixed cases. These cases will occasionally be examined individually in subsequent discussions. 4. Specify the properties of primitive formulas In FOL in set.mm, the formulas 𝑥 = 𝑦 and 𝑥 ∈ 𝑦 cannot be derived from earlier material, and therefore cannot be defined. Instead, their fundamental properties are established through axioms, namely ax-6 2000 through ax-9 2156, ax-13 2407, and ax-ext 2738. Similarly, axioms establish the properties of the primitive formulas 𝐴 = 𝐵 and 𝐴 ∈ 𝐵, ensuring that they extend the FOL counterparts 𝑥 = 𝑦 and 𝑥 ∈ 𝑦 in a consistent and meaningful way. At the same time, a criterion must be developed to distinguish sets from classes. Since set variables can only be substituted by other set variables, equality must permit the assignment of class terms known to represent sets to those variables. (Contributed by Wolf Lammen, 25-Aug-2025.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-cleq-5 38186* |
Disclaimer: The material presented here is just my (WL's) personal perception. I am not an expert in this field, so some or all of the text here can be misleading, or outright wrong. This text should be read as an exploration rather than as definite statements, open to doubt, alternatives, and reinterpretation.
Semantics of EqualityThere is a broadly shared understanding of what equality between objects expresses, extending beyond mathematics or set theory. Equality constitutes an equivalence relation among objects 𝑥, 𝑦, and 𝑧 within the universe under consideration: 1. Reflexivity 𝑥 = 𝑥 2. Symmetry (𝑥 = 𝑦 → 𝑦 = 𝑥) 3. Transitivity ((𝑥 = 𝑦 ∧ 𝑥 = 𝑧) → 𝑦 = 𝑧) 4. Identity of Indiscernables (Leibniz's Law): distinct (i.e., unequal), objects cannot share all the same properties (or attributes). In formal theories using variables, the attributes of a variable are assumed to mirror those of the instance it denotes. For both variables and objects, items (1) - (4) must either be derived or postulated as axioms. If the theory allows substituting instances for variables, then the equality rules for objects follow directly from those governing variables. However, if variables and instances are formally distinguished, this distinction introduces an additional metatheoretical attribute, relevant for (4). A similar issue arises when equality is considered between different types of variables sharing properties. Such mixed-type equalities are subject to restrictions: reflexivity does not apply, since the two sides represent different kinds of entities. Nevertheless, symmetry and various forms of transitivity typically remain valid, and must be proven or established within the theory. In set.mm formulas express attributes. Therefore, equal instances must behave identically, yielding the same results when substituted into any formula. To verify equality, it suffices to consider only primitive operations involving free variables, since all formulas - once definitions are eliminated - reduce to these. Equality itself introduces no new attribute (an object is always different from all others), and can thus be excluded from this examination.
Equality in First Order Logic (FOL)In the FOL component of set.mm, the notion of an "object" is absent. Only set variables are used to formulate theorems, and their attributes - expressed through an unspecified membership operator - are addressed at a later stage. Instead, several axioms address equality directly: ax-6 2000, ax-7 2041, ax-8 2148, ax-9 2156 and ax-12 2216, and ax-13 2407. In practice, restricted versions with distinct variable conditions are used (ax6v 2001, ax12v 2217). The unrestricted forms together with axiom ax-13 2407, allow for the elimination of distinct variable conditions, this benefit is considered too minor for routine use. Equality in FOL is formalized as follows: 2a. Equivalence Relation. Essentially covered by ax-7 2041, with some support of ax-6 2000. 2b. Leibniz's Law for the primitive ∈ operator. Captured by ax-8 2148 and ax-9 2156. 2c. General formulation. Given in sbequ12 2290. 2d. Implicit substitution. Assuming Leibniz's Law holds for a particular expression, various theorems extend its validity to other, derived expressions, often introducing quantification (see for example cbvalvw 2069). The auxiliary axioms ax-10 2179, ax-11 2195, ax-12 are provable (see ax10w 2167, for example) if you can substitute 𝑦 for 𝑥 in a formula 𝜑 that contains no occurrence of 𝑦 and leaves no remaining trace of 𝑥 after substitution. An implicit substitution is then established by setting the resulting formula equivalent to 𝜑 under the assumption 𝑥 = 𝑦. Ordinary FOL substitution [𝑦 / 𝑥]𝜑 is insufficient in this context, since 𝑥 still occurs in the substituted formula. A simple textual replacement of the token 𝑥 by 𝑦 in 𝜑 might seem an intuitive solution, but such operations are out of the formal scope of Metamath. 2e. Axiom of Extensionality. In its elaborated form (axextb 2741), it states that the determining attributes of a set 𝑥 are the elements 𝑧 it contains, as expressed by 𝑧 ∈ 𝑥. This is the only primitive operation relevant for equality between set variables.
Equality between classesIn set.mm class variables of type "class" are introduced analoguously to set variables. Besides the primitive operations equality and membership, class builders allow other syntactical constructs to substitute for class variables, enabling them to represent class instances. One such builder (cv 1569) allows set variables to replace class variables. Another (df-clab 2745) introduces a class instance, known as class abstraction. Since a class abstraction can freely substitute for a class variable, formulas hold for both alike. Hence, there is no need to distinguish between class variables and abstractions; the term class will denote "class variable or class abstraction". Set variables, however, are treated separately, as they are not of type "class". 3a. Equivalence Relation. Axiom df-cleq 2758, from which class versions of (1a) - (1c) can be derived, guarantees that equality between class variables form an equivalence relation. Since both class abstractions and set variables can substitute for class variables, this equivalence extends to all mixed equalities, including those with set variables, since they automatically convert to classes upon substitution. 3b. Attributes. The primitive operation of membership constitutes the fundamental attributes of a class. Axiom df-clel 2841 reduces possible membership relations between class variables to those between a set variable and a class variable. Axiom df-cleq 2758 extends axextb 2741 to classes, stating that classes are fully determined by their set members. A class builder may introduce a new attribute for classes. An equation involving such a class instance may express this attribute. In the case of the class builder cv 1569, an attribute called sethood is in fact introduced: A class is a set if it can be equated with some set variable. Class abstractions supported by class builder df-clab 2745 also formally introduce attributes. Whether a class can be expressed as an abstraction with a specific predicate may be relevant in analysis. However, since theorem df-clab 2745 is a definition (and hence eliminable), these attributes can also be expressed in other ways. 3c. Conservativity. Because set variables can substitute for class variables, all axioms and definitions must be consistent with theorems in FOL. To ensure this, hypotheses are added to axioms and definitions that mirror the structure of their statement, but with class variables replaced by set variables. Since theorems cannot be applied without first proving their hypotheses, conservativity thus is enforced. 3d. Leibniz's Law. Besides equality membership is (and remains) the only primitive operator between classes. Axioms df-cleq 2758 and df-clel 2841 provide class versions of ax-8 2148 and ax-9 2156, ensuring that membership is consistent with Leibniz's Law. Sethood, being based on mixed-type equality, preserves its value among equal classes. As long as additional class builders beyond those mentioned are only defined, the reasoning given for class abstraction above applies generally, and Leibniz's Law continues to hold. 3e. Backward Compatability. A class 𝐴 equal to a set should be substitutable for a free set variable 𝑥 in any theorem, yielding a valid result, provided 𝑥 and 𝐴 are distinct. Sethood is conveniently expressed by ∃𝑧𝑧 = 𝐴; this assumption is added as an antecedent to the corresponding FOL theorem. However, since direct substitution is disallowed, a deduction version of an FOL theorem cannot be simply converted. Instead, the proof must be replayed, consistently replacing 𝑥 with 𝐴. Ultimately, this process reduces to the FOL axioms, or their deduction form. If these axioms hold when 𝐴 replaces 𝑥- under the above assumptions - then the replacement can be considered generally valid. The affected FOL axioms are ax-6 2000 (in the form ax6ev 2002), ax-7 2041, ax-8 2148, ax-9 2156, ax-12 2216 (ax12v2 2218), and to some extent ax-13 2407 (ax13v 2408). Since ZF (Zermelo-Fraenkel) set theory does not allow quantifification over class variables, no similar class-based versions of the quantified FOL axioms exist. (Contributed by Wolf Lammen, 18-Sep-2025.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-cleq-6 38187* |
Disclaimer: The material presented here is just my (WL's) personal perception. I am not an expert in this field, so some or all of the text here can be misleading, or outright wrong. This text should be read as an exploration rather than as definite statements, open to doubt, alternatives, and reinterpretation.
Eliminability of ClassesOne requirement of Zermelo-Fraenkel set theory (ZF) is that it can be formulated entirely without referring to classes. Since set.mm implements ZF, it must therefore be possible to eliminate all classes from its formalization. Eliminating Variables of Propositional Logic Classical propositional logic concerns statements that are either true or false. For example, "A minute has 60 seconds" is such a statement, as is "English is not a language". Our development of propositional logic applies to all such statements, regardless of their subject matter. Any particular topic, or universe of discourse is encompassed by the general theorems of propositional logic. In ZF, however, the objects of study are sets - mathematical entities. The flexibility of propsitional variables is not required here. Instead, ZF introduces two primitive connectives between sets: 𝑥 = 𝑦 and 𝑥 ∈ 𝑦. ZF is concerned only with logical schemata constructed solely from these primitives. Thus, before we can eliminate classes, we must first eliminate propositional variables like 𝜑 and 𝜓. We will describe this process constructively. We begin by restricting ourselves to propositional schemata that consist only of the primitives of ZF, without any propositional variables. Extending this step to first-order Logic (FOL) - by introducing quantifiers - yields the fundamental predicates of ZF, that is, the basic formulas expressible within it. For convenience, we may again allow propositional variables, but under the strict assumption that they always represent fundamental predicates of ZF. Predicates of level 0 are exactly of this kind: no classes occurs in them, and they can be reduced directly to fundamental predicates in ZF. Introducing eliminable classes The following construction is inspired by a paragraph in Azriel Levy's "Basic set theory" concerning eliminable classes. A class can only occur in combination with one of the operators = or ∈. This applies in particular to class abstractions, which are the only kind of classes permtted in this step of extending level-0 predicates in ZF. The definitions df-cleq 2758 and df-clel 2841 show that equality and membership ultimately reduce to expressions of the form 𝑥 ∈ 𝐴. For a class abstraction {𝑦 ∣ 𝜑}, the resulting term amounts to [𝑥 / 𝑦]𝜑. If 𝜑 is a level-0 predicate, then this too is a level-0 expression - fully compatible with ZF. A level-1 class abstraction is a class {𝑦 ∣ 𝜑} where 𝜑 is a level-0 predicate. A level-1 class abstraction can occur in an equality or membership relation with another level-1 class abstractions or a set variable, and such terms reduce to fundamental predicates. Predicates of either level-0, or containing level-1 class abstractions are called level-1 predicates. After eliminating all level-1 abstractions from such a predicate a level-0 expression is the result. Analoguously, we can define level-2 class abstractions, where the predicate 𝜑 in {𝑦 ∣ 𝜑} is a level-1 predicate. Again, 𝑥 ∈ {𝑦 ∣ 𝜑} reduces to a level-1 expression, which in turn can be reduced to a level-0 one. By similar reasoning, equality and membership between at most level-2 class abstractions also reduce to level-0 expressions. A predicate containing at most level-2 class abstractions is called a level-2 predicate. This iterative construction process can be continued to define a predicate of any level. They can be reduced to fundamental predicates in ZF. Introducing eliminable class variables We have seen that propositional variables must be restricted to representing only primitive connectives to maintain compatibility with ZF. Similarly, class variables can be restricted to representing class abstractions of finite level. Such class variables are eliminable, and even definitions like df-un 3913 (𝐴 ∪ 𝐵) introduce no difficulty, since the resulting union remains of finite level. Limitations of eliminable class variables Where does this construction reach its limits? 1. Infinite constructions. Suppose we wish to add up an infinite series of real numbers, where each term defines its successor using a class abstraction one level higher than that of the previous term. Such a summation introduces terms of arbitrary high level. While each individual term remains reducable in ZF, the infinite sum expression may not be reducable without special care. 2. Class builders. Every class builder other than cv 1569 must be a definition, making its elimination straightforward. The class abstraction df-clab 2745 described above is a special case. Since set variables themselves can be expressed as class abstractions - namely 𝑥 = {𝑦 ∣ 𝑦 ∈ 𝑥} (see cvjust 2760) - this formulation does not conflict with the use of class builder cv 1569. The above conditions apply only to substitution. The expression 𝐴 = {𝑥 ∣ 𝑥 ∈ 𝐴} (abid1 2902) is a valid and provable equation, and it should not be interpreted as an assignment that binds a particular instance to 𝐴. (Contributed by Wolf Lammen, 13-Oct-2025.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Axiom | ax-wl-cleq 38188* |
Disclaimer: The material presented here is just my (WL's) personal
perception. I am not an expert in this field, so some or all of the
text here can be misleading, or outright wrong.
This text should be read as an exploration rather than as a definite statement, open to doubt, alternatives, and reinterpretation. At the point where df-cleq 2758 is introduced, the foundations of set theory are being established through the notion of a class. A central property of classes is what elements, expressed by the membership operator ∈, belong to them . Quantification (∀𝑥) applies only to objects that a variable of kind setvar can represent. These objects will henceforth be called sets. Some classes may not be sets; these are called proper classes. It remains open at this stage whether membership can involve them. The formula given in df-cleq 2758 (restated below) asserts that two classes are equal if and only if they have exactly the same sets as elements. If proper classes are also admitted as elements, then two equal classes could still differ by such elements, potentially violating Leibniz's Law. A future axiom df-clel 2841 addresses this issue; df-cleq 2758 alone does not. **Primitive connectives and class builders** Specially crafted primitive operators on classes or class builders could introduce properties of classes beyond membership, not reflected in the formula here. This again risks violating Leibniz's Law. Therefore, the introduction of any future primitive operator or class builder must include a conservativity check to ensure consistency with Leibniz's Law. **This axiom covers only some principles of equality** The notion of equality expressed in this axiom does not automatically coincide with the general notion of equality. Some principles are, however, already captured: Equality is shown to be an equivalence relation, covering transivity (eqtr 2786), reflexivity (eqid 2766) and symmetry (eqcom 2773). It also yields the class-level version of ax-ext 2738 (the backward direction of df-cleq 2758) holds. If we assume 𝑥 = 𝐴 holds, then substituting the free set variable 𝑦 with 𝐴 in ax6ev 2002 and ax12v2 2218 yields provable theorems (see wl-isseteq 38191, and wl-ax12v2cl 38192). However, a bound variable cannot be replaced with a class variable, since quantification over classes is not permitted. Taken together with the results from the previous paragraph, this shows that a class variable equal to a set behaves the same as a set variable, provided it is not quantified. **Conservativity** Moreover, this axiom is already partly derivable if all class variables are replaced by variables of type "setvar". In that case, the statement reduces to an instance of axextb 2741. This shows that the class builder cv 1569 is consistent with this axiom. **Eliminable operator** Finally, this axiom supports the idea that proper classes, and operators between them, should be eliminable, as required by ZF: It reduces equality to their membership properties. However, since the term 𝑥 ∈ 𝐴 is still undefined, elimination reduces equality to just something not yet clarified. **Axiom vs Definition** Up to this point, the only content involving class variables comes from the syntax definitions wceq 1570 and wcel 2146. Axioms are therefore required to progressively refine the semantics of classes until provable results coincide with our intended conception of set theory. This refinement process is explained in Step 4 of wl-cleq-2 38183. From this perspective, df-cleq 2758 is in fact an axiom in disguise and would more appropriately be named ax-cleq. At first glance, one might think that 𝐴 = 𝐵 is defined by the right-hand side of the biconditional. This would make 𝑥 ∈ 𝐴, i.e. membership of a set in a class, the more primitive concept, from which equality of classes could be derived. Such a viewpoint would be coherent if the properties of membership could be fully determined by other axioms. In my (WL's') opinion, however, the more direct and fruitful approach is not to construct class equality from membership, but to treat equality itself as axiomatic. (Contributed by Wolf Lammen, 25-Aug-2025.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Axiom | ax-wl-clel 38189* |
Disclaimer: The material presented here is just my (WL's) personal
perception. I am not an expert in this field, so some or all of the
text here can be misleading, or outright wrong.
This text should be read as an exploration rather than as a definite statement, open to doubt, alternatives, and reinterpretation. The formula in df-clel 2841 (restated below) states that only those classes for which ∃𝑥𝑥 = 𝐴 holds can be members of classes. Thus, a member of a class is always equal to a set, which excludes proper classes from class membership. As explained in wl-cleq-4 38185, item 3, ∃𝑥𝑥 = 𝐴 is a sufficient criterion for a class to be a set, provided that Leibniz's Law holds for equality. Therefore this axiom is often rephrased as: classes contain only sets as members. **Principles of equality** Using this axiom we can derive the class-level counterparts of ax-8 2148 (see eleq2 2855) and ax-9 2156 (see eleq1 2854). Since ax-wl-cleq 38188 already asserts that equality between classes is an equivalence relation, the operators = and ∈ alone cannot distinguish equal classes. Hence, if membership is the only property that matters for classes, Leibniz's Law will hold. Later, however, additional class builders may introduce further properties of classes. A conservativity check for such builders can ensure this does not occur. **Eliminability** If we replace the class variable 𝐴 with a set variable 𝑧 in this axiom, the auxiliary variable 𝑥 can be eliminated, leaving only the trivial result (𝑧 ∈ 𝐵 ↔ 𝑧 ∈ 𝐵). Thus, df-clel 2841 by itself does not determine when a set is a member of a class. From this perspective, df-clel 2841 is in fact an axiom in disguise and would more appropriately be called ax-clel. Overall, our axiomization leaves the meaning of fundamental expressions 𝑥 ∈ 𝐴 or 𝑥 ∈ 𝐵 open. All other fundamental formulas of set theory (𝐴 not a set variable, 𝐴 ∈ 𝐵, 𝑥 = 𝐵 𝐴 = 𝐵) can be reduced solely to the basic formulas 𝑥 ∈ 𝐴 or 𝑥 ∈ 𝐵. If an axiomatization leaves a fundamental formula like 𝑥 ∈ 𝐴 unspecified, we could in principle define it bi-conditionally by any formula whatsoever - for example, the trivial ⊤. This, however, is not the approach we take. Instead, an appropriate class builder such as df-clab 2745 fills this gap. (Contributed by Wolf Lammen, 26-Aug-2025.) | ||||||||||||||||||||||
| ⊢ (𝐴 ∈ 𝐵 ↔ ∃𝑥(𝑥 = 𝐴 ∧ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-df-clab 38190 |
Disclaimer: The material presented here is just my (WL's) personal
perception. I am not an expert in this field, so some or all of the text
here can be misleading, or outright wrong.
This text should be seen as an exploration, rather than viewing it as set in stone, no doubt or alternatives possible. We now introduce the notion of class abstraction, which allows us to describe a specific class, in contrast to class variables that can stand for any class indiscriminately. A new syntactic form is introduced for class abstractions, {𝑦 ∣ 𝜑}, read as "the class of sets 𝑦 such that 𝜑(𝑦)". This form is assigned the type "class" in cab 2744, so it can consistently substitute for a class variable during the syntactic construction process. **Eliminability** The axioms ax-wl-cleq 38188 and ax-wl-clel 38189 leave only 𝑥 ∈ 𝐴 unspecified. The definition of this class builder directly corresponds to that expression. When a class abstraction replaces the variable 𝐴 and 𝐵, then 𝐴 = 𝐵 and 𝐴 ∈ 𝐵 can be expressed in terms of these abstractions. For general eliminability two conditions are needed: 1. Any class builder must replace 𝑥 ∈ 𝐴 with an expression containing no class variables. If necessary, class variables must be eliminated via a finite recursive process. 2. There must only be finitely many class builders. If a class variable could range over infinitely many builders, eliminability would fail, since unknown future builders would always need to be considered. Condition (2) is met in set.mm by defining no class builder beyond cv 1569 and df-clab 2745. Thus we may assume that a class variable represents either a set variable, or a class abstraction: a. If it represents a set variable, substitution eliminates it immediately. b. If it equals a set variable 𝑥, then by cvjust 2760 it can be replaced with {𝑦 ∣ 𝑦 ∈ 𝑥}. c. If it represents a proper class, then it equals some abstraction {𝑥 ∣ 𝜑}. If 𝜑 contains no class variables, elimination using 𝜑 is possible. The same holds if finite sequence of elimination steps renders 𝜑 free of class variables. d. It represents a proper class, but 𝜑 in {𝑥 ∣ 𝜑} still contains non-eliminable class variables, then eliminability fails. A simple example is {𝑥 ∣ 𝑥 ∈ 𝐴}. Class variables can only appear in fundamental expressions 𝐴 = 𝐵 or 𝐴 ∈ 𝐵, Both can be reduced to forms involving 𝑧 ∈ 𝐴. Thus, in the expression 𝑧 ∈ {𝑥 ∣ 𝑥 ∈ 𝐴}, we still must eliminate 𝐴. Applying df-clab 2745 reduces it back to 𝑧 ∈ 𝐴, returning us to the starting point. Case (d) shows that in full generality, a class variable cannot always be eliminated, something Zermelo-Fraenkel set theory (ZF) requires. If the universe contained only finitely many sets, a free class variable 𝐴 could be expressed as a finite disjunction of possiblities, hence eliminable. But in ZF's richer universe, in a definition of an unrestricted class variable 𝐴 = {𝑥 ∣ 𝜑} the variable 𝜑 will contain 𝐴 in some way, violating condition (1) above. Thus constraints are needed. In ZF, any formula containing class variables assumes that non-set class variables can be be replaced by {𝑥 ∣ 𝜑} where 𝜑 itself contains no class variables. There is, however, no way to state this condition in a formal way in set.mm. Class abstractions themselves, however, can be eliminated, so df-clab is a definition. **Definition checker** How can case (d) be avoided? A solution is to restrict generality: require that in the definition of any concrete class abstraction {𝑥 ∣ 𝜑}, the formula 𝜑 is either free of class variables or built only from previously defined constructions. Such a restriction could be part of the definition checker. In practice, the Metamath definition checker requires definitions to follow the specific pattern "⊢ {𝑥 ∣ 𝜑} = ...". Although df-clab 2745 does not conform to this pattern, it nevertheless permits elimination of class abstractions. Eliminability is the essential property of a valid definition, so df-clab 2745 can legitimately be regarded as one. For further material on the elimination of class abstractions, see BJ's work beginning with eliminable1 37534 and one comment in https://github.com/metamath/set.mm/pull/4971. (Contributed by Wolf Lammen, 28-Aug-2025.) | ||||||||||||||||||||||
| ⊢ (𝑥 ∈ {𝑦 ∣ 𝜑} ↔ [𝑥 / 𝑦]𝜑) | ||||||||||||||||||||||||
| Theorem | wl-isseteq 38191* | A class equal to a set variable implies it is a set. Note that 𝐴 may be dependent on 𝑥. The consequent, resembling ax6ev 2002, is the accepted expression for the idea of a class being a set. Sometimes a simpler expression like the antecedent here, or in elisset 2848, is already sufficient to mark a class variable as a set. (Contributed by Wolf Lammen, 7-Sep-2025.) | ||||||||||||||||||||||
| ⊢ (𝑥 = 𝐴 → ∃𝑦 𝑦 = 𝐴) | ||||||||||||||||||||||||
| Theorem | wl-ax12v2cl 38192* |
The class version of ax12v2 2218, where the set variable 𝑦 is
replaced
with the class variable 𝐴. This is possible if 𝐴 is
known to
be a set, expressed by the antecedent.
Theorem ax12v 2217 is a specialization of ax12v2 2218. So any proof using ax12v 2217 will still hold if ax12v2 2218 is used instead. Theorem ax12v2 2218 expresses that two equal set variables cannot be distinguished by whatever complicated formula 𝜑 if one is replaced with the other in it. This theorem states a similar result for a class variable known to be a set: All sets equal to the class variable behave the same if they replace the class variable in 𝜑. Most axioms in FOL containing an equation correspond to a theorem where a class variable known to be a set replaces a set variable in the formula. Some exceptions cannot be avoided: The set variable must nowhere be bound. And it is not possible to state a distinct variable condition where a class 𝐴 is different from another, or distinct from a variable with type wff. So ax-12 2216 proper is out of reach: you cannot replace 𝑦 in ∀𝑦𝜑 with a class variable. But where such limitations are not violated, the proof of the FOL theorem should carry over to a version where a class variable, known to be set, appears instead of a set variable. (Contributed by Wolf Lammen, 8-Aug-2020.) | ||||||||||||||||||||||
| ⊢ (∃𝑦 𝑦 = 𝐴 → (𝑥 = 𝐴 → (𝜑 → ∀𝑥(𝑥 = 𝐴 → 𝜑)))) | ||||||||||||||||||||||||
| Theorem | wl-df.clab 38193 |
Define class abstractions, that is, classes of the form {𝑦 ∣ 𝜑},
which is read "the class of sets 𝑦 such that 𝜑(𝑦)".
A few remarks are in order: 1. The axiomatic statement df-clab 2745 does not define the class abstraction {𝑦 ∣ 𝜑} itself, that is, it does not have the form ⊢ {𝑦 ∣ 𝜑} = ... that a standard definition should have (for a good reason: equality itself has not yet been defined or axiomatized for class abstractions; it is defined later in df-cleq 2758). Instead, df-clab 2745 has the form ⊢ (𝑥 ∈ {𝑦 ∣ 𝜑} ↔ ...), meaning that it only defines what it means for a setvar to be a member of a class abstraction. As a consequence, one can say that df-clab 2745 defines class abstractions if and only if a class abstraction is completely determined by which elements belong to it, which is the content of the axiom of extensionality ax-ext 2738. Therefore, df-clab 2745 can be considered a definition only in systems that can prove ax-ext 2738 (and the necessary first-order logic). 2. As in all definitions, the definiendum (the left-hand side of the biconditional) has no disjoint variable conditions. In particular, the setvar variables 𝑥 and 𝑦 need not be distinct, and the formula 𝜑 may depend on both 𝑥 and 𝑦. This is necessary, as with all definitions, since if there was for instance a disjoint variable condition on 𝑥, 𝑦, then one could not do anything with expressions like 𝑥 ∈ {𝑥 ∣ 𝜑} which are sometimes useful to shorten proofs (because of abid 2748). Most often, however, 𝑥 does not occur in {𝑦 ∣ 𝜑} and 𝑦 is free in 𝜑. 3. Remark 1 stresses that df-clab 2745 does not have the standard form of a definition for a class, but one could be led to think it has the standard form of a definition for a formula. However, it also fails that test since the membership predicate ∈ has already appeared earlier (outside of syntax e.g. in ax-8 2148). Indeed, the definiendum extends, or "overloads", the membership predicate ∈ from formulas of the form "setvar ∈ setvar" to formulas of the form "setvar ∈ class abstraction". This is possible because of wcel 2146 and cab 2744, and it can be called an "extension" of the membership predicate because of wel 2147, whose proof uses cv 1569. An a posteriori justification for cv 1569 is given by cvjust 2760, stating that every setvar can be written as a class abstraction (though conversely not every class abstraction is a set, as illustrated by Russell's paradox ru 3746). 4. Proof techniques. Because class variables can be substituted with compound expressions and setvar variables cannot, it is often useful to convert a theorem containing a free setvar variable to a more general version with a class variable. This is done with theorems such as vtoclg 3525 which is used, for example, to convert elirrv 9569 to elirr 9572. 5. Definition or axiom? The question arises with the three axiomatic statements introducing classes, df-clab 2745, df-cleq 2758, and df-clel 2841, to decide if they qualify as definitions or if they should be called axioms. Under the strict definition of "definition" (see conventions 30788), they are not definitions (see Remarks 1 and 3 above, and similarly for df-cleq 2758 and df-clel 2841). One could be less strict and decide to call "definition" every axiomatic statement which provides an eliminable and conservative extension of the considered axiom system. But the notion of conservativity may be given two different meanings in set.mm, due to the difference between the "scheme level" of set.mm and the "object level" of classical treatments. For a proof that these three axiomatic statements yield an eliminable and weakly (that is, object-level) conservative extension of FOL= plus ax-ext 2738, see Appendix of [Levy] p. 357. 6. This definition (or axiom) is a class builder introducing the class {𝑥 ∣ 𝜑}, also called a class abstraction or class comprehension, i.e., it specifies a class by a condition determining its members. Another class-building operator (but no class abstraction) is cv 1569, which asserts that every set is a class. The converse need not hold: not every class is a set. A class that is not a set is called a proper class. From ru 3746, it follows that this abstraction yields proper classes, e.g. {𝑥 ∣ 𝑥 = 𝑥}. 7. References and history. The concept of class abstraction dates back to at least Frege, and is used by Whitehead and Russell. This definition is Definition 2.1 of [Quine] p. 16 and Axiom 4.3.1 of [Levy] p. 12. It is called the "axiom of class comprehension" by [Levy] p. 358, who treats the theory of classes as an extralogical extension to predicate logic and set theory axioms. He calls the construction {𝑦 ∣ 𝜑} a "class term". For a full description of how classes are introduced and how to recover the primitive language, see the books of Quine and Levy (and the comment of eqabb 2905 for a quick overview). For a general discussion of the theory of classes, see mmset.html#class 2905. (Contributed by NM, 26-May-1993.) (Revised by BJ, 19-Aug-2023.) | ||||||||||||||||||||||
| ⊢ (𝑥 ∈ {𝑦 ∣ 𝜑} ↔ [𝑥 / 𝑦]𝜑) | ||||||||||||||||||||||||
| Theorem | wl-df.cleq 38194* |
Define the equality connective between classes. Definition 2.7 of
[Quine] p. 18. Also Definition 4.5 of
[TakeutiZaring] p. 13; Chapter 4
provides its justification and methods for eliminating it. Note that
its elimination will not necessarily result in a single wff in the
original language but possibly a "scheme" of wffs.
The hypotheses express that all instances of the conclusion where class variables are replaced with setvar variables hold. Therefore, this definition merely extends to class variables something that is true for setvar variables, hence is conservative. This is only a proof sketch of conservativity; for details see Appendix of [Levy] p. 357. This is the reason why we call this axiomatic statement a "definition", even though it does not have the usual form of a definition. If we required a definition to have the usual form, we would call df-cleq 2758 an axiom. See also comments under df-clab 2745, df-clel 2841, and eqabb 2905. In the form of dfcleq 2759, this is called the "axiom of extensionality" by [Levy] p. 338, who treats the theory of classes as an extralogical extension to our logic and set theory axioms. It characterizes classes as collections of sets. While the three class definitions df-clab 2745, df-cleq 2758, and df-clel 2841 are eliminable and conservative and thus meet the requirements for sound definitions, they are technically axioms in that they do not satisfy the requirements for the current definition checker. The proofs of conservativity require external justification that is beyond the scope of the definition checker. For a general discussion of the theory of classes, see mmset.html#class 2841. (Contributed by NM, 15-Sep-1993.) (Revised by BJ, 24-Jun-2019.) | ||||||||||||||||||||||
| ⊢ (𝑦 = 𝑧 ↔ ∀𝑢(𝑢 ∈ 𝑦 ↔ 𝑢 ∈ 𝑧)) & ⊢ (𝑡 = 𝑡 ↔ ∀𝑣(𝑣 ∈ 𝑡 ↔ 𝑣 ∈ 𝑡)) ⇒ ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-dfcleq.basic 38195* |
This theorem is a conservative extension of ax-ext 2738 to classes, with no
hypotheses. It is not complete, since ax-8 2148
can be derived (see
in-ax8 36776) via alpha-renaming.
Although unsuitable for general use, it is adequate for the development of theorems unaffected by alpha-renaming, including: 1. Theorems with no bound variables in the hypotheses or conclusion (see eqriv 2763). 2. Theorems using the same bound variable throughout (see abbib 2835). 3. Theorems with distinct bound variables arising only through implicit substitution (see eqabbw 2839). Remark: the proof uses axextb 2741 to prove the hypothesis of df-cleq 2758 that is a degenerate instance, but it could be proved also from minimal propositional calculus and { ax-gen 1828, equid 2045 }. (Contributed by NM, 15-Sep-1993.) (Revised by BJ, 24-Jun-2019.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-dfcleq.just 38196* |
The hypotheses added to this version of df-cleq 2758 address the following:
1. Equality of classes is an equivalence relation, as expected of equality. 2. Equality of classes obeys the Law of Indiscernibles (Leibniz's Law), and is compatible with class membership. 3. Alpha-renaming is explicitly permitted. (Contributed by Wolf Lammen, 7-Apr-2026.) | ||||||||||||||||||||||
| ⊢ (∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵) ↔ ∀𝑦(𝑦 ∈ 𝐴 ↔ 𝑦 ∈ 𝐵)) & ⊢ 𝐴 = 𝐴 & ⊢ (𝐴 = 𝐵 → (𝐵 = 𝐶 → 𝐶 = 𝐴)) & ⊢ (𝐴 = 𝐵 → (𝐴 ∈ 𝐶 → 𝐵 ∈ 𝐶)) & ⊢ (𝐴 = 𝐵 → (𝐶 ∈ 𝐴 → 𝐶 ∈ 𝐵)) ⇒ ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-df.clel 38197* |
Define the membership connective between classes. Theorem 6.3 of
[Quine] p. 41, or Proposition 4.6 of [TakeutiZaring] p. 13, which we
adopt as a definition. See these references for its metalogical
justification.
The hypotheses assert that every instance of the conclusion obtained by substituting the class variables with set variables already holds. Thus, this definition extends to class variables a relation already valid for set variables, and is therefore conservative. This only sketches the conservativity arguement; for details see Appendix of [Levy] p. 357. For this reason we regard this statement as a "definition", even though it does not have the usual form of a definition. Under a stricter syntactic criterion, df-clel 2841 would instead be an axiom. See also comments under df-clab 2745, df-cleq 2758, and eqabb 2905. Alternate characterizations of 𝐴 ∈ 𝐵 when either 𝐴 or 𝐵 is a set are given by clel2g 3621, clel3g 3623, and clel4g 3625. [Levy] p. 338 refers to this as the "axiom of membership", treating the theory of classes as an extralogical extension to our logic and set theory axioms. Under this definition, class members can only be sets; classes are therefore collections of sets. Although the extensionality expressed in df-cleq 2758 already points in this direction, an unusual interpretation of equality could still permit proper classes as members. Although the class definitions df-clab 2745, df-cleq 2758, and df-clel 2841 are eliminable and conservative, and hence meet the requirements for sound definitions, they are technically axioms in that they do not satisfy the syntactic requirements enforced by the current definition checker. The conservativity proofs require external justification beyond the scope of the checker. For a general discussion of the theory of classes, see mmset.html#class 2841. (Contributed by NM, 26-May-1993.) (Revised by BJ, 27-Jun-2019.) | ||||||||||||||||||||||
| ⊢ (𝑦 ∈ 𝑧 ↔ ∃𝑢(𝑢 = 𝑦 ∧ 𝑢 ∈ 𝑧)) & ⊢ (𝑡 ∈ 𝑡 ↔ ∃𝑣(𝑣 = 𝑡 ∧ 𝑣 ∈ 𝑡)) ⇒ ⊢ (𝐴 ∈ 𝐵 ↔ ∃𝑥(𝑥 = 𝐴 ∧ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-dfclel.basic 38198* |
This theorem gives a conservative extension of membership of classes,
without hypotheses. Conservativity alone, however, is insufficient,
since issues involving alpha-renaming can still arise, see in-ax8 36776.
Although unsuitable for general use, it is adequate for the development of theorems unaffected by alpha-renaming, including: 1. Theorems whose hypotheses and conclusion contain no bound variables (see eleq1w 2849). 2. Theorems using the same bound variable throughout (see elex2 2843). 3. Theorems in which distinct bound variables arise only through implicit substitution (see eqabbw 2839). (Contributed by BJ, 27-Jun-2019.) | ||||||||||||||||||||||
| ⊢ (𝐴 ∈ 𝐵 ↔ ∃𝑥(𝑥 = 𝐴 ∧ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-dfclel.just 38199* | Add a hypothesis to wl-dfclel.basic 38198, that permits alpha-renaming. (Contributed by Wolf Lammen, 7-Apr-2026.) | ||||||||||||||||||||||
| ⊢ (∃𝑥(𝑥 = 𝐴 ∧ 𝑥 ∈ 𝐵) ↔ ∃𝑦(𝑦 = 𝐴 ∧ 𝑦 ∈ 𝐵)) ⇒ ⊢ (𝐴 ∈ 𝐵 ↔ ∃𝑥(𝑥 = 𝐴 ∧ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| Theorem | wl-dfcleq 38200* |
The defining characterization of class equality. This version of
df-cleq 2758 has no restrictions, unlike the forms on
which it is based.
It is proved in Tarski's FOL from the axiom of extensionality
(ax-ext 2738), the definition of class equality (df-cleq 2758), and the
definition of class membership (df-clel 2841).
Its forward implication is known as "class extensionality". (Contributed by NM, 15-Sep-1993.) (Revised by BJ, 24-Jun-2019.) Base on wl-dfcleq.just 38196. (Revised by Wolf Lammen, 7-Apr-2026.) | ||||||||||||||||||||||
| ⊢ (𝐴 = 𝐵 ↔ ∀𝑥(𝑥 ∈ 𝐴 ↔ 𝑥 ∈ 𝐵)) | ||||||||||||||||||||||||
| < Previous Next > |
| Copyright terms: Public domain | < Previous Next > |