Representably flat functors #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We define representably flat functors as functors such that the category of structured arrows
over X
is cofiltered for each X
. This concept is also known as flat functors as in [Joh02]
Remark C2.3.7, and this name is suggested by Mike Shulman in
https://golem.ph.utexas.edu/category/2011/06/flat_functors_and_morphisms_of.html to avoid
confusion with other notions of flatness.
This definition is equivalent to left exact functors (functors that preserves finite limits) when
C
has all finite limits.
Main results #
flat_of_preserves_finite_limits
: IfF : C ⥤ D
preserves finite limits andC
has all finite limits, thenF
is flat.preserves_finite_limits_of_flat
: IfF : C ⥤ D
is flat, then it preserves all finite limits.preserves_finite_limits_iff_flat
: IfC
has all finite limits, thenF
is flat iffF
is left_exact.Lan_preserves_finite_limits_of_flat
: IfF : C ⥤ D
is a flat functor between small categories, then the functorLan F.op
between presheaves of sets preserves all finite limits.flat_iff_Lan_flat
: IfC
,D
are small andC
has all finite limits, thenF
is flat iffLan F.op : (Cᵒᵖ ⥤ Type*) ⥤ (Dᵒᵖ ⥤ Type*)
is flat.preserves_finite_limits_iff_Lan_preserves_finite_limits
: IfC
,D
are small andC
has all finite limits, thenF
preserves finite limits iffLan F.op : (Cᵒᵖ ⥤ Type*) ⥤ (Dᵒᵖ ⥤ Type*)
does.
Given a cone c : cone K
and a map f : X ⟶ c.X
, we can construct a cone of structured
arrows over X
with f
as the cone point. This is the underlying diagram.
Equations
- category_theory.structured_arrow_cone.to_diagram c = {obj := λ (j : J), category_theory.structured_arrow.mk (c.π.app j), map := λ (j k : J) (g : j ⟶ k), category_theory.structured_arrow.hom_mk g _, map_id' := _, map_comp' := _}
Given a diagram of structured_arrow X F
s, we may obtain a cone with cone point X
.
Equations
- category_theory.structured_arrow_cone.diagram_to_cone F G = {X := X, π := {app := λ (j : J), (G.obj j).hom, naturality' := _}}
Given a cone c : cone K
and a map f : X ⟶ F.obj c.X
, we can construct a cone of structured
arrows over X
with f
as the cone point.
Equations
- category_theory.structured_arrow_cone.to_cone F c f = {X := category_theory.structured_arrow.mk f, π := {app := λ (j : J), category_theory.structured_arrow.hom_mk (c.π.app j) _, naturality' := _}}
- cofiltered : ∀ (X : D), category_theory.is_cofiltered (category_theory.structured_arrow X F)
A functor F : C ⥤ D
is representably-flat functor if the comma category (X/F)
is cofiltered for each X : C
.
Instances of this typeclass
(Implementation).
Given a limit cone c : cone K
and a cone s : cone (K ⋙ F)
with F
representably flat,
s
can factor through F.map_cone c
.
Equations
- category_theory.preserves_finite_limits_of_flat.lift F hc s = let s' : category_theory.limits.cone (category_theory.structured_arrow_cone.to_diagram s ⋙ category_theory.structured_arrow.pre s.X K F) := category_theory.is_cofiltered.cone (category_theory.structured_arrow_cone.to_diagram s ⋙ category_theory.structured_arrow.pre s.X K F) in s'.X.hom ≫ F.map (hc.lift ((category_theory.limits.cones.postcompose {app := λ (X : J), 𝟙 (((category_theory.structured_arrow_cone.to_diagram s ⋙ category_theory.structured_arrow.pre s.X K F) ⋙ category_theory.structured_arrow.proj s.X F).obj X), naturality' := _}).obj ((category_theory.structured_arrow.proj s.X F).map_cone s')))
Representably flat functors preserve finite limits.
Equations
- category_theory.preserves_finite_limits_of_flat F = category_theory.limits.preserves_finite_limits_of_preserves_finite_limits_of_size F (λ (J : Type v₁) (𝒥 : category_theory.small_category J) (hJ : category_theory.fin_category J), {preserves_limit := id (λ (K : J ⥤ C), {preserves := λ (c : category_theory.limits.cone K) (hc : category_theory.limits.is_limit c), {lift := category_theory.preserves_finite_limits_of_flat.lift F hc, fac' := _, uniq' := _}})})
If C
is finitely cocomplete, then F : C ⥤ D
is representably flat iff it preserves
finite limits.
Equations
- category_theory.preserves_finite_limits_iff_flat F = {to_fun := λ (_x : category_theory.representably_flat F), category_theory.preserves_finite_limits_of_flat F, inv_fun := _, left_inv := _, right_inv := _}
(Implementation)
The evaluation of Lan F
at X
is the colimit over the costructured arrows over X
.
Equations
If F : C ⥤ D
is a representably flat functor between small categories, then the functor
Lan F.op
that takes presheaves over C
to presheaves over D
preserves finite limits.
Equations
- category_theory.Lan_preserves_finite_limits_of_flat E F = category_theory.limits.preserves_finite_limits_of_preserves_finite_limits_of_size (category_theory.Lan F.op) (λ (J : Type u₁) (𝒥 : category_theory.small_category J) (hJ : category_theory.fin_category J), category_theory.limits.preserves_limits_of_shape_of_evaluation (category_theory.Lan F.op) J (λ (K : Dᵒᵖ), category_theory.limits.preserves_limits_of_shape_of_nat_iso (category_theory.Lan_evaluation_iso_colim E F.op K).symm))
If C
is finitely complete, then F : C ⥤ D
preserves finite limits iff
Lan F.op : (Cᵒᵖ ⥤ Type*) ⥤ (Dᵒᵖ ⥤ Type*)
preserves finite limits.
Equations
- category_theory.preserves_finite_limits_iff_Lan_preserves_finite_limits F = {to_fun := λ (_x : category_theory.limits.preserves_finite_limits F), infer_instance, inv_fun := λ (_x : category_theory.limits.preserves_finite_limits (category_theory.Lan F.op)), category_theory.limits.preserves_finite_limits_of_preserves_finite_limits_of_size F (λ (J : Type u₁) (𝒥 : category_theory.small_category J) (hJ : category_theory.fin_category J), category_theory.preserves_limit_of_Lan_preserves_limit F J), left_inv := _, right_inv := _}