Documentation

TauCeti.CategoryTheory.GrothendieckGroup.IsoClassModel

Choice independence of the small presentation of K₀ #

A categorical Grothendieck group is a quotient of a free abelian group whose generators index the isomorphism classes of objects. TauCeti.PresentedK0 takes those generators to be TauCeti.ObjectCode C = Shrink (Skeleton C), but this is only one small type in bijection with the isomorphism classes: the skeleton of Mathlib's chosen small model SmallModel C, or the codes ObjectCode C formed in another universe, serve as well. This file shows that the choice does not matter, canonically.

A model m : TauCeti.IsoClassModel C I of the isomorphism classes of C is a surjective map m.code : C → I under which two objects have the same code exactly when they are isomorphic. Relations are given at the level of objects, as a set ρ of integral combinations of objects, so that they make sense over every model at once, and m.K0 ρ is the free abelian group on I modulo the codes of the relations. Over two models m and m' the groups m.K0 ρ and m'.K0 ρ are related by a canonical isomorphism TauCeti.IsoClassModel.K0.equiv m m' ρ, the unique homomorphism sending the class of each object to its class. These isomorphisms satisfy the cocycle laws, and they commute with the maps induced by functors. The public group TauCeti.PresentedK0 of the codes of ρ is identified with m.K0 ρ for every model m by TauCeti.IsoClassModel.K0.presentedK0Equiv, compatibly with these isomorphisms.

Main definitions #

Main results #

References #

structure TauCeti.IsoClassModel (C : Type u) [CategoryTheory.Category.{v, u} C] (I : Type w) :
Type (max u w)

A model of the isomorphism classes of objects of C in a type I: a surjective map from the objects of C to I under which two objects have the same image exactly when they are isomorphic.

  • code : C → I

    The element of I coding the isomorphism class of an object.

  • code_surjective : Function.Surjective self.code

    Every element of I codes some object.

  • code_eq_code_iff {X Y : C} : self.code X = self.code Y ↔ Nonempty (X ≅ Y)

    Two objects have the same code exactly when they are isomorphic.

Instances For
    theorem TauCeti.IsoClassModel.ext {C : Type u} {inst✝ : CategoryTheory.Category.{v, u} C} {I : Type w} {x y : IsoClassModel C I} (code : x.code = y.code) :
    x = y
    theorem TauCeti.IsoClassModel.ext_iff {C : Type u} {inst✝ : CategoryTheory.Category.{v, u} C} {I : Type w} {x y : IsoClassModel C I} :
    x = y ↔ x.code = y.code
    theorem TauCeti.IsoClassModel.code_congr {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} (m : IsoClassModel C I) {X Y : C} (e : X ≅ Y) :
    m.code X = m.code Y

    The isomorphism classes of C modelled by the objects of its skeleton.

    Equations
    Instances For

      The model underlying TauCeti.PresentedK0: the codes TauCeti.ObjectCode C.

      Equations
      Instances For

        A model transported along a bijection of its index type.

        Equations
        • m.ofEquiv e = { code := fun (X : C) => e (m.code X), code_surjective := ⋯, code_eq_code_iff := ⋯ }
        Instances For

          A model of the isomorphism classes of D pulled back along an equivalence C ≌ D.

          Equations
          Instances For
            @[simp]
            theorem TauCeti.IsoClassModel.ofEquiv_code {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} (m : IsoClassModel C I) (e : I ≃ J) (X : C) :
            (m.ofEquiv e).code X = e (m.code X)
            noncomputable def TauCeti.IsoClassModel.equiv {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} (m : IsoClassModel C I) (m' : IsoClassModel C J) :
            I ≃ J

            The bijection between the index types of two models of the isomorphism classes of C which sends the code of an object in the first model to its code in the second.

            Equations
            Instances For
              @[simp]
              theorem TauCeti.IsoClassModel.equiv_code {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} (m : IsoClassModel C I) (m' : IsoClassModel C J) (X : C) :
              (m.equiv m') (m.code X) = m'.code X
              theorem TauCeti.IsoClassModel.equiv_unique {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} (m : IsoClassModel C I) (m' : IsoClassModel C J) (f : I → J) (hf : ∀ (X : C), f (m.code X) = m'.code X) :
              ⇑(m.equiv m') = f

              The bijection between two models is the only map compatible with the codes.

              @[simp]
              theorem TauCeti.IsoClassModel.equiv_symm {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} (m : IsoClassModel C I) (m' : IsoClassModel C J) :
              (m.equiv m').symm = m'.equiv m
              @[simp]
              theorem TauCeti.IsoClassModel.equiv_trans {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} {K : Type w''} (m : IsoClassModel C I) (m' : IsoClassModel C J) (m'' : IsoClassModel C K) :
              (m.equiv m').trans (m'.equiv m'') = m.equiv m''

              The Grothendieck group presented by the object-level relations ρ over the model m: the free abelian group on I modulo the subgroup generated by the codes of the relations.

              Equations
              Instances For
                @[instance_reducible]
                Equations
                • One or more equations did not get rendered due to their size.
                noncomputable def TauCeti.IsoClassModel.K0.of {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} (X : C) :
                m.K0 ρ

                The class of an object of C.

                Equations
                Instances For
                  theorem TauCeti.IsoClassModel.K0.of_congr {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} {X Y : C} (e : X ≅ Y) :
                  of X = of Y

                  The class map, extended additively to integral combinations of objects, is the quotient map applied to their codes.

                  The class map satisfies every relation in the subgroup generated by ρ.

                  The classes of objects generate the presented Grothendieck group.

                  theorem TauCeti.IsoClassModel.K0.hom_ext {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} {G : Type u_1} [AddMonoid G] {f g : m.K0 ρ →+ G} (h : ∀ (X : C), f (of X) = g (of X)) :
                  f = g

                  Two homomorphisms out of m.K0 ρ agreeing on the classes of objects are equal.

                  theorem TauCeti.IsoClassModel.K0.hom_ext_iff {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} {G : Type u_1} [AddMonoid G] {f g : m.K0 ρ →+ G} :
                  f = g ↔ ∀ (X : C), f (of X) = g (of X)
                  noncomputable def TauCeti.IsoClassModel.K0.lift {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} {G : Type u_1} [AddCommGroup G] (f : C → G) (hf : ∀ ⦃X Y : C⦄ (a : X ≅ Y), f X = f Y) (hρ : ∀ r ∈ ρ, (FreeAbelianGroup.lift f) r = 0) :
                  m.K0 ρ →+ G

                  The universal property: an isomorphism-invariant function on objects whose additive extension annihilates every relation induces a homomorphism out of m.K0 ρ.

                  Equations
                  Instances For
                    @[simp]
                    theorem TauCeti.IsoClassModel.K0.lift_of {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} {G : Type u_1} [AddCommGroup G] (f : C → G) (hf : ∀ ⦃X Y : C⦄ (a : X ≅ Y), f X = f Y) (hρ : ∀ r ∈ ρ, (FreeAbelianGroup.lift f) r = 0) (X : C) :
                    (lift f hf hρ) (of X) = f X
                    theorem TauCeti.IsoClassModel.K0.lift_unique {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} {G : Type u_1} [AddCommGroup G] (f : C → G) (hf : ∀ ⦃X Y : C⦄ (a : X ≅ Y), f X = f Y) (hρ : ∀ r ∈ ρ, (FreeAbelianGroup.lift f) r = 0) (g : m.K0 ρ →+ G) (hg : ∀ (X : C), g (of X) = f X) :
                    g = lift f hf hρ
                    noncomputable def TauCeti.IsoClassModel.K0.map {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} (m : IsoClassModel C I) {ρ : Set (FreeAbelianGroup C)} {D : Type u'} [CategoryTheory.Category.{v', u'} D] {σ : Set (FreeAbelianGroup D)} (n : IsoClassModel D J) (F : CategoryTheory.Functor C D) (h : ∀ r ∈ ρ, (FreeAbelianGroup.map F.obj) r ∈ AddSubgroup.closure σ) :
                    m.K0 ρ →+ n.K0 σ

                    Functoriality: a functor carrying every relation of ρ into the subgroup generated by σ induces a homomorphism between the presented Grothendieck groups, over any two models.

                    Equations
                    Instances For
                      @[simp]
                      theorem TauCeti.IsoClassModel.K0.map_of {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} {D : Type u'} [CategoryTheory.Category.{v', u'} D] {σ : Set (FreeAbelianGroup D)} (n : IsoClassModel D J) (F : CategoryTheory.Functor C D) (h : ∀ r ∈ ρ, (FreeAbelianGroup.map F.obj) r ∈ AddSubgroup.closure σ) (X : C) :
                      (map m n F h) (of X) = of (F.obj X)

                      A composite functor carries ρ into the subgroup generated by τ when each of its factors carries its relations into the next generated subgroup.

                      theorem TauCeti.IsoClassModel.K0.map_comp {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} {K : Type w''} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} {D : Type u'} [CategoryTheory.Category.{v', u'} D] {E : Type u''} [CategoryTheory.Category.{v'', u''} E] {σ : Set (FreeAbelianGroup D)} {τ : Set (FreeAbelianGroup E)} (n : IsoClassModel D J) (p : IsoClassModel E K) (F : CategoryTheory.Functor C D) (G : CategoryTheory.Functor D E) (hF : ∀ r ∈ ρ, (FreeAbelianGroup.map F.obj) r ∈ AddSubgroup.closure σ) (hG : ∀ r ∈ σ, (FreeAbelianGroup.map G.obj) r ∈ AddSubgroup.closure τ) (hFG : ∀ r ∈ ρ, (FreeAbelianGroup.map (F.comp G).obj) r ∈ AddSubgroup.closure τ := ⋯) :
                      map m p (F.comp G) hFG = (map n p G hG).comp (map m n F hF)
                      noncomputable def TauCeti.IsoClassModel.K0.equiv {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} (m : IsoClassModel C I) (m' : IsoClassModel C J) (ρ : Set (FreeAbelianGroup C)) :
                      m.K0 ρ ≃+ m'.K0 ρ

                      The canonical isomorphism between the Grothendieck groups presented by the same relations over two models of the isomorphism classes of C. It sends the class of every object to its class; see TauCeti.IsoClassModel.K0.equiv_of and TauCeti.IsoClassModel.K0.equiv_unique.

                      Equations
                      Instances For
                        @[simp]
                        theorem TauCeti.IsoClassModel.K0.equiv_of {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} (m' : IsoClassModel C J) (X : C) :
                        (equiv m m' ρ) (of X) = of X

                        The map induced by the identity functor between two models is the canonical isomorphism.

                        theorem TauCeti.IsoClassModel.K0.equiv_unique {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} (m' : IsoClassModel C J) (f : m.K0 ρ →+ m'.K0 ρ) (hf : ∀ (X : C), f (of X) = of X) :
                        f = ↑(equiv m m' ρ)

                        The canonical isomorphism is the only homomorphism preserving the class of every object.

                        @[simp]
                        theorem TauCeti.IsoClassModel.K0.equiv_symm {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} (m' : IsoClassModel C J) :
                        (equiv m m' ρ).symm = equiv m' m ρ
                        @[simp]
                        theorem TauCeti.IsoClassModel.K0.equiv_trans {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} {K : Type w''} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} (m' : IsoClassModel C J) (m'' : IsoClassModel C K) :
                        (equiv m m' ρ).trans (equiv m' m'' ρ) = equiv m m'' ρ

                        The cocycle law for the canonical isomorphisms.

                        theorem TauCeti.IsoClassModel.K0.equiv_map {C : Type u} [CategoryTheory.Category.{v, u} C] {I : Type w} {J : Type w'} {m : IsoClassModel C I} {ρ : Set (FreeAbelianGroup C)} (m' : IsoClassModel C J) {D : Type u'} [CategoryTheory.Category.{v', u'} D] {J' : Type u_1} {K' : Type u_2} {σ : Set (FreeAbelianGroup D)} (n : IsoClassModel D J') (n' : IsoClassModel D K') (F : CategoryTheory.Functor C D) (h : ∀ r ∈ ρ, (FreeAbelianGroup.map F.obj) r ∈ AddSubgroup.closure σ) (x : m.K0 ρ) :
                        (equiv n n' σ) ((map m n F h) x) = (map m' n' F h) ((equiv m m' ρ) x)

                        Naturality of the canonical isomorphisms: they commute with the maps induced by a functor.

                        The public presentation TauCeti.PresentedK0 of the codes of the object-level relations ρ is canonically isomorphic to the presentation of ρ over any model m, by the isomorphism preserving the class of every object.

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

                          The identification with the public presentation is compatible with the canonical isomorphisms between models.