Module

PrimeAwayAlgebraGluing.lean

Nyll.SchemeTheory.RingTheory.Descent.PrimeAwayAlgebraGluing
2 declarations indexed from sourceView source ↗

Extending algebra maps across a pair of principal opens

Flat Hartogs extension preserves the multiplicative structure: the algebra identities can be checked after the two principal localizations. These are the maps used to extend the actual completion-overlap isomorphism.

Imports3
Imported by1

Declarations

SchemeTheory.existsUnique_algHom_tensor_primeAwayPair

Compatible local algebra maps to a flat algebra extend uniquely.

Source context 10 commands

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

noncomputable section
namespace SchemeTheory
open scoped TensorProduct nonZeroDivisors
universe u v w w'
variable {R : Type u} [CommRing R] [IsDomain R]
variable (F : Type v) [Field F] [Algebra R F] [IsFractionRing R F]
variable {x y : R} (hx : Prime x) (hy : y ≠ 0) (hxy : ¬ x ∣ y)
local notation "Aₓ" => Localization.subalgebra.ofField F (Submonoid.powers x)
  (Submonoid.powers_le.mpr (mem_nonZeroDivisors_iff_ne_zero.mpr hx.ne_zero))
local notation "Aᵧ" => Localization.subalgebra.ofField F (Submonoid.powers y)
  (Submonoid.powers_le.mpr (mem_nonZeroDivisors_iff_ne_zero.mpr hy))
include hxy in
theorem existsUnique_algHom_tensor_primeAwayPair
    (S : Type*) [CommRing S]
    (P : Type w') [CommRing P] [Algebra S P]
    (M : Type w) [CommRing M] [Algebra R M] [Module.Flat R M]
    [Algebra S M] [SMulCommClass R S M]
    (fa : P →ₐ[S] M ⊗[R] Aₓ) (fb : P →ₐ[S] M ⊗[R] Aᵧ)
    (hab : ∀ p : P, ((Aₓ).val.toLinearMap.lTensor M) (fa p) =
      ((Aᵧ).val.toLinearMap.lTensor M) (fb p)) :
    ∃! f : P →ₐ[S] M, ∀ p : P,
      f p ⊗ₜ[R] 1 = fa p ∧ f p ⊗ₜ[R] 1 = fb p
SchemeTheory.exists_algEquiv_tensor_primeAwayPair

A compatible pair of local algebra isomorphisms extends to an actual algebra isomorphism. Both directions are constructed by flat Hartogs extension.

Source context 10 commands

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

noncomputable section
namespace SchemeTheory
open scoped TensorProduct nonZeroDivisors
universe u v w w'
variable {R : Type u} [CommRing R] [IsDomain R]
variable (F : Type v) [Field F] [Algebra R F] [IsFractionRing R F]
variable {x y : R} (hx : Prime x) (hy : y ≠ 0) (hxy : ¬ x ∣ y)
local notation "Aₓ" => Localization.subalgebra.ofField F (Submonoid.powers x)
  (Submonoid.powers_le.mpr (mem_nonZeroDivisors_iff_ne_zero.mpr hx.ne_zero))
local notation "Aᵧ" => Localization.subalgebra.ofField F (Submonoid.powers y)
  (Submonoid.powers_le.mpr (mem_nonZeroDivisors_iff_ne_zero.mpr hy))
include hxy in
theorem exists_algEquiv_tensor_primeAwayPair
    (S : Type*) [CommRing S]
    (P : Type w') [CommRing P] [Algebra R P] [Algebra S P]
    [SMulCommClass R S P] [Module.Flat R P]
    (M : Type w) [CommRing M] [Algebra R M] [Algebra S M]
    [SMulCommClass R S M] [Module.Flat R M]
    (ea : P ⊗[R] Aₓ ≃ₐ[S] M ⊗[R] Aₓ)
    (eb : P ⊗[R] Aᵧ ≃ₐ[S] M ⊗[R] Aᵧ)
    (hab : ∀ p : P,
      ((Aₓ).val.toLinearMap.lTensor M) (ea (p ⊗ₜ[R] 1)) =
        ((Aᵧ).val.toLinearMap.lTensor M) (eb (p ⊗ₜ[R] 1)))
    (hba : ∀ m : M,
      ((Aₓ).val.toLinearMap.lTensor P) (ea.symm (m ⊗ₜ[R] 1)) =
        ((Aᵧ).val.toLinearMap.lTensor P) (eb.symm (m ⊗ₜ[R] 1))) :
    ∃ e : P ≃ₐ[S] M,
      (∀ p : P, e p ⊗ₜ[R] 1 = ea (p ⊗ₜ[R] 1) ∧
        e p ⊗ₜ[R] 1 = eb (p ⊗ₜ[R] 1)) ∧
      (∀ m : M, e.symm m ⊗ₜ[R] 1 = ea.symm (m ⊗ₜ[R] 1) ∧
        e.symm m ⊗ₜ[R] 1 = eb.symm (m ⊗ₜ[R] 1))