(* Completely reducible modules, and Maeschke's Theorem. *)
Definition mx_completely_reducible V :=
forall U, mxmodule U -> (U <= V)%MS -> mxsplits V U.

(* Specifications: *)
Lemma mx_reducibleS U V :
mxmodule U -> (U <= V)%MS ->
mx_completely_reducible V -> mx_completely_reducible U.
Lemma mx_Maschke : [char F]^'.-group G -> mx_completely_reducible 1%:M.
Lemma mxsemisimple_reducible V : mxsemisimple V -> mx_completely_reducible V.
Lemma mx_reducible_semisimple V :
mxmodule V -> mx_completely_reducible V -> classically (mxsemisimple V).
Lemma mxsemisimpleS U V :
mxmodule U -> (U <= V)%MS -> mxsemisimple V -> mxsemisimple U.
Lemma hom_mxsemisimple_iso I P U W f :
let V := (\sum_(i : I |  P i) W i)%MS in
mxsimple U -> (forall i, P i -> W i != 0 -> mxsimple (W i)) ->
(V <= dom_hom_mx f)%MS -> (U <= V *m f)%MS ->
{i | P i & mx_iso (W i) U}.