-- Mathlib/Algebra/Lie/Weights/Killing.lean
@[simp]
lemma span_weight_isNonZero_eq_top :
    span K ({α : Weight K H L | α.IsNonZero}.image (Weight.toLinear K H L)) = ⊤

Proof state:
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
this : range (Weight.toLinear K (↥H) L) ⊆ insert 0 (Weight.toLinear K (↥H) L '' {α | α.IsNonZero})
⊢ span K (range (Weight.toLinear K (↥H) L)) ≤ span K (Weight.toLinear K (↥H) L '' {α | α.IsNonZero})

Tactic:
simpa only [Submodule.span_insert_zero] using Submodule.span_mono this

Result:
no goals

Proof state:
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
⊢ Weight.toLinear K (↥H) L '' {α | α.IsNonZero} ⊆ range (Weight.toLinear K (↥H) L)

Tactic:
simp

Result:
no goals

Proof state:
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
⊢ span K (Weight.toLinear K (↥H) L '' {α | α.IsNonZero}) = ⊤

Tactic:
rw [← span_weight_eq_top]

Result:
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
⊢ span K (Weight.toLinear K (↥H) L '' {α | α.IsNonZero}) = span K (range (Weight.toLinear K (↥H) L))

Proof state:
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
⊢ span K (range (Weight.toLinear K (↥H) L)) ≤ span K (Weight.toLinear K (↥H) L '' {α | α.IsNonZero})

Tactic:
suffices range (Weight.toLinear K H L) ⊆
  insert 0 ({α : Weight K H L | α.IsNonZero}.image (Weight.toLinear K H L)) by
  simpa only [Submodule.span_insert_zero] using Submodule.span_mono this

Result:
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
⊢ range (Weight.toLinear K (↥H) L) ⊆ insert 0 (Weight.toLinear K (↥H) L '' {α | α.IsNonZero})

Proof state:
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
⊢ range (Weight.toLinear K (↥H) L) ⊆ insert 0 (Weight.toLinear K (↥H) L '' {α | α.IsNonZero})

Tactic:
rintro - ⟨α, rfl⟩

Result:
case intro
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
α : Weight K (↥H) L
⊢ Weight.toLinear K (↥H) L α ∈ insert 0 (Weight.toLinear K (↥H) L '' {α | α.IsNonZero})

Proof state:
case intro
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
α : Weight K (↥H) L
⊢ α.IsZero ∨ ∃ x, x.IsNonZero ∧ Weight.toLinear K (↥H) L x = Weight.toLinear K (↥H) L α

Tactic:
tauto

Result:
no goals

Proof state:
case intro
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
α : Weight K (↥H) L
⊢ Weight.toLinear K (↥H) L α ∈ insert 0 (Weight.toLinear K (↥H) L '' {α | α.IsNonZero})

Tactic:
simp only [mem_insert_iff, Weight.coe_toLinear_eq_zero_iff, mem_image, mem_setOf_eq]

Result:
case intro
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
α : Weight K (↥H) L
⊢ α.IsZero ∨ ∃ x, x.IsNonZero ∧ Weight.toLinear K (↥H) L x = Weight.toLinear K (↥H) L α

Proof state:
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
⊢ span K (Weight.toLinear K (↥H) L '' {α | α.IsNonZero}) = span K (range (Weight.toLinear K (↥H) L))

Tactic:
refine le_antisymm (Submodule.span_mono <| by simp) ?_

Result:
K : Type u_2
L : Type u_3
inst✝⁶ : LieRing L
inst✝⁵ : Field K
inst✝⁴ : LieAlgebra K L
inst✝³ : FiniteDimensional K L
H : LieSubalgebra K L
inst✝² : H.IsCartanSubalgebra
inst✝¹ : IsKilling K L
inst✝ : IsTriangularizable K (↥H) L
⊢ span K (range (Weight.toLinear K (↥H) L)) ≤ span K (Weight.toLinear K (↥H) L '' {α | α.IsNonZero})