The ∃ of “there exists” is a capital E rotated half a turn, and the ∀ of “for all” is a capital A turned upside down. The set-theory and logic symbols LaTeX gives you — \forall, \exists, \in, \subset, \cup, \land — are not a designed system but a collection of such improvisations that happened to stick, and between those two rotated letters lie thirty-eight years and two different authors. This page follows the improvisations to the places where they still cost a working document something: why ⊂ means two different things depending on who is reading it, why \setminus and \backslash print exactly the same picture without typesetting the same, and why the sign for the empty set is a Danish letter.
\forall and \exists: two letters someone turned upside down
Both are plain LaTeX: \forall and \exists need no package, and both are, quite literally, rotated type. Giuseppe Peano printed the reversed E for “there exists” in volume II of his Formulaire de mathématiques in 1897 — eight years after he had pressed a Greek epsilon into service for membership. The inverted A took far longer to arrive: it first appears in Gerhard Gentzen’s “Untersuchungen über das logische Schließen”, Mathematische Zeitschrift 39 (1935), page 178. For thirty-eight years, then, logic had a sign for “there exists” and none for “for all”; the bound variable was simply written in parentheses, (x). The negated ∄ is younger still and is not in the LaTeX kernel at all — \nexists belongs to amssymb.
All of them live in math mode. Typing \forall in running text does not merely look wrong — it stops the run with ! Missing $ inserted., because outside math mode there is no spacing rule to apply at all. And the rule applied inside is worth knowing: fontmath.ltx declares \forall and \exists as \mathord, ordinary symbols, not relations. Quantifiers therefore claim no space of their own, which is why \forall x\exists y comes out cramped and why careful sources write \forall x\, \exists y\, P(x,y), slipping a thin space \, between them.
% quantifiers, and a set defined by a condition
\[
\forall \varepsilon > 0 \;\exists \delta > 0 \;
\bigl( |x - a| < \delta \implies |f(x) - f(a)| < \varepsilon \bigr)
\]
\[
A \cup B = \{\, x \mid x \in A \lor x \in B \,\}, \qquad
A \subseteq B \iff \forall x\,(x \in A \implies x \in B)
\]\land vs \wedge, \lnot vs \neg: which name to type
There is no difference in the output at all, so type whichever name says what you mean. fontmath.ltx declares \DeclareMathSymbol{\wedge}{\mathbin}{symbols}{"5E} and then writes an identical line — same class, same font, same slot — for \land; the same holds for \lor/\vee ("5F) and \lnot/\neg ("3A). None of the six needs amssymb. The convention that has settled is to use the logical names in logical formulas and the geometric names where ∧ means something that is not logic: \wedge for the wedge product of differential forms, \vee for join in a lattice. A reader who meets \land in your source knows at once that you meant “and” — that is the entire benefit, and it is a real one as long as the file is read by people.
| Command | Glyph | Name / use |
|---|---|---|
\forall | ∀ | universal quantifier (for all); \mathord |
\exists | ∃ | existential quantifier (there exists); \mathord |
\nexists | ∄ | there does not exist; needs amssymb |
\neg | ¬ | negation; declared identically to \lnot |
\lnot | ¬ | negation; the readable name inside logic |
\land | ∧ | conjunction (and); \mathbin |
\wedge | ∧ | same glyph; for wedge products and lattice meet |
\lor | ∨ | disjunction (or); \mathbin |
\vee | ∨ | same glyph; lattice join and other non-logical uses |
\Rightarrow | ⇒ | implication; the short double-shafted arrow |
\implies | ⟹ | implication with thick space each side; amsmath |
\Leftrightarrow | ⇔ | equivalence; the short double-shafted arrow |
\iff | ⟺ | equivalence; defined in the kernel, no package needed |
\implies and \iff deserve a footnote of their own. \iff is already defined in the LaTeX kernel as \;\Longleftrightarrow\; — a long double arrow with a thick space on each side — so it works with no package at all. amsmath renews it as \DOTSB\;\Longleftrightarrow\;, which changes nothing about the spacing and everything about \dots: \DOTSB marks a command as a binary operator or relation, so that a following \dots comes out centred (⋯) instead of sitting on the baseline. \implies, by contrast, exists only in amsmath. Within one document, choose either the short \Rightarrow or the long \implies and stay with it; switching mid-proof reads as though the two arrows meant different things.
\in, \notin, \ni: membership, and the \epsilon trap
The membership sign began life as a Greek epsilon: Peano used ε in 1889 as an abbreviation for the Latin est, “is”. That story, and its consequence — x \epsilon A compiles perfectly happily and prints with the spacing gone, because \epsilon is \mathord while \in is \mathrel — is told on the Greek letters page of this reference. Two further things fall out of the same declaration table. First, \notin is not a character: fontmath.ltx builds it as \mathrel{...\c@ncel\in}, overlaying a small slash on \in, so the position of the stroke is computed rather than inherited from a font, and \not\in lands in exactly the same width. Second, ∋ (\ni, “has as an element”) carries a second name, \owns, declared to the same slot — A \owns x reads better inside a sentence than A \ni x, and it costs nothing.
\subset vs \subseteq: the symbol that means two different things
Write \subseteq when you mean “subset, possibly equal”, and \subsetneq when you mean “strictly smaller”. The reason to avoid ⊂ is not that it is wrong but that it is read two ways: for a large part of the literature A \subset B permits A = B and is merely another spelling of ⊆, while for another large part it asserts A ≠ B. Both readings are established, both appear in current textbooks, and neither is going to win. The pair ⊂ and ⊃ was introduced by Ernst Schröder in the first volume of his Vorlesungen über die Algebra der Logik in 1890, for “is included in” and “includes”; the question of strictness split in usage afterwards and has stayed split ever since.
| Command | Glyph | Name / use |
|---|---|---|
\in | ∈ | is an element of; \mathrel |
\notin | ∉ | is not an element of; a slash overlaid on \in |
\ni | ∋ | has as an element; also spelled \owns |
\subset | ⊂ | inclusion; ambiguous — some read it as proper |
\subseteq | ⊆ | subset of or equal to; unambiguous |
\subsetneq | ⊊ | proper subset; needs amssymb |
\supset | ⊃ | the reverse of ⊂, with the same ambiguity |
\supseteq | ⊇ | superset of or equal to |
Two habits follow in practice. First, if a document uses ⊂ at all, declare once near the front which reading is meant — many books do exactly that. Second, where the strictness is carrying the argument, spell it out: \subsetneq (⊊) from amssymb leaves nothing to interpret. amssymb also offers \subsetneqq (with a doubled bar underneath) and the shapes \varsubsetneq and \varsubsetneqq, which differ only in how the slash and the bar are drawn; unless a journal style asks for one of them, \subsetneq is the safe default. Note in passing that the LaTeX kernel contains no proper-subset symbol at all — which is itself a hint about how this notation grew.
\cup, \cap, \setminus — and what \backslash quietly does instead
\setminus and \backslash fetch the same picture from the same slot of the same font — position "6E of the symbols font. What differs is the class they were declared with, and that is the entire story. fontmath.ltx writes \DeclareMathSymbol{\setminus}{\mathbin}{symbols}{"6E}, but declares \backslash as \mathord, with a comment in the source saying it is there “for double coset G\backslash H”. Set A \setminus B and A \backslash B side by side at 10pt and the boxes measure 25.03pt and 20.59pt: the missing 4.44pt is the medium space of 4mu that a binary operator takes on each side. Nothing errors, nothing warns, and the gap is small enough to survive a proofread — which is exactly why it is worth deciding once. Use \setminus for set difference and keep \backslash for the double cosets it was put there for.
The very same trap, one size larger, is waiting in set-builder notation. | and \mid are also the same glyph — slot "6A — declared \mathord and \mathrel respectively. \{x \mid x > 0\} measures 48.10pt against 42.54pt for \{x | x > 0\}, a gap of 5.56pt: the 5mu thick space a relation takes on both sides. The condition bar in a set-builder is a relation — it separates the variable from the statement about it — so \mid is the correct choice and | is the one that makes the set look glued together. When a tall expression forces the braces to grow, \left\{\, x \in X \;\middle|\; f(x) = 0 \,\right\} grows the bar with them; a bare \mid inside \left\{ ... \right\} stays small while the braces stretch past it.
% set difference and set-builder: pick the relation-class commands
\[
A \setminus B = \{\, x \in A \mid x \notin B \,\}
\]
% \middle| grows with \left\{ ... \right\}; a bare \mid does not
\[
\left\{\, x \in X \;\middle|\; \frac{f(x)}{g(x)} = 0 \,\right\}
\]| Command | Glyph | Name / use |
|---|---|---|
\cup | ∪ | union; \mathbin |
\cap | ∩ | intersection; \mathbin |
\setminus | ∖ | set difference; spaced as a binary operator |
\backslash | ∖ | the same glyph as \mathord; for double cosets G\H |
\mid | ∣ | the condition bar of a set-builder; \mathrel |
\complement | ∁ | complement, as in A^\complement; amssymb |
\emptyset vs \varnothing: the empty set is a Danish letter
∅ is not a Greek phi, and it is not a zero with a line through it. It is Ø, the letter of the Danish and Norwegian alphabets, and it entered mathematics in 1939 through Bourbaki’s Éléments de mathématique. André Weil later claimed it in his memoir: the symbol came from the Norwegian alphabet, he wrote, with which he alone among the Bourbaki group was familiar. Knowing where it came from settles the argument about which LaTeX command to use, because the two commands draw two different readings of the same letter.
\emptyset is the kernel’s version and \varnothing comes from amssymb, and they are not the same shape. Measured in Computer Modern at 10pt, \emptyset is 5.00pt wide and 7.50pt tall — a narrow upright oval with a stroke through it — while \varnothing is 7.78pt wide and 5.82pt tall, a round circle crossed by a slash that overshoots at both ends. The second is far closer to a handwritten Ø, and it is what most people picture when they hear “empty set”. The practical conclusion is a single rule: load amssymb, use \varnothing throughout, and do not let \emptyset creep back in halfway. Two shapes for one set inside one document is the kind of thing a copy-editor circles in red.
\vdash, \models, \top, \bot: turnstiles and the marks of a proof
All four are standard LaTeX, and all four talk about a proof rather than about a set. ⊢ (\vdash) is the turnstile of syntactic derivability — Γ ⊢ φ, “φ can be derived from Γ” — and ⊨ (\models) is the double turnstile of semantic consequence, “every model of Γ makes φ true”. Telling those two apart is the subject of half of mathematical logic, so picking the wrong one is not a typographic detail. \models is not a single character either: fontmath.ltx assembles it from a vertical bar joined to a double rule, \mathrel{|}\joinrel\Relbar. ⊣ (\dashv) is ⊢ mirrored, and outside logic it is how adjoint functors are written, F ⊣ G. ⊤ and ⊥ are the constants true and false, and also the greatest and least elements of a lattice.
Here too the class is what matters. \vdash, \dashv and \models are \mathrel and so claim their own space on both sides; \top and \bot are \mathord, because they normally stand alone as constants. Write L \bot M meaning “L is perpendicular to M” and it therefore sets tight. The command for that job is \perp, which is the same slot "3F declared again as a relation. Measured, L \bot M comes to 25.38pt and L \perp M to 30.93pt — the 5.56pt difference is once more the thick space a relation takes on each side. \perp is in the kernel too; no package required.
| Command | Glyph | Name / use |
|---|---|---|
\vdash | ⊢ | derivable (turnstile); \mathrel |
\dashv | ⊣ | mirrored ⊢; also adjunctions, F ⊣ G |
\models | ⊨ | semantic consequence; a bar joined to a double rule |
\top | ⊤ | verum / greatest element; \mathord |
\bot | ⊥ | falsum / least element; \mathord |
\perp | ⊥ | the same glyph as a relation; use for “perpendicular” |
\therefore | ∴ | therefore; declared as a relation; amssymb |
\because | ∵ | because; declared as a relation; amssymb |
Which of these need amssymb? (and where ∴ and ∵ fit)
Exactly six commands on this page live outside the LaTeX kernel: \nexists, \varnothing, \subsetneq, \complement, \therefore and \because. All six come from amssymb, and without \usepackage{amssymb} in the preamble each of them stops the run with ! Undefined control sequence. The seventh outsider is \implies, which belongs to amsmath rather than amssymb. Since amssymb loads amsfonts for you and any document with mathematics in it usually wants amsmath anyway, two lines in the preamble cover everything on this page.
\usepackage{amsmath} % \implies, \impliedby, \iff with \DOTSB
\usepackage{amssymb} % \nexists \varnothing \subsetneq \complement \therefore \because
% \therefore is a relation: it already carries space on both sides
\[
x^2 = 4 \quad \therefore x = \pm 2
\]One last piece of folklore to retire. ∴ and ∵ are often said to need manual spacing — \therefore\ and the like. They do not. amssymb declares both as \mathrel, so x \therefore y already carries the thick relation space on each side; adding \ on top of it simply doubles the gap. What does deserve attention is where to use them at all, because these marks belong to the blackboard more than to the printed page. In finished prose, the words “therefore” and “since” read better almost every time, and ∴ is best kept for places where space is genuinely short, such as inside a display.
- Standardise on
\varnothing(amssymb) for the empty set and never mix\emptysetin - Use
\subseteqfor inclusion and\subsetneqfor proper inclusion; avoid the ambiguous\subset, or declare its meaning up front - Set difference is
\setminus; leave\backslashfor double cosets - The set-builder bar is
\mid, or\middle|when it has to stretch — never a bare| \land,\lor,\lnotinside logic;\wedge,\veefor wedge products and lattices- Pick either the short
\Rightarrowor the long\impliesfor implication, and keep to it