Module

RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.lean

Nyll.AlgebraicCurves.Foundations.Algebra.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
200 declarations indexed from sourceView source ↗

Algebra, divisors, and base change

Finite locally free equivalence relations on rings yield the invariant-ring tensor-square pushout comparison.

Imports191
  • Mathlib.Algebra.Algebra.Basic
  • Mathlib.Algebra.Algebra.Bilinear
  • Mathlib.Algebra.Algebra.Defs
  • Mathlib.Algebra.Algebra.Equiv
  • Mathlib.Algebra.Algebra.Hom
  • Mathlib.Algebra.Algebra.Operations
  • Mathlib.Algebra.Algebra.Tower
  • Mathlib.Algebra.BigOperators.Group.Finset.Basic
  • Mathlib.Algebra.BigOperators.Group.Finset.Defs
  • Mathlib.Algebra.Category.Ring.Basic
  • Mathlib.Algebra.Category.Ring.Constructions
  • Mathlib.Algebra.Divisibility.Basic
  • Mathlib.Algebra.Exact.Basic
  • Mathlib.Algebra.Field.Defs
  • Mathlib.Algebra.Group.Action.Defs
  • Mathlib.Algebra.Group.Action.Faithful
  • Mathlib.Algebra.Group.Basic
  • Mathlib.Algebra.Group.Commute.Defs
  • Mathlib.Algebra.Group.Defs
  • Mathlib.Algebra.Group.Hom.Basic
  • Mathlib.Algebra.Group.Hom.Defs
  • Mathlib.Algebra.Group.Idempotent
  • Mathlib.Algebra.Group.Monoid
  • Mathlib.Algebra.Group.Semigroup
  • Mathlib.Algebra.Group.Units.Basic
  • Mathlib.Algebra.Group.Units.Defs
  • Mathlib.Algebra.Group.Units.Hom
  • Mathlib.Algebra.GroupWithZero.Action.Defs
  • Mathlib.Algebra.GroupWithZero.Units.Basic
  • Mathlib.Algebra.Module.Defs
  • Mathlib.Algebra.Module.Equiv.Basic
  • Mathlib.Algebra.Module.Equiv.Defs
  • Mathlib.Algebra.Module.FinitePresentation
  • Mathlib.Algebra.Module.LinearMap.Defs
  • Mathlib.Algebra.Module.LinearMap.End
  • Mathlib.Algebra.Module.LocalizedModule.Basic
  • Mathlib.Algebra.Module.Projective
  • Mathlib.Algebra.Module.Submodule.Defs
  • Mathlib.Algebra.Module.Submodule.Equiv
  • Mathlib.Algebra.Module.Submodule.Ker
  • Mathlib.Algebra.Module.Submodule.Lattice
  • Mathlib.Algebra.Module.Submodule.LinearMap
  • Mathlib.Algebra.Module.Submodule.Map
  • Mathlib.Algebra.Module.Submodule.Range
  • Mathlib.Algebra.Module.Submodule.RestrictScalars
  • Mathlib.Algebra.Module.Submodule.Union
  • Mathlib.Algebra.Module.Torsion.Basic
  • Mathlib.Algebra.Notation.Pi.Basic
  • Mathlib.Algebra.Notation.Pi.Defs
  • Mathlib.Algebra.Polynomial.AlgebraMap
  • Mathlib.Algebra.Polynomial.Basic
  • Mathlib.Algebra.Polynomial.Coeff
  • Mathlib.Algebra.Polynomial.Degree.Defs
  • Mathlib.Algebra.Polynomial.Degree.Operations
  • Mathlib.Algebra.Polynomial.Div
  • Mathlib.Algebra.Polynomial.Eval.Coeff
  • Mathlib.Algebra.Polynomial.Eval.Defs
  • Mathlib.Algebra.Polynomial.Lifts
  • Mathlib.Algebra.Polynomial.Monic
  • Mathlib.Algebra.Ring.Defs
  • Mathlib.Algebra.Ring.Equiv
  • Mathlib.Algebra.Ring.Hom.Defs
  • Mathlib.Algebra.Ring.Idempotent
  • Mathlib.Algebra.Ring.Subring.Basic
  • Mathlib.Algebra.Ring.Subring.Defs
  • Mathlib.Algebra.Ring.Units
  • Mathlib.Basic.Finite.Defs
  • Mathlib.Basic.Nontrivial.Defs
  • Mathlib.CategoryTheory.Iso
  • Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Basic
  • Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs
  • Mathlib.CategoryTheory.Limits.Shapes.Pullback.PullbackCone
  • Mathlib.Data.ENat.Basic
  • Mathlib.Data.ENat.Defs
  • Mathlib.Data.Fin.Tuple.Basic
  • Mathlib.Data.Finset.Defs
  • Mathlib.Data.Finset.Insert
  • Mathlib.Data.Finset.Lattice.Fold
  • Mathlib.Data.Fintype.Card
  • Mathlib.Data.Fintype.Defs
  • Mathlib.Data.Fintype.EquivFin
  • Mathlib.Data.Nat.Cast.Basic
  • Mathlib.Data.Set.Basic
  • Mathlib.Data.Set.Defs
  • Mathlib.Data.Set.Finite.Basic
  • Mathlib.Data.Set.Image
  • Mathlib.Data.Set.Insert
  • Mathlib.Data.Set.Operations
  • Mathlib.Data.SetLike.Basic
  • Mathlib.GroupTheory.GroupAction.Hom
  • Mathlib.GroupTheory.OreLocalization.Basic
  • Mathlib.LinearAlgebra.Basis.Defs
  • Mathlib.LinearAlgebra.Basis.VectorSpace
  • Mathlib.LinearAlgebra.Charpoly.BaseChange
  • Mathlib.LinearAlgebra.Charpoly.Basic
  • Mathlib.LinearAlgebra.Charpoly.ToMatrix
  • Mathlib.LinearAlgebra.Determinant
  • Mathlib.LinearAlgebra.Dimension.Constructions
  • Mathlib.LinearAlgebra.Dimension.Finite
  • Mathlib.LinearAlgebra.Dimension.Finrank
  • Mathlib.LinearAlgebra.Dimension.StrongRankCondition
  • Mathlib.LinearAlgebra.FiniteDimensional.Lemmas
  • Mathlib.LinearAlgebra.Finsupp.LinearCombination
  • Mathlib.LinearAlgebra.Finsupp.VectorSpace
  • Mathlib.LinearAlgebra.FreeModule.Basic
  • Mathlib.LinearAlgebra.FreeModule.Finite.Basic
  • Mathlib.LinearAlgebra.LinearIndependent.Defs
  • Mathlib.LinearAlgebra.LinearIndependent.Lemmas
  • Mathlib.LinearAlgebra.Prod
  • Mathlib.LinearAlgebra.Quotient.Basic
  • Mathlib.LinearAlgebra.Quotient.Defs
  • Mathlib.LinearAlgebra.Span.Basic
  • Mathlib.LinearAlgebra.Span.Defs
  • Mathlib.LinearAlgebra.StdBasis
  • Mathlib.LinearAlgebra.TensorProduct.Associator
  • Mathlib.LinearAlgebra.TensorProduct.Basic
  • Mathlib.LinearAlgebra.TensorProduct.Defs
  • Mathlib.LinearAlgebra.TensorProduct.Map
  • Mathlib.LinearAlgebra.TensorProduct.Pi
  • Mathlib.LinearAlgebra.TensorProduct.Quotient
  • Mathlib.LinearAlgebra.TensorProduct.Tower
  • Mathlib.Logic.Function.Basic
  • Mathlib.Logic.Function.Defs
  • Mathlib.Order.BoundedOrder.Basic
  • Mathlib.Order.BoundedOrder.Lattice
  • Mathlib.Order.CompleteLattice.Defs
  • Mathlib.Order.Lattice
  • Mathlib.Order.SetNotation
  • Mathlib.RingTheory.FinitePresentation
  • Mathlib.RingTheory.Finiteness.Basic
  • Mathlib.RingTheory.Finiteness.Cardinality
  • Mathlib.RingTheory.Finiteness.Defs
  • Mathlib.RingTheory.Finiteness.Descent
  • Mathlib.RingTheory.Finiteness.ModuleFinitePresentation
  • Mathlib.RingTheory.Flat.Basic
  • Mathlib.RingTheory.Flat.EquationalCriterion
  • Mathlib.RingTheory.Flat.FaithfullyFlat.Algebra
  • Mathlib.RingTheory.Flat.FaithfullyFlat.Basic
  • Mathlib.RingTheory.Flat.Localization
  • Mathlib.RingTheory.Flat.Stability
  • Mathlib.RingTheory.Ideal.Defs
  • Mathlib.RingTheory.Ideal.GoingUp
  • Mathlib.RingTheory.Ideal.Lattice
  • Mathlib.RingTheory.Ideal.Maps
  • Mathlib.RingTheory.Ideal.Maximal
  • Mathlib.RingTheory.Ideal.Nonunits
  • Mathlib.RingTheory.Ideal.Operations
  • Mathlib.RingTheory.Ideal.Quotient.Basic
  • Mathlib.RingTheory.Ideal.Quotient.Defs
  • Mathlib.RingTheory.Ideal.Quotient.Operations
  • Mathlib.RingTheory.IntegralClosure.Algebra.Defs
  • Mathlib.RingTheory.IntegralClosure.IsIntegral.Basic
  • Mathlib.RingTheory.IsTensorProduct
  • Mathlib.RingTheory.Jacobson.Ideal
  • Mathlib.RingTheory.LocalProperties.Basic
  • Mathlib.RingTheory.LocalProperties.Exactness
  • Mathlib.RingTheory.LocalProperties.Submodule
  • Mathlib.RingTheory.LocalRing.Basic
  • Mathlib.RingTheory.LocalRing.Defs
  • Mathlib.RingTheory.LocalRing.MaximalIdeal.Basic
  • Mathlib.RingTheory.LocalRing.MaximalIdeal.Defs
  • Mathlib.RingTheory.LocalRing.Module
  • Mathlib.RingTheory.LocalRing.ResidueField.Basic
  • Mathlib.RingTheory.LocalRing.ResidueField.Defs
  • Mathlib.RingTheory.Localization.AtPrime.Basic
  • Mathlib.RingTheory.Localization.BaseChange
  • Mathlib.RingTheory.Localization.Defs
  • Mathlib.RingTheory.Nakayama
  • Mathlib.RingTheory.OreLocalization.Ring
  • Mathlib.RingTheory.Polynomial.Basic
  • Mathlib.RingTheory.Polynomial.Tower
  • Mathlib.RingTheory.QuasiFinite.Basic
  • Mathlib.RingTheory.RingHom.Finite
  • Mathlib.RingTheory.RingHom.FinitePresentation
  • Mathlib.RingTheory.RingHom.Flat
  • Mathlib.RingTheory.Spectrum.Prime.Defs
  • Mathlib.RingTheory.Spectrum.Prime.FreeLocus
  • Mathlib.RingTheory.Spectrum.Prime.RingHom
  • Mathlib.RingTheory.Spectrum.Prime.Topology
  • Mathlib.RingTheory.TensorProduct.Basic
  • Mathlib.RingTheory.TensorProduct.Finite
  • Mathlib.RingTheory.TensorProduct.Free
  • Mathlib.RingTheory.TensorProduct.Maps
  • Mathlib.SetTheory.Cardinal.Finite
  • Mathlib.Tactic.Abel
  • Mathlib.Tactic.Choose
  • Mathlib.Tactic.Convert
  • Mathlib.Tactic.NthRewrite
  • Mathlib.Tactic.Push
  • Mathlib.Topology.Defs.Basic
  • Mathlib.Topology.LocallyConstant.Basic
