Subobject Classifier #
We define what it means for a morphism in a category to be a subobject classifier as
CategoryTheory.HasClassifier
.
c.f. the following Lean 3 code, where similar work was done: https://github.com/b-mehta/topos/blob/master/src/subobject_classifier.lean
Main definitions #
Let C
refer to a category with a terminal object.
CategoryTheory.Classifier C
is the data of a subobject classifier inC
.CategoryTheory.HasClassifier C
says that there is at least one subobject classifier.Ω C
denotes a choice of subobject classifier.
Main results #
It is a theorem that the truth morphism
⊤_ C ⟶ Ω C
is a (split, and therefore regular) monomorphism, simply because its source is the terminal object.An instance of
IsRegularMonoCategory C
is exhibited for any category with a subobject classifier.CategoryTheory.Classifier.representableBy
: any subobject classifierΩ
inC
represents the subobjects functorCategoryTheory.Subobject.presheaf C
.CategoryTheory.Classifier.SubobjectRepresentableBy.classifier
: any representationΩ
ofCategoryTheory.Subobject.presheaf C
is a subobject classifier inC
.CategoryTheory.hasClassifier_isRepresentable_iff
: from the two above mappings, we get that a categoryC
has a subobject classifier if and only if the subobjects presheafCategoryTheory.Subobject.presheaf C
is representable (Proposition 1 in Section I.3 of [MLM92]).
References #
TODO #
A morphism truth : ⊤_ C ⟶ Ω
from the terminal object of a category C
is a subobject classifier if, for every monomorphism m : U ⟶ X
in C
,
there is a unique map χ : X ⟶ Ω
such that the following square is a pullback square:
U ---------m----------> X
| |
terminal.from U χ
| |
v v
⊤_ C ------truth--------> Ω
An equivalent formulation replaces the object ⊤_ C
with an arbitrary object, and instead
includes the assumption that truth
is a monomorphism.
- Ω : C
The target of the truth morphism
the truth morphism for a subobject classifier
For any monomorphism
U ⟶ X
, there is an associated characteristic mapX ⟶ Ω
.- isPullback {U X : C} (m : U ⟶ X) [Mono m] : IsPullback m (Limits.terminal.from U) (self.χ m) self.truth
χ m
forms the appropriate pullback square. - uniq {U X : C} (m : U ⟶ X) [Mono m] (χ' : X ⟶ self.Ω) (hχ' : IsPullback m (Limits.terminal.from U) χ' self.truth) : χ' = self.χ m
Instances For
A category C
has a subobject classifier if there is at least one subobject classifier.
- exists_classifier : Nonempty (Classifier C)
There is some classifier.
Instances
Notation for the object in an arbitrary choice of a subobject classifier
Equations
Instances For
Notation for the "truth arrow" in an arbitrary choice of a subobject classifier
Equations
Instances For
returns the characteristic morphism of the subobject (m : U ⟶ X) [Mono m]
Equations
- CategoryTheory.HasClassifier.χ m = ⋯.some.χ m
Instances For
The diagram
U ---------m----------> X
| |
terminal.from U χ m
| |
v v
⊤_ C -----truth C-------> Ω
is a pullback square.
The diagram
U ---------m----------> X
| |
terminal.from U χ m
| |
v v
⊤_ C -----truth C-------> Ω
commutes.
χ m
is the only map for which the associated square
is a pullback square.
truth C
is a regular monomorphism (because it is split).
The following diagram
U ---------m----------> X
| |
terminal.from U χ m
| |
v v
⊤_ C -----truth C-------> Ω
being a pullback for any monic m
means that every monomorphism
in C
is the pullback of a regular monomorphism; since regularity
is stable under base change, every monomorphism is regular.
Hence, C
is a regular mono category.
It also follows that C
is a balanced category.
If the source of a faithful functor has a subobject classifier, the functor reflects isomorphisms. This holds for any balanced category.
If the source of a faithful functor is the opposite category of one with a subobject classifier, the same holds -- the functor reflects isomorphisms.
The representability theorem of subobject classifiers #
From classifiers to representations #
Any subobject classifier Ω
represents the subobjects functor Subobject.presheaf
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
From representations to classifiers #
Abbreviation to enable dot notation on the hypothesis h
stating that the subobjects presheaf
is representable by some object Ω
.
Equations
Instances For
h.Ω₀
is the subobject of Ω
which corresponds to the identity 𝟙 Ω
,
given h : SubobjectRepresentableBy Ω
.
Equations
- h.Ω₀ = h.homEquiv (CategoryTheory.CategoryStruct.id Ω)
Instances For
h.homEquiv
acts like an "object comprehension" operator: it maps any characteristic map
f : X ⟶ Ω
to the associated subobject of X
, obtained by pulling back h.Ω₀
along f
.
For any subobject x
, the pullback of h.Ω₀
along the characteristic map of x
given by h.homEquiv
is x
itself.
h.χ m
is the characteristic map of monomorphism m
given by the bijection h.homEquiv
.
Equations
- h.χ m = h.homEquiv.symm (CategoryTheory.Subobject.mk m)
Instances For
h.iso m
is the isomorphism between m
and the pullback of Ω₀
along the characteristic map of m
.
Equations
Instances For
h.π m
is the first projection in the following pullback square:
U --h.π m--> (Ω₀ : C)
| |
m Ω₀.arrow
| |
v v
X -----h.χ m---> Ω
Equations
- h.π m = CategoryTheory.CategoryStruct.comp (h.iso m).hom.left (CategoryTheory.Subobject.pullbackπ (h.χ m) h.Ω₀)
Instances For
The main non-trivial result: h.Ω₀
is actually a terminal object.
Equations
- h.isTerminalΩ₀ = CategoryTheory.Limits.IsTerminal.ofUniqueHom (fun (X : C) => h.π (CategoryTheory.CategoryStruct.id X)) ⋯
Instances For
h.isoΩ₀
is the unique isomorphism from h.Ω₀
to the canonical terminal object ⊤_ C
.
Equations
Instances For
Any representation Ω
of Subobject.presheaf C
gives a subobject classifier with truth values
object Ω
.
Equations
- h.classifier = { Ω := Ω, truth := CategoryTheory.CategoryStruct.comp h.isoΩ₀.inv h.Ω₀.arrow, χ := fun {U X : C} (m : U ⟶ X) (x : CategoryTheory.Mono m) => h.χ m, isPullback := ⋯, uniq := ⋯ }
Instances For
A category has a subobject classifier if and only if the subobjects functor is representable.