File: Mathlib/Algebra/Lie/InvariantForm.lean

full_name: LinearMap.BilinForm.lieInvariant
code: /--
A bilinear form on a Lie module `M` of a Lie algebra `L` is *invariant* if
for all `x : L` and `y z : M` the condition `Φ ⁅x, y⁆ z = -Φ y ⁅x, z⁆` holds.
-/
def _root_.LinearMap.BilinForm.lieInvariant : Prop 
goal: Prop

full_name: LinearMap.BilinForm.lieInvariant_iff
code: lemma _root_.LinearMap.BilinForm.lieInvariant_iff [LieModule R L M] :
    Φ.lieInvariant L ↔ Φ ∈ LieModule.maxTrivSubmodule R L (LinearMap.BilinForm R M) 
goal: LinearMap.BilinForm.lieInvariant L Φ ↔ Φ ∈ LieModule.maxTrivSubmodule R L (LinearMap.BilinForm R M)

full_name: LieAlgebra.InvariantForm.orthogonal_carrier
code: /--
The orthogonal complement of a Lie submodule `N` with respect to an invariant bilinear form `Φ` is
the Lie submodule of elements `y` such that `Φ x y = 0` for all `x ∈ N`.
-/
@[simps!]
def orthogonal (N : LieSubmodule R L M) : LieSubmodule R L M 
goal: ↑(LieAlgebra.InvariantForm.orthogonal Φ hΦ_inv N) = {m | ∀ n ∈ N, Φ.IsOrtho n m}

full_name: LieAlgebra.InvariantForm.orthogonal
code: /--
The orthogonal complement of a Lie submodule `N` with respect to an invariant bilinear form `Φ` is
the Lie submodule of elements `y` such that `Φ x y = 0` for all `x ∈ N`.
-/
@[simps!]
def orthogonal (N : LieSubmodule R L M) : LieSubmodule R L M 
goal: LieSubmodule R L M

full_name: LieAlgebra.InvariantForm.orthogonal_toSubmodule
code: @[simp]
lemma orthogonal_toSubmodule (N : LieSubmodule R L M) :
    (orthogonal Φ hΦ_inv N).toSubmodule = Φ.orthogonal N.toSubmodule 
goal: ↑(LieAlgebra.InvariantForm.orthogonal Φ hΦ_inv N) = Φ.orthogonal ↑N

full_name: LieAlgebra.InvariantForm.mem_orthogonal
code: lemma mem_orthogonal (N : LieSubmodule R L M) (y : M) :
    y ∈ orthogonal Φ hΦ_inv N ↔ ∀ x ∈ N, Φ x y = 0 
goal: y ∈ LieAlgebra.InvariantForm.orthogonal Φ hΦ_inv N ↔ ∀ x ∈ N, (Φ x) y = 0

full_name: LieAlgebra.InvariantForm.orthogonal_disjoint
code: lemma orthogonal_disjoint
    (Φ : LinearMap.BilinForm R L) (hΦ_nondeg : Φ.Nondegenerate) (hΦ_inv : Φ.lieInvariant L)
    -- TODO: replace the following assumption by a typeclass assumption `[HasNonAbelianAtoms]`
    (hL : ∀ I : LieIdeal R L, IsAtom I → ¬IsLieAbelian I)
    (I : LieIdeal R L) (hI : IsAtom I) :
    Disjoint I (orthogonal Φ hΦ_inv I) 
goal: Disjoint I (LieAlgebra.InvariantForm.orthogonal Φ hΦ_inv I)

full_name: LieAlgebra.InvariantForm.orthogonal_isCompl_coe_submodule
code: lemma orthogonal_isCompl_coe_submodule (I : LieIdeal K L) (hI : IsAtom I) :
    IsCompl I.toSubmodule (orthogonal Φ hΦ_inv I).toSubmodule 
goal: IsCompl ↑I ↑(LieAlgebra.InvariantForm.orthogonal Φ hΦ_inv I)

full_name: LieAlgebra.InvariantForm.orthogonal_isCompl
code: lemma orthogonal_isCompl (I : LieIdeal K L) (hI : IsAtom I) :
    IsCompl I (orthogonal Φ hΦ_inv I) 
goal: IsCompl I (LieAlgebra.InvariantForm.orthogonal Φ hΦ_inv I)

full_name: LieAlgebra.InvariantForm.restrict_nondegenerate
code: lemma restrict_nondegenerate (I : LieIdeal K L) (hI : IsAtom I) :
    (Φ.restrict I).Nondegenerate 
goal: (Φ.restrict (lieIdealSubalgebra K L I).toSubmodule).Nondegenerate

full_name: LieAlgebra.InvariantForm.restrict_orthogonal_nondegenerate
code: lemma restrict_orthogonal_nondegenerate (I : LieIdeal K L) (hI : IsAtom I) :
    (Φ.restrict (orthogonal Φ hΦ_inv I)).Nondegenerate 
goal: (Φ.restrict (lieIdealSubalgebra K L (LieAlgebra.InvariantForm.orthogonal Φ hΦ_inv I)).toSubmodule).Nondegenerate

full_name: LieAlgebra.InvariantForm.atomistic
code: lemma atomistic : ∀ I : LieIdeal K L, sSup {J : LieIdeal K L | IsAtom J ∧ J ≤ I} = I 
goal: sSup {J | IsAtom J ∧ J ≤ I} = I

full_name: LieAlgebra.InvariantForm.isSemisimple_of_nondegenerate
code: /--
A finite-dimensional Lie algebra over a field is semisimple
if it does not have non-trivial abelian ideals and it admits a
non-degenerate reflexive invariant bilinear form.
Here a form is *invariant* if it is compatible with the Lie bracket: `Φ ⁅x, y⁆ z = Φ x ⁅y, z⁆`.
-/
theorem isSemisimple_of_nondegenerate : IsSemisimple K L 
goal: LieAlgebra.IsSemisimple K L