Theorem: TensorProduct.forall_vanishesTrivially_iff_forall_rTensor_injective
File: Mathlib/LinearAlgebra/TensorProduct/Vanishing.lean

tactic: constructor
state_before: R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
⊢ (∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N}, ∑ i : ι, m i ⊗ₜ[R] n i = 0 → VanishesTrivially R m n) ↔
    ∀ (M' : Submodule R M), Injective ⇑(rTensor N M'.subtype)
state_after: case mp
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
⊢ (∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N}, ∑ i : ι, m i ⊗ₜ[R] n i = 0 → VanishesTrivially R m n) →
    ∀ (M' : Submodule R M), Injective ⇑(rTensor N M'.subtype)

case mpr
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
⊢ (∀ (M' : Submodule R M), Injective ⇑(rTensor N M'.subtype)) →
    ∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N}, ∑ i : ι, m i ⊗ₜ[R] n i = 0 → VanishesTrivially R m n

tactic: intro h
state_before: case mp
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
⊢ (∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N}, ∑ i : ι, m i ⊗ₜ[R] n i = 0 → VanishesTrivially R m n) →
    ∀ (M' : Submodule R M), Injective ⇑(rTensor N M'.subtype)
state_after: case mp
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
h : ∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N}, ∑ i : ι, m i ⊗ₜ[R] n i = 0 → VanishesTrivially R m n
⊢ ∀ (M' : Submodule R M), Injective ⇑(rTensor N M'.subtype)

tactic: exact rTensor_injective_of_forall_vanishesTrivially R h
state_before: case mp
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
h : ∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N}, ∑ i : ι, m i ⊗ₜ[R] n i = 0 → VanishesTrivially R m n
⊢ ∀ (M' : Submodule R M), Injective ⇑(rTensor N M'.subtype)
state_after: no goals

tactic: intro h ι _ m n hmn
state_before: case mpr
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
⊢ (∀ (M' : Submodule R M), Injective ⇑(rTensor N M'.subtype)) →
    ∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N}, ∑ i : ι, m i ⊗ₜ[R] n i = 0 → VanishesTrivially R m n
state_after: case mpr
R : Type u
inst✝⁶ : CommRing R
M : Type u
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
N : Type u
inst✝³ : AddCommGroup N
inst✝² : Module R N
ι✝ : Type u
inst✝¹ : Fintype ι✝
m✝ : ι✝ → M
n✝ : ι✝ → N
h : ∀ (M' : Submodule R M), Injective ⇑(rTensor N M'.subtype)
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
hmn : ∑ i : ι, m i ⊗ₜ[R] n i = 0
⊢ VanishesTrivially R m n

tactic: exact vanishesTrivially_of_sum_tmul_eq_zero_of_rTensor_injective R (h _) hmn
state_before: case mpr
R : Type u
inst✝⁶ : CommRing R
M : Type u
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
N : Type u
inst✝³ : AddCommGroup N
inst✝² : Module R N
ι✝ : Type u
inst✝¹ : Fintype ι✝
m✝ : ι✝ → M
n✝ : ι✝ → N
h : ∀ (M' : Submodule R M), Injective ⇑(rTensor N M'.subtype)
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
hmn : ∑ i : ι, m i ⊗ₜ[R] n i = 0
⊢ VanishesTrivially R m n
state_after: no goals