Imported by2

Declarations

AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.Rel

Two ring maps are related when they arise by composing the two relation maps with one common ring map.

Source context 7 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
def Rel (T : Type u) [CommRing T] (x y : A →+* T) : Prop
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.rel_iff
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
theorem rel_iff {T : Type u} [CommRing T] (x y : A →+* T) :
    Rel s t T x y ↔ ∃ φ : B →+* T, φ.comp s = x ∧ φ.comp t = y
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.rel_self
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
theorem rel_self : Rel s t B s t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.Rel.map
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
theorem Rel.map {T T' : Type u} [CommRing T] [CommRing T'] (g : T →+* T') {x y : A →+* T}
    (h : Rel s t T x y) : Rel s t T' (g.comp x) (g.comp y)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.hom_ext
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
theorem hom_ext (hgen : s.range ⊔ t.range = ⊤) {T : Type u} [CommRing T] {φ ψ : B →+* T}
    (h₁ : φ.comp s = ψ.comp s) (h₂ : φ.comp t = ψ.comp t) : φ = ψ
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_counit
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section structureMaps
variable (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T))
include hequiv
theorem exists_counit : ∃ e : B →+* A, e.comp s = RingHom.id A ∧ e.comp t = RingHom.id A
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_antipode
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section structureMaps
variable (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T))
include hequiv
theorem exists_antipode : ∃ ι : B →+* B, ι.comp s = t ∧ ι.comp t = s
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_comul
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section structureMaps
variable (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T))
include hequiv
theorem exists_comul {P : Type u} [CommRing P] (inl inr : B →+* P) (hP : inl.comp t = inr.comp s) :
    ∃ c : B →+* P, c.comp s = inl.comp s ∧ c.comp t = inr.comp t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_shear
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section structureMaps
variable (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T))
include hequiv
theorem exists_shear {T : Type u} [CommRing T] (u v : B →+* T) (huv : u.comp s = v.comp s) :
    ∃ v' : B →+* T, v'.comp s = u.comp t ∧ v'.comp t = v.comp t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.isPushout_shear
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section shear
open CommRingCat
variable (hgen : s.range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T))
  {P : Type u} [CommRing P] {inl inr c : B →+* P}
  (hP : IsPushout (ofHom t) (ofHom s) (ofHom inl) (ofHom inr))
  (hcs : c.comp s = inl.comp s) (hct : c.comp t = inr.comp t)
include hgen hequiv hP hcs hct
theorem isPushout_shear : IsPushout (ofHom s) (ofHom s) (ofHom inl) (ofHom c)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.Tgt

The target ring equipped with the algebra structure induced by the specified ring homomorphism.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
def Tgt (_t : A →+* B) : Type u
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
instance : CommRing (Tgt t)
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
instance : Algebra A (Tgt t)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.Tgt.of

The identity ring equivalence identifying the original target with its algebra-structure copy.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
def Tgt.of : B ≃+* Tgt t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.Tgt.algebraMap_eq
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
omit [Algebra A B] in
theorem Tgt.algebraMap_eq : algebraMap A (Tgt t) = (Tgt.of t).toRingHom.comp t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.Tgt.algebraMap_apply
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
omit [Algebra A B] in
theorem Tgt.algebraMap_apply (a : A) : algebraMap A (Tgt t) a = Tgt.of t (t a)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.P₁

The tensor product with the left target algebra structure induced by the specified map.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
abbrev P₁ : Type u
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.P₂

The tensor square of the given algebra over its base ring.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
abbrev P₂ (A B : Type u) [CommRing A] [CommRing B] [Algebra A B] : Type u
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.inl₁

The left tensor inclusion from the original target ring.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
def inl₁ : B →+* P₁ t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.inr₁

The right tensor inclusion from the original target ring.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
def inr₁ : B →+* P₁ t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.inl₁_apply
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
theorem inl₁_apply (b : B) : inl₁ t b = (Tgt.of t b) ⊗ₜ[A] (1 : B)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.inr₁_apply
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
theorem inr₁_apply (b : B) : inr₁ t b = (1 : Tgt t) ⊗ₜ[A] b
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.isPushout_P₁
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
theorem isPushout_P₁ :
    IsPushout (CommRingCat.ofHom t) (CommRingCat.ofHom (algebraMap A B))
      (CommRingCat.ofHom (inl₁ t)) (CommRingCat.ofHom (inr₁ t))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.inl₁_comp_t
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
theorem inl₁_comp_t : (inl₁ t).comp t = (inr₁ t).comp (algebraMap A B)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.isPushout_P₂
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section models
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] (t : A →+* B)
theorem isPushout_P₂ :
    IsPushout (CommRingCat.ofHom (algebraMap A B)) (CommRingCat.ofHom (algebraMap A B))
      (CommRingCat.ofHom (Algebra.TensorProduct.includeLeftRingHom : B →+* P₂ A B))
      (CommRingCat.ofHom (Algebra.TensorProduct.includeRight.toRingHom : B →+* P₂ A B))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_comul₁
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section theta
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
include hequiv in
theorem exists_comul₁ : ∃ c : B →+* P₁ t, c.comp (algebraMap A B) = (inl₁ t).comp (algebraMap A B) ∧
    c.comp t = (inr₁ t).comp t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_theta
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section theta
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
include hgen hequiv in
theorem exists_theta : ∃ (c : B →+* P₁ t) (θ : P₂ A B ≃+* P₁ t),
    c.comp (algebraMap A B) = (inl₁ t).comp (algebraMap A B) ∧ c.comp t = (inr₁ t).comp t ∧
    (∀ b : B, θ (b ⊗ₜ 1) = inl₁ t b) ∧ (∀ b : B, θ (1 ⊗ₜ b) = c b)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.instModuleLeftP₁
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section rank
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
instance instModuleLeftP₁ (t : A →+* B) : Module B (P₁ t)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.smul_P₁_def
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section rank
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
theorem smul_P₁_def (t : A →+* B) (b : B) (z : P₁ t) : b • z = inl₁ t b * z
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_linearEquiv_P₂_P₁
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section rank
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
include hgen hequiv in
theorem exists_linearEquiv_P₂_P₁ : Nonempty (P₂ A B ≃ₗ[B] P₁ t)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.rankAtStalk_P₁_eq
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section rank
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
theorem rankAtStalk_P₁_eq [Module.Finite A B] [Module.Flat A B] (t : A →+* B)
    (𝔯 : PrimeSpectrum (Tgt t)) :
    Module.rankAtStalk (R := Tgt t) (P₁ t) 𝔯 =
      Module.rankAtStalk (R := A) B (𝔯.comap (algebraMap A (Tgt t)))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.rankAtStalk_comap_algebraMap_eq_rankAtStalk_comap
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section rank
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
include hgen hequiv in
theorem rankAtStalk_comap_algebraMap_eq_rankAtStalk_comap [Module.Finite A B] [Module.Flat A B]
    (𝔯 : PrimeSpectrum B) :
    Module.rankAtStalk (R := A) B (𝔯.comap (algebraMap A B)) =
      Module.rankAtStalk (R := A) B (𝔯.comap t)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.eq_zero_or_eq_one_of_isIdempotentElem
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section const
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B} [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
omit [Module.Finite A B] [Module.Projective A B] in
include hinj hinv in
theorem eq_zero_or_eq_one_of_isIdempotentElem [IsLocalRing C] {e : A} (he : IsIdempotentElem e)
    (hst : algebraMap A B e = t e) : e = 0 ∨ e = 1
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.rankAtStalk_eq_rankAtStalk_of_isLocalRing
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section const
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B} [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
include hgen hequiv hinj hinv in
theorem rankAtStalk_eq_rankAtStalk_of_isLocalRing [IsLocalRing C] (p q : PrimeSpectrum A) :
    Module.rankAtStalk (R := A) B p = Module.rankAtStalk (R := A) B q
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_rankAtStalk_eq_of_isLocalRing
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section const
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B} [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
include hgen hequiv hinj hinv in
theorem exists_rankAtStalk_eq_of_isLocalRing [IsLocalRing C] :
    ∃ r : ℕ, ∀ p : PrimeSpectrum A, Module.rankAtStalk (R := A) B p = r
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.Envelope

A finite free module together with a projection onto the algebra and a splitting of that projection.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
structure Envelope where
  /-- The rank of the finite free envelope. -/
  n : ℕ
  /-- The projection from the finite free envelope onto the algebra. -/
  π : (Fin n → R) →ₗ[R] S
  /-- The section of the envelope projection. -/
  ι : S →ₗ[R] (Fin n → R)
  /-- The projection composed with its section is the identity. -/
  πι : π ∘ₗ ι = LinearMap.id
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.nonempty_envelope
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
theorem nonempty_envelope [Module.Finite R S] [Module.Projective R S] :
    Nonempty (Envelope R S)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.π_ι
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
theorem π_ι (y : S) : 𝓔.π (𝓔.ι y) = y
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.ι_injective
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
theorem ι_injective : Function.Injective 𝓔.ι
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.ψ

Multiplication on the split algebra summand, extended by the identity on the complementary summand.

Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
def ψ (b : S) : Module.End R (Fin 𝓔.n → R)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.ψ_apply
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
theorem ψ_apply (b : S) (v : Fin 𝓔.n → R) :
    ψ 𝓔 b v = 𝓔.ι (b * 𝓔.π v) + (v - 𝓔.ι (𝓔.π v))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.ψ_ι
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
theorem ψ_ι (b y : S) : ψ 𝓔 b (𝓔.ι y) = 𝓔.ι (b * y)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.ψ_pow_ι
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
theorem ψ_pow_ι (b y : S) (k : ℕ) : (ψ 𝓔 b ^ k) (𝓔.ι y) = 𝓔.ι (b ^ k * y)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.aeval_ψ_ι
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
theorem aeval_ψ_ι (b y : S) (p : R[X]) :
    (aeval (ψ 𝓔 b) p) (𝓔.ι y) = 𝓔.ι (aeval b p * y)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.χ

The characteristic polynomial of the multiplication endomorphism on the finite free envelope.

Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
def χ (b : S) : R[X]
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.χ_monic
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
theorem χ_monic (b : S) : (χ 𝓔 b).Monic
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.χ_natDegree
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
theorem χ_natDegree [Nontrivial R] (b : S) : (χ 𝓔 b).natDegree = 𝓔.n
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.aeval_χ
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section envelope
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S]
variable {R S} (𝓔 : Envelope R S)
theorem aeval_χ (b : S) : aeval b (χ 𝓔 b) = 0
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.eF

