Documentation

Mathlib.CategoryTheory.CofilteredSystem

Cofiltered systems #

This file deals with properties of cofiltered (and inverse) systems.

Main definitions #

Given a functor F : J ⥤ Type v:

Main statements #

TODO #

References #

Tags #

Mittag-Leffler, surjective, eventual range, inverse system,

This bootstraps nonempty_sections_of_finite_inverse_system. In this version, the F functor is between categories of the same universe, and it is an easy corollary to TopCat.nonempty_limitCone_of_compact_t2_cofiltered_system.

The cofiltered limit of nonempty finite types is nonempty.

See nonempty_sections_of_finite_inverse_system for a specialization to inverse limits.

theorem nonempty_sections_of_finite_inverse_system {J : Type u} [Preorder J] [IsDirected J fun (x1 x2 : J) => x1 x2] (F : CategoryTheory.Functor Jᵒᵖ (Type v)) [∀ (j : Jᵒᵖ), Finite (F.obj j)] [∀ (j : Jᵒᵖ), Nonempty (F.obj j)] :

The inverse limit of nonempty finite types is nonempty.

See nonempty_sections_of_finite_cofiltered_system for a generalization to cofiltered limits. That version applies in almost all cases, and the only difference is that this version allows J to be empty.

This may be regarded as a generalization of Kőnig's lemma. To specialize: given a locally finite connected graph, take Jᵒᵖ to be and F j to be length-j paths that start from an arbitrary fixed vertex. Elements of F.sections can be read off as infinite rays in the graph.

The eventual range of the functor F : J ⥤ Type v at index j : J is the intersection of the ranges of all maps F.map f with i : J and f : i ⟶ j.

Equations
Instances For
    theorem CategoryTheory.Functor.mem_eventualRange_iff {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) {j : J} {x : F.obj j} :
    x F.eventualRange j ∀ ⦃i : J⦄ (f : i j), x Set.range (F.map f)

    The functor F : J ⥤ Type v satisfies the Mittag-Leffler condition if for all j : J, there exists some i : J and f : i ⟶ j such that for all k : J and g : k ⟶ j, the range of F.map f is contained in that of F.map g; in other words (see isMittagLeffler_iff_eventualRange), the eventual range at j is attained by some f : i ⟶ j.

    Equations
    Instances For
      def CategoryTheory.Functor.toPreimages {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) {i : J} (s : Set (F.obj i)) :

      The subfunctor of F obtained by restricting to the preimages of a set s ∈ F.obj i.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem CategoryTheory.Functor.toPreimages_map {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) {i : J} (s : Set (F.obj i)) {X✝ Y✝ : J} (g : X✝ Y✝) (a✝ : (⋂ (f : X✝ i), F.map f ⁻¹' s)) :
        (F.toPreimages s).map g a✝ = Set.MapsTo.restrict (F.map g) (⋂ (f : X✝ i), F.map f ⁻¹' s) (⋂ (f : Y✝ i), F.map f ⁻¹' s) a✝
        @[simp]
        theorem CategoryTheory.Functor.toPreimages_obj {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) {i : J} (s : Set (F.obj i)) (j : J) :
        (F.toPreimages s).obj j = (⋂ (f : j i), F.map f ⁻¹' s)
        instance CategoryTheory.Functor.toPreimages_finite {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) {i : J} (s : Set (F.obj i)) [∀ (j : J), Finite (F.obj j)] (j : J) :
        theorem CategoryTheory.Functor.eventualRange_eq_iff {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) {i j : J} [IsCofilteredOrEmpty J] {f : i j} :
        F.eventualRange j = Set.range (F.map f) ∀ ⦃k : J⦄ (g : k i), Set.range (F.map f) Set.range (F.map (CategoryStruct.comp g f))
        theorem CategoryTheory.Functor.isMittagLeffler_iff_subset_range_comp {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) [IsCofilteredOrEmpty J] :
        F.IsMittagLeffler ∀ (j : J), ∃ (i : J) (f : i j), ∀ ⦃k : J⦄ (g : k i), Set.range (F.map f) Set.range (F.map (CategoryStruct.comp g f))

        The subfunctor of F obtained by restricting to the eventual range at each index.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CategoryTheory.Functor.toEventualRanges_map {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) [IsCofilteredOrEmpty J] {X✝ Y✝ : J} (f : X✝ Y✝) (a✝ : (F.eventualRange X✝)) :
          F.toEventualRanges.map f a✝ = Set.MapsTo.restrict (F.map f) (F.eventualRange X✝) (F.eventualRange Y✝) a✝

          The sections of the functor F : J ⥤ Type v are in bijection with the sections of F.toEventualRanges.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            If F satisfies the Mittag-Leffler condition, its restriction to eventual ranges is a surjective functor.

            If F is nonempty at each index and Mittag-Leffler, then so is F.toEventualRanges.

            theorem CategoryTheory.Functor.thin_diagram_of_surjective {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) [IsCofilteredOrEmpty J] (Fsur : ∀ ⦃i j : J⦄ (f : i j), Function.Surjective (F.map f)) {i j : J} (f g : i j) :
            F.map f = F.map g

            If F has all arrows surjective, then it "factors through a poset".

            theorem CategoryTheory.Functor.toPreimages_nonempty_of_surjective {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) {i : J} (s : Set (F.obj i)) [IsCofilteredOrEmpty J] [hFn : ∀ (j : J), Nonempty (F.obj j)] (Fsur : ∀ ⦃i j : J⦄ (f : i j), Function.Surjective (F.map f)) (hs : s.Nonempty) (j : J) :
            theorem CategoryTheory.Functor.eval_section_injective_of_eventually_injective {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) [IsCofilteredOrEmpty J] {j : J} (Finj : ∀ (i : J) (f : i j), Function.Injective (F.map f)) (i : J) (f : i j) :
            Function.Injective fun (s : F.sections) => s j
            theorem CategoryTheory.Functor.eval_section_surjective_of_surjective {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) [IsCofilteredOrEmpty J] [∀ (j : J), Nonempty (F.obj j)] [∀ (j : J), Finite (F.obj j)] (Fsur : ∀ ⦃i j : J⦄ (f : i j), Function.Surjective (F.map f)) (i : J) :
            Function.Surjective fun (s : F.sections) => s i
            theorem CategoryTheory.Functor.eventually_injective {J : Type u} [Category.{u_1, u} J] (F : Functor J (Type v)) [IsCofilteredOrEmpty J] [∀ (j : J), Nonempty (F.obj j)] [∀ (j : J), Finite (F.obj j)] (Fsur : ∀ ⦃i j : J⦄ (f : i j), Function.Surjective (F.map f)) [Nonempty J] [Finite F.sections] :
            ∃ (j : J), ∀ (i : J) (f : i j), Function.Injective (F.map f)