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,

theorem nonempty_sections_of_finite_cofiltered_system.init {J : Type u} [CategoryTheory.SmallCategory J] [CategoryTheory.IsCofilteredOrEmpty J] (F : CategoryTheory.Functor J (Type u)) [hf : ∀ (j : J), Finite (F.toPrefunctor.obj j)] [hne : ∀ (j : J), Nonempty (F.toPrefunctor.obj j)] :

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 (x x_1 : J) => x x_1] (F : CategoryTheory.Functor Jᵒᵖ (Type v)) [∀ (j : Jᵒᵖ), Finite (F.toPrefunctor.obj j)] [∀ (j : Jᵒᵖ), Nonempty (F.toPrefunctor.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} [CategoryTheory.Category.{u_1, u} J] (F : CategoryTheory.Functor J (Type v)) {j : J} {x : F.toPrefunctor.obj j} :
    x CategoryTheory.Functor.eventualRange F j ∀ ⦃i : J⦄ (f : i j), x Set.range (F.toPrefunctor.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
      @[simp]
      theorem CategoryTheory.Functor.toPreimages_obj {J : Type u} [CategoryTheory.Category.{u_1, u} J] (F : CategoryTheory.Functor J (Type v)) {i : J} (s : Set (F.toPrefunctor.obj i)) (j : J) :
      (CategoryTheory.Functor.toPreimages F s).toPrefunctor.obj j = (⋂ (f : j i), F.toPrefunctor.map f ⁻¹' s)
      @[simp]
      theorem CategoryTheory.Functor.toPreimages_map {J : Type u} [CategoryTheory.Category.{u_1, u} J] (F : CategoryTheory.Functor J (Type v)) {i : J} (s : Set (F.toPrefunctor.obj i)) :
      ∀ {X Y : J} (g : X Y) (a : (⋂ (f : X i), F.toPrefunctor.map f ⁻¹' s)), (CategoryTheory.Functor.toPreimages F s).toPrefunctor.map g a = Set.MapsTo.restrict (F.toPrefunctor.map g) (⋂ (f : X i), F.toPrefunctor.map f ⁻¹' s) (⋂ (f : Y i), F.toPrefunctor.map f ⁻¹' s) (_ : x⋂ (f : X i), F.toPrefunctor.map f ⁻¹' s, F.toPrefunctor.map g x ⋂ (f : Y i), F.toPrefunctor.map f ⁻¹' s) a

      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
        instance CategoryTheory.Functor.toPreimages_finite {J : Type u} [CategoryTheory.Category.{u_1, u} J] (F : CategoryTheory.Functor J (Type v)) {i : J} (s : Set (F.toPrefunctor.obj i)) [∀ (j : J), Finite (F.toPrefunctor.obj j)] (j : J) :
        Finite ((CategoryTheory.Functor.toPreimages F s).toPrefunctor.obj j)
        Equations
        theorem CategoryTheory.Functor.eventualRange_eq_iff {J : Type u} [CategoryTheory.Category.{u_1, u} J] (F : CategoryTheory.Functor J (Type v)) {i : J} {j : J} [CategoryTheory.IsCofilteredOrEmpty J] {f : i j} :
        CategoryTheory.Functor.eventualRange F j = Set.range (F.toPrefunctor.map f) ∀ ⦃k : J⦄ (g : k i), Set.range (F.toPrefunctor.map f) Set.range (F.toPrefunctor.map (CategoryTheory.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
          Equations

          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} [CategoryTheory.Category.{u_1, u} J] (F : CategoryTheory.Functor J (Type v)) [CategoryTheory.IsCofilteredOrEmpty J] (Fsur : ∀ ⦃i j : J⦄ (f : i j), Function.Surjective (F.toPrefunctor.map f)) {i : J} {j : J} (f : i j) (g : i j) :
            F.toPrefunctor.map f = F.toPrefunctor.map g

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

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