Theorem: LinearIndependent.linear_combination_pair_of_det_ne_zero
File: Mathlib/LinearAlgebra/LinearIndependent.lean

Proof steps:
state_before: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
⊢ LinearIndependent R ![a • x + b • y, c • x + d • y]
state_after: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
⊢ s = 0 ∧ t = 0
tactic: apply LinearIndependent.pair_iff.2 (fun s t hst ↦ ?_)
state_before: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
⊢ s = 0 ∧ t = 0
state_after: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
⊢ s = 0 ∧ t = 0
tactic: have H : (s * a + t * c) • x + (s * b + t * d) • y = 0 := by
    convert hst using 1
    simp only [_root_.add_smul, smul_add, smul_smul]
    abel
state_before: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
⊢ s = 0 ∧ t = 0
state_after: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
I1 : s * a + t * c = 0
⊢ s = 0 ∧ t = 0
tactic: have I1 : s * a + t * c = 0 := (h.eq_zero_of_pair H).1
state_before: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
I1 : s * a + t * c = 0
⊢ s = 0 ∧ t = 0
state_after: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
I1 : s * a + t * c = 0
I2 : s * b + t * d = 0
⊢ s = 0 ∧ t = 0
tactic: have I2 : s * b + t * d = 0 := (h.eq_zero_of_pair H).2
state_before: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
I1 : s * a + t * c = 0
I2 : s * b + t * d = 0
⊢ s = 0 ∧ t = 0
state_after: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
I1 : s * a + t * c = 0
I2 : s * b + t * d = 0
J1 : (a * d - b * c) * s = 0
⊢ s = 0 ∧ t = 0
tactic: have J1 : (a * d - b * c) * s = 0 := by linear_combination d * I1 - c * I2
state_before: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
I1 : s * a + t * c = 0
I2 : s * b + t * d = 0
J1 : (a * d - b * c) * s = 0
⊢ s = 0 ∧ t = 0
state_after: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
I1 : s * a + t * c = 0
I2 : s * b + t * d = 0
J1 : (a * d - b * c) * s = 0
J2 : (a * d - b * c) * t = 0
⊢ s = 0 ∧ t = 0
tactic: have J2 : (a * d - b * c) * t = 0 := by linear_combination -b * I1 + a * I2
state_before: ι : Type u'
ι' : Type u_1
R✝ : Type u_2
K : Type u_3
M✝ : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M✝
inst✝¹⁰ : Ring R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : AddCommGroup M'
inst✝⁷ : AddCommGroup M''
inst✝⁶ : Module R✝ M✝
inst✝⁵ : Module R✝ M'
inst✝⁴ : Module R✝ M''
a✝ b✝ : R✝
x✝ y✝ : M✝
R : Type u_8
M : Type u_9
inst✝³ : CommRing R
inst✝² : NoZeroDivisors R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y : M
h : LinearIndependent R ![x, y]
a b c d : R
h' : a * d - b * c ≠ 0
s t : R
hst : s • (a • x + b • y) + t • (c • x + d • y) = 0
H : (s * a + t * c) • x + (s * b + t * d) • y = 0
I1 : s * a + t * c = 0
I2 : s * b + t * d = 0
J1 : (a * d - b * c) * s = 0
J2 : (a * d - b * c) * t = 0
⊢ s = 0 ∧ t = 0
state_after: no goals
tactic: exact ⟨by simpa [h'] using mul_eq_zero.1 J1, by simpa [h'] using mul_eq_zero.1 J2⟩