The coordinate equivalence identifying the base change of the finite free envelope.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section baseChange
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
  (R' : Type u) [CommRing R'] [Algebra R R']
abbrev eF : R' ⊗[R] (Fin 𝓔.n → R) ≃ₗ[R'] (Fin 𝓔.n → R')
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.πb

The envelope projection after base change and the coordinate equivalence.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section baseChange
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
  (R' : Type u) [CommRing R'] [Algebra R R']
def πb : (Fin 𝓔.n → R') →ₗ[R'] R' ⊗[R] S
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.ιb

The envelope section after base change and the coordinate equivalence.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section baseChange
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
  (R' : Type u) [CommRing R'] [Algebra R R']
def ιb : R' ⊗[R] S →ₗ[R'] (Fin 𝓔.n → R')
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.πb_comp_ιb
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section baseChange
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
  (R' : Type u) [CommRing R'] [Algebra R R']
theorem πb_comp_ιb : πb 𝓔 R' ∘ₗ ιb 𝓔 R' = LinearMap.id
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.Envelope.baseChange

The finite free envelope transported by scalar extension.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section baseChange
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
  (R' : Type u) [CommRing R'] [Algebra R R']
abbrev Envelope.baseChange : Envelope R' (R' ⊗[R] S)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.ψ_baseChange
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section baseChange
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
  (R' : Type u) [CommRing R'] [Algebra R R']
theorem ψ_baseChange (b : S) :
    ψ (𝓔.baseChange R') ((1 : R') ⊗ₜ[R] b) = (eF 𝓔 R').conj ((ψ 𝓔 b).baseChange R')
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.χ_baseChange
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section baseChange
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
  (R' : Type u) [CommRing R'] [Algebra R R']
theorem χ_baseChange (b : S) :
    χ (𝓔.baseChange R') ((1 : R') ⊗ₜ[R] b) = (χ 𝓔 b).map (algebraMap R R')
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.Envelope.mapEquiv

The finite free envelope transported along the algebra equivalence.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section mapEquiv
variable {R S S₂ : Type u} [CommRing R] [CommRing S] [Algebra R S] [CommRing S₂] [Algebra R S₂]
  (𝓔 : Envelope R S) (σ : S ≃ₐ[R] S₂)
abbrev Envelope.mapEquiv : Envelope R S₂
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.ψ_mapEquiv
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section mapEquiv
variable {R S S₂ : Type u} [CommRing R] [CommRing S] [Algebra R S] [CommRing S₂] [Algebra R S₂]
  (𝓔 : Envelope R S) (σ : S ≃ₐ[R] S₂)
theorem ψ_mapEquiv (b : S) : ψ (𝓔.mapEquiv σ) (σ b) = ψ 𝓔 b
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.χ_mapEquiv
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section mapEquiv
variable {R S S₂ : Type u} [CommRing R] [CommRing S] [Algebra R S] [CommRing S₂] [Algebra R S₂]
  (𝓔 : Envelope R S) (σ : S ≃ₐ[R] S₂)
theorem χ_mapEquiv (b : S) : χ (𝓔.mapEquiv σ) (σ b) = χ 𝓔 b
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.sub_ι_π_mem_ker
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
theorem sub_ι_π_mem_ker (v : Fin 𝓔.n → R) : v - 𝓔.ι (𝓔.π v) ∈ LinearMap.ker 𝓔.π
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.toKer

The complementary projection onto the kernel of the envelope projection.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
def toKer : (Fin 𝓔.n → R) →ₗ[R] LinearMap.ker 𝓔.π
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.coe_toKer
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
theorem coe_toKer (v : Fin 𝓔.n → R) : (toKer 𝓔 v : Fin 𝓔.n → R) = v - 𝓔.ι (𝓔.π v)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.toKer_subtype
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
theorem toKer_subtype (k : LinearMap.ker 𝓔.π) : toKer 𝓔 (k : Fin 𝓔.n → R) = k
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.splitEquiv

The linear decomposition of the free envelope into the algebra and the projection kernel.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
def splitEquiv : (Fin 𝓔.n → R) ≃ₗ[R] S × LinearMap.ker 𝓔.π
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.finite_ker
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
theorem finite_ker : Module.Finite R (LinearMap.ker 𝓔.π)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.flat_ker
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
theorem flat_ker : Module.Flat R (LinearMap.ker 𝓔.π)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.conj_ψ
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
theorem conj_ψ (b : S) :
    (splitEquiv 𝓔).conj (ψ 𝓔 b) = (LinearMap.mulLeft R b).prodMap (1 : Module.End R _)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.n_eq_finrank_add
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
theorem n_eq_finrank_add [Nontrivial R] [Module.Free R S] [Module.Finite R S]
    [Module.Free R (LinearMap.ker 𝓔.π)] :
    𝓔.n = Module.finrank R S + Module.finrank R (LinearMap.ker 𝓔.π)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.χ_eq_mul_of_free
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section split
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] (𝓔 : Envelope R S)
theorem χ_eq_mul_of_free [Nontrivial R] [Module.Free R S] [Module.Finite R S]
    [Module.Free R (LinearMap.ker 𝓔.π)] (b : S) :
    χ 𝓔 b = (LinearMap.mulLeft R b).charpoly *
      (X - 1) ^ Module.finrank R (LinearMap.ker 𝓔.π)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.free_localization
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section localize
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S] (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
  (𝓔 : Envelope R S) (J : Ideal R) [J.IsPrime]
instance free_localization :
    Module.Free (Localization.AtPrime J) (Localization.AtPrime J ⊗[R] S)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.finrank_localization
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section localize
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S] (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
  (𝓔 : Envelope R S) (J : Ideal R) [J.IsPrime]
include hr in
theorem finrank_localization :
    Module.finrank (Localization.AtPrime J) (Localization.AtPrime J ⊗[R] S) = r
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.free_ker_localization
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section localize
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S] (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
  (𝓔 : Envelope R S) (J : Ideal R) [J.IsPrime]
omit [Module.Finite R S] [Module.Projective R S] in
theorem free_ker_localization :
    Module.Free (Localization.AtPrime J)
      (LinearMap.ker (𝓔.baseChange (Localization.AtPrime J)).π)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.n_eq_add_finrank_ker_localization
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section localize
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S] (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
  (𝓔 : Envelope R S) (J : Ideal R) [J.IsPrime]
include hr in
theorem n_eq_add_finrank_ker_localization :
    𝓔.n = r + Module.finrank (Localization.AtPrime J)
      (LinearMap.ker (𝓔.baseChange (Localization.AtPrime J)).π)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.χ_map_localization
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
section localize
variable {R S : Type u} [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S] (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
  (𝓔 : Envelope R S) (J : Ideal R) [J.IsPrime]
include hr in
theorem χ_map_localization (b : S) :
    (χ 𝓔 b).map (algebraMap R (Localization.AtPrime J)) =
      (LinearMap.mulLeft (Localization.AtPrime J) ((1 : Localization.AtPrime J) ⊗ₜ[R] b)).charpoly *
        (X - 1) ^ (𝓔.n - r)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1.poly_eq_of_localization
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L1
theorem poly_eq_of_localization {R : Type u} [CommRing R] {p p' : R[X]}
    (h : ∀ (J : Ideal R) (_ : J.IsMaximal),
      p.map (algebraMap R (Localization.AtPrime J)) = p'.map (algebraMap R
        (Localization.AtPrime J))) :
    p = p'
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.𝓔₀

A chosen finite free envelope for the finite projective algebra.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
def 𝓔₀ : Envelope R S
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.charpoly
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
def charpoly (r : ℕ) (_hr : ∀ p, Module.rankAtStalk (R := R) S p = r) (b :
  S) :
    R[X]
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.monic_X_sub_one_pow
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem monic_X_sub_one_pow (k : ℕ) : ((X - 1 : R[X]) ^ k).Monic
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.map_X_sub_one_pow
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem map_X_sub_one_pow {R' : Type u} [CommRing R'] (f : R →+* R') (k : ℕ) :
    ((X - 1 : R[X]) ^ k).map f = (X - 1) ^ k
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.χ₀_modByMonic
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
include hr in
theorem χ₀_modByMonic (b : S) : χ (𝓔₀ R S) b %ₘ (X - 1) ^ ((𝓔₀ R S).n - r) = 0
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.χ₀_eq
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
include hr in
theorem χ₀_eq (b : S) :
    χ (𝓔₀ R S) b = (X - 1) ^ ((𝓔₀ R S).n - r) * charpoly R S r hr b
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.charpoly_map_localization
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem charpoly_map_localization (J : Ideal R) [J.IsPrime] (b : S) :
    (charpoly R S r hr b).map (algebraMap R (Localization.AtPrime J)) =
      (LinearMap.mulLeft (Localization.AtPrime J)
        ((1 : Localization.AtPrime J) ⊗ₜ[R] b)).charpoly
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.χ_eq_charpoly_mul
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem χ_eq_charpoly_mul (𝓔 : Envelope R S) (b : S) :
    χ 𝓔 b = charpoly R S r hr b * (X - 1) ^ (𝓔.n - r)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1_monic
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem L1_monic (b : S) : (charpoly R S r hr b).Monic
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1_natDegree
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem L1_natDegree [Nontrivial R] (b : S) : (charpoly R S r hr b).natDegree = r
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1_aeval_self
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem L1_aeval_self (b : S) : aeval b (charpoly R S r hr b) = 0
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1_map_baseChange
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem L1_map_baseChange (R' : Type u) [CommRing R'] [Algebra R R']
    (hr' : ∀ p, Module.rankAtStalk (R := R') (TensorProduct R R' S) p = r) (b : S) :
    (charpoly R S r hr b).map (algebraMap R R') =
      charpoly R' (TensorProduct R R' S) r hr' ((1 : R') ⊗ₜ[R] b)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1_algEquiv
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem L1_algEquiv (S₂ : Type u) [CommRing S₂] [Algebra R S₂] [Module.Finite R S₂]
    [Module.Projective R S₂] (hr₂ : ∀ p, Module.rankAtStalk (R := R) S₂ p = r)
    (σ : S ≃ₐ[R] S₂) (b : S) :
    charpoly R S₂ r hr₂ (σ b) = charpoly R S r hr b
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1_eq_linearMap_charpoly
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem L1_eq_linearMap_charpoly [Module.Free R S] (b : S) :
    charpoly R S r hr b = (LinearMap.mulLeft R b).charpoly
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L1_rankAtStalk_baseChange
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L1
variable (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] [Module.Finite R S]
  [Module.Projective R S]
open L1
variable (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := R) S p = r)
theorem L1_rankAtStalk_baseChange (R' : Type u) [CommRing R'] [Algebra R R']
    (p : PrimeSpectrum R') :
    Module.rankAtStalk (R := R') (TensorProduct R R' S) p =
      Module.rankAtStalk (R := R) S (PrimeSpectrum.comap (algebraMap R R') p)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.instAlgebraLeftP₁
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L2
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
instance instAlgebraLeftP₁ (t : A →+* B) : Algebra B (P₁ t)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.instFiniteLeftP₁
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L2
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
instance instFiniteLeftP₁ (t : A →+* B) : Module.Finite B (P₁ t)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.instProjectiveLeftP₁
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L2
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
instance instProjectiveLeftP₁ (t : A →+* B) : Module.Projective B (P₁ t)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.algebraMap_P₁_apply
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L2
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
omit [Module.Finite A B] [Module.Projective A B] in
theorem algebraMap_P₁_apply (t : A →+* B) (b : B) : algebraMap B (P₁ t) b = inl₁ t b
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.charpoly_map_algebraMap_eq_map
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L2
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
include hgen hequiv in
theorem charpoly_map_algebraMap_eq_map (f : A) :
    (charpoly A B r hr (t f)).map (algebraMap A B) = (charpoly A B r hr (t f)).map t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.coeff_charpoly_invariant
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L2
variable {A B : Type u} [CommRing A] [CommRing B] [Algebra A B] {t : A →+* B}
  [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
include hgen hequiv in
theorem coeff_charpoly_invariant (f : A) (i : ℕ) :
    algebraMap A B ((charpoly A B r hr (t f)).coeff i) = t ((charpoly A B r hr (t f)).coeff i)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L3_exists_counit
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L3
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra C A] (s t : A →+* B)
theorem L3_exists_counit (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T)) :
    ∃ e : B →+* A, e.comp s = RingHom.id A ∧ e.comp t = RingHom.id A
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L3_t_injective
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L3
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra C A] (s t : A →+* B)
theorem L3_t_injective (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T)) :
    Function.Injective t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L3_s_injective
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L3
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra C A] (s t : A →+* B)
theorem L3_s_injective (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T)) :
    Function.Injective s
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L3_isIntegral_of_charpoly_invariant
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L3
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra C A] (s t : A →+* B)
theorem L3_isIntegral_of_charpoly_invariant
    (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T))
    (hinv : ∀ a : A, s a = t a ↔ a ∈ Set.range (algebraMap C A))
    (hL2 : ∀ f : A, ∃ P : A[X], P.Monic ∧ (∀ i, s (P.coeff i) = t (P.coeff i)) ∧
      aeval (t f) (P.map s) = 0) :
    Algebra.IsIntegral C A
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L3_isIntegral
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L3
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra C A] (s t : A →+* B)
theorem L3_isIntegral
    (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel s t T))
    (_hinj : Function.Injective (algebraMap C A))
    (hinv : ∀ a : A, s a = t a ↔ a ∈ Set.range (algebraMap C A))
    (hL2 : ∀ f : A, ∃ P : A[X], P.Monic ∧ (∀ i, s (P.coeff i) = t (P.coeff i)) ∧
      aeval (t f) (P.map s) = 0) :
    Algebra.IsIntegral C A
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.vA

