Theorem: LieModule.iSup_weightSpace_eq_top
File: Mathlib/Algebra/Lie/Weights/Basic.lean

tactic: clear! R
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : LieAlgebra.IsNilpotent R L
inst✝¹⁰ : AddCommGroup M
inst✝⁹ : Module R M
inst✝⁸ : LieRingModule L M
inst✝⁷ : LieModule R L M
inst✝⁶ : Field K
inst✝⁵ : LieAlgebra K L
inst✝⁴ : Module K M
inst✝³ : LieModule K L M
inst✝² : LieAlgebra.IsNilpotent K L
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: K : Type u_1
L : Type u_3
M : Type u_4
inst✝⁹ : LieRing L
inst✝⁸ : AddCommGroup M
inst✝⁷ : LieRingModule L M
inst✝⁶ : Field K
inst✝⁵ : LieAlgebra K L
inst✝⁴ : Module K M
inst✝³ : LieModule K L M
inst✝² : LieAlgebra.IsNilpotent K L
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
⊢ ⨆ χ, weightSpace M χ = ⊤

tactic: induction' h_dim : finrank K M using Nat.strong_induction_on with n ih generalizing M
state_before: K : Type u_1
L : Type u_3
M : Type u_4
inst✝⁹ : LieRing L
inst✝⁸ : AddCommGroup M
inst✝⁷ : LieRingModule L M
inst✝⁶ : Field K
inst✝⁵ : LieAlgebra K L
inst✝⁴ : Module K M
inst✝³ : LieModule K L M
inst✝² : LieAlgebra.IsNilpotent K L
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: case h
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
⊢ ⨆ χ, weightSpace M χ = ⊤

tactic: obtain h' | ⟨y : L, hy : ¬ ∃ φ, weightSpaceOf M φ y = ⊤⟩ :=
  forall_or_exists_not (fun (x : L) ↦ ∃ (φ : K), weightSpaceOf M φ x = ⊤)
state_before: case h
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: case h.inl
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
h' : ∀ (a : L), ∃ φ, weightSpaceOf M φ a = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤

case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ¬∃ φ, weightSpaceOf M φ y = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤

tactic: choose χ hχ using h'
state_before: case h.inl
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
h' : ∀ (a : L), ∃ φ, weightSpaceOf M φ a = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: case h.inl
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
χ : L → K
hχ : ∀ (a : L), weightSpaceOf M (χ a) a = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤

tactic: replace hχ : weightSpace M χ = ⊤ := by simpa only [weightSpace, hχ] using iInf_top
state_before: case h.inl
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
χ : L → K
hχ : ∀ (a : L), weightSpaceOf M (χ a) a = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: case h.inl
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
χ : L → K
hχ : weightSpace M χ = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤

tactic: exact eq_top_iff.mpr <| hχ ▸ le_iSup (weightSpace M) χ
state_before: case h.inl
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
χ : L → K
hχ : weightSpace M χ = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: no goals

tactic: simpa only [weightSpace, hχ] using iInf_top
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
χ : L → K
hχ : ∀ (a : L), weightSpaceOf M (χ a) a = ⊤
⊢ weightSpace M χ = ⊤
state_after: no goals

tactic: replace hy : ∀ φ, finrank K (weightSpaceOf M φ y) < n := fun φ ↦ by
  simp_rw [not_exists, ← lt_top_iff_ne_top] at hy; exact h_dim ▸ Submodule.finrank_lt (hy φ)
state_before: case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ¬∃ φ, weightSpaceOf M φ y = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
⊢ ⨆ χ, weightSpace M χ = ⊤

tactic: replace ih : ∀ φ, ⨆ χ : L → K, weightSpace (weightSpaceOf M φ y) χ = ⊤ :=
  fun φ ↦ ih _ (hy φ) (weightSpaceOf M φ y) rfl
state_before: case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤

tactic: replace ih : ∀ φ, ⨆ (χ : L → K) (_ : χ y = φ), weightSpace (weightSpaceOf M φ y) χ = ⊤ := by
  intro φ
  suffices ∀ χ : L → K, χ y ≠ φ → weightSpace (weightSpaceOf M φ y) χ = ⊥ by
    specialize ih φ; rw [iSup_split, biSup_congr this] at ih; simpa using ih
  intro χ hχ
  rw [eq_bot_iff, ← (weightSpaceOf M φ y).ker_incl, LieModuleHom.ker,
    ← LieSubmodule.map_le_iff_le_comap, map_weightSpace_eq_of_injective
    (weightSpaceOf M φ y).injective_incl, LieSubmodule.range_incl, ← disjoint_iff_inf_le]
  exact (disjoint_weightSpaceOf K L M hχ).mono_left (weightSpace_le_weightSpaceOf M y χ)
state_before: case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤

tactic: replace ih : ∀ φ, ⨆ (χ : L → K) (_ : χ y = φ), weightSpace M χ = weightSpaceOf M φ y := by
  intro φ
  have : ∀ (χ : L → K) (_ : χ y = φ), weightSpace M χ =
      (weightSpace (weightSpaceOf M φ y) χ).map (weightSpaceOf M φ y).incl := fun χ hχ ↦ by
    rw [← hχ, weightSpace_weightSpaceOf_map_incl]
  simp_rw [biSup_congr this, ← LieSubmodule.map_iSup, ih, LieModuleHom.map_top,
    LieSubmodule.range_incl]
state_before: case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace M χ = weightSpaceOf M φ y
⊢ ⨆ χ, weightSpace M χ = ⊤

tactic: simpa only [← ih, iSup_comm (ι := K), iSup_iSup_eq_right] using
  iSup_weightSpaceOf_eq_top K L M y
state_before: case h.inr.intro
K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace M χ = weightSpaceOf M φ y
⊢ ⨆ χ, weightSpace M χ = ⊤
state_after: no goals

tactic: simp_rw [not_exists, ← lt_top_iff_ne_top] at hy
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ¬∃ φ, weightSpaceOf M φ y = ⊤
φ : ?m.783086
⊢ finrank K ↥↑(weightSpaceOf M φ y) < n
state_after: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy✝ : ¬∃ φ, weightSpaceOf M φ y = ⊤
φ : ?m.783086
hy : ∀ (x : K), weightSpaceOf M x y < ⊤
⊢ finrank K ↥↑(weightSpaceOf M φ y) < n

tactic: exact h_dim ▸ Submodule.finrank_lt (hy φ)
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
ih :
  ∀ m < n,
    ∀ (M : Type u_4) [inst : AddCommGroup M] [inst_1 : LieRingModule L M] [inst_2 : Module K M]
      [inst_3 : LieModule K L M] [inst_4 : FiniteDimensional K M] [inst_5 : IsTriangularizable K L M],
      finrank K M = m → ⨆ χ, weightSpace M χ = ⊤
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy✝ : ¬∃ φ, weightSpaceOf M φ y = ⊤
φ : ?m.783086
hy : ∀ (x : K), weightSpaceOf M x y < ⊤
⊢ finrank K ↥↑(weightSpaceOf M φ y) < n
state_after: no goals

tactic: intro φ
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
⊢ ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
state_after: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤

tactic: suffices ∀ χ : L → K, χ y ≠ φ → weightSpace (weightSpaceOf M φ y) χ = ⊥ by
  specialize ih φ; rw [iSup_split, biSup_congr this] at ih; simpa using ih
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
state_after: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
⊢ ∀ (χ : L → K), χ y ≠ φ → weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊥

tactic: intro χ hχ
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
⊢ ∀ (χ : L → K), χ y ≠ φ → weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊥
state_after: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
χ : L → K
hχ : χ y ≠ φ
⊢ weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊥

tactic: rw [eq_bot_iff, ← (weightSpaceOf M φ y).ker_incl, LieModuleHom.ker,
  ← LieSubmodule.map_le_iff_le_comap, map_weightSpace_eq_of_injective
  (weightSpaceOf M φ y).injective_incl, LieSubmodule.range_incl, ← disjoint_iff_inf_le]
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
χ : L → K
hχ : χ y ≠ φ
⊢ weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊥
state_after: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
χ : L → K
hχ : χ y ≠ φ
⊢ Disjoint (weightSpace M χ) (weightSpaceOf M φ y)

tactic: exact (disjoint_weightSpaceOf K L M hχ).mono_left (weightSpace_le_weightSpaceOf M y χ)
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
χ : L → K
hχ : χ y ≠ φ
⊢ Disjoint (weightSpace M χ) (weightSpaceOf M φ y)
state_after: no goals

tactic: specialize ih φ
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
this : ∀ (χ : L → K), χ y ≠ φ → weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊥
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
state_after: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
φ : K
this : ∀ (χ : L → K), χ y ≠ φ → weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊥
ih : ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤

tactic: rw [iSup_split, biSup_congr this] at ih
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
φ : K
this : ∀ (χ : L → K), χ y ≠ φ → weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊥
ih : ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
state_after: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
φ : K
this : ∀ (χ : L → K), χ y ≠ φ → weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊥
ih✝ : ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
ih : (⨆ i, ⨆ (_ : i y ≠ φ), ⊥) ⊔ ⨆ i, ⨆ (_ : ¬i y ≠ φ), weightSpace (↥↑(weightSpaceOf M φ y)) i = ⊤
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤

tactic: simpa using ih
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
φ : K
this : ∀ (χ : L → K), χ y ≠ φ → weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊥
ih✝ : ⨆ χ, weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
ih : (⨆ i, ⨆ (_ : i y ≠ φ), ⊥) ⊔ ⨆ i, ⨆ (_ : ¬i y ≠ φ), weightSpace (↥↑(weightSpaceOf M φ y)) i = ⊤
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
state_after: no goals

tactic: intro φ
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
⊢ ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace M χ = weightSpaceOf M φ y
state_after: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace M χ = weightSpaceOf M φ y

tactic: have : ∀ (χ : L → K) (_ : χ y = φ), weightSpace M χ =
    (weightSpace (weightSpaceOf M φ y) χ).map (weightSpaceOf M φ y).incl := fun χ hχ ↦ by
  rw [← hχ, weightSpace_weightSpaceOf_map_incl]
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace M χ = weightSpaceOf M φ y
state_after: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
this :
  ∀ (χ : L → K),
    χ y = φ → weightSpace M χ = LieSubmodule.map (weightSpaceOf M φ y).incl (weightSpace (↥↑(weightSpaceOf M φ y)) χ)
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace M χ = weightSpaceOf M φ y

tactic: simp_rw [biSup_congr this, ← LieSubmodule.map_iSup, ih, LieModuleHom.map_top,
  LieSubmodule.range_incl]
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
this :
  ∀ (χ : L → K),
    χ y = φ → weightSpace M χ = LieSubmodule.map (weightSpaceOf M φ y).incl (weightSpace (↥↑(weightSpaceOf M φ y)) χ)
⊢ ⨆ χ, ⨆ (_ : χ y = φ), weightSpace M χ = weightSpaceOf M φ y
state_after: no goals

tactic: rw [← hχ, weightSpace_weightSpaceOf_map_incl]
state_before: K : Type u_1
L : Type u_3
inst✝⁹ : LieRing L
inst✝⁸ : Field K
inst✝⁷ : LieAlgebra K L
inst✝⁶ : LieAlgebra.IsNilpotent K L
n : ℕ
M : Type u_4
inst✝⁵ : AddCommGroup M
inst✝⁴ : LieRingModule L M
inst✝³ : Module K M
inst✝² : LieModule K L M
inst✝¹ : FiniteDimensional K M
inst✝ : IsTriangularizable K L M
h_dim : finrank K M = n
y : L
hy : ∀ (φ : K), finrank K ↥↑(weightSpaceOf M φ y) < n
ih : ∀ (φ : K), ⨆ χ, ⨆ (_ : χ y = φ), weightSpace (↥↑(weightSpaceOf M φ y)) χ = ⊤
φ : K
χ : L → K
hχ : χ y = φ
⊢ weightSpace M χ = LieSubmodule.map (weightSpaceOf M φ y).incl (weightSpace (↥↑(weightSpaceOf M φ y)) χ)
state_after: no goals