Theorem: Submodule.baseChange_top
File: Mathlib/LinearAlgebra/TensorProduct/Tower.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
⊢ baseChange A ⊤ = ⊤
state_after: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
⊢ ∀ (x : A ⊗[R] M), x ∈ span A ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
tactic: rw [baseChange, map_top, eq_top_iff']
state_before: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
⊢ ∀ (x : A ⊗[R] M), x ∈ span A ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
state_after: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
x : A ⊗[R] M
⊢ x ∈ span A ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
tactic: intro x
state_before: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
x : A ⊗[R] M
⊢ x ∈ span A ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
state_after: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
x : A ⊗[R] M
a : A
y : M
⊢ a ⊗ₜ[R] y ∈ span A ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
tactic: refine x.induction_on (by simp) (fun a y ↦ ?_) (fun _ _ ↦ Submodule.add_mem _)
state_before: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
x : A ⊗[R] M
a : A
y : M
⊢ a ⊗ₜ[R] y ∈ span A ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
state_after: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
x : A ⊗[R] M
a : A
y : M
⊢ a • 1 ⊗ₜ[R] y ∈ span A ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
tactic: rw [← mul_one a, ← smul_eq_mul, ← smul_tmul']
state_before: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
x : A ⊗[R] M
a : A
y : M
⊢ a • 1 ⊗ₜ[R] y ∈ span A ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
state_after: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
x : A ⊗[R] M
a : A
y : M
⊢ 1 ⊗ₜ[R] y ∈ ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
tactic: refine smul_mem _ _ (subset_span ?_)
state_before: R : Type u_1
M : Type u_2
A : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
p : Submodule R M
x : A ⊗[R] M
a : A
y : M
⊢ 1 ⊗ₜ[R] y ∈ ↑(LinearMap.range ((TensorProduct.mk R A M) 1))
state_after: no goals
tactic: simp