Interaction between quotients and tensor products for algebras #
This file proves algebra analogs of the isomorphisms in
Mathlib/LinearAlgebra/TensorProduct/Quotient.lean.
Main results #
Algebra.TensorProduct.quotIdealMapEquivTensorQuot:B ⧸ (I.map <| algebraMap A B) ≃ₐ[B] B ⊗[A] (A ⧸ I)
noncomputable def
Algebra.TensorProduct.quotIdealMapEquivTensorQuotAux
{A : Type u_1}
(B : Type u_2)
[CommRing A]
[CommRing B]
[Algebra A B]
(I : Ideal A)
:
(Implementation): Use Algebra.TensorProduct.quotIdealMapEquivTensorQuot instead.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Algebra.TensorProduct.quotIdealMapEquivTensorQuot_mk
{A : Type u_1}
(B : Type u_2)
[CommRing A]
[CommRing B]
[Algebra A B]
(I : Ideal A)
(b : B)
:
(quotIdealMapEquivTensorQuot B I) ((Ideal.Quotient.mk (Ideal.map (algebraMap A B) I)) b) = b ⊗ₜ[A] 1
@[simp]
theorem
Algebra.TensorProduct.quotIdealMapEquivTensorQuot_symm_tmul
{A : Type u_1}
(B : Type u_2)
[CommRing A]
[CommRing B]
[Algebra A B]
(I : Ideal A)
(b : B)
(a : A)
:
(quotIdealMapEquivTensorQuot B I).symm (b ⊗ₜ[A] (Ideal.Quotient.mk I) a) = Submodule.Quotient.mk (a • b)
@[simp]
theorem
Algebra.TensorProduct.quotIdealMapEquivQuotTensor_mk
{A : Type u_1}
(B : Type u_2)
[CommRing A]
[CommRing B]
[Algebra A B]
(I : Ideal A)
(b : B)
:
(quotIdealMapEquivQuotTensor B I) ((Ideal.Quotient.mk (Ideal.map (algebraMap A B) I)) b) = 1 ⊗ₜ[A] b
noncomputable def
Algebra.TensorProduct.tensorQuotientEquiv
{R : Type u_1}
(S : Type u_2)
(T : Type u_3)
(A : Type u_4)
[CommRing R]
[CommRing S]
[Algebra R S]
[CommRing T]
[Algebra R T]
[CommRing A]
[Algebra R A]
[Algebra S A]
[IsScalarTower R S A]
(I : Ideal T)
:
The tensor product of an S-algebra A over R with the quotient of T by an ideal I
is isomorphic (as an S-algebra) to the quotient of A ⊗[R] T by the extended ideal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Algebra.TensorProduct.tensorQuotientEquiv_apply_tmul
{R : Type u_1}
(S : Type u_2)
(T : Type u_3)
(A : Type u_4)
[CommRing R]
[CommRing S]
[Algebra R S]
[CommRing T]
[Algebra R T]
[CommRing A]
[Algebra R A]
[Algebra S A]
[IsScalarTower R S A]
(I : Ideal T)
(a : A)
(t : T)
:
(tensorQuotientEquiv S T A I) (a ⊗ₜ[R] (Ideal.Quotient.mk I) t) = (Ideal.Quotient.mk (Ideal.map includeRight I)) (a ⊗ₜ[R] t)
@[simp]
theorem
Algebra.TensorProduct.tensorQuotientEquiv_symm_apply_tmul
{R : Type u_1}
(S : Type u_2)
(T : Type u_3)
(A : Type u_4)
[CommRing R]
[CommRing S]
[Algebra R S]
[CommRing T]
[Algebra R T]
[CommRing A]
[Algebra R A]
[Algebra S A]
[IsScalarTower R S A]
(I : Ideal T)
(a : A)
(t : T)
:
(tensorQuotientEquiv S T A I).symm ((Ideal.Quotient.mk (Ideal.map includeRight I)) (a ⊗ₜ[R] t)) = a ⊗ₜ[R] (Ideal.Quotient.mk I) t
noncomputable def
Algebra.TensorProduct.quotientTensorEquiv
{R : Type u_1}
(S : Type u_2)
(T : Type u_3)
(A : Type u_4)
[CommRing R]
[CommRing S]
[Algebra R S]
[CommRing T]
[Algebra R T]
[CommRing A]
[Algebra R A]
[Algebra S A]
[IsScalarTower R S A]
(I : Ideal A)
:
TensorProduct R (A ⧸ I) T ≃ₐ[S] TensorProduct R A T ⧸ Ideal.map (algebraMap A (TensorProduct R A T)) I
The tensor product over R of the quotient of an S-algebra A by an ideal I with T
is isomorphic (as an S-algebra) to the quotient of A ⊗[R] T by the extended ideal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Algebra.TensorProduct.quotientTensorEquiv_apply_tmul
{R : Type u_1}
(S : Type u_2)
(T : Type u_3)
(A : Type u_4)
[CommRing R]
[CommRing S]
[Algebra R S]
[CommRing T]
[Algebra R T]
[CommRing A]
[Algebra R A]
[Algebra S A]
[IsScalarTower R S A]
(I : Ideal A)
(a : A)
(t : T)
:
(quotientTensorEquiv S T A I) ((Ideal.Quotient.mk I) a ⊗ₜ[R] t) = (Ideal.Quotient.mk (Ideal.map (algebraMap A (TensorProduct R A T)) I)) (a ⊗ₜ[R] t)
@[simp]
theorem
Algebra.TensorProduct.quotientTensorEquiv_symm_apply_tmul
{R : Type u_1}
(S : Type u_2)
(T : Type u_3)
(A : Type u_4)
[CommRing R]
[CommRing S]
[Algebra R S]
[CommRing T]
[Algebra R T]
[CommRing A]
[Algebra R A]
[Algebra S A]
[IsScalarTower R S A]
(I : Ideal A)
(a : A)
(t : T)
:
(quotientTensorEquiv S T A I).symm
((Ideal.Quotient.mk (Ideal.map (algebraMap A (TensorProduct R A T)) I)) (a ⊗ₜ[R] t)) = (Ideal.Quotient.mk I) a ⊗ₜ[R] t
theorem
Ideal.subtype_rTensor_range
{R : Type u_1}
[CommRing R]
(M : Type u_2)
[AddCommGroup M]
[Module R M]
(I : Ideal R)
:
noncomputable def
Algebra.tensorQuotientTensorEquiv
{R : Type u_1}
{R' : Type u_2}
(R'' : Type u_3)
{S : Type u_4}
[CommRing R]
[CommRing R']
[CommRing R'']
[CommRing S]
[Algebra R R']
[Algebra R R'']
[Algebra R' R'']
[IsScalarTower R R' R'']
[Algebra R S]
(e : TensorProduct R R' S)
:
TensorProduct R' R'' (TensorProduct R R' S ⧸ Ideal.span {e}) ≃ₐ[R''] TensorProduct R R'' S ⧸ Ideal.span {(TensorProduct.rTensor S (ofId R' R'')) e}
Let e be an element of R' ⊗[R] S. Then R'' ⊗[R'] ((R' ⊗[R] S) / e) is isomorphic to
(R'' ⊗[R] S) / e as R''-algebras.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Algebra.tensorQuotientTensorEquiv_tmul
{R : Type u_1}
{R' : Type u_2}
{R'' : Type u_3}
{S : Type u_4}
[CommRing R]
[CommRing R']
[CommRing R'']
[CommRing S]
[Algebra R R']
[Algebra R R'']
[Algebra R' R'']
[IsScalarTower R R' R'']
[Algebra R S]
(e : TensorProduct R R' S)
(a : R'')
(b : R')
(c : S)
:
(tensorQuotientTensorEquiv R'' e) (a ⊗ₜ[R'] (Ideal.Quotient.mk (Ideal.span {e})) (b ⊗ₜ[R] c)) = (Ideal.Quotient.mk (Ideal.span {(TensorProduct.rTensor S (ofId R' R'')) e})) ((a * (algebraMap R' R'') b) ⊗ₜ[R] c)
@[simp]
theorem
Algebra.tensorQuotientTensorEquiv_symm_tmul
{R : Type u_1}
{R' : Type u_2}
{R'' : Type u_3}
{S : Type u_4}
[CommRing R]
[CommRing R']
[CommRing R'']
[CommRing S]
[Algebra R R']
[Algebra R R'']
[Algebra R' R'']
[IsScalarTower R R' R'']
[Algebra R S]
(e : TensorProduct R R' S)
(a : R'')
(b : S)
:
(tensorQuotientTensorEquiv R'' e).symm
((Ideal.Quotient.mk (Ideal.span {(TensorProduct.rTensor S (ofId R' R'')) e})) (a ⊗ₜ[R] b)) = a ⊗ₜ[R'] (Ideal.Quotient.mk (Ideal.span {e})) (1 ⊗ₜ[R] b)