Theorem: linearIndependent_smul
File: Mathlib/RingTheory/AlgebraTower.lean

Proof steps:
state_before: R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : LinearIndependent R b
hc : LinearIndependent S c
⊢ LinearIndependent R fun p => b p.1 • c p.2
state_after: R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • b i = 0 → ∀ i ∈ s, g i = 0
hc : ∀ (s : Finset ι') (g : ι' → S), ∑ i ∈ s, g i • c i = 0 → ∀ i ∈ s, g i = 0
⊢ LinearIndependent R fun p => b p.1 • c p.2
tactic: rw [linearIndependent_iff'] at hb hc
state_before: R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • b i = 0 → ∀ i ∈ s, g i = 0
hc : ∀ (s : Finset ι') (g : ι' → S), ∑ i ∈ s, g i • c i = 0 → ∀ i ∈ s, g i = 0
⊢ LinearIndependent R fun p => b p.1 • c p.2
state_after: R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • b i = 0 → ∀ i ∈ s, g i = 0
hc : ∀ (s : Finset ι') (g : ι' → S), ∑ i ∈ s, g i • c i = 0 → ∀ i ∈ s, g i = 0
⊢ ∀ (s : Finset (ι × ι')) (g : ι × ι' → R),
    (∀ i ∉ s, g i = 0) → ∑ i ∈ s, g i • b i.1 • c i.2 = 0 → ∀ (i : ι × ι'), g i = 0
tactic: rw [linearIndependent_iff'']
state_before: R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • b i = 0 → ∀ i ∈ s, g i = 0
hc : ∀ (s : Finset ι') (g : ι' → S), ∑ i ∈ s, g i • c i = 0 → ∀ i ∈ s, g i = 0
⊢ ∀ (s : Finset (ι × ι')) (g : ι × ι' → R),
    (∀ i ∉ s, g i = 0) → ∑ i ∈ s, g i • b i.1 • c i.2 = 0 → ∀ (i : ι × ι'), g i = 0
state_after: case mk
R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • b i = 0 → ∀ i ∈ s, g i = 0
hc : ∀ (s : Finset ι') (g : ι' → S), ∑ i ∈ s, g i • c i = 0 → ∀ i ∈ s, g i = 0
s : Finset (ι × ι')
g : ι × ι' → R
hg : ∀ i ∉ s, g i = 0
hsg : ∑ i ∈ s, g i • b i.1 • c i.2 = 0
i : ι
k : ι'
⊢ g (i, k) = 0
tactic: rintro s g hg hsg ⟨i, k⟩
state_before: case mk
R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • b i = 0 → ∀ i ∈ s, g i = 0
hc : ∀ (s : Finset ι') (g : ι' → S), ∑ i ∈ s, g i • c i = 0 → ∀ i ∈ s, g i = 0
s : Finset (ι × ι')
g : ι × ι' → R
hg : ∀ i ∉ s, g i = 0
hsg : ∑ i ∈ s, g i • b i.1 • c i.2 = 0
i : ι
k : ι'
⊢ g (i, k) = 0
state_after: case pos
R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • b i = 0 → ∀ i ∈ s, g i = 0
hc : ∀ (s : Finset ι') (g : ι' → S), ∑ i ∈ s, g i • c i = 0 → ∀ i ∈ s, g i = 0
s : Finset (ι × ι')
g : ι × ι' → R
hg : ∀ i ∉ s, g i = 0
hsg : ∑ i ∈ s, g i • b i.1 • c i.2 = 0
i : ι
k : ι'
hik : (i, k) ∈ s
⊢ g (i, k) = 0

case neg
R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • b i = 0 → ∀ i ∈ s, g i = 0
hc : ∀ (s : Finset ι') (g : ι' → S), ∑ i ∈ s, g i • c i = 0 → ∀ i ∈ s, g i = 0
s : Finset (ι × ι')
g : ι × ι' → R
hg : ∀ i ∉ s, g i = 0
hsg : ∑ i ∈ s, g i • b i.1 • c i.2 = 0
i : ι
k : ι'
hik : (i, k) ∉ s
⊢ g (i, k) = 0
tactic: by_cases hik : (i, k) ∈ s
state_before: case neg
R : Type u
S : Type v
A : Type w
B : Type u₁
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S
inst✝⁴ : AddCommMonoid A
inst✝³ : Module R S
inst✝² : Module S A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
ι : Type v₁
b : ι → S
ι' : Type w₁
c : ι' → A
hb : ∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • b i = 0 → ∀ i ∈ s, g i = 0
hc : ∀ (s : Finset ι') (g : ι' → S), ∑ i ∈ s, g i • c i = 0 → ∀ i ∈ s, g i = 0
s : Finset (ι × ι')
g : ι × ι' → R
hg : ∀ i ∉ s, g i = 0
hsg : ∑ i ∈ s, g i • b i.1 • c i.2 = 0
i : ι
k : ι'
hik : (i, k) ∉ s
⊢ g (i, k) = 0
state_after: no goals
tactic: exact hg _ hik