The lattice of subobjects #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We provide the semilattice_inf
with order_top (subobject X)
instance when [has_pullback C]
,
and the semilattice_sup (subobject X)
instance when [has_images C] [has_binary_coproducts C]
.
Equations
Equations
The morphism to the top object in mono_over X
.
Equations
map f
sends ⊤ : mono_over X
to ⟨X, f⟩ : mono_over Y
.
The pullback of the top object in mono_over Y
is (isomorphic to) the top object in mono_over X
.
There is a morphism from ⊤ : mono_over A
to the pullback of a monomorphism along itself;
as the category is thin this is an isomorphism.
The pullback of a monomorphism along itself is isomorphic to the top object.
Equations
- category_theory.mono_over.has_bot = {bot := category_theory.mono_over.mk' (category_theory.limits.initial.to X) category_theory.mono_over.has_bot._proof_1}
The (unique) morphism from ⊥ : mono_over X
to any other f : mono_over X
.
Equations
map f
sends ⊥ : mono_over X
to ⊥ : mono_over Y
.
The object underlying ⊥ : subobject B
is (up to isomorphism) the zero object.
When [has_pullbacks C]
, mono_over A
has "intersections", functorial in both arguments.
As mono_over A
is only a preorder, this doesn't satisfy the axioms of semilattice_inf
,
but we reuse all the names from semilattice_inf
because they will be used to construct
semilattice_inf (subobject A)
shortly.
Equations
- category_theory.mono_over.inf = {obj := λ (f : category_theory.mono_over A), category_theory.mono_over.pullback f.arrow ⋙ category_theory.mono_over.map f.arrow, map := λ (f₁ f₂ : category_theory.mono_over A) (k : f₁ ⟶ f₂), {app := λ (g : category_theory.mono_over A), category_theory.mono_over.hom_mk (category_theory.limits.pullback.lift category_theory.limits.pullback.fst (category_theory.limits.pullback.snd ≫ k.left) _) _, naturality' := _}, map_id' := _, map_comp' := _}
A morphism from the "infimum" of two objects in mono_over A
to the first object.
Equations
A morphism from the "infimum" of two objects in mono_over A
to the second object.
A morphism version of the le_inf
axiom.
Equations
- f.le_inf g h = λ (k₁ : h ⟶ f) (k₂ : h ⟶ g), category_theory.mono_over.hom_mk (category_theory.limits.pullback.lift k₂.left k₁.left _) _
When [has_images C] [has_binary_coproducts C]
, mono_over A
has a sup
construction,
which is functorial in both arguments,
and which on subobject A
will induce a semilattice_sup
.
A morphism version of le_sup_left
.
Equations
A morphism version of le_sup_right
.
Equations
A morphism version of sup_le
.
Equations
- category_theory.subobject.order_top = {top := quotient.mk' ⊤, le_top := _}
Equations
Equations
- category_theory.subobject.order_bot = {bot := quotient.mk' ⊥, bot_le := _}
The object underlying ⊥ : subobject B
is (up to isomorphism) the initial object.
The object underlying ⊥ : subobject B
is (up to isomorphism) the zero object.
Sending X : C
to subobject X
is a contravariant functor Cᵒᵖ ⥤ Type
.
Equations
- category_theory.subobject.functor C = {obj := λ (X : Cᵒᵖ), category_theory.subobject (opposite.unop X), map := λ (X Y : Cᵒᵖ) (f : X ⟶ Y), (category_theory.subobject.pullback f.unop).obj, map_id' := _, map_comp' := _}
The functorial infimum on mono_over A
descends to an infimum on subobject A
.
Equations
- category_theory.subobject.semilattice_inf = {inf := λ (m n : category_theory.subobject B), (category_theory.subobject.inf.obj m).obj n, le := partial_order.le (category_theory.subobject.partial_order B), lt := partial_order.lt (category_theory.subobject.partial_order B), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, inf_le_left := _, inf_le_right := _, le_inf := _}
⊓
commutes with pullback.
⊓
commutes with map.
The functorial supremum on mono_over A
descends to an supremum on subobject A
.
Equations
- category_theory.subobject.semilattice_sup = {sup := λ (m n : category_theory.subobject B), (category_theory.subobject.sup.obj m).obj n, le := partial_order.le (category_theory.subobject.partial_order B), lt := partial_order.lt (category_theory.subobject.partial_order B), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _}
Equations
Equations
- category_theory.subobject.lattice = {sup := semilattice_sup.sup category_theory.subobject.semilattice_sup, le := semilattice_inf.le category_theory.subobject.semilattice_inf, lt := semilattice_inf.lt category_theory.subobject.semilattice_inf, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := semilattice_inf.inf category_theory.subobject.semilattice_inf, inf_le_left := _, inf_le_right := _, le_inf := _}
The "wide cospan" diagram, with a small indexing type, constructed from a set of subobjects.
(This is just the diagram of all the subobjects pasted together, but using well_powered C
to make the diagram small.)
Equations
- category_theory.subobject.wide_cospan s = category_theory.limits.wide_pullback_shape.wide_cospan A (λ (j : ↥(⇑(equiv_shrink (category_theory.subobject A)) '' s)), ↑(⇑((equiv_shrink (category_theory.subobject A)).symm) ↑j)) (λ (j : ↥(⇑(equiv_shrink (category_theory.subobject A)) '' s)), (⇑((equiv_shrink (category_theory.subobject A)).symm) ↑j).arrow)
Auxiliary construction of a cone for le_Inf
.
Equations
The limit of wide_cospan s
. (This will be the supremum of the set of subobjects.)
The inclusion map from wide_pullback s
to A
Equations
Instances for category_theory.subobject.wide_pullback_ι
When [well_powered C]
and [has_wide_pullbacks C]
, subobject A
has arbitrary infimums.
Equations
- category_theory.subobject.complete_semilattice_Inf = {le := partial_order.le (category_theory.subobject.partial_order B), lt := partial_order.lt (category_theory.subobject.partial_order B), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, Inf := category_theory.subobject.Inf B, Inf_le := _, le_Inf := _}
The univesal morphism out of the coproduct of a set of subobjects,
after using [well_powered C]
to reindex by a small type.
Equations
- category_theory.subobject.small_coproduct_desc s = category_theory.limits.sigma.desc (λ (j : ↥(⇑(equiv_shrink (category_theory.subobject A)) '' s)), (⇑((equiv_shrink (category_theory.subobject A)).symm) ↑j).arrow)
When [well_powered C] [has_images C] [has_coproducts C]
,
subobject A
has arbitrary supremums.
Equations
- category_theory.subobject.complete_semilattice_Sup = {le := partial_order.le (category_theory.subobject.partial_order B), lt := partial_order.lt (category_theory.subobject.partial_order B), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, Sup := category_theory.subobject.Sup B, le_Sup := _, Sup_le := _}
Equations
- category_theory.subobject.complete_lattice = {sup := semilattice_sup.sup category_theory.subobject.semilattice_sup, le := semilattice_inf.le category_theory.subobject.semilattice_inf, lt := semilattice_inf.lt category_theory.subobject.semilattice_inf, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := semilattice_inf.inf category_theory.subobject.semilattice_inf, inf_le_left := _, inf_le_right := _, le_inf := _, Sup := complete_semilattice_Sup.Sup category_theory.subobject.complete_semilattice_Sup, le_Sup := _, Sup_le := _, Inf := complete_semilattice_Inf.Inf category_theory.subobject.complete_semilattice_Inf, Inf_le := _, le_Inf := _, top := bounded_order.top category_theory.subobject.bounded_order, bot := bounded_order.bot category_theory.subobject.bounded_order, le_top := _, bot_le := _}
A nonzero object has nontrivial subobject lattice.
The subobject lattice of a subobject Y
is order isomorphic to the interval set.Iic Y
.
Equations
- Y.subobject_order_iso = {to_equiv := {to_fun := λ (Z : category_theory.subobject ↑Y), ⟨category_theory.subobject.mk (Z.arrow ≫ Y.arrow) _, _⟩, inv_fun := λ (Z : ↥(set.Iic Y)), category_theory.subobject.mk (Z.val.of_le Y _), left_inv := _, right_inv := _}, map_rel_iff' := _}