Theorem: Ideal.rank_eq
File: Mathlib/LinearAlgebra/Dimension.lean

tactic: obtain ⟨a, ha⟩ := Submodule.nonzero_mem_of_bot_lt (bot_lt_iff_ne_bot.mpr hI)
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.427665
R✝ : Type u
inst✝¹⁰ : Ring R✝
inst✝⁹ : StrongRankCondition R✝
M : Type v
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R✝ M
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : StrongRankCondition R
inst✝⁴ : Ring S
inst✝³ : IsDomain S
inst✝² : Algebra R S
n : Type u_3
m : Type u_4
inst✝¹ : Fintype n
inst✝ : Fintype m
b : Basis n R S
I : Ideal S
hI : I ≠ ⊥
c : Basis m R { x // x ∈ I }
⊢ Fintype.card m = Fintype.card n

tactic: have : LinearIndependent R fun i => b i • a := by
  have hb := b.linearIndependent
  rw [Fintype.linearIndependent_iff] at hb⊢
  intro g hg
  apply hb g
  simp only [← smul_assoc, ← Finset.sum_smul, smul_eq_zero] at hg
  exact hg.resolve_right ha
state_before: case intro
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.427665
R✝ : Type u
inst✝¹⁰ : Ring R✝
inst✝⁹ : StrongRankCondition R✝
M : Type v
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R✝ M
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : StrongRankCondition R
inst✝⁴ : Ring S
inst✝³ : IsDomain S
inst✝² : Algebra R S
n : Type u_3
m : Type u_4
inst✝¹ : Fintype n
inst✝ : Fintype m
b : Basis n R S
I : Ideal S
hI : I ≠ ⊥
c : Basis m R { x // x ∈ I }
a : { x // x ∈ I }
ha : a ≠ 0
⊢ Fintype.card m = Fintype.card n

tactic: exact le_antisymm
  (b.card_le_card_of_linearIndependent (c.linearIndependent.map' (Submodule.subtype I)
    ((LinearMap.ker_eq_bot (f := (Submodule.subtype I : I →ₗ[R] S))).mpr Subtype.coe_injective)))
  (c.card_le_card_of_linearIndependent this)
state_before: case intro
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.427665
R✝ : Type u
inst✝¹⁰ : Ring R✝
inst✝⁹ : StrongRankCondition R✝
M : Type v
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R✝ M
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : StrongRankCondition R
inst✝⁴ : Ring S
inst✝³ : IsDomain S
inst✝² : Algebra R S
n : Type u_3
m : Type u_4
inst✝¹ : Fintype n
inst✝ : Fintype m
b : Basis n R S
I : Ideal S
hI : I ≠ ⊥
c : Basis m R { x // x ∈ I }
a : { x // x ∈ I }
ha : a ≠ 0
this : LinearIndependent R fun i => ↑b i • a
⊢ Fintype.card m = Fintype.card n

tactic: have hb := b.linearIndependent
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.427665
R✝ : Type u
inst✝¹⁰ : Ring R✝
inst✝⁹ : StrongRankCondition R✝
M : Type v
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R✝ M
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : StrongRankCondition R
inst✝⁴ : Ring S
inst✝³ : IsDomain S
inst✝² : Algebra R S
n : Type u_3
m : Type u_4
inst✝¹ : Fintype n
inst✝ : Fintype m
b : Basis n R S
I : Ideal S
hI : I ≠ ⊥
c : Basis m R { x // x ∈ I }
a : { x // x ∈ I }
ha : a ≠ 0
⊢ LinearIndependent R fun i => ↑b i • a

tactic: rw [Fintype.linearIndependent_iff] at hb⊢
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.427665
R✝ : Type u
inst✝¹⁰ : Ring R✝
inst✝⁹ : StrongRankCondition R✝
M : Type v
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R✝ M
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : StrongRankCondition R
inst✝⁴ : Ring S
inst✝³ : IsDomain S
inst✝² : Algebra R S
n : Type u_3
m : Type u_4
inst✝¹ : Fintype n
inst✝ : Fintype m
b : Basis n R S
I : Ideal S
hI : I ≠ ⊥
c : Basis m R { x // x ∈ I }
a : { x // x ∈ I }
ha : a ≠ 0
hb : LinearIndependent R ↑b
⊢ LinearIndependent R fun i => ↑b i • a

tactic: intro g hg
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.427665
R✝ : Type u
inst✝¹⁰ : Ring R✝
inst✝⁹ : StrongRankCondition R✝
M : Type v
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R✝ M
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : StrongRankCondition R
inst✝⁴ : Ring S
inst✝³ : IsDomain S
inst✝² : Algebra R S
n : Type u_3
m : Type u_4
inst✝¹ : Fintype n
inst✝ : Fintype m
b : Basis n R S
I : Ideal S
hI : I ≠ ⊥
c : Basis m R { x // x ∈ I }
a : { x // x ∈ I }
ha : a ≠ 0
hb✝ : LinearIndependent R ↑b
hb : ∀ (g : n → R), ∑ i : n, g i • ↑b i = 0 → ∀ (i : n), g i = 0
⊢ ∀ (g : n → R), ∑ i : n, g i • ↑b i • a = 0 → ∀ (i : n), g i = 0

tactic: apply hb g
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.427665
R✝ : Type u
inst✝¹⁰ : Ring R✝
inst✝⁹ : StrongRankCondition R✝
M : Type v
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R✝ M
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : StrongRankCondition R
inst✝⁴ : Ring S
inst✝³ : IsDomain S
inst✝² : Algebra R S
n : Type u_3
m : Type u_4
inst✝¹ : Fintype n
inst✝ : Fintype m
b : Basis n R S
I : Ideal S
hI : I ≠ ⊥
c : Basis m R { x // x ∈ I }
a : { x // x ∈ I }
ha : a ≠ 0
hb✝ : LinearIndependent R ↑b
hb : ∀ (g : n → R), ∑ i : n, g i • ↑b i = 0 → ∀ (i : n), g i = 0
g : n → R
hg : ∑ i : n, g i • ↑b i • a = 0
⊢ ∀ (i : n), g i = 0

tactic: simp only [← smul_assoc, ← Finset.sum_smul, smul_eq_zero] at hg
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.427665
R✝ : Type u
inst✝¹⁰ : Ring R✝
inst✝⁹ : StrongRankCondition R✝
M : Type v
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R✝ M
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : StrongRankCondition R
inst✝⁴ : Ring S
inst✝³ : IsDomain S
inst✝² : Algebra R S
n : Type u_3
m : Type u_4
inst✝¹ : Fintype n
inst✝ : Fintype m
b : Basis n R S
I : Ideal S
hI : I ≠ ⊥
c : Basis m R { x // x ∈ I }
a : { x // x ∈ I }
ha : a ≠ 0
hb✝ : LinearIndependent R ↑b
hb : ∀ (g : n → R), ∑ i : n, g i • ↑b i = 0 → ∀ (i : n), g i = 0
g : n → R
hg : ∑ i : n, g i • ↑b i • a = 0
⊢ ∑ i : n, g i • ↑b i = 0

tactic: exact hg.resolve_right ha
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.427665
R✝ : Type u
inst✝¹⁰ : Ring R✝
inst✝⁹ : StrongRankCondition R✝
M : Type v
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R✝ M
R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : StrongRankCondition R
inst✝⁴ : Ring S
inst✝³ : IsDomain S
inst✝² : Algebra R S
n : Type u_3
m : Type u_4
inst✝¹ : Fintype n
inst✝ : Fintype m
b : Basis n R S
I : Ideal S
hI : I ≠ ⊥
c : Basis m R { x // x ∈ I }
a : { x // x ∈ I }
ha : a ≠ 0
hb✝ : LinearIndependent R ↑b
hb : ∀ (g : n → R), ∑ i : n, g i • ↑b i = 0 → ∀ (i : n), g i = 0
g : n → R
hg : ∑ i : n, g i • ↑b i = 0 ∨ a = 0
⊢ ∑ i : n, g i • ↑b i = 0