The linear-combination map of the images of the specified family under the relation map.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
def vA (t : A →+* B) (x : Fin r → A) : (Fin r → A) →ₗ[A] B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.vA_apply
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
omit [Algebra C A] in
theorem vA_apply (a : Fin r → A) : vA t x a = ∑ i, algebraMap A B (a i) * t (x i)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.vC

The linear-combination map of the specified family over the invariant ring.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
def vC (x : Fin r → A) : (Fin r → C) →ₗ[C] A
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.vC_apply
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
omit [Algebra A B] in
theorem vC_apply (w : Fin r → C) : vC (C := C) x w = ∑ i, algebraMap C A (w i) * x i
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.vB

The tensor-valued linear combination of the images of the specified family under the relation map.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
def vB (t : A →+* B) (x : Fin r → A) (b : Fin r → B) : P₁ t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.vB_injective
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
omit [Algebra C A] in
include hx in
theorem vB_injective : Function.Injective (vB t x)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.vB_comp_t
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
omit [Algebra C A] in
theorem vB_comp_t (a : Fin r → A) : vB t x (fun i => t (a i)) = inr₁ t (vA t x a) := by
  simp only [vB, vA_apply, inr₁_apply, map_sum]
  refine Finset.sum_congr rfl fun i _ => ?_
  have : Tgt.of t (t (a i)) = algebraMap A (Tgt t) (a i) := rfl
  rw [this, Algebra.algebraMap_eq_smul_one, TensorProduct.smul_tmul, Algebra.smul_def]
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.vB_comp_s
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
omit [Algebra C A] in
theorem vB_comp_s {c : B →+* P₁ t} (hcs : c.comp (algebraMap A B) = (inl₁ t).comp (algebraMap A B))
    (hct : c.comp t = (inr₁ t).comp t) (a : Fin r → A) :
    vB t x (fun i => algebraMap A B (a i)) = c (vA t x a) := by
  simp only [vB, vA_apply, map_sum, map_mul]
  refine Finset.sum_congr rfl fun i _ => ?_
  rw [show c (algebraMap A B (a i)) = inl₁ t (algebraMap A B (a i)) from RingHom.congr_fun hcs
    (a i),
    show c (t (x i)) = inr₁ t (t (x i)) from RingHom.congr_fun hct (x i), inl₁_apply, inr₁_apply,
    Algebra.TensorProduct.tmul_mul_tmul, mul_one, one_mul]
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.t_injective
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
include hequiv in
omit [Algebra C A] in
theorem t_injective : Function.Injective t
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.vC_bijective
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
include hequiv hinj hinv hx in
theorem vC_bijective : Function.Bijective fun w : Fin r → C => ∑ i, algebraMap C A (w i) * x i := by
  have hfun : (fun w : Fin r → C => ∑ i, algebraMap C A (w i) * x i) = vC (C := C) x := by
    funext w; exact (vC_apply x w).symm
  rw [hfun]
  obtain ⟨c, hcs, hct⟩ := exists_comul hequiv (inl₁ t) (inr₁ t) (inl₁_comp_t t)
  have hst : ∀ a : A, (algebraMap A B a = t a) ↔ a ∈ Set.range (algebraMap C A) := hinv
  have hcomm : ∀ w : Fin r → C, t (vC (C := C) x w) = vA t x (fun i => algebraMap C A (w i)) := by
    intro w
    rw [vC_apply, vA_apply, map_sum]
    refine Finset.sum_congr rfl fun i _ => ?_
    rw [map_mul, ((hst _).2 ⟨w i, rfl⟩)]
  constructor
  · rw [injective_iff_map_eq_zero]
    intro w hw
    have h1 : vA t x (fun i => algebraMap C A (w i)) = 0 := by rw [← hcomm, hw, map_zero]
    have h2 : (fun i => algebraMap C A (w i)) = 0 := by
      have := hx.1 (a₁ := fun i => algebraMap C A (w i)) (a₂ := 0)
      apply this
      simpa [vA_apply] using h1
    funext i
    exact hinj (by simpa using congrFun h2 i)
  · intro a
    obtain ⟨α, hα⟩ := hx.2 (t a)
    have hα' : vA t x α = t a := by rw [vA_apply]; exact hα
    have h3 : (fun i => t (α i)) = fun i => algebraMap A B (α i) := by
      apply vB_injective x hx
      rw [vB_comp_t, vB_comp_s x hcs hct, hα', show c (t a) = inr₁ t
        (t a) from RingHom.congr_fun hct a]
    choose w hw using fun i => (hst (α i)).1 (congrFun h3 i).symm
    refine ⟨w, t_injective hequiv ?_⟩
    rw [hcomm]
    have : (fun i => algebraMap C A (w i)) = α := funext hw
    rw [this, hα']
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.isPushout_of_basis
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L6
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  {r : ℕ} (x : Fin r → A)
  (hx : Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t (x i))
include hequiv hinj hinv hx in
theorem isPushout_of_basis :
    IsPushout (CommRingCat.ofHom (algebraMap C A)) (CommRingCat.ofHom (algebraMap C A))
      (CommRingCat.ofHom (algebraMap A B)) (CommRingCat.ofHom t)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L8.primeX

The ideal generated in the polynomial ring by the local ring maximal ideal.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L8
variable (R : Type u) [CommRing R] [IsLocalRing R]
abbrev primeX : Ideal R[X]
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L8.RX

The polynomial ring localized at the extended maximal ideal.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L8
variable (R : Type u) [CommRing R] [IsLocalRing R]
abbrev RX : Type u
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L8
variable (R : Type u) [CommRing R] [IsLocalRing R]
instance : IsLocalHom (algebraMap R (RX R))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L8.faithfullyFlat
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L8
variable (R : Type u) [CommRing R] [IsLocalRing R]
theorem faithfullyFlat : Module.FaithfullyFlat R (RX R)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L8.residue_X_pow_injective
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L8
variable (R : Type u) [CommRing R] [IsLocalRing R]
theorem residue_X_pow_injective :
    Function.Injective fun n : ℕ =>
      IsLocalRing.residue (RX R) (algebraMap R[X] (RX R) (X ^ n)) := by
  intro m n h
  by_contra hmn
  have h1 : IsLocalRing.residue (RX R) (algebraMap R[X] (RX R) (X ^ m - X ^ n)) = 0 := by
    rw [map_sub, map_sub, sub_eq_zero]
    exact h
  rw [IsLocalRing.residue_eq_zero_iff,
    IsLocalization.AtPrime.to_map_mem_maximal_iff (RX R) (primeX R), Ideal.mem_map_C_iff] at h1
  have h2 := h1 m
  rw [coeff_sub, coeff_X_pow, coeff_X_pow, ite_eq_left rfl, ite_eq_right hmn, sub_zero] at h2
  exact (IsLocalRing.maximalIdeal.isMaximal R).ne_top
    ((Ideal.eq_top_iff_one _).mpr h2)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L8.infinite_residueField
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L8
variable (R : Type u) [CommRing R] [IsLocalRing R]
theorem infinite_residueField : Infinite (IsLocalRing.ResidueField (RX R))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L8_exists_flat_local_infinite
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
open scoped L8 in
theorem L8_exists_flat_local_infinite (R : Type u) [CommRing R] [IsLocalRing R] :
    ∃ (R' : Type u) (_ : CommRing R') (_ : IsLocalRing R') (_ : Algebra R R'),
      Module.FaithfullyFlat R R' ∧ IsLocalHom (algebraMap R R') ∧
      Infinite (IsLocalRing.ResidueField R')
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.algHomOf

The algebra homomorphism associated with a ring map compatible with the base-ring maps.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section generic
variable {C A B : Type u} [CommRing C] [CommRing A] [CommRing B] [Algebra C A] [Algebra C B]
  (C' : Type u) [CommRing C'] [Algebra C C'] (u : A →+* B)
  (hu : u.comp (algebraMap C A) = algebraMap C B)
def algHomOf : A →ₐ[C] B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.algHomOf_apply
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section generic
variable {C A B : Type u} [CommRing C] [CommRing A] [CommRing B] [Algebra C A] [Algebra C B]
  (C' : Type u) [CommRing C'] [Algebra C C'] (u : A →+* B)
  (hu : u.comp (algebraMap C A) = algebraMap C B)
theorem algHomOf_apply (a : A) : algHomOf u hu a = u a
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.bc

The scalar extension of the compatible ring map to the two tensor-product algebras.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section generic
variable {C A B : Type u} [CommRing C] [CommRing A] [CommRing B] [Algebra C A] [Algebra C B]
  (C' : Type u) [CommRing C'] [Algebra C C'] (u : A →+* B)
  (hu : u.comp (algebraMap C A) = algebraMap C B)
def bc : C' ⊗[C] A →ₐ[C'] C' ⊗[C] B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.bc_tmul
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section generic
variable {C A B : Type u} [CommRing C] [CommRing A] [CommRing B] [Algebra C A] [Algebra C B]
  (C' : Type u) [CommRing C'] [Algebra C C'] (u : A →+* B)
  (hu : u.comp (algebraMap C A) = algebraMap C B)
theorem bc_tmul (c : C') (a : A) : bc C' u hu (c ⊗ₜ[C] a) = c ⊗ₜ[C] u a
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.bc_eq_comp
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section generic
variable {C A B : Type u} [CommRing C] [CommRing A] [CommRing B] [Algebra C A] [Algebra C B]
  (C' : Type u) [CommRing C'] [Algebra C C'] (u : A →+* B)
  (hu : u.comp (algebraMap C A) = algebraMap C B)
attribute [local instance] Algebra.TensorProduct.rightAlgebra in
theorem bc_eq_comp :
    let _ : Algebra A B := u.toAlgebra
    let _ : IsScalarTower C A B :=
      IsScalarTower.of_algebraMap_eq fun c => (RingHom.congr_fun hu c).symm
    (bc C' u hu).toRingHom =
      (Algebra.IsPushout.cancelBaseChangeAlg C C' A (C' ⊗[C] A) B).toRingEquiv.toRingHom.comp
        (algebraMap (C' ⊗[C] A) ((C' ⊗[C] A) ⊗[A] B)) := by
  let _ : Algebra A B := u.toAlgebra
  let _ : IsScalarTower C A B :=
    IsScalarTower.of_algebraMap_eq fun c => (RingHom.congr_fun hu c).symm
  have key := Algebra.IsPushout.cancelBaseChange_symm_comp_lTensor C A B C'
  have hg : IsScalarTower.toAlgHom C A B = algHomOf u hu := AlgHom.ext fun _ => rfl
  apply RingHom.ext
  intro x
  apply (Algebra.IsPushout.cancelBaseChangeAlg C C' A (C' ⊗[C] A) B).symm.injective
  have hx := AlgHom.congr_fun key x
  rw [hg] at hx
  refine hx.trans ?_
  change _ = (Algebra.IsPushout.cancelBaseChangeAlg C C' A (C' ⊗[C] A) B).symm
    ((Algebra.IsPushout.cancelBaseChangeAlg C C' A (C' ⊗[C] A) B)
      (algebraMap (C' ⊗[C] A) ((C' ⊗[C] A) ⊗[A] B) x))
  rw [AlgEquiv.symm_apply_apply]
  rfl
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.finite_bc
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section generic
variable {C A B : Type u} [CommRing C] [CommRing A] [CommRing B] [Algebra C A] [Algebra C B]
  (C' : Type u) [CommRing C'] [Algebra C C'] (u : A →+* B)
  (hu : u.comp (algebraMap C A) = algebraMap C B)
attribute [local instance] Algebra.TensorProduct.rightAlgebra in
theorem finite_bc (h : u.Finite) : (bc C' u hu).toRingHom.Finite
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.flat_bc
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section generic
variable {C A B : Type u} [CommRing C] [CommRing A] [CommRing B] [Algebra C A] [Algebra C B]
  (C' : Type u) [CommRing C'] [Algebra C C'] (u : A →+* B)
  (hu : u.comp (algebraMap C A) = algebraMap C B)
attribute [local instance] Algebra.TensorProduct.rightAlgebra in
theorem flat_bc (h : u.Flat) : (bc C' u hu).toRingHom.Flat
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.finitePresentation_bc
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section generic
variable {C A B : Type u} [CommRing C] [CommRing A] [CommRing B] [Algebra C A] [Algebra C B]
  (C' : Type u) [CommRing C'] [Algebra C C'] (u : A →+* B)
  (hu : u.comp (algebraMap C A) = algebraMap C B)
attribute [local instance] Algebra.TensorProduct.rightAlgebra in
theorem finitePresentation_bc (h : u.FinitePresentation) :
    (bc C' u hu).toRingHom.FinitePresentation
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.projective_bc
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section generic
variable {C A B : Type u} [CommRing C] [CommRing A] [CommRing B] [Algebra C A] [Algebra C B]
  (C' : Type u) [CommRing C'] [Algebra C C'] (u : A →+* B)
  (hu : u.comp (algebraMap C A) = algebraMap C B)
attribute [local instance] Algebra.TensorProduct.rightAlgebra in
theorem projective_bc (hproj : letI : Algebra A B := u.toAlgebra; Module.Projective A B) :
    let _ : Algebra (C' ⊗[C] A) (C' ⊗[C] B) := (bc C' u hu).toRingHom.toAlgebra
    Module.Projective (C' ⊗[C] A) (C' ⊗[C] B) := by
  let _ : Algebra A B := u.toAlgebra
  let _ : IsScalarTower C A B :=
    IsScalarTower.of_algebraMap_eq fun c => (RingHom.congr_fun hu c).symm
  let _ : Algebra (C' ⊗[C] A) (C' ⊗[C] B) := (bc C' u hu).toRingHom.toAlgebra
  let _ : Module.Projective A B := hproj
  let e := Algebra.IsPushout.cancelBaseChangeAlg C C' A (C' ⊗[C] A) B
  have he : ∀ a', e (algebraMap (C' ⊗[C] A) ((C' ⊗[C] A) ⊗[A] B) a') =
      algebraMap (C' ⊗[C] A) (C' ⊗[C] B) a' :=
    fun a' => (RingHom.congr_fun (bc_eq_comp C' u hu) a').symm
  let eL : ((C' ⊗[C] A) ⊗[A] B) ≃ₗ[C' ⊗[C] A] (C' ⊗[C] B) :=
    { e.toRingEquiv.toAddEquiv with
      map_smul' := fun a' x => by
        change e (a' • x) = a' • e x
        rw [Algebra.smul_def, ← he, ← map_mul]
        congr 1
        induction x using TensorProduct.inductionOn with
        | add x y hx hy => rw [smul_add, mul_add, hx, hy]
        | tmul a₁ b =>
          rw [TensorProduct.smul_tmul', smul_eq_mul, Algebra.TensorProduct.algebraMap_apply,
            Algebra.algebraMap_self, RingHom.id_apply, Algebra.TensorProduct.tmul_mul_tmul,
              one_mul] }
  exact Module.Projective.of_equiv eL
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.ringHom_ext_tmul
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section lift
variable {C : Type u} [CommRing C] (C' : Type u) [CommRing C'] [Algebra C C']
  {X : Type u} [CommRing X] [Algebra C X] {T : Type u} [CommRing T]
theorem ringHom_ext_tmul {f g : C' ⊗[C] X →+* T} (h : ∀ (c : C') (x : X), f (c ⊗ₜ[C] x) = g
  (c ⊗ₜ[C] x)) :
    f = g
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.liftPair

The tensor-product ring map determined by a compatible pair of ring maps.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section lift
variable {C : Type u} [CommRing C] (C' : Type u) [CommRing C'] [Algebra C C']
  {X : Type u} [CommRing X] [Algebra C X] {T : Type u} [CommRing T]
def liftPair (χ : C' →+* T) (φ : X →+* T)
    (h : φ.comp (algebraMap C X) = χ.comp (algebraMap C C')) : C' ⊗[C] X →+* T
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7.liftPair_tmul
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
namespace L7
section lift
variable {C : Type u} [CommRing C] (C' : Type u) [CommRing C'] [Algebra C C']
  {X : Type u} [CommRing X] [Algebra C X] {T : Type u} [CommRing T]
theorem liftPair_tmul (χ : C' →+* T) (φ : X →+* T)
    (h : φ.comp (algebraMap C X) = χ.comp (algebraMap C C')) (c : C') (x : X) :
    liftPair C' χ φ h (c ⊗ₜ[C] x) = χ c * φ x
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.s_comp_algebraMap
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
theorem s_comp_algebraMap : (algebraMap A B).comp (algebraMap C A) = algebraMap C B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.t_comp_algebraMap
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem t_comp_algebraMap (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range
  (algebraMap C A)) :
    t.comp (algebraMap C A) = algebraMap C B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.s'

The scalar extension of the original algebra map.

Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
def s' : C' ⊗[C] A →ₐ[C'] C' ⊗[C] B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.instAlgebraPrimed
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
instance instAlgebraPrimed : Algebra (C' ⊗[C] A) (C' ⊗[C] B)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.instIsScalarTowerPrimed
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
instance instIsScalarTowerPrimed : IsScalarTower C' (C' ⊗[C] A) (C' ⊗[C] B)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.algebraMap_primed_tmul
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem algebraMap_primed_tmul (c : C') (a : A) :
    algebraMap (C' ⊗[C] A) (C' ⊗[C] B) (c ⊗ₜ[C] a) = c ⊗ₜ[C] algebraMap A B a
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.algebraMap_primed_eq_bc
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem algebraMap_primed_eq_bc :
    algebraMap (C' ⊗[C] A) (C' ⊗[C] B) = (bc C' (algebraMap A B)
      (s_comp_algebraMap)).toRingHom
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.algebraMap_left_apply
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
omit [Algebra A B] [Algebra C B] [IsScalarTower C A B] in
theorem algebraMap_left_apply (x : C') : algebraMap C' (C' ⊗[C] A) x = x ⊗ₜ[C] 1
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.t'

The scalar extension of the second relation map as a ring homomorphism.

Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
def t' (ht : t.comp (algebraMap C A) = algebraMap C B) : C' ⊗[C] A →+* C' ⊗[C] B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.t'_tmul
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
omit [Algebra A B] [IsScalarTower C A B] in
theorem t'_tmul (ht : t.comp (algebraMap C A) = algebraMap C B) (c : C') (a : A) :
    t' t C' ht (c ⊗ₜ[C] a) = c ⊗ₜ[C] t a
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.t'_algebraMap
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
omit [Algebra A B] [IsScalarTower C A B] in
theorem t'_algebraMap (ht : t.comp (algebraMap C A) = algebraMap C B) (c : C') :
    t' t C' ht (algebraMap C' (C' ⊗[C] A) c) = algebraMap C' (C' ⊗[C] B) c
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.includeRight_comp_s
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem includeRight_comp_s :
    (Algebra.TensorProduct.includeRight (R := C) (A := C') (B := B)).toRingHom.comp
      (algebraMap A B) =
      (algebraMap (C' ⊗[C] A) (C' ⊗[C] B)).comp
        (Algebra.TensorProduct.includeRight (R := C) (A := C') (B := A)).toRingHom
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.includeRight_comp_t
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
omit [Algebra A B] [IsScalarTower C A B] in
theorem includeRight_comp_t (ht : t.comp (algebraMap C A) = algebraMap C B) :
    (Algebra.TensorProduct.includeRight (R := C) (A := C') (B := B)).toRingHom.comp t =
      (t' t C' ht).comp (Algebra.TensorProduct.includeRight (R := C) (A := C') (B :=
        A)).toRingHom
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_finite_s
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem L7_finite_s (h : (algebraMap A B).Finite) : (algebraMap (C' ⊗[C] A)
  (C' ⊗[C] B)).Finite
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_flat_s
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem L7_flat_s (h : (algebraMap A B).Flat) : (algebraMap (C' ⊗[C] A) (C' ⊗[C] B)).Flat
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_finitePresentation_s
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem L7_finitePresentation_s (h : (algebraMap A B).FinitePresentation) :
    (algebraMap (C' ⊗[C] A) (C' ⊗[C] B)).FinitePresentation
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_finite_t
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
omit [Algebra A B] [IsScalarTower C A B] in
theorem L7_finite_t (ht : t.comp (algebraMap C A) = algebraMap C B) (h : t.Finite) :
    (t' t C' ht).Finite
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_flat_t
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
omit [Algebra A B] [IsScalarTower C A B] in
theorem L7_flat_t (ht : t.comp (algebraMap C A) = algebraMap C B) (h : t.Flat) :
    (t' t C' ht).Flat
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_finitePresentation_t
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
omit [Algebra A B] [IsScalarTower C A B] in
theorem L7_finitePresentation_t (ht : t.comp (algebraMap C A) = algebraMap C B)
    (h : t.FinitePresentation) : (t' t C' ht).FinitePresentation
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_moduleFinite
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
instance L7_moduleFinite [Module.Finite A B] : Module.Finite (C' ⊗[C] A) (C' ⊗[C] B)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_moduleFlat
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
instance L7_moduleFlat [Module.Flat A B] : Module.Flat (C' ⊗[C] A) (C' ⊗[C] B)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_moduleProjective
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
attribute [local instance] Algebra.TensorProduct.rightAlgebra in
instance L7_moduleProjective [Module.Projective A B] :
    Module.Projective (C' ⊗[C] A) (C' ⊗[C] B)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_finite_Tgt
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
instance L7_finite_Tgt (ht : t.comp (algebraMap C A) = algebraMap C B) [h :
  Module.Finite A (Tgt t)] :
    Module.Finite (C' ⊗[C] A) (Tgt (t' t C' ht))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_flat_Tgt
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
instance L7_flat_Tgt (ht : t.comp (algebraMap C A) = algebraMap C B) [h : Module.Flat A
  (Tgt t)] :
    Module.Flat (C' ⊗[C] A) (Tgt (t' t C' ht))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_projective_Tgt
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
instance L7_projective_Tgt (ht : t.comp (algebraMap C A) = algebraMap C B)
    [h : Module.Projective A (Tgt t)] :
    Module.Projective (C' ⊗[C] A) (Tgt (t' t C' ht))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_hgen
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem L7_hgen (ht : t.comp (algebraMap C A) = algebraMap C B)
    (hgen : (algebraMap A B).range ⊔ t.range = ⊤) :
    (algebraMap (C' ⊗[C] A) (C' ⊗[C] B)).range ⊔ (t' t C' ht).range = ⊤
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_algebraMap_injective
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
omit [Algebra A B] [Algebra C B] [IsScalarTower C A B] in
theorem L7_algebraMap_injective [Module.Flat C C'] (hinj : Function.Injective (algebraMap C A)) :
    Function.Injective (algebraMap C' (C' ⊗[C] A))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_invariants
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem L7_invariants [Module.Flat C C']
    (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
    (a' : C' ⊗[C] A) :
    algebraMap (C' ⊗[C] A) (C' ⊗[C] B) a' = t' t C' (t_comp_algebraMap hinv) a' ↔
      a' ∈ Set.range (algebraMap C' (C' ⊗[C] A))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.one_tmul_algebraMap
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
omit [Algebra A B] [Algebra C B] [IsScalarTower C A B] in
theorem one_tmul_algebraMap (c : C) :
    (1 : C') ⊗ₜ[C] algebraMap C A c = algebraMap C' (C' ⊗[C] A) (algebraMap C C' c)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.rel_primed_iff
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem rel_primed_iff (ht : t.comp (algebraMap C A) = algebraMap C B) {T : Type u} [CommRing T]
    (x y : C' ⊗[C] A →+* T) :
    Rel (algebraMap (C' ⊗[C] A) (C' ⊗[C] B)) (t' t C' ht) T x y ↔
      x.comp (algebraMap C' (C' ⊗[C] A)) = y.comp (algebraMap C' (C' ⊗[C] A)) ∧
      Rel (algebraMap A B) t T
        (x.comp (Algebra.TensorProduct.includeRight (R := C) (A := C') (B := A)).toRingHom)
        (y.comp (Algebra.TensorProduct.includeRight (R := C) (A := C') (B := A)).toRingHom)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L7_hequiv
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
variable {A B : Type u} [CommRing A] [CommRing B] (s t : A →+* B)
variable {s t}
section L7
open L7
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B]
  (t : A →+* B) (C' : Type u) [CommRing C'] [Algebra C C']
variable {t} in
theorem L7_hequiv (ht : t.comp (algebraMap C A) = algebraMap C B)
    (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
    (T : Type u) [CommRing T] :
    _root_.Equivalence (Rel (algebraMap (C' ⊗[C] A) (C' ⊗[C] B)) (t' t C' ht) T) where
  refl x := (rel_primed_iff t C' ht x x).mpr ⟨rfl, (hequiv T).refl _⟩
  symm h := by
    rw [rel_primed_iff] at h ⊢
    exact ⟨h.1.symm, (hequiv T).symm h.2⟩
  trans h₁ h₂ := by
    rw [rel_primed_iff] at h₁ h₂ ⊢
    exact ⟨h₁.1.trans h₂.1, (hequiv T).trans h₁.2 h₂.2⟩
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L4a_comap_surjective
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L4
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
omit [Algebra A B] in
theorem L4a_comap_surjective [Algebra.IsIntegral C A] (hinj : Function.Injective (algebraMap C A)) :
    Function.Surjective (PrimeSpectrum.comap (algebraMap C A))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_antipodeAlgEquiv
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L4
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section antipode
variable (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
include hgen hequiv in
theorem exists_antipodeAlgEquiv : ∃ ι : B ≃ₐ[A] Tgt t,
    (∀ a, ι (t a) = Tgt.of t (algebraMap A B a)) ∧
    (∀ a, ι (algebraMap A B a) = Tgt.of t (t a))
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.counitTgt

The algebra retraction from the target copy induced by a retraction of the relation map.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L4
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section antipode
variable (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
omit [Algebra A B] in
def counitTgt (e : B →+* A) (he : e.comp t = RingHom.id A) : Tgt t →ₐ[A] A
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.counitTgt_of
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L4
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section antipode
variable (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
omit [Algebra A B] in
theorem counitTgt_of (e : B →+* A) (he : e.comp t = RingHom.id A) (b : B) :
    counitTgt e he (Tgt.of t b) = e b
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.comap_comap_includeRight_eq
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L4
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section norm
open L1
omit [Algebra A B] in
theorem comap_comap_includeRight_eq (S : Type u) [CommRing S] [Algebra A S] (q : Ideal A)
  [q.IsMaximal]
    (𝔐 : Ideal ((A ⧸ q) ⊗[A] S)) (h𝔐 : 𝔐 ≠ ⊤) :
    (𝔐.comap ((Algebra.TensorProduct.includeRight : S →ₐ[A] (A ⧸ q) ⊗[A] S) : S →+*
      (A ⧸ q) ⊗[A] S)).comap
      (algebraMap A S) = q
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.isUnit_mulLeft_iff
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L4
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section norm
open L1
omit [Algebra A B] in
theorem isUnit_mulLeft_iff (R S : Type u) [CommRing R] [CommRing S] [Algebra R S] (x : S) :
    IsUnit (LinearMap.mulLeft R x) ↔ IsUnit x
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.coeff_zero_charpoly_notMem_iff
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L4
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section norm
open L1
omit [Algebra A B] in
theorem coeff_zero_charpoly_notMem_iff (S : Type u) [CommRing S] [Algebra A S] [Module.Finite A S]
    [Module.Projective A S] (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) S p = r) (b : S)
    (q : Ideal A) [q.IsMaximal] :
    (charpoly A S r hr b).coeff 0 ∉ q ↔ IsUnit ((1 : A ⧸ q) ⊗ₜ[A] b : (A ⧸ q) ⊗[A] S)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L4b_exists_prime_of_comap_eq_of_isMaximal
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L4
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section L4b
variable [Module.Finite A B] [Module.Projective A B]
  [Module.Finite A (Tgt t)] [Module.Projective A (Tgt t)]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
include hgen hequiv hinv hr in
theorem L4b_exists_prime_of_comap_eq_of_isMaximal (q q' : Ideal A) [hq : q.IsMaximal] [hq' :
  q'.IsMaximal]
    (h : q.comap (algebraMap C A) = q'.comap (algebraMap C A)) :
    ∃ 𝔯 : Ideal B, 𝔯.IsPrime ∧ 𝔯.comap (algebraMap A B) = q ∧ 𝔯.comap t = q'
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L4c_setOf_isMaximal_finite
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L4
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section L4b
variable [Module.Finite A B] [Module.Projective A B]
  [Module.Finite A (Tgt t)] [Module.Projective A (Tgt t)]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
include hgen hequiv hinv hr in
theorem L4c_setOf_isMaximal_finite [IsLocalRing C] [Algebra.IsIntegral C A] :
    {q : Ideal A | q.IsMaximal}.Finite
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.span_range_t_eq_top
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
theorem span_range_t_eq_top (hgen : (algebraMap A B).range ⊔ t.range = ⊤) :
    Submodule.span A (Set.range t) = (⊤ : Submodule A B)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.Fib

The tensor fibre over the quotient by the specified ideal.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section fibre
variable (t) (𝔪 : Ideal A)
abbrev Fib : Type u
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.t_algebraMap_eq
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section fibre
variable (t) (𝔪 : Ideal A)
omit [Algebra C A] in
theorem t_algebraMap_eq [Algebra C A]
    (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A)) (c : C) :
    t (algebraMap C A c) = algebraMap A B (algebraMap C A c)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.Tfib

The linear fibre map that tensors the second relation map with the quotient unit.

Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section fibre
variable (t) (𝔪 : Ideal A)
def Tfib (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A)) :
    A →ₗ[C] Fib 𝔪 (B := B) where
  toFun a := (1 : A ⧸ 𝔪) ⊗ₜ[A] t a
  map_add' a b := by simp [tmul_add]
  map_smul' c a := by
    simp only [RingHom.id_apply]
    rw [Algebra.smul_def, map_mul, t_algebraMap_eq t hinv c, ← Algebra.smul_def, tmul_smul,
      IsScalarTower.algebraMap_smul]
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.Tfib_apply
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section fibre
variable (t) (𝔪 : Ideal A)
theorem Tfib_apply (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
    (a : A) : Tfib t 𝔪 hinv a = (1 : A ⧸ 𝔪) ⊗ₜ[A] t a
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.span_range_Tfib
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section fibre
variable (t) (𝔪 : Ideal A)
variable (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
theorem span_range_Tfib (hgen : (algebraMap A B).range ⊔ t.range = ⊤) :
    Submodule.span (A ⧸ 𝔪) (Set.range (Tfib t 𝔪 hinv)) = ⊤
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.smul_Tfib_eq_zero
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section fibre
variable (t) (𝔪 : Ideal A)
variable (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
theorem smul_Tfib_eq_zero {c : C} (hc : algebraMap C A c ∈ 𝔪) (a : A) : c • Tfib t 𝔪 hinv a =
  0
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.finrank_Fib
Source context 14 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section fibre
variable (t) (𝔪 : Ideal A)
variable (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
variable [Module.Finite A B] [Module.Projective A B] (r : ℕ)
  (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
include hr in
omit [Algebra C A] in
theorem finrank_Fib [𝔪.IsMaximal] : Module.finrank (A ⧸ 𝔪) (Fib 𝔪 (B := B)) = r
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.ofResidue

A submodule regarded over the quotient ring when its ambient module already carries that quotient action.

Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section select
variable [IsLocalRing C] [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
omit [IsLocalRing C] [Module.Finite A B] [Module.Projective A B] in
def ofResidue (I : Ideal C) {W : Type u} [AddCommGroup W] [Module C W]
    [Module (C ⧸ I) W] [IsScalarTower C (C ⧸ I) W] (N : Submodule C W) : Submodule (C ⧸ I) W where
  carrier := N
  add_mem' := N.add_mem
  zero_mem' := N.zero_mem
  smul_mem' r w hw := by
    obtain ⟨c, rfl⟩ := Ideal.Quotient.mk_surjective r
    rw [← Ideal.Quotient.algebraMap_eq, algebraMap_smul]
    exact N.smul_mem c hw
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.mem_ofResidue
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section select
variable [IsLocalRing C] [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
omit [IsLocalRing C] [Module.Finite A B] [Module.Projective A B] in
theorem mem_ofResidue (I : Ideal C) {W : Type u} [AddCommGroup W] [Module C W]
    [Module (C ⧸ I) W] [IsScalarTower C (C ⧸ I) W] (N : Submodule C W) (w : W) :
    w ∈ ofResidue I N ↔ w ∈ N
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_forall_Tfib_notMem
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section select
variable [IsLocalRing C] [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
omit [Module.Finite A B] [Module.Projective A B] in
theorem exists_forall_Tfib_notMem [Infinite (IsLocalRing.ResidueField C)]
    (ℳ : Finset (Ideal A)) (hℳ : ∀ 𝔪 ∈ ℳ, (IsLocalRing.maximalIdeal C).map (algebraMap C A) ≤ 𝔪)
    (V : ∀ 𝔪 : Ideal A, Submodule (A ⧸ 𝔪) (Fib 𝔪 (B := B)))
    (hV : ∀ 𝔪 ∈ ℳ, ∃ a : A, Tfib t 𝔪 hinv a ∉ V 𝔪) :
    ∃ a : A, ∀ 𝔪 ∈ ℳ, Tfib t 𝔪 hinv a ∉ V 𝔪
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.exists_forall_linearIndependent
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section select
variable [IsLocalRing C] [Module.Finite A B] [Module.Projective A B]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
include hgen hr in
theorem exists_forall_linearIndependent [Infinite (IsLocalRing.ResidueField C)]
    (ℳ : Finset (Ideal A)) (hℳmax : ∀ 𝔪 ∈ ℳ, 𝔪.IsMaximal)
    (hℳ : ∀ 𝔪 ∈ ℳ, (IsLocalRing.maximalIdeal C).map (algebraMap C A) ≤ 𝔪)
    (m : ℕ) (hm : m ≤ r) :
    ∃ x : Fin m → A, ∀ 𝔪 ∈ ℳ, LinearIndependent (A ⧸ 𝔪) (fun j => Tfib t 𝔪 hinv (x j)) := by
  induction m with
  | zero => exact ⟨Fin.elim0, fun 𝔪 _ => linearIndependent_empty_type⟩
  | succ m ih =>
    obtain ⟨x, hx⟩ := ih (Nat.le_of_succ_le hm)
    let V : ∀ 𝔪 : Ideal A, Submodule (A ⧸ 𝔪) (Fib 𝔪 (B := B)) := fun 𝔪 =>
      Submodule.span (A ⧸ 𝔪) (Set.range fun j => Tfib t 𝔪 hinv (x j))
    have hV : ∀ 𝔪 ∈ ℳ, ∃ a : A, Tfib t 𝔪 hinv a ∉ V 𝔪 := by
      intro 𝔪 h𝔪
      let _ := hℳmax 𝔪 h𝔪
      let _ : Field (A ⧸ 𝔪) := Ideal.Quotient.field 𝔪
      by_contra hall
      push Not at hall
      have hle : (⊤ : Submodule (A ⧸ 𝔪) (Fib 𝔪 (B := B))) ≤ V 𝔪 := by
        rw [← span_range_Tfib t 𝔪 hinv hgen, Submodule.span_le]
        rintro _ ⟨a, rfl⟩
        exact hall a
      have h1 : Module.finrank (A ⧸ 𝔪) (Fib 𝔪 (B := B)) ≤ m := by
        rw [← finrank_top, ← eq_top_iff.mpr hle]
        exact (finrank_range_le_card _).trans (by simp)
      rw [finrank_Fib 𝔪 r hr] at h1
      omega
    obtain ⟨a, ha⟩ := exists_forall_Tfib_notMem (t := t) hinv ℳ hℳ V hV
    refine ⟨(Fin.cons a x : Fin (m + 1) → A), fun 𝔪 h𝔪 => ?_⟩
    let _ := hℳmax 𝔪 h𝔪
    let _ : Field (A ⧸ 𝔪) := Ideal.Quotient.field 𝔪
    have : (fun j => Tfib t 𝔪 hinv ((Fin.cons a x : Fin (m + 1) → A) j)) =
        Fin.cons (Tfib t 𝔪 hinv a) (fun j => Tfib t 𝔪 hinv (x j)) := by
      ext j; refine Fin.cases ?_ (fun i => ?_) j <;> simp
    rw [this, linearIndependent_finCons]
    exact ⟨hx 𝔪 h𝔪, ha 𝔪 h𝔪⟩
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.range_linearCombination_eq_top
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section heart
variable [IsLocalRing C] [Module.Finite A B] [Module.Projective A B]
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
omit [IsLocalRing C] [Module.Projective A B] in
theorem range_linearCombination_eq_top (ℳ : Finset (Ideal A))
    (hall : ∀ 𝔪 : Ideal A, 𝔪.IsMaximal → 𝔪 ∈ ℳ) {r : ℕ} (x : Fin r → A)
    (hx : ∀ 𝔪 ∈ ℳ, Submodule.span (A ⧸ 𝔪) (Set.range fun j => Tfib t 𝔪 hinv (x j)) = ⊤) :
    LinearMap.range (Fintype.linearCombination A (fun j => t (x j))) = ⊤ := by
  classical
  set N : Submodule A B := LinearMap.range (Fintype.linearCombination A (fun j => t (x j))) with hN
  have hNspan : N = Submodule.span A (Set.range fun j => t (x j)) :=
    Fintype.range_linearCombination A _
  have step1 : ∀ 𝔪 ∈ ℳ, (⊤ : Submodule A B) ≤ N ⊔ 𝔪 • ⊤ := by
    intro 𝔪 h𝔪 b _
    have hb : (1 : A ⧸ 𝔪) ⊗ₜ[A] b ∈
        (Submodule.span (A ⧸ 𝔪) (Set.range fun j => Tfib t 𝔪 hinv (x j))).restrictScalars A := by
      rw [hx 𝔪 h𝔪]; trivial
    rw [Submodule.restrictScalars_span A (A ⧸ 𝔪) Ideal.Quotient.mk_surjective] at hb
    have hb' := Submodule.mem_map_of_mem (f := (TensorProduct.quotTensorEquivQuotSMul B
      𝔪).toLinearMap) hb
    rw [Submodule.map_span, ← Set.range_comp] at hb'
    simp only [LinearEquiv.coe_coe, Function.comp_def, Tfib_apply,
      TensorProduct.quotTensorEquivQuotSMul_mk_one_tmul] at hb'
    have : Submodule.Quotient.mk b ∈ N.map (𝔪 • (⊤ : Submodule A B)).mkQ := by
      rw [hNspan, Submodule.map_span, ← Set.range_comp]
      exact hb'
    have hmem : b ∈ (N.map (𝔪 • (⊤ : Submodule A B)).mkQ).comap (𝔪 • (⊤ : Submodule A B)).mkQ :=
      this
    rwa [Submodule.comap_map_mkQ, sup_comm] at hmem
  have step2 : ∀ S : Finset (Ideal A), S ⊆ ℳ → (⊤ : Submodule A B) ≤ N ⊔ (S.prod id) • ⊤ := by
    intro S
    induction S using Finset.induction_on with
    | empty =>
      intro
      rw [Finset.prod_empty, Ideal.one_eq_top, Submodule.top_smul]
      exact le_sup_right
    | insert 𝔪 S h𝔪S ih =>
      intro hS
      rw [Finset.prod_insert h𝔪S, id]
      have h1 := step1 𝔪 (hS (Finset.mem_insert_self _ _))
      have h2 := ih ((Finset.subset_insert _ _).trans hS)
      calc (⊤ : Submodule A B) ≤ N ⊔ 𝔪 • ⊤ := h1
        _ ≤ N ⊔ 𝔪 • (N ⊔ (S.prod id) • ⊤) := sup_le_sup_left (Submodule.smul_mono le_rfl h2) _
        _ = N ⊔ (𝔪 • N ⊔ (𝔪 * S.prod id) • ⊤) := by rw [Submodule.smul_sup, Submodule.mul_smul]
        _ ≤ N ⊔ (𝔪 * S.prod id) • ⊤ :=
          sup_le le_sup_left (sup_le (Submodule.smul_le_right.trans le_sup_left) le_sup_right)
  have hjac : ℳ.prod id ≤ Ideal.jacobson ⊥ := by
    apply le_sInf
    rintro J ⟨-, hJ⟩
    exact Ideal.prod_le_inf.trans (Finset.inf_le (hall J hJ))
  have hfg : (⊤ : Submodule A B).FG := Module.Finite.fg_top
  have key := Submodule.sup_eq_sup_smul_of_le_smul_of_le_jacobson hfg hjac (step2 ℳ subset_rfl)
  rwa [sup_top_eq, Submodule.bot_smul, sup_bot_eq, eq_comm] at key
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.bijective_of_surjective_of_rankAtStalk_eq
Source context 11 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section heart
variable [IsLocalRing C] [Module.Finite A B] [Module.Projective A B]
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
omit [IsLocalRing C] [Algebra C A] in
theorem bijective_of_surjective_of_rankAtStalk_eq {r : ℕ}
    (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
    (Φ : (Fin r → A) →ₗ[A] B) (hΦ : Function.Surjective Φ) : Function.Bijective Φ
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.L5_exists_basis_of_isLocalRing
Source context 12 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section L5
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  {t : A →+* B}
section heart
variable [IsLocalRing C] [Module.Finite A B] [Module.Projective A B]
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
variable [Module.Finite A (Tgt t)] [Module.Projective A (Tgt t)]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (r : ℕ) (hr : ∀ p, Module.rankAtStalk (R := A) B p = r)
include hgen hequiv hinv hr in
theorem L5_exists_basis_of_isLocalRing [Infinite (IsLocalRing.ResidueField C)]
    [Algebra.IsIntegral C A] :
    ∃ x : Fin r → A, Function.Bijective fun a : Fin r → A => ∑ i, algebraMap A B (a i) * t
      (x i) := by
  classical
  have hfin := L4c_setOf_isMaximal_finite (t := t) hgen hequiv hinv r hr
  set ℳ : Finset (Ideal A) := hfin.toFinset with hℳdef
  have hℳmax : ∀ 𝔪 ∈ ℳ, 𝔪.IsMaximal := fun 𝔪 h => by simpa [hℳdef] using h
  have hall : ∀ 𝔪 : Ideal A, 𝔪.IsMaximal → 𝔪 ∈ ℳ := fun 𝔪 h => by simpa [hℳdef] using h
  have hℳ : ∀ 𝔪 ∈ ℳ, (IsLocalRing.maximalIdeal C).map (algebraMap C A) ≤ 𝔪 := by
    intro 𝔪 h𝔪
    let _ := hℳmax 𝔪 h𝔪
    rw [Ideal.map_le_iff_le_comap]
    change IsLocalRing.maximalIdeal C ≤ 𝔪.under C
    rw [IsLocalRing.eq_maximalIdeal
      (Ideal.isMaximal_under_of_isIntegral_of_isMaximal (R := C) 𝔪)]
  obtain ⟨x, hx⟩ := exists_forall_linearIndependent (t := t) hgen hinv r hr ℳ hℳmax hℳ r le_rfl
  have hspan : ∀ 𝔪 ∈ ℳ, Submodule.span (A ⧸ 𝔪) (Set.range fun j => Tfib t 𝔪 hinv (x j)) = ⊤ := by
    intro 𝔪 h𝔪
    let _ := hℳmax 𝔪 h𝔪
    let _ : Field (A ⧸ 𝔪) := Ideal.Quotient.field 𝔪
    exact (hx 𝔪 h𝔪).span_eq_top_of_card_eq_finrank' (by rw [Fintype.card_fin, finrank_Fib 𝔪 r hr])
  refine ⟨x, ?_⟩
  have hsurj : Function.Surjective (Fintype.linearCombination A (fun j => t (x j))) :=
    LinearMap.range_eq_top.mp (range_linearCombination_eq_top (t := t) hinv ℳ hall x hspan)
  have hbij := bijective_of_surjective_of_rankAtStalk_eq (B := B) hr _ hsurj
  convert hbij using 1
  ext a
  simp [Fintype.linearCombination_apply, Algebra.smul_def]
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.tAlgHom

The second relation map viewed as an algebra homomorphism over the invariant ring.

Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section theta
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] (t : A →+* B)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
def tAlgHom : A →ₐ[C] B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.tAlgHom_apply
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section theta
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] (t : A →+* B)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
theorem tAlgHom_apply (a : A) : tAlgHom t hinv a = t a
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.theta

The comparison from the invariant-ring tensor square to the relation algebra.

Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section theta
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] (t : A →+* B)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
def theta : A ⊗[C] A →ₐ[A] B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.theta_tmul
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section theta
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] (t : A →+* B)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
theorem theta_tmul (a a' : A) : theta t hinv (a ⊗ₜ[C] a') =
  algebraMap A B a * t a'
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.isPushout_of_bijective_theta
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section theta
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] (t : A →+* B)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
theorem isPushout_of_bijective_theta (hθ : Function.Bijective (theta t hinv)) :
    IsPushout (CommRingCat.ofHom (algebraMap C A)) (CommRingCat.ofHom (algebraMap C A))
      (CommRingCat.ofHom (algebraMap A B)) (CommRingCat.ofHom t)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.isLocalizedModule_map_eq_baseChange
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section descent
variable {C : Type u} [CommRing C]
theorem isLocalizedModule_map_eq_baseChange (P : Ideal C) [P.IsMaximal]
    {M N : Type u} [AddCommGroup M] [Module C M] [AddCommGroup N] [Module C N] (θ : M →ₗ[C] N) :
    IsLocalizedModule.map P.primeCompl (TensorProduct.mk C (Localization.AtPrime P) M 1)
      (TensorProduct.mk C (Localization.AtPrime P) N 1) θ =
      (θ.baseChange (Localization.AtPrime P)).restrictScalars C
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.baseChange_baseChange_bijective_iff
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section descent
variable {C : Type u} [CommRing C]
theorem baseChange_baseChange_bijective_iff {R : Type u} [CommRing R] [Algebra C R] (C' :
  Type u) [CommRing C']
    [Algebra C C'] [Algebra R C'] [IsScalarTower C R C']
    {M N : Type u} [AddCommGroup M] [Module C M] [AddCommGroup N] [Module C N] (θ : M →ₗ[C] N) :
    Function.Bijective ((θ.baseChange R).baseChange C') ↔ Function.Bijective (θ.baseChange C')
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.bijective_of_forall_exists_faithfullyFlat
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section descent
variable {C : Type u} [CommRing C]
theorem bijective_of_forall_exists_faithfullyFlat {M N : Type u} [AddCommGroup M] [Module C M]
    [AddCommGroup N] [Module C N] (θ : M →ₗ[C] N)
    (H : ∀ (P : Ideal C) [P.IsMaximal], ∃ (C' : Type u) (_ : CommRing C') (_ : Algebra C C')
      (_ : Algebra (Localization.AtPrime P) C') (_ : IsScalarTower C (Localization.AtPrime P) C')
      (_ : Module.FaithfullyFlat (Localization.AtPrime P) C'),
      Function.Bijective (θ.baseChange C')) :
    Function.Bijective θ
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.flat_of_forall_exists_faithfullyFlat
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section descent
variable {C : Type u} [CommRing C]
theorem flat_of_forall_exists_faithfullyFlat {M : Type u} [AddCommGroup M] [Module C M]
    (H : ∀ (P : Ideal C) [P.IsMaximal], ∃ (C' : Type u) (_ : CommRing C') (_ : Algebra C C')
      (_ : Algebra (Localization.AtPrime P) C') (_ : IsScalarTower C (Localization.AtPrime P) C')
      (_ : Module.FaithfullyFlat (Localization.AtPrime P) C'),
      Module.Flat C' (C' ⊗[C] M)) :
    Module.Flat C M
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.thetaLin

The invariant-ring linear map underlying the tensor-square comparison.

Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section assembly
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] (t : A →+* B)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
abbrev thetaLin : A ⊗[C] A →ₗ[C] B
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.finite_projective_faithfullyFlat_bijective_of_local
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section assembly
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] (t : A →+* B)
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
theorem finite_projective_faithfullyFlat_bijective_of_local
    [Module.Finite A B] [Module.Projective A B]
    (H : ∀ (P : Ideal C) [P.IsMaximal], ∃ (C' : Type u) (_ : CommRing C') (_ : Algebra C C')
      (_ : Algebra (Localization.AtPrime P) C') (_ : IsScalarTower C (Localization.AtPrime P) C')
      (_ : Module.FaithfullyFlat (Localization.AtPrime P) C'),
      Module.Flat C' (C' ⊗[C] A) ∧ Function.Bijective ((thetaLin t hinv).baseChange C') ∧
      ∃ Q : Ideal A, Q.IsPrime ∧ Q.comap (algebraMap C A) = P) :
    Module.Finite C A ∧ Module.Projective C A ∧ Module.FaithfullyFlat C A ∧
      Function.Bijective (theta t hinv)
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.bijective_baseChange_theta_of_isPushout
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section localPackage
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] {t : A →+* B}
theorem bijective_baseChange_theta_of_isPushout (C' : Type u) [CommRing C'] [Algebra C C']
    (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
    (hpo : IsPushout (CommRingCat.ofHom (algebraMap C' (C' ⊗[C] A)))
      (CommRingCat.ofHom (algebraMap C' (C' ⊗[C] A)))
      (CommRingCat.ofHom (algebraMap (C' ⊗[C] A) (C' ⊗[C] B)))
      (CommRingCat.ofHom (t' t C' (t_comp_algebraMap hinv)))) :
    Function.Bijective ((thetaLin t hinv).baseChange C')
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.local_world
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section localPackage
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] {t : A →+* B}
variable [Module.Finite A B] [Module.Projective A B]
  [Module.Finite A (Tgt t)] [Module.Projective A (Tgt t)]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
include hgen hequiv hinj in
theorem local_world (C' : Type u) [CommRing C'] [Algebra C C'] [Module.Flat C C'] [IsLocalRing C']
    [Infinite (IsLocalRing.ResidueField C')] :
    Module.Flat C' (C' ⊗[C] A) ∧ Function.Bijective ((thetaLin t hinv).baseChange C') ∧
      ∃ Q : Ideal A, Q.IsPrime ∧
        Q.comap (algebraMap C A) = (IsLocalRing.maximalIdeal C').comap (algebraMap C C')
AlgebraicCurves.Foundations.Algebra.Proofs.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation.QuotFLF.local_package
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
namespace QuotFLF
section localPackage
variable {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra A B] [Algebra C A]
  [Algebra C B] [IsScalarTower C A B] {t : A →+* B}
variable [Module.Finite A B] [Module.Projective A B]
  [Module.Finite A (Tgt t)] [Module.Projective A (Tgt t)]
  (hgen : (algebraMap A B).range ⊔ t.range = ⊤)
  (hequiv : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T))
  (hinj : Function.Injective (algebraMap C A))
  (hinv : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A))
include hgen hequiv hinj in
theorem local_package (P : Ideal C) [P.IsMaximal] :
    ∃ (C' : Type u) (_ : CommRing C') (_ : Algebra C C')
      (_ : Algebra (Localization.AtPrime P) C') (_ : IsScalarTower C (Localization.AtPrime P) C')
      (_ : Module.FaithfullyFlat (Localization.AtPrime P) C'),
      Module.Flat C' (C' ⊗[C] A) ∧ Function.Bijective ((thetaLin t hinv).baseChange C') ∧
      ∃ Q : Ideal A, Q.IsPrime ∧ Q.comap (algebraMap C A) = P
RingHom.isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
Source context 6 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory TensorProduct Polynomial
universe u
open QuotFLF in
theorem _root_.RingHom.isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
    {A B C : Type u} [CommRing A] [CommRing B] [CommRing C] [Algebra C A]
    (s t : A →+* B)
    (hs : letI := s.toAlgebra; Module.Finite A B) (hs' : letI := s.toAlgebra; Module.Projective A B)
    (ht : letI := t.toAlgebra; Module.Finite A B) (ht' : letI := t.toAlgebra; Module.Projective A B)
    (hgen : s.range ⊔ t.range = ⊤)
    (hequiv : ∀ (T : Type u) [CommRing T],
      _root_.Equivalence fun x y : A →+* T => ∃ φ : B →+* T, φ.comp s = x ∧ φ.comp t = y)
    (hinj : Function.Injective (algebraMap C A))
    (hinv : ∀ a : A, s a = t a ↔ a ∈ Set.range (algebraMap C A)) :
    Module.Finite C A ∧ Module.Projective C A ∧ Module.FaithfullyFlat C A ∧
      IsPushout (CommRingCat.ofHom (algebraMap C A)) (CommRingCat.ofHom (algebraMap C A))
        (CommRingCat.ofHom s) (CommRingCat.ofHom t) := by
  let _ : Algebra A B := s.toAlgebra
  let _ : Algebra C B := (s.comp (algebraMap C A)).toAlgebra
  let _ : IsScalarTower C A B := IsScalarTower.of_algebraMap_eq (fun _ => rfl)
  let _ : Module.Finite A B := hs
  let _ : Module.Projective A B := hs'
  let _ : Module.Finite A (Tgt t) := ht
  let _ : Module.Projective A (Tgt t) := ht'
  have hinv₁ : ∀ a : A, algebraMap A B a = t a ↔ a ∈ Set.range (algebraMap C A) := hinv
  have hgen₁ : (algebraMap A B).range ⊔ t.range = ⊤ := hgen
  have hequiv₁ : ∀ (T : Type u) [CommRing T], _root_.Equivalence (Rel (algebraMap A B) t T) :=
    hequiv
  obtain ⟨hfin, hproj, hff, hbij⟩ :=
    finite_projective_faithfullyFlat_bijective_of_local t hinv₁
      (fun P _ => local_package (t := t) hgen₁ hequiv₁ hinj hinv₁ P)
  exact ⟨hfin, hproj, hff, isPushout_of_bijective_theta t hinv₁ hbij⟩