English
For an ideal I of A, the ideal in A ⊗ B generated by I is precisely the image of I ⊗ B under the left include map.
Русский
Для идеала I в A идеал в A ⊗ B, порожденный I, равен образу I ⊗ B под линейным отображением includeLeft слева.
LaTeX
$$$(I.map\\big(\\mathrm{Algebra.TensorProduct.includeLeft}\\colon A \\to_A[R] A \\otimes_R B\\big)).restrictScalars\\; R = \\mathrm{range}(\\mathrm{rTensor}\\ B\\, (\\mathrm{subtype}\\ (I\\restriction_R)))$$$
Lean4
/-- The ideal of `A ⊗[R] B` generated by `I` is the image of `I ⊗[R] B` -/
theorem map_includeLeft_eq (I : Ideal A) :
(I.map (Algebra.TensorProduct.includeLeft : A →ₐ[R] A ⊗[R] B)).restrictScalars R =
LinearMap.range (LinearMap.rTensor B (Submodule.subtype (I.restrictScalars R))) :=
by
rw [← SetLike.coe_set_eq]
apply le_antisymm
· intro x hx
simp only [SetLike.mem_coe, LinearMap.mem_range]
rw [Ideal.map, ← submodule_span_eq] at hx
refine Submodule.span_induction ?_ ?_ ?_ ?_ hx
· intro x
simp only [includeLeft_apply, Set.mem_image, SetLike.mem_coe]
rintro ⟨y, hy, rfl⟩
use ⟨y, hy⟩ ⊗ₜ[R] 1
rfl
· use 0
simp only [map_zero]
· rintro x y - - ⟨x, hx, rfl⟩ ⟨y, hy, rfl⟩
use x + y
simp only [map_add]
· rintro a x - ⟨x, hx, rfl⟩
induction a with
| zero =>
use 0
simp only [map_zero, smul_eq_mul, zero_mul]
| tmul a b =>
induction x with
| zero =>
use 0
simp only [map_zero, smul_eq_mul, mul_zero]
| tmul x y =>
use (a • x) ⊗ₜ[R] (b * y)
simp only [smul_eq_mul]
with_unfolding_all rfl
| add x y hx hy =>
obtain ⟨x', hx'⟩ := hx
obtain ⟨y', hy'⟩ := hy
use x' + y'
simp only [map_add, hx', smul_add, hy']
| add a b ha hb =>
obtain ⟨x', ha'⟩ := ha
obtain ⟨y', hb'⟩ := hb
use x' + y'
simp only [map_add, ha', add_smul, hb']
· rintro x ⟨y, rfl⟩
induction y with
| zero =>
rw [map_zero]
apply zero_mem
| tmul a b =>
simp only [LinearMap.rTensor_tmul, Submodule.coe_subtype]
suffices (a : A) ⊗ₜ[R] b = ((1 : A) ⊗ₜ[R] b) * ((a : A) ⊗ₜ[R] (1 : B))
by
simp only [Submodule.coe_restrictScalars, SetLike.mem_coe]
rw [this]
apply Ideal.mul_mem_left
apply Ideal.mem_map_of_mem includeLeft
exact Submodule.coe_mem a
simp only [Algebra.TensorProduct.tmul_mul_tmul, mul_one, one_mul]
| add x y hx hy =>
rw [map_add]
apply Submodule.add_mem _ hx hy