Perfect and Cantor antichains, and thinness #
The vocabulary a dichotomy theorem is stated in, separated from any particular dichotomy.
HasPerfectAntichainOn r A— a nonempty perfect subset ofAof pairwiser-inequivalent points;HasCantorAntichainOn r A— a continuous Cantor-space parametrization of such an antichain, the constructive form the Cantor-scheme builders actually produce;IsThinOn r A— the negation of the first.
The two positive forms are related by HasPerfectAntichainOn.hasCantorAntichainOn, which is
Perfect.exists_nat_bool_injection plus bookkeeping. Injectivity of a Cantor antichain is not
an extra hypothesis: it follows from reflexivity of the setoid, since distinct arguments have
inequivalent images and every point is equivalent to itself.
The file also carries the cardinal facts these statements are measured against: a nonempty
perfect set in a complete metric space has size continuum (Perfect.mk_eq_continuum); a
perfect transversal forces continuum-many classes (continuum_classes_of_perfect_transversal,
with its two-sided companion); and a Polish space, hence any quotient of one, has at most
continuum-many points (mk_le_continuum_of_polish, mk_quotient_le_continuum_of_polish).
None of them mentions a dichotomy, an equivalence relation being closed, or a splitting
hypothesis.
Hypotheses are kept minimal, and the ordering below is what makes that possible. Only three
results need SecondCountableTopology: the two Polish cardinality bounds and the upper half of
Perfect.mk_eq_continuum. Everything else needs at most MetricSpace + CompleteSpace (for the
Cantor injection) or nothing beyond TopologicalSpace. In particular
continuum_classes_of_perfect_transversal is proved through the Cantor antichain rather than
through mk_eq_continuum, which is what lets it drop second countability — it only ever needed
the lower bound.
The generic vocabulary #
A carries a perfect antichain for r: a nonempty perfect subset of A whose points
are pairwise r-inequivalent.
Equations
Instances For
A carries a Cantor antichain for r: a continuous map from Cantor space into A
sending distinct points to r-inequivalent ones. This is what the Cantor-scheme builders
produce directly, and it is the form a thinness proof must refute.
Equations
Instances For
Adapters that need no metric structure #
Enlarging the ambient set preserves a Cantor antichain. Keeping this separate is what lets the scheme wrappers below conclude at the scheme's own root rather than carrying a containment hypothesis.
A Cantor antichain for a coarser relation is one for a finer relation.
hrs says r refines s: being r-related implies being s-related, so r cuts the space
into the finer classes. Separating points for the coarser s is therefore the stronger
requirement, and it survives the passage to r.
The direction is easy to reverse mentally, so concretely: with r := isoSetoid φ and
s := bfEquivSetoid φ α, isomorphic models are back-and-forth equivalent, so a family that is
pairwise BF-inequivalent is in particular pairwise non-isomorphic.
A Cantor antichain on a subtype is one on the underlying set.
The subtype carries r pulled back along the inclusion, and it is the ambient set seen from
inside, so the containment clause is vacuous there and becomes membership in A here. Only
continuity has to move, and it moves by composing with the inclusion.
This is the return leg for anything proved on the model subtype — where a Polish structure is available — when the statement to be established is about the ambient space.
A Cantor antichain survives coarsening the topology.
Of the three clauses only continuity is topological, and continuity into a coarser topology is
just composition with the identity. This is the direction needed to carry a witness built in a
Polish refinement — the kind PolishSpace.IsClopenable supplies — back to the ambient space.
It is also why no theorem about perfectness surviving coarsening is required: coarsening is
applied to the Cantor antichain, where it is cheap, and perfectness is recovered afterwards in
the ambient space by HasCantorAntichainOn.hasPerfectAntichainOn.
A Cantor antichain is injective.
The inequivalence clause is deliberately not restated in the conclusion: it is already the
content of h, and a consumer needing it should unpack h. One job per adapter.
A Cantor antichain forces continuum-many classes. No metric or completeness assumption:
the argument is the quotient-map injection, and only Continuous f mentions the topology.
Cantor antichain → perfect antichain #
The converse direction to HasPerfectAntichainOn.hasCantorAntichainOn below, and the one that
needs no metric or completeness assumption — only that the ambient space is Hausdorff.
A Cantor antichain is a perfect antichain.
The range is closed because a continuous injection out of a compact space into a Hausdorff one is
a closed embedding; and it inherits Cantor space's lack of isolated points by transporting
accumulation points along that injection. No metric, completeness, or second-countability
assumption is needed — only T2Space.
Thinness rules out a Cantor antichain. The converse of IsThinOn.of_no_cantorAntichain
below, and much cheaper: that direction needs a complete metric space, this one only T2Space.
Adapters needing the Cantor injection #
Perfect.exists_nat_bool_injection needs a complete metric space, but not second
countability.
A perfect antichain yields a Cantor antichain: Perfect.exists_nat_bool_injection together
with the observation that the injection's range lies in the perfect set, hence in A.
Refuting Cantor antichains suffices for thinness.
Perfect set cardinality #
This is where second countability genuinely enters, and only for the upper bound.
A nonempty perfect subset of a Polish space has cardinality = continuum.
Lower bound via Perfect.exists_nat_bool_injection; upper bound via
second-countability of Polish spaces.
Perfect transversal → continuum classes #
If an equivalence relation has a perfect set of pairwise inequivalent elements, it has at least continuum classes.
No second countability: the route is the Cantor antichain, i.e. only the lower bound of
Perfect.mk_eq_continuum, which is exactly the half that does not need it.
If an equivalence relation has a perfect set of pairwise inequivalent elements, it has exactly continuum classes (assuming the ambient space has cardinality ≤ continuum).
No second countability: the upper bound arrives explicitly as hle.
Polish space cardinality upper bound #
A Polish space has cardinality ≤ continuum.
The quotient of a Polish space has cardinality ≤ continuum.
Packaging the Cantor-scheme builders #
Wrappers only: the existential content is CantorAntichain.lean's, restated in the vocabulary
above so that consumers need not unpack it. Each concludes at the scheme's own root; use
HasCantorAntichainOn.mono to enlarge to an ambient set.
CantorScheme.exists_antichain_map in antichain vocabulary, concluding at the scheme root
A [] via branch membership at level zero.
CantorScheme.exists_antichain_map_of_splitting in antichain vocabulary.