Module

NativeTensorDescent.lean

Nyll.EtaleFundamentalGroups.GenericTensor.FilteredColimit.NativeTensorDescent
14 declarations indexed from sourceView source ↗

Descent comparisons retaining the original native tensor actions

The native tensor product is compared directly with the categorical pushout. The comparison uses the original algebra instances, never the algebras reconstructed from an Under object. Its coefficient naturality is proved from the two tensor coprojections. This keeps action normalization out of the finite-field descent proofs.

Declarations

EtaleFundamentalGroups.NativeTensorDescent.modelIso

The original tensor algebra and the chosen pushout model have the same coefficient arrow. The native algebra actions are retained in this constructor.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
def modelIso (B : Type u) [CommRing B] [Algebra R B] :
    CommRingCat.mkUnder (CommRingCat.of S) (S ⊗[R] B) ≅
      model (CommRingCat.mkUnder (CommRingCat.of R) S)
        (CommRingCat.mkUnder (CommRingCat.of R) B)
EtaleFundamentalGroups.NativeTensorDescent.nativeIso_inl_hom

The model projection of the actual named native comparison.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
theorem nativeIso_inl_hom (B : Type u) [CommRing B] [Algebra R B] :
    CommRingCat.ofHom
        (Algebra.TensorProduct.includeRight : B →ₐ[R] S ⊗[R] B).toRingHom ≫
        (nativeTensorPushoutIso R S B).hom =
      pushout.inl (CommRingCat.ofHom (algebraMap R B))
        (CommRingCat.ofHom (algebraMap R S))
EtaleFundamentalGroups.NativeTensorDescent.nativeIso_inr_hom

The coefficient projection of the same native comparison.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
theorem nativeIso_inr_hom (B : Type u) [CommRing B] [Algebra R B] :
    CommRingCat.ofHom (algebraMap S (S ⊗[R] B)) ≫
        (nativeTensorPushoutIso R S B).hom =
      pushout.inr (CommRingCat.ofHom (algebraMap R B))
        (CommRingCat.ofHom (algebraMap R S))
EtaleFundamentalGroups.NativeTensorDescent.modelIso_hom_right

Reading the Under comparison keeps the same native ring Iso homomorphism.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
theorem modelIso_hom_right (B : Type u) [CommRing B] [Algebra R B] :
    (modelIso R S B).hom.right = (nativeTensorPushoutIso R S B).hom
EtaleFundamentalGroups.NativeTensorDescent.modelIso_inv_right

Reading its inverse likewise keeps the existing native ring Iso.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
theorem modelIso_inv_right (B : Type u) [CommRing B] [Algebra R B] :
    (modelIso R S B).inv.right = (nativeTensorPushoutIso R S B).inv
EtaleFundamentalGroups.NativeTensorDescent.homEquiv

Arbitrary native algebra maps correspond to maps of the actual pushout models. Both directions share the same constructed comparison.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
def homEquiv (B D : Type u) [CommRing B] [CommRing D] [Algebra R B] [Algebra R D] :
    ((S ⊗[R] B) →ₐ[S] (S ⊗[R] D)) ≃
      (model (CommRingCat.mkUnder (CommRingCat.of R) S)
          (CommRingCat.mkUnder (CommRingCat.of R) B) ⟶
        model (CommRingCat.mkUnder (CommRingCat.of R) S)
          (CommRingCat.mkUnder (CommRingCat.of R) D))
EtaleFundamentalGroups.NativeTensorDescent.homEquiv_right

The ring map of the Hom correspondence uses precisely the two native comparison maps. This computation is closed before a coefficient square is formed.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
theorem homEquiv_right (B D : Type u) [CommRing B] [CommRing D]
    [Algebra R B] [Algebra R D] (f : (S ⊗[R] B) →ₐ[S] (S ⊗[R] D)) :
    (homEquiv R S B D f).right =
      (nativeTensorPushoutIso R S B).inv ≫ CommRingCat.ofHom f.toRingHom ≫
        (nativeTensorPushoutIso R S D).hom
EtaleFundamentalGroups.NativeTensorDescent.isoEquiv

The same comparison transports arbitrary native algebra equivalences.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
def isoEquiv (B D : Type u) [CommRing B] [CommRing D] [Algebra R B] [Algebra R D] :
    ((S ⊗[R] B) ≃ₐ[S] (S ⊗[R] D)) ≃
      (model (CommRingCat.mkUnder (CommRingCat.of R) S)
          (CommRingCat.mkUnder (CommRingCat.of R) B) ≅
        model (CommRingCat.mkUnder (CommRingCat.of R) S)
          (CommRingCat.mkUnder (CommRingCat.of R) D))
EtaleFundamentalGroups.NativeTensorDescent.isoEquiv_hom
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
theorem isoEquiv_hom (B D : Type u) [CommRing B] [CommRing D]
    [Algebra R B] [Algebra R D] (e : (S ⊗[R] B) ≃ₐ[S] (S ⊗[R] D)) :
    (isoEquiv R S B D e).hom = homEquiv R S B D e.toAlgHom
EtaleFundamentalGroups.NativeTensorDescent.isoEquiv_inv
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
theorem isoEquiv_inv (B D : Type u) [CommRing B] [CommRing D]
    [Algebra R B] [Algebra R D] (e : (S ⊗[R] B) ≃ₐ[S] (S ⊗[R] D)) :
    (isoEquiv R S B D e).inv = homEquiv R S D B e.symm.toAlgHom
EtaleFundamentalGroups.NativeTensorDescent.nativeIso_leg

The direct native comparison commutes with the literal tensor map of a coefficient homomorphism. Only the two coprojection equations are used.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {S}
theorem nativeIso_leg (T B : Type u) [CommRing T] [CommRing B]
    [Algebra R T] [Algebra R B] (f : S →ₐ[R] T) :
    (nativeTensorPushoutIso R S B).hom ≫
        leg f.toUnder (CommRingCat.mkUnder (CommRingCat.of R) B) =
      CommRingCat.ofHom (Algebra.TensorProduct.map f (AlgHom.id R B)).toRingHom ≫
        (nativeTensorPushoutIso R T B).hom
EtaleFundamentalGroups.NativeTensorDescent.modelIso_leg

The underlying Under model square follows from the established native ring square, without unfolding either pushout universal-property proof.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {S}
theorem modelIso_leg (T B : Type u) [CommRing T] [CommRing B]
    [Algebra R T] [Algebra R B] (f : S →ₐ[R] T) :
    (modelIso R S B).hom.right ≫
        leg f.toUnder (CommRingCat.mkUnder (CommRingCat.of R) B) =
      CommRingCat.ofHom (Algebra.TensorProduct.map f (AlgHom.id R B)).toRingHom ≫
        (modelIso R T B).hom.right
EtaleFundamentalGroups.NativeTensorDescent.square_of_conjugated_square
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {S}
theorem square_of_conjugated_square
    {C : Type u} [Category C]
    {A B A' B' X Y X' Y' : C}
    (a : A ≅ X) (b : B ≅ Y) (a' : A' ≅ X') (b' : B' ≅ Y')
    (l : A ⟶ A') (r : B ⟶ B') (L : X ⟶ X') (M : Y ⟶ Y')
    (f : A ⟶ B) (g : A' ⟶ B')
    (hl : a.hom ≫ L = l ≫ a'.hom) (hr : b.hom ≫ M = r ≫ b'.hom)
    (h : L ≫ (a'.inv ≫ g ≫ b'.hom) = (a.inv ≫ f ≫ b.hom) ≫ M) :
    l ≫ g = f ≫ r
EtaleFundamentalGroups.NativeTensorDescent.hom_square

A coefficient square between categorical models gives the original native algebra-hom square, without reopening reconstructed module actions.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open CategoryTheory CategoryTheory.Limits
open scoped TensorProduct
universe u
namespace EtaleFundamentalGroups.NativeTensorDescent
open CategoryTheory.CategoricalTensorDescent
open EtaleFundamentalGroups.CategoricalTensor
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {S}
theorem hom_square (T B D : Type u) [CommRing T] [CommRing B] [CommRing D]
    [Algebra R T] [Algebra R B] [Algebra R D]
    (q : S →ₐ[R] T)
    (f : (S ⊗[R] B) →ₐ[S] (S ⊗[R] D))
    (g : (T ⊗[R] B) →ₐ[T] (T ⊗[R] D))
    (h : leg q.toUnder (CommRingCat.mkUnder (CommRingCat.of R) B) ≫
        (homEquiv R T B D g).right =
      (homEquiv R S B D f).right ≫
        leg q.toUnder (CommRingCat.mkUnder (CommRingCat.of R) D)) :
    (Algebra.TensorProduct.map q (AlgHom.id R D)).comp (f.restrictScalars R) =
      (g.restrictScalars R).comp (Algebra.TensorProduct.map q (AlgHom.id R B))