File: Mathlib/LinearAlgebra/Semisimple.lean

full_name: Module.End.IsSemisimple
code: /-- A linear endomorphism of an `R`-module `M` is called *semisimple* if the induced `R[X]`-module
structure on `M` is semisimple. This is equivalent to saying that every `f`-invariant `R`-submodule
of `M` has an `f`-invariant complement: see `Module.End.isSemisimple_iff`. -/
abbrev IsSemisimple 
goal: Prop

full_name: Module.End.isSemisimple_iff
code: lemma isSemisimple_iff :
    f.IsSemisimple ↔ ∀ p : Submodule R M, p ≤ p.comap f → ∃ q, q ≤ q.comap f ∧ IsCompl p q 
goal: f.IsSemisimple ↔ ∀ p ≤ Submodule.comap f p, ∃ q ≤ Submodule.comap f q, IsCompl p q

full_name: Module.End.isSemisimple_zero
code: @[simp]
lemma isSemisimple_zero [IsSemisimpleModule R M] : IsSemisimple (0 : Module.End R M) 
goal: Module.End.IsSemisimple 0

full_name: Module.End.isSemisimple_id
code: @[simp]
lemma isSemisimple_id [IsSemisimpleModule R M] : IsSemisimple (LinearMap.id : Module.End R M) 
goal: Module.End.IsSemisimple LinearMap.id

full_name: Module.End.isSemisimple_neg
code: @[simp] lemma isSemisimple_neg : (-f).IsSemisimple ↔ f.IsSemisimple 
goal: (-f).IsSemisimple ↔ f.IsSemisimple

full_name: Module.End.eq_zero_of_isNilpotent_isSemisimple
code: lemma eq_zero_of_isNilpotent_isSemisimple (hn : IsNilpotent f) (hs : f.IsSemisimple) : f = 0 
goal: f = 0

full_name: Module.End.isSemisimple_sub_algebraMap_iff
code: @[simp]
lemma isSemisimple_sub_algebraMap_iff {μ : R} :
    (f - algebraMap R (End R M) μ).IsSemisimple ↔ f.IsSemisimple 
goal: (f - (algebraMap R (Module.End R M)) μ).IsSemisimple ↔ f.IsSemisimple

full_name: Module.End.IsSemisimple.restrict
code: lemma IsSemisimple.restrict {p : Submodule R M} {hp : MapsTo f p p} (hf : f.IsSemisimple) :
    IsSemisimple (f.restrict hp) 
goal: Module.End.IsSemisimple (LinearMap.restrict f hp)

full_name: Module.End.IsSemisimple_smul_iff
code: lemma IsSemisimple_smul_iff {t : K} (ht : t ≠ 0) :
    (t • f).IsSemisimple ↔ f.IsSemisimple 
goal: (t • f).IsSemisimple ↔ f.IsSemisimple

full_name: Module.End.IsSemisimple_smul
code: lemma IsSemisimple_smul (t : K) (h : f.IsSemisimple) :
    (t • f).IsSemisimple 
goal: (t • f).IsSemisimple

full_name: Module.End.isSemisimple_of_squarefree_aeval_eq_zero
code: theorem isSemisimple_of_squarefree_aeval_eq_zero {p : K[X]}
    (hp : Squarefree p) (hpf : aeval f p = 0) : f.IsSemisimple 
goal: f.IsSemisimple

full_name: Module.End.IsSemisimple.minpoly_squarefree
code: /-- The minimal polynomial of a semisimple endomorphism is square free -/
theorem IsSemisimple.minpoly_squarefree : Squarefree (minpoly K f) 
goal: Squarefree (minpoly K f)

full_name: Module.End.IsSemisimple.aeval
code: protected theorem IsSemisimple.aeval (p : K[X]) : (aeval f p).IsSemisimple 
goal: ((Polynomial.aeval f) p).IsSemisimple

full_name: Module.End.IsSemisimple.of_mem_adjoin_singleton
code: theorem IsSemisimple.of_mem_adjoin_singleton {a : End K M}
    (ha : a ∈ Algebra.adjoin K {f}) : a.IsSemisimple 
goal: a.IsSemisimple

full_name: Module.End.IsSemisimple.pow
code: protected theorem IsSemisimple.pow (n : ℕ) : (f ^ n).IsSemisimple 
goal: (f ^ n).IsSemisimple

full_name: Module.End.IsSemisimple.of_mem_adjoin_pair
code: theorem IsSemisimple.of_mem_adjoin_pair {a : End K M} (ha : a ∈ Algebra.adjoin K {f, g}) :
    a.IsSemisimple 
goal: a.IsSemisimple

full_name: Module.End.IsSemisimple.add_of_commute
code: theorem IsSemisimple.add_of_commute : (f + g).IsSemisimple 
goal: (f + g).IsSemisimple

full_name: Module.End.IsSemisimple.sub_of_commute
code: theorem IsSemisimple.sub_of_commute : (f - g).IsSemisimple 
goal: (f - g).IsSemisimple

full_name: Module.End.IsSemisimple.mul_of_commute
code: theorem IsSemisimple.mul_of_commute : (f * g).IsSemisimple 
goal: (f * g).IsSemisimple