Theorem: Subalgebra.eq_bot_of_rank_le_one
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: nontriviality E
state_before: K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : Module.rank F { x // x ∈ S } ≤ 1
⊢ S = ⊥

tactic: obtain ⟨m, _, he⟩ := Cardinal.exists_nat_eq_of_le_nat (h.trans_eq Nat.cast_one.symm)
state_before: K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : Module.rank F { x // x ∈ S } ≤ 1
✝ : Nontrivial E
⊢ S = ⊥

tactic: haveI : FiniteDimensional F S := finiteDimensional_of_rank_eq_nat he
state_before: case intro.intro
K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : Module.rank F { x // x ∈ S } ≤ 1
✝ : Nontrivial E
m : ℕ
left✝ : m ≤ 1
he : Module.rank F { x // x ∈ S } = ↑m
⊢ S = ⊥

tactic: rw [← not_bot_lt_iff, ← Subalgebra.toSubmodule.lt_iff_lt]
state_before: case intro.intro
K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : Module.rank F { x // x ∈ S } ≤ 1
✝ : Nontrivial E
m : ℕ
left✝ : m ≤ 1
he : Module.rank F { x // x ∈ S } = ↑m
this : FiniteDimensional F { x // x ∈ S }
⊢ S = ⊥

tactic: haveI : FiniteDimensional F (Subalgebra.toSubmodule S) :=
  S.toSubmoduleEquiv.symm.finiteDimensional
state_before: case intro.intro
K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : Module.rank F { x // x ∈ S } ≤ 1
✝ : Nontrivial E
m : ℕ
left✝ : m ≤ 1
he : Module.rank F { x // x ∈ S } = ↑m
this : FiniteDimensional F { x // x ∈ S }
⊢ ¬↑toSubmodule ⊥ < ↑toSubmodule S

tactic: refine fun hl => (Submodule.finrank_lt_finrank_of_lt hl).not_le (natCast_le.1 ?_)
state_before: case intro.intro
K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : Module.rank F { x // x ∈ S } ≤ 1
✝ : Nontrivial E
m : ℕ
left✝ : m ≤ 1
he : Module.rank F { x // x ∈ S } = ↑m
this✝ : FiniteDimensional F { x // x ∈ S }
this : FiniteDimensional F { x // x ∈ ↑toSubmodule S }
⊢ ¬↑toSubmodule ⊥ < ↑toSubmodule S

tactic: iterate 2 rw [Subalgebra.finrank_toSubmodule, finrank_eq_rank]
state_before: case intro.intro
K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : Module.rank F { x // x ∈ S } ≤ 1
✝ : Nontrivial E
m : ℕ
left✝ : m ≤ 1
he : Module.rank F { x // x ∈ S } = ↑m
this✝ : FiniteDimensional F { x // x ∈ S }
this : FiniteDimensional F { x // x ∈ ↑toSubmodule S }
hl : ↑toSubmodule ⊥ < ↑toSubmodule S
⊢ ↑(finrank F { x // x ∈ ↑toSubmodule S }) ≤ ↑(finrank F { x // x ∈ ↑toSubmodule ⊥ })

tactic: exact h.trans_eq Subalgebra.rank_bot.symm
state_before: case intro.intro
K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : Module.rank F { x // x ∈ S } ≤ 1
✝ : Nontrivial E
m : ℕ
left✝ : m ≤ 1
he : Module.rank F { x // x ∈ S } = ↑m
this✝ : FiniteDimensional F { x // x ∈ S }
this : FiniteDimensional F { x // x ∈ ↑toSubmodule S }
hl : ↑toSubmodule ⊥ < ↑toSubmodule S
⊢ Module.rank F { x // x ∈ S } ≤ Module.rank F { x // x ∈ ⊥ }

tactic: rw [Subalgebra.finrank_toSubmodule, finrank_eq_rank]
state_before: case intro.intro
K : Type u
V : Type v
F : Type u_1
E : Type u_2
inst✝² : Field F
inst✝¹ : Ring E
inst✝ : Algebra F E
S : Subalgebra F E
h : Module.rank F { x // x ∈ S } ≤ 1
✝ : Nontrivial E
m : ℕ
left✝ : m ≤ 1
he : Module.rank F { x // x ∈ S } = ↑m
this✝ : FiniteDimensional F { x // x ∈ S }
this : FiniteDimensional F { x // x ∈ ↑toSubmodule S }
hl : ↑toSubmodule ⊥ < ↑toSubmodule S
⊢ Module.rank F { x // x ∈ S } ≤ ↑(finrank F { x // x ∈ ↑toSubmodule ⊥ })