GROUP_9

index · ← MATRIX_7 · GROUP_8 →
:: The {J}ordan-H\"older Theorem
::  by Marco Riccardi
::
:: Received April 20, 2007
:: Copyright (c) 2007-2026 Association of Mizar Users
::           (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.

environ

 vocabularies NUMBERS, FUNCT_1, FUNCT_2, SUBSET_1, RELAT_1, TARSKI, ZFMISC_1,
      SETFAM_1, FINSEQ_1, CARD_3, CARD_1, NAT_1, ARYTM_3, XXREAL_0, XBOOLE_0,
      ORDINAL4, GROUP_1, STRUCT_0, LATTICES, GROUP_6, ALGSTR_0, BINOP_1,
      PARTFUN1, GROUP_2, REALSET1, RLSUB_1, PRE_TOPC, GLIB_000, MATRIX_1,
      QC_LANG1, MSSUBFAM, WELLORD1, EQREL_1, ARYTM_1, NEWTON, INT_1, GROUP_4,
      NATTRA_1, FINSEQ_2, ISOCAT_1, FINSEQ_3, FINSET_1, ORDINAL2, MEMBERED,
      FINSEQ_5, RFINSEQ, GROUP_9, REAL_1, NUMBER09;
 notations TARSKI, XBOOLE_0, SUBSET_1, XCMPLX_0, ORDINAL1, RELAT_1, FUNCT_1,
      RELSET_1, FUNCT_2, XREAL_0, STRUCT_0, ALGSTR_0, PARTFUN1, FINSEQ_1,
      ZFMISC_1, CARD_1, XXREAL_2, FINSET_1, INT_1, NAT_1, FINSEQ_2, FINSEQ_3,
      GROUP_1, GROUP_2, GROUP_3, XXREAL_0, SETFAM_1, GROUP_4, FINSEQ_5,
      NUMBERS, MEMBERED, MATRIX_1, RFINSEQ, BINOP_1, REALSET1, GROUP_6, NAT_D,
      RFUNCT_2;
 constructors BINOP_1, REAL_1, NAT_D, RFINSEQ, BINARITH, FINSEQ_5, REALSET2,
      GROUP_4, GROUP_6, MATRIX_1, XXREAL_2, RELSET_1, NUMBERS;
 registrations XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, ORDINAL1, FUNCT_2,
      FINSET_1, NUMBERS, XXREAL_0, XREAL_0, NAT_1, INT_1, MEMBERED, FINSEQ_1,
      PRE_CIRC, STRUCT_0, GROUP_1, GROUP_2, GROUP_3, GROUP_6, MATRIX_1,
      VALUED_0, XXREAL_2, CARD_1, RELSET_1;
 requirements NUMERALS, REAL, SUBSET, BOOLE, ARITHM;
 definitions TARSKI, FUNCT_2;
 equalities GROUP_2, GROUP_6, FINSEQ_3, FINSEQ_5, SUBSET_1, FINSEQ_1, REALSET1,
      RELAT_1, GROUP_4, ALGSTR_0, STRUCT_0;
 expansions GROUP_2, GROUP_6, TARSKI, FINSEQ_1, RELAT_1, FUNCT_2;
 theorems FINSEQ_1, GROUP_2, GROUP_3, TARSKI, GROUP_6, FINSEQ_2, FUNCT_1,
      FUNCT_2, RELAT_1, XBOOLE_0, XBOOLE_1, NAT_1, GROUP_1, XREAL_1, RELSET_1,
      PARTFUN1, FINSEQ_3, INT_1, ZFMISC_1, CARD_1, CARD_2, XCMPLX_1, ORDINAL1,
      RFUNCT_2, SUBSET_1, MATRIX_1, MATRIX_7, FINSEQ_5, RFINSEQ, XXREAL_0,
      WSIERP_1, GROUP_4, SETFAM_1, STRUCT_0, NAT_D, XXREAL_2, XREAL_0,
      XTUPLE_0, NUMBERS, FUNCOP_1;
 schemes XBOOLE_0, FUNCT_1, FINSEQ_1, NAT_1, FUNCT_2, DOMAIN_1, XFAMILY;

begin :: Actions and Groups with Operators

:: ALG I.3.2 Definition 2

definition
  let O,E be set;
  let A be Action of O,E;
  let IT be set;
  pred IT is_stable_under_the_action_of A means

  for o being Element of
  O, f being Function of E, E st o in O & f = A.o holds (f .: IT) c= IT;
end;

definition
  let O,E be set;
  let A be Action of O,E;
  let X be Subset of E;
  func the_stable_subset_generated_by(X,A) -> Subset of E means
  :Def2:
  X c= it & it is_stable_under_the_action_of A & for Y being Subset of E st Y
  is_stable_under_the_action_of A & X c= Y holds it c= Y;
  existence
  proof
    defpred P[set] means ex B being Subset of E st $1 = B & X c= $1 & B
    is_stable_under_the_action_of A;
    consider XX be set such that
A1: for Y being set holds Y in XX iff Y in bool E & P[Y] from XFAMILY
    :sch 1;
    set M = meet XX;
    [#]E is_stable_under_the_action_of A;
    then
A2: E in XX by A1;
    then for x being object st x in M holds x in E by SETFAM_1:def 1;
    then reconsider M as Subset of E by TARSKI:def 3;
    take M;
    now
      let x be object;
      assume
A3:   x in X;
      now
        let Y be set;
        assume Y in XX;
        then ex B being Subset of E st Y = B & X c= Y & B
        is_stable_under_the_action_of A by A1;
        hence x in Y by A3;
      end;
      hence x in M by A2,SETFAM_1:def 1;
    end;
    hence X c= M;
    now
      let o be Element of O;
      let f be Function of E, E;
      assume
A4:   o in O;
      assume
A5:   f = A.o;
      now
        let y be object;
        assume
A6:     y in f .: M;
        now
          let Y be set;
          assume
A7:       Y in XX;
          then ex B being Subset of E st Y = B & X c= Y & B
          is_stable_under_the_action_of A by A1;
          then
A8:       (f .: Y) c= Y by A4,A5;
          f .: M c= f .: Y by A7,RELAT_1:123,SETFAM_1:3;
          then f .: M c= Y by A8;
          hence y in Y by A6;
        end;
        hence y in M by A2,SETFAM_1:def 1;
      end;
      hence (f .: M) c= M;
    end;
    hence M is_stable_under_the_action_of A;
     for Y being Subset of E st Y is_stable_under_the_action_of A & X c= Y
       holds M c= Y by A1,SETFAM_1:3;
    hence thesis;
  end;
  uniqueness
  proof
    let B1,B2 be Subset of E;
    assume X c= B1 & B1 is_stable_under_the_action_of A & ( for Y being
Subset of E st Y is_stable_under_the_action_of A & X c= Y holds B1 c= Y)& X c=
    B2 &( B2 is_stable_under_the_action_of A & for Y being Subset of E st Y
    is_stable_under_the_action_of A & X c= Y holds B2 c= Y );
    then B1 c= B2 & B2 c= B1;
    hence thesis by XBOOLE_0:def 10;
  end;
end;

definition
  let O,E be set;
  let A be Action of O,E;
  let F be FinSequence of O;
  func Product(F,A) -> Function of E,E means
  :Def3:
  it = id E if len F = 0
  otherwise ex PF being FinSequence of Funcs(E,E) st it = PF.(len F) & len PF =
  len F & PF.1 = A.(F.1) & for n being Nat st n<>0 & n<len F holds ex f,g being
  Function of E,E st f = PF.n & g = A.(F.(n+1)) & PF.(n+1) = f*g;
  existence
  proof
    per cases;
    suppose
      len F=0;
      hence thesis;
    end;
    suppose
A1:   len F<>0;
      defpred P[Nat] means
for F being FinSequence of O st len F =
$1 & len F <> 0 holds (ex PF being FinSequence of Funcs(E,E), IT being Function
of E,E st IT = PF.(len PF) & len PF = len F & PF.1 = A.(F.1) & (for k being Nat
st k<>0 & k<len F holds ex f,g being Function of E,E st f = PF.k & g = A.(F.(k+
      1)) & PF.(k+1) = f*g));
A2:   for k being Nat st P[k] holds P[k + 1]
      proof
        let k be Nat;
        assume
A3:     P[k];
        thus P[k + 1]
        proof
          let F be FinSequence of O;
          assume that
A4:       len F = k+1 and
          len F <> 0;
          reconsider G = F | Seg k as FinSequence of O by FINSEQ_1:18;
A5:       len G = k by A4,FINSEQ_3:53;
          per cases;
          suppose
A6:         len G = 0;
            set IT=A.(F.1);
            1 in Seg len F by A4,A5,A6;
            then 1 in dom F by FINSEQ_1:def 3;
            then F.1 in rng F by FUNCT_1:3;
            then F.1 in O;
            then F.1 in dom A by FUNCT_2:def 1;
            then
A7:         IT in rng A by FUNCT_1:3;
            set f = the Function of E,E;
            reconsider IT as Element of Funcs(E,E) by A7;
            set PF=<*IT*>;
            ex f being Function st IT = f & dom f = E & rng f c= E by
FUNCT_2:def 2;
            then reconsider IT as Function of E,E by FUNCT_2:2;
            take PF, IT;
            len PF = 1 by FINSEQ_1:40;
            hence IT = PF.(len PF);
            thus len PF = len F by A4,A5,A6,FINSEQ_1:40;
            thus PF.1 = A.(F.1);
            let k be Nat;
            assume
A8:         k<>0 & k<len F;
            take f,f;
            thus f = PF.k & f = A.(F.(k+1)) by A4,A5,A6,A8,NAT_1:14;
            thus thesis by A4,A5,A6,A8,NAT_1:14;
          end;
          suppose
A9:         len G <> 0;
            set g=A.(F.(k+1));
A10:        0+k<=k+1 by XREAL_1:6;
A11:        0+1<k+1 by A5,A9,XREAL_1:6;
            then
A12:        1<=k by NAT_1:13;
            then 1 in Seg k;
            then 1 in Seg (k+1) /\ Seg k by A10,FINSEQ_1:7;
            then
A13:        1 in dom F /\ Seg k by A4,FINSEQ_1:def 3;
            k+1 in Seg len F by A4,A11;
            then k+1 in dom F by FINSEQ_1:def 3;
            then F.(k+1) in rng F by FUNCT_1:3;
            then F.(k+1) in O;
            then F.(k+1) in dom A by FUNCT_2:def 1;
            then g in rng A by FUNCT_1:3;
            then ex f being Function st g = f & dom f = E & rng f c= E by
FUNCT_2:def 2;
            then reconsider g as Function of E,E by FUNCT_2:2;
            consider PFk be FinSequence of Funcs(E,E), ITk be Function of E,E
            such that
            ITk = PFk.(len PFk) and
A14:        len PFk = len G and
A15:        PFk.1 = A.(G.1) and
A16:        for k being Nat st k<>0 & k<len G holds ex f,g being
Function of E,E st f = PFk.k & g = A.(G.(k+1)) & PFk.(k+1) = f*g by A3,A4,A9,
FINSEQ_3:53;
            set f = PFk.k;
            k in Seg len PFk by A5,A14,A12;
            then
A17:        k in dom PFk by FINSEQ_1:def 3;
            then PFk.k in Funcs(E,E) by FINSEQ_2:11;
            then ex f being Function st PFk.k = f & dom f = E & rng f c= E by
FUNCT_2:def 2;
            then reconsider f as Function of E,E by FUNCT_2:2;
            set IT = f * g;
            set PF = PFk ^ <*IT*>;
            IT in Funcs(E,E) by FUNCT_2:9;
            then <*IT*> is FinSequence of Funcs(E,E) by FINSEQ_1:74;
            then reconsider PF as FinSequence of Funcs(E,E) by FINSEQ_1:75;
            take PF, IT;
A18:        len PF = len G + len <*IT*> by A14,FINSEQ_1:22
              .= k + 1 by A5,FINSEQ_1:39;
            then len PF = len PFk + 1 by A4,A14,FINSEQ_3:53;
            hence
A19:        IT=PF.(len PF) & len PF=len F by A4,A18,FINSEQ_1:42;
            0+1<len G+1 by A9,XREAL_1:6;
            then 1<=len G by NAT_1:13;
            then 1 in Seg len PFk by A14;
            then 1 in dom PFk by FINSEQ_1:def 3;
            then PF.1 = A.(G.1) by A15,FINSEQ_1:def 7;
            hence PF.1 = A.(F.1) by A13,FUNCT_1:48;
            let n be Nat;
            assume
A20:        n<>0;
            assume n<len F;
            then
A21:        n<=k by A4,NAT_1:13;
            per cases;
            suppose
A22:          n >= k;
              then A.(F.(n+1)) = g by A21,XXREAL_0:1;
              then reconsider g9=A.(F.(n+1)) as Function of E,E;
A23:          n = k by A21,A22,XXREAL_0:1;
              then reconsider f9=PF.n as Function of E,E by A17,FINSEQ_1:def 7;
              take f9,g9;
              thus f9 = PF.n & g9 = A.(F.(n+1));
              thus thesis by A17,A18,A19,A23,FINSEQ_1:def 7;
            end;
            suppose
A24:          n < k;
A25:          0+1<n+1 by A20,XREAL_1:6;
              then 1<=n by NAT_1:13;
              then n in Seg len PFk by A5,A14,A24;
              then
A26:          n in dom PFk by FINSEQ_1:def 3;
              consider f9,g9 be Function of E,E such that
A27:          f9 = PFk.n & g9 = A.(G.(n+1)) and
A28:          PFk.(n+1) = f9*g9 by A5,A16,A20,A24;
              take f9,g9;
A29:          0+k<=1+k by XREAL_1:6;
A30:          n+1<=k by A24,NAT_1:13;
              then n+1 in Seg k by A25;
              then n+1 in Seg (k+1) /\ Seg k by A29,FINSEQ_1:7;
              then n+1 in dom F /\ Seg k by A4,FINSEQ_1:def 3;
              hence f9 = PF.n & g9 = A.(F.(n+1)) by A27,A26,FINSEQ_1:def 7
,FUNCT_1:48;
              n+1 in Seg len PFk by A5,A14,A25,A30;
              then n+1 in dom PFk by FINSEQ_1:def 3;
              hence thesis by A28,FINSEQ_1:def 7;
            end;
          end;
        end;
      end;
A31:  P[0];
      for k being Nat holds P[k] from NAT_1:sch 2(A31,A2);
      then ex PF being FinSequence of Funcs(E,E), IT being Function of E,E st
IT = PF.(len PF) & len PF = len F & PF.1 = A.(F.1) & for k being Nat st k<>0 &
k<len F holds ex f,g being Function of E,E st f = PF.k & g = A.(F.(k+1)) & PF.(
      k+1) = f*g by A1;
      hence thesis;
    end;
  end;
  uniqueness
  proof
    now
      let IT1,IT2 be Function of E,E;
      given PF1 be FinSequence of Funcs(E,E) such that
A32:  IT1 = PF1.(len F) and
A33:  len PF1 = len F and
A34:  PF1.1 = A.(F.1) and
A35:  for k being Nat st k<>0 & k<len F holds ex f,g being Function
      of E,E st f = PF1.k & g = A.(F.(k+1)) & PF1.(k+1) = f*g;
      given PF2 be FinSequence of Funcs(E,E) such that
A36:  IT2 = PF2.(len F) & len PF2 = len F and
A37:  PF2.1 = A.(F.1) and
A38:  for k being Nat st k<>0 & k<len F holds ex f,g being Function
      of E,E st f = PF2.k & g = A.(F.(k+1)) & PF2.(k+1) = f*g;
      defpred P[Nat] means 1 <= $1 & $1 <= len PF1 implies PF1.$1 = PF2.$1;
A39:  for k being Nat st P[k] holds P[k+1]
      proof
        let k be Nat;
        assume
A40:    P[k];
        now
          assume 1 <= k+1;
          assume
A41:      k+1 <= len PF1;
          then
A42:      k < len PF1 by NAT_1:13;
          per cases;
          suppose
            k=0;
            hence PF1.(k+1) = PF2.(k+1) by A34,A37;
          end;
          suppose
A43:        k<>0;
            then
A44:        0+1 < k+1 by XREAL_1:6;
            (ex f1,g1 be Function of E,E st f1=PF1.k & g1=A.(F.(k+1)) &
PF1.(k+1)=f1* g1 )& ex f2,g2 be Function of E,E st f2=PF2.k & g2=A.(F.(k+1)) &
            PF2.(k+1) =f2*g2 by A33,A35,A38,A42,A43;
            hence PF1.(k+1) = PF2.(k+1) by A40,A41,A44,NAT_1:13;
          end;
        end;
        hence thesis;
      end;
A45:  P[0];
      for k be Nat holds P[k] from NAT_1:sch 2(A45,A39);
      hence IT1=IT2 by A32,A33,A36,FINSEQ_1:14;
    end;
    hence thesis;
  end;
  consistency;
end;

:: ALG I.3.4 Definition 6

definition
  let O be set;
  let G be Group;
  let IT be Action of O, the carrier of G;
  attr IT is distributive means

  for o being Element of O st o in O holds IT.o is Homomorphism of G, G;
end;

definition
  let O be set;
  struct (multMagma) HGrWOpStr over O (# carrier -> set, multF -> BinOp of the
    carrier, action -> Action of O, the carrier #);
end;

registration
  let O be set;
  cluster non empty for HGrWOpStr over O;
  existence
  proof
    set A = the non empty set,m = the BinOp of A,h = the Action of O,A;
    take HGrWOpStr(#A,m,h#);
    thus thesis;
  end;
end;

definition
  let O be set;
  let IT be non empty HGrWOpStr over O;
  attr IT is distributive means
  :Def5:
  for G being Group, a being Action of O,
  the carrier of G st a = the action of IT & the multMagma of G = the multMagma
  of IT holds a is distributive;
end;

Lm1: for O,E being set holds [:O,{id E}:] is Action of O, E
proof
  let O,E be set;
  set h = [:O,{id E}:];
  now
    let x be object;
    assume x in {id E};
    then reconsider f=x as Function of E,E by TARSKI:def 1;
    f in Funcs(E,E) by FUNCT_2:9;
    hence x in Funcs(E,E);
  end;
  then {id E} c= Funcs(E,E);
  then reconsider h as Relation of O,Funcs(E,E) by ZFMISC_1:95;
A1: now
    thus (Funcs(E,E)={} implies O={}) implies O = dom h
    proof
      assume Funcs(E,E)={} implies O={};
      now
        let x be object;
        assume
A2:     x in O;
         reconsider y=id E as object;
        take y;
        y in {id E} by TARSKI:def 1;
        hence [x,y] in h by A2,ZFMISC_1:def 2;
      end;
      hence thesis by RELSET_1:9;
    end;
    assume O = {};
    hence h = {};
  end;
  now
    let x,y1,y2 be object;
    assume that
A3: [x,y1] in h and
A4: [x,y2] in h;
    consider x9,y9 be object such that
    x9 in O and
A5: y9 in {id E} & [x,y1]=[x9,y9] by A3,ZFMISC_1:def 2;
A6: y9=id E & y1=y9 by A5,TARSKI:def 1,XTUPLE_0:1;
    consider x99,y99 be object such that
    x99 in O and
A7: y99 in {id E} and
A8: [x,y2]=[x99,y99] by A4,ZFMISC_1:def 2;
    y99=id E by A7,TARSKI:def 1;
    hence y1 = y2 by A8,A6,XTUPLE_0:1;
  end;
  then reconsider h as PartFunc of O,Funcs(E,E) by FUNCT_1:def 1;
  h is Action of O, E by A1,FUNCT_2:def 1;
  hence thesis;
end;

Lm2: for O being set, G being strict Group holds ex H being non empty
HGrWOpStr over O st H is strict distributive Group-like associative & G = the
multMagma of H
proof
  let O be set;
  let G be strict Group;
  reconsider h=[:O,{id the carrier of G}:] as Action of O, the carrier of G by
Lm1;
  set A = the carrier of G;
  set m = the multF of G;
  set GO = HGrWOpStr(#A,m,h#);
  reconsider GO as non empty HGrWOpStr over O;
  reconsider G9=GO as non empty multMagma;
A1: now
    set e=1_G;
    reconsider e9=e as Element of G9;
    take e9;
    let h9 be Element of G9;
    reconsider h=h9 as Element of G;
    set g=h";
    reconsider g9=g as Element of G9;
    h9*e9 = h*e .= h by GROUP_1:def 4;
    hence h9 * e9 = h9;
    e9*h9 = e*h .= h by GROUP_1:def 4;
    hence e9 * h9 = h9;
    take g9;
    h9*g9 = h*g .= 1_G by GROUP_1:def 5;
    hence h9 * g9 = e9;
    g9*h9 = g*h .= 1_G by GROUP_1:def 5;
    hence g9 * h9 = e9;
  end;
  take GO;
A2: now
    let G99 be Group;
    let a be Action of O, the carrier of G99;
    assume
A3: a = the action of GO;
    assume
A4: the multMagma of G99 = the multMagma of GO;
    now
      let o be Element of O;
      assume o in O;
      then o in dom h by FUNCT_2:def 1;
      then [o,h.o] in [:O,{id the carrier of G99}:] by A4,FUNCT_1:1;
      then consider x,y be object such that
      x in O and
A5:   y in {id the carrier of G99} & [o,h.o]=[x,y] by ZFMISC_1:def 2;
      y = id the carrier of G99 & h.o = y by A5,TARSKI:def 1,XTUPLE_0:1;
      hence a.o is Homomorphism of G99, G99 by A3,GROUP_6:38;
    end;
    hence a is distributive;
  end;
  now
    let x9,y9,z9 be Element of G9;
    reconsider x=x9,y=y9,z=z9 as Element of G;
    (x9*y9)*z9 = (x*y)*z .= x*(y*z) by GROUP_1:def 3;
    hence (x9*y9)*z9 = x9*(y9*z9);
  end;
  hence thesis by A1,A2,GROUP_1:def 2,def 3;
end;

registration
  let O be set;
  cluster strict distributive Group-like associative for
non empty HGrWOpStr over
    O;
  existence
  proof
    set G = the strict Group;
    consider H be non empty HGrWOpStr over O such that
A1: H is strict distributive Group-like associative and
    the multMagma of H = G by Lm2;
    take H;
    thus thesis by A1;
  end;
end;

:: ALG I.4.2 Definition 2

definition
  let O be set;
  mode GroupWithOperators of O is distributive Group-like associative non
    empty HGrWOpStr over O;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let o be Element of O;
  func G^o -> Homomorphism of G, G equals
  :Def6:
  (the action of G).o if o in O
  otherwise id the carrier of G;
  correctness
  proof
    now
      assume
A1:   o in O;
      consider G9 be Group such that
A2:   the multMagma of G9 = the multMagma of G;
      reconsider a=the action of G as Action of O, the carrier of G9 by A2;
      a is distributive by A2,Def5;
      then reconsider f9=a.o as Homomorphism of G9, G9 by A1;
      reconsider f=f9 as Function of G, G by A2;
      now
        let g1, g2 be Element of G;
        reconsider g19=g1,g29=g2 as Element of G9 by A2;
        f.(g1 * g2) = f9.(g19 * g29) by A2
          .= f9.g19 * f9.g29 by GROUP_6:def 6
          .= (the multF of G).(f.g1,f.g2) by A2;
        hence f.(g1 * g2) = f.g1 * f.g2;
      end;
      hence (the action of G).o is Homomorphism of G,G by GROUP_6:def 6;
    end;
    hence thesis by GROUP_6:38;
  end;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  mode StableSubgroup of G -> distributive Group-like associative non empty
    HGrWOpStr over O means
    :Def7:
    it is Subgroup of G & for o being Element of O
    holds it^o = (G^o)|the carrier of it;
  correctness
  proof
    set H=G;
    take H;
    thus thesis by GROUP_2:54;
  end;
end;

Lm3: for O being set, G being GroupWithOperators of O holds the HGrWOpStr of G
is StableSubgroup of G
proof
  let O be set;
  let G be GroupWithOperators of O;
  reconsider G9 = the HGrWOpStr of G as non empty multMagma;
A1: now
    set e=1_G;
    reconsider e9=e as Element of G9;
    take e9;
    let h9 be Element of G9;
    reconsider h=h9 as Element of G;
    set g=h";
    reconsider g9=g as Element of G9;
    h9*e9 = h*e .= h by GROUP_1:def 4;
    hence h9 * e9 = h9;
    e9*h9 = e*h .= h by GROUP_1:def 4;
    hence e9 * h9 = h9;
    take g9;
    h9*g9 = h*g .= 1_G by GROUP_1:def 5;
    hence h9 * g9 = e9;
    g9*h9 = g*h .= 1_G by GROUP_1:def 5;
    hence g9 * h9 = e9;
  end;
  now
    let x9,y9,z9 be Element of G9;
    reconsider x=x9,y=y9,z=z9 as Element of G;
    (x9*y9)*z9 = (x*y)*z .= x*(y*z) by GROUP_1:def 3;
    hence (x9*y9)*z9 = x9*(y9*z9);
  end;
  then reconsider
  G9 as strict Group-like associative non empty HGrWOpStr over O
  by A1,GROUP_1:def 2,def 3;
  for G being Group, a being Action of O, the carrier of G st a = the
action of G9 & the multMagma of G = the multMagma of G9 holds a is distributive
  by Def5;
  then reconsider
  G9 as distributive Group-like associative non empty HGrWOpStr
  over O by Def5;
A2: now
    let o be Element of O;
A3: now
      per cases;
      suppose
A4:     o in O;
        then G9^o=(the action of G9).o by Def6;
        hence G9^o = G^o by A4,Def6;
      end;
      suppose
A5:     not o in O;
        then G9^o = id the carrier of G9 by Def6;
        hence G9^o = G^o by A5,Def6;
      end;
    end;
    thus G9^o = (G^o)|the carrier of G9 by A3;
  end;
  the multF of G9 = (the multF of G)||the carrier of G9;
  then G9 is Subgroup of G by GROUP_2:def 5;
  hence thesis by A2,Def7;
end;

registration
  let O be set;
  let G be GroupWithOperators of O;
  cluster strict for StableSubgroup of G;
  correctness
  proof
    reconsider G9 = the HGrWOpStr of G as StableSubgroup of G by Lm3;
    take G9;
    thus thesis;
  end;
end;

:: like GROUP_2:68

Lm4: for O being set, G being GroupWithOperators of O, H1,H2 being strict
StableSubgroup of G st the carrier of H1 = the carrier of H2 holds H1=H2
proof
  let O be set;
  let G be GroupWithOperators of O;
  let H1,H2 be strict StableSubgroup of G;
  reconsider H19=H1,H29=H2 as Subgroup of G by Def7;
A1: dom the action of H2 = O by FUNCT_2:def 1
    .= dom the action of H1 by FUNCT_2:def 1;
  assume
A2: the carrier of H1 = the carrier of H2;
A3: now
    let x be object;
    assume
A4: x in dom the action of H2;
    then reconsider o=x as Element of O;
A5: H1^o = (the action of H1).o by A4,Def6;
    H1^o = (G^o)|the carrier of H2 by A2,Def7
      .= H2^o by Def7;
    hence (the action of H1).x = (the action of H2).x by A4,A5,Def6;
  end;
  the multMagma of H19 = the multMagma of H29 by A2,GROUP_2:59;
  hence thesis by A1,A3,FUNCT_1:2;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  func (1).G -> strict StableSubgroup of G means
  :Def8:
  the carrier of it = { 1_G};
  existence
  proof
    set G9=(1).G;
    consider H be non empty HGrWOpStr over O such that
A1: H is strict distributive Group-like associative and
A2: G9 = the multMagma of H by Lm2;
    reconsider H as strict GroupWithOperators of O by A1;
A3: the carrier of H c= the carrier of G by A2,GROUP_2:def 5;
    the multF of H = (the multF of G)||the carrier of H by A2,GROUP_2:def 5;
    then
A4: H is Subgroup of G by A3,GROUP_2:def 5;
    now
      let o be Element of O;
      reconsider f9=H^o,f=(G^o)|the carrier of H as Function;
A5:   dom f = dom((G^o)*(id the carrier of H)) by RELAT_1:65
        .= dom(G^o) /\ the carrier of H by FUNCT_1:19
        .= (the carrier of G) /\ the carrier of H by FUNCT_2:def 1
        .= the carrier of (1).G by A2,A3,XBOOLE_1:28;
A6:   now
        let x be object;
        assume
A7:     x in dom f;
        then
A8:     x in dom id the carrier of H by A2,A5;
        x in {1_G} by A5,A7,GROUP_2:def 7;
        then
A9:     x = 1_G by TARSKI:def 1;
        then x = 1_H by A4,GROUP_2:44;
        then
A10:    f9.x = 1_H by GROUP_6:31;
        f.x = ((G^o)*(id the carrier of H)).x by RELAT_1:65
          .= (G^o).((id the carrier of H).x) by A8,FUNCT_1:13
          .= (G^o).x by A2,A5,A7,FUNCT_1:18
          .= 1_G by A9,GROUP_6:31;
        hence f.x = f9.x by A4,A10,GROUP_2:44;
      end;
      dom f9= the carrier of (1).G by A2,FUNCT_2:def 1;
      hence H^o = (G^o)|the carrier of H by A5,A6,FUNCT_1:2;
    end;
    then reconsider H as strict StableSubgroup of G by A4,Def7;
    take H;
    thus thesis by A2,GROUP_2:def 7;
  end;
  uniqueness by Lm4;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  func (Omega).G -> strict StableSubgroup of G equals
  the HGrWOpStr of G;
  correctness by Lm3;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let IT be StableSubgroup of G;
  attr IT is normal means
  :Def10:
  for H being strict Subgroup of G st H = the
  multMagma of IT holds H is normal;
end;

registration
  let O be set;
  let G be GroupWithOperators of O;
  cluster strict normal for StableSubgroup of G;
  existence
  proof
    set H=(1).G;
    set H9=H;
    reconsider H as StableSubgroup of G;
    take H9;
    now
      reconsider G9=G as Group;
      let H99 be strict Subgroup of G;
      assume
A1:   H99 = the multMagma of H;
A2:   the multF of (1).G9 = (the multF of G9)||the carrier of (1).G9 by
GROUP_2:def 5;
      the carrier of (1).G9 = {1_G9} by GROUP_2:def 7
        .= the carrier of (1).G by Def8;
      hence H99 is normal by A1,A2,GROUP_2:def 5;
    end;
    hence thesis;
  end;
end;

registration
  let O be set;
  let G be GroupWithOperators of O;
  let H be StableSubgroup of G;
  cluster normal for StableSubgroup of H;
  existence
  proof
    reconsider H9=(1).H as GroupWithOperators of O;
    reconsider H9 as StableSubgroup of H;
    take H9;
    now
      let H99 be strict Subgroup of H;
      reconsider H as Group;
      assume the multMagma of H9 = H99;
      then the carrier of H99 = {1_H} by Def8;
      then H99 = (1).H by GROUP_2:def 7;
      hence H99 is normal;
    end;
    hence thesis;
  end;
end;

registration
  let O be set;
  let G be GroupWithOperators of O;
  cluster (1).G -> normal;
  correctness
  proof
    now
      reconsider G9=G as Group;
      let H be strict Subgroup of G;
      reconsider H9=H as strict Subgroup of G9;
      assume H = the multMagma of (1).G;
      then the carrier of H = {1_G} by Def8;
      then H9 = (1).G9 by GROUP_2:def 7;
      hence H is normal;
    end;
    hence thesis;
  end;
  cluster (Omega).G -> normal;
  correctness
  proof
    now
      reconsider G9=G as Group;
      let H be strict Subgroup of G;
      reconsider H9=H as strict Subgroup of G9;
      assume H = the multMagma of (Omega).G;
      then H9 = (Omega).G9;
      hence H is normal;
    end;
    hence thesis;
  end;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  func the_stable_subgroups_of G -> set means
  :Def11:
  for x being object holds x in it iff x is strict StableSubgroup of G;
  existence
  proof
    defpred P[object,object] means
     ex H being strict StableSubgroup of G st $2 = H & $1 = the carrier of H;
    defpred P[set] means
     ex H being strict StableSubgroup of G st $1 = the carrier of H;
    consider B being set such that
A1: for x being set holds x in B iff x in bool the carrier of G & P[x]
    from XFAMILY:sch 1;
A2: for x,y1,y2 being object st P[x,y1] & P[x,y2] holds y1 = y2 by Lm4;
    consider f being Function such that
A3: for x,y being object holds [x,y] in f iff x in B & P[x,y] from
    FUNCT_1:sch 1(A2);
    for x being object holds x in B iff ex y being object st [x,y] in f
    proof
      let x be object;
      thus x in B implies ex y being object st [x,y] in f
      proof
        assume
A4:     x in B;
        then consider H being strict StableSubgroup of G such that
A5:     x = the carrier of H by A1;
        reconsider y = H as object;
        take y;
        thus thesis by A3,A4,A5;
      end;
      given y be object such that
A6:   [x,y] in f;
      thus thesis by A3,A6;
    end;
    then
A7: B = dom f by XTUPLE_0:def 12;
    for y being object holds y in rng f iff y is strict StableSubgroup of G
    proof
      let y be object;
      thus y in rng f implies y is strict StableSubgroup of G
      proof
        assume y in rng f;
        then consider x be object such that
A8:     x in dom f & y = f.x by FUNCT_1:def 3;
        [x,y] in f by A8,FUNCT_1:def 2;
        then ex H being strict StableSubgroup of G st y = H & x = the carrier
        of H by A3;
        hence thesis;
      end;
      assume y is strict StableSubgroup of G;
      then reconsider H = y as strict StableSubgroup of G;
      reconsider x = the carrier of H as set;
A9:   y is set by TARSKI:1;
      H is Subgroup of G by Def7;
      then the carrier of H c= the carrier of G by GROUP_2:def 5;
      then
A10:   x in dom f by A1,A7;
      then [x,y] in f by A3,A7;
      then y = f.x by A10,A9,FUNCT_1:def 2;
      hence thesis by A10,FUNCT_1:def 3;
    end;
    hence thesis;
  end;
  uniqueness
  proof
    defpred P[object] means $1 is strict StableSubgroup of G;
    let A1,A2 be set;
    assume
A11: for x being object holds x in A1 iff P[x];
    assume
A12: for x being object holds x in A2 iff P[x];
    thus thesis from XBOOLE_0:sch 2(A11,A12);
  end;
end;

registration
  let O be set;
  let G be GroupWithOperators of O;
  cluster the_stable_subgroups_of G -> non empty;
  correctness
  proof
    (1).G in the_stable_subgroups_of G by Def11;
    hence thesis;
  end;
end;

definition
  let IT be Group;
  attr IT is simple means

  IT is not trivial & not ex H being strict
  normal Subgroup of IT st H <> (Omega).IT & H <> (1).IT;
end;

Lm5: Group_of_Perm 2 is simple
proof
  set G = Group_of_Perm 2;
A1: now
    let H be strict normal Subgroup of G;
    assume
A2: H <> (Omega).G;
    assume
A3: H <> (1).G;
    1_G in H by GROUP_2:46;
    then 1_G in the carrier of H by STRUCT_0:def 5;
    then {1_G} c= the carrier of H by ZFMISC_1:31;
    then {<*1,2*>} c= the carrier of H by FINSEQ_2:52,MATRIX_1:15;
    then
A4: <*1,2*> in the carrier of H by ZFMISC_1:31;
    the carrier of H c= the carrier of G by GROUP_2:def 5;
    then
A5: the carrier of H c= {<*1,2*>,<*2,1*>} by MATRIX_1:def 17,MATRIX_7:3;
    per cases by A5,ZFMISC_1:36;
    suppose
      the carrier of H = {};
      hence contradiction;
    end;
    suppose
      the carrier of H = {<*1,2*>};
      then {1_G} = the carrier of H by FINSEQ_2:52,MATRIX_1:15;
      hence contradiction by A3,GROUP_2:def 7;
    end;
    suppose
      the carrier of H = {<*2,1*>};
      then <*2,1*>.1 = <*1,2*>.1 by A4,TARSKI:def 1;
      then 2 = <*1,2*>.1;
      hence contradiction;
    end;
    suppose
      the carrier of H = {<*1,2*>,<*2,1*>};
      then the carrier of H = the carrier of G by MATRIX_1:def 17,MATRIX_7:3;
      hence contradiction by A2,GROUP_2:61;
    end;
  end;
  now
    assume G is trivial;
    then consider e be object such that
A6: the carrier of G = {e};
    Permutations 2 = {e} by A6,MATRIX_1:def 17;
    then <*2,1*> = <*1,2*> by MATRIX_7:3,ZFMISC_1:5;
    then 2 = <*1,2*>.1;
    hence contradiction;
  end;
  hence thesis by A1;
end;

registration
  cluster strict simple for Group;
  existence by Lm5;
end;

:: ALG I.4.4 Definition 7

definition
  let O be set;
  let IT be GroupWithOperators of O;
  attr IT is simple means
  :Def13:
  IT is not trivial & not ex H being strict
  normal StableSubgroup of IT st H <> (Omega).IT & H <> (1).IT;
end;

Lm6: for O being set, G being GroupWithOperators of O, N being normal
StableSubgroup of G holds the multMagma of N is strict normal Subgroup of G
proof
  let O be set;
  let G be GroupWithOperators of O;
  let N be normal StableSubgroup of G;
  set H = the multMagma of N;
  reconsider H as non empty multMagma;
  reconsider H as Group-like non empty multMagma;
  N is Subgroup of G by Def7;
  then
  the carrier of H c= the carrier of G & the multF of H = (the multF of G)
  || the carrier of H by GROUP_2:def 5;
  then reconsider H as Subgroup of G by GROUP_2:def 5;
  H is normal by Def10;
  hence thesis;
end;

Lm7: for G1, G2 being Group, A1 being Subset of G1, A2 being Subset of G2, H1
being strict Subgroup of G1, H2 being strict Subgroup of G2 st the multMagma of
G1 = the multMagma of G2 & A1 = A2 & H1 = H2 holds A1 * H1 = A2 * H2 & H1 * A1
= H2 * A2
proof
  let G1, G2 be Group;
  let A1 be Subset of G1;
  let A2 be Subset of G2;
  let H1 be strict Subgroup of G1;
  let H2 be strict Subgroup of G2;
  assume
A1: the multMagma of G1 = the multMagma of G2;
A2: now
    let A1,B1 be Subset of G1;
    let A2,B2 be Subset of G2;
    set X={g*h where g,h is Element of G1: g in A1 & h in B1};
    set Y={g*h where g,h is Element of G2: g in A2 & h in B2};
    assume
A3: A1=A2 & B1=B2;
A4: now
      let x be object;
      assume x in X;
      then consider g,h be Element of G1 such that
A5:   x=g*h & g in A1 & h in B1;
      set h9=h;
      set g9=g;
      reconsider g9,h9 as Element of G2 by A1;
      g*h = g9*h9 by A1;
      hence x in Y by A3,A5;
    end;
    now
      let x be object;
      assume x in Y;
      then consider g,h be Element of G2 such that
A6:   x=g*h & g in A2 & h in B2;
      reconsider g9=g,h9=h as Element of G1 by A1;
      g*h = g9*h9 by A1;
      hence x in X by A3,A6;
    end;
    hence X=Y by A4,TARSKI:2;
  end;
  assume
A7: A1 = A2;
  assume
A8: H1 = H2;
  hence A1 * H1 = A2 * H2 by A7,A2;
  thus thesis by A7,A8,A2;
end;

registration
  let O be set;
  cluster strict simple for GroupWithOperators of O;
  existence
  proof
    set Gp2 = Group_of_Perm 2;
    consider G be non empty HGrWOpStr over O such that
A1: G is strict distributive Group-like associative and
A2: Gp2 = the multMagma of G by Lm2;
    reconsider G as strict GroupWithOperators of O by A1;
    take G;
    now
      assume
A3:   G is not simple;
      per cases by A3;
      suppose
        G is trivial;
        hence contradiction by A2,Lm5;
      end;
      suppose
A4:     ex H being strict normal StableSubgroup of G st H <> (Omega).G
        & H <> (1).G;
        reconsider G9 = G as Group;
        consider H be strict normal StableSubgroup of G such that
A5:     H <> (Omega).G and
A6:     H <> (1).G by A4;
        reconsider H9 = the multMagma of H as strict normal Subgroup of G by
Lm6;
        reconsider H9 as strict normal Subgroup of G9;
        set H99=H9;
        the carrier of H99 c= the carrier of G9 & the multF of H99 = (the
        multF of G9)||the carrier of H99 by GROUP_2:def 5;
        then reconsider H99 as strict Subgroup of Gp2 by A2,GROUP_2:def 5;
        now
          let A be Subset of Gp2;
          reconsider A9=A as Subset of G9 by A2;
          A * H99 = A9 * H9 by A2,Lm7
            .= H9 * A9 by GROUP_3:120;
          hence A * H99 = H99 * A by A2,Lm7;
        end;
        then reconsider H99 as strict normal Subgroup of Gp2 by GROUP_3:120;
A7:     now
          reconsider e = 1_Gp2 as Element of G by A2;
A8:       now
            let h be Element of G;
            reconsider h9=h as Element of Gp2 by A2;
            h * e = h9 * 1_Gp2 by A2
              .= h9 by GROUP_1:def 4;
            hence h * e = h;
            e * h = 1_Gp2 * h9 by A2
              .= h9 by GROUP_1:def 4;
            hence e * h = h;
          end;
          assume H99 = (1).Gp2;
          then the carrier of H99 = {1_Gp2} by GROUP_2:def 7;
          then the carrier of H = {1_G} by A8,GROUP_1:def 4;
          hence contradiction by A6,Def8;
        end;
        H99 <> (Omega).Gp2 by A2,A5,Lm4;
        hence contradiction by A7,Lm5;
      end;
    end;
    hence thesis;
  end;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let N be normal StableSubgroup of G;
  func Cosets N -> set means
  :Def14:
  for H being strict normal Subgroup of G
  st H = the multMagma of N holds it = Cosets H;
  existence
  proof
    reconsider H = the multMagma of N as strict normal Subgroup of G by Lm6;
    set x = Cosets H;
    take x;
    let H be strict normal Subgroup of G;
    assume H = the multMagma of N;
    hence thesis;
  end;
  uniqueness
  proof
    reconsider H = the multMagma of N as strict normal Subgroup of G by Lm6;
    let y1,y2 be set;
    assume for H being strict normal Subgroup of G st H = the multMagma of N
    holds y1 = Cosets H;
    then
A1: y1 = Cosets H;
    assume for H being strict normal Subgroup of G st H = the multMagma of N
    holds y2 = Cosets H;
    hence thesis by A1;
  end;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let N be normal StableSubgroup of G;
  func CosOp N -> BinOp of Cosets N means
  :Def15:
  for H being strict normal
  Subgroup of G st H = the multMagma of N holds it = CosOp H;
  existence
  proof
    reconsider H = the multMagma of N as strict normal Subgroup of G by Lm6;
    Cosets N = Cosets H by Def14;
    then reconsider x = CosOp H as BinOp of Cosets N;
    take x;
    let H be strict normal Subgroup of G;
    assume H = the multMagma of N;
    hence thesis;
  end;
  uniqueness
  proof
    reconsider H = the multMagma of N as strict normal Subgroup of G by Lm6;
    let y1,y2 be BinOp of Cosets N;
    assume for H being strict normal Subgroup of G st H = the multMagma of N
    holds y1 = CosOp H;
    then
A1: y1 = CosOp H;
    assume for H being strict normal Subgroup of G st H = the multMagma of N
    holds y2 = CosOp H;
    hence y1=y2 by A1;
  end;
end;

Lm8: for G being Group, N being normal Subgroup of G, A being Element of
Cosets N, g being Element of G holds g in A iff A = g * N
proof
  let G be Group;
  let N be normal Subgroup of G;
  let A be Element of Cosets N;
  let g be Element of G;
  hereby
    consider a be Element of G such that
A1: A = a * N by GROUP_2:def 15;
    assume g in A;
    then consider h be Element of G such that
A2: g = a*h and
A3: h in N by A1,GROUP_2:103;
    g" * a = h"*a"*a by A2,GROUP_1:17
      .= h"*(a"*a) by GROUP_1:def 3
      .= h"*1_G by GROUP_1:def 5
      .= h" by GROUP_1:def 4;
    then g" * a in N by A3,GROUP_2:51;
    hence A = g * N by A1,GROUP_2:114;
  end;
  g = g * 1_G & 1_G in N by GROUP_1:def 4,GROUP_2:46;
  hence thesis by GROUP_2:103;
end;

Lm9: for O being set, o being Element of O, G being GroupWithOperators of O,
H being StableSubgroup of G, g being Element of G st g in H holds (G^o).g in H
proof
  let O be set;
  let o be Element of O;
  let G be GroupWithOperators of O;
  let H be StableSubgroup of G;
  let g be Element of G;
  set f=G^o;
  assume g in H;
  then
A1: g in the carrier of H by STRUCT_0:def 5;
  then f.g = (f|the carrier of H).g by FUNCT_1:49;
  then
A2: f.g = (H^o).g by Def7;
  (H^o).g in the carrier of H by A1,FUNCT_2:5;
  hence thesis by A2,STRUCT_0:def 5;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let N be normal StableSubgroup of G;
  func CosAc N -> Action of O, Cosets N means
  :Def16:
  for o being Element of O
holds it.o = {[A,B] where A,B is Element of Cosets N: ex g,h being Element of G
  st g in A & h in B & h = (G^o).g} if O is not empty otherwise it=[:{},{id
  Cosets N}:];
  existence
  proof
A1: now
      deffunc F(object) = {[A,B] where A,B is Element of Cosets N:
     for o being
Element of O st $1=o holds ex g,h being Element of G st g in A & h in B & h = (
      G^o).g};
      reconsider H = the multMagma of N as strict normal Subgroup of G by Lm6;
      assume
A2:   O is not empty;
A3:   Cosets N = Cosets H by Def14;
A4:   now
        let x be  object;
        set f=F(x);
A5:     now
          let y be object;
          assume y in f;
          then consider A,B be Element of Cosets N such that
A6:       y = [A,B] and
          for o being Element of O st x=o holds ex g,h being Element of G
          st g in A & h in B & h = (G^o).g;
          reconsider A,B as object;
          take A,B;
          thus y = [A,B] by A6;
        end;
        assume
A7:     x in O;
        now
          reconsider o=x as Element of O by A7;
          let y,y1,y2 be object;
          assume [y,y1] in f;
          then consider A1,B1 be Element of Cosets N such that
A8:       [y,y1] = [A1,B1] and
A9:       for o being Element of O st x=o holds ex g,h being Element
          of G st g in A1 & h in B1 & h = (G^o).g;
          assume [y,y2] in f;
          then consider A2,B2 be Element of Cosets N such that
A10:      [y,y2] = [A2,B2] and
A11:      for o being Element of O st x=o holds ex g,h being Element
          of G st g in A2 & h in B2 & h = (G^o).g;
A12:      y1=B1 by A8,XTUPLE_0:1;
A13:      y2=B2 by A10,XTUPLE_0:1;
A14:      y=A2 by A10,XTUPLE_0:1;
          set f=G^o;
A15:      y=A1 by A8,XTUPLE_0:1;
          consider g1,h1 be Element of G such that
A16:      g1 in A1 and
A17:      h1 in B1 and
A18:      h1 = (G^o).g1 by A9;
          consider g2,h2 be Element of G such that
A19:      g2 in A2 and
A20:      h2 in B2 and
A21:      h2 = (G^o).g2 by A11;
          reconsider A1,A2,B1,B2 as Element of Cosets H by Def14;
A22:      A2 = g2 * H by A19,Lm8;
          A1 = g1 * H by A16,Lm8;
          then g2" * g1 in H by A15,A14,A22,GROUP_2:114;
          then g2" * g1 in the carrier of H by STRUCT_0:def 5;
          then g2" * g1 in N by STRUCT_0:def 5;
          then f.(g2" * g1) in N by Lm9;
          then f.(g2") * f.g1 in N by GROUP_6:def 6;
          then h2" * h1 in N by A18,A21,GROUP_6:32;
          then h2" * h1 in the carrier of N by STRUCT_0:def 5;
          then
A23:      h2" * h1 in H by STRUCT_0:def 5;
A24:      B2 = h2 * H by A20,Lm8;
          B1 = h1 * H by A17,Lm8;
          hence y1 = y2 by A12,A13,A23,A24,GROUP_2:114;
        end;
        then reconsider f as Function by A5,FUNCT_1:def 1,RELAT_1:def 1;
        now
          let y1 be object;
          hereby
            reconsider o=x as Element of O by A7;
            assume
A25:        y1 in Cosets N;
            then reconsider A=y1 as Element of Cosets N;
            y1 in Cosets H by A25,Def14;
            then consider g be Element of G such that
A26:        y1 = g * H and
            y1 = H * g by GROUP_6:13;
            set h = (G^o).g;
            reconsider B = h * H as Element of Cosets N by A3,GROUP_2:def 15;
            reconsider y2=B as object;
            take y2;
            now
              let o be Element of O;
              assume
A27:          x=o;
              take g,h;
              thus g in A by A3,A26,Lm8;
              thus h in B by A3,Lm8;
              thus h = (G^o).g by A27;
            end;
            hence [y1,y2] in f;
          end;
          given y2 be object such that
A28:      [y1,y2] in f;
          consider A,B be Element of Cosets N such that
A29:      [y1,y2] = [A,B] and
          for o being Element of O st x=o holds ex g,h being Element of G
          st g in A & h in B & h = (G^o).g by A28;
          A in Cosets N by A3;
          hence y1 in Cosets N by A29,XTUPLE_0:1;
        end;
        then
A30:    dom f = Cosets N by XTUPLE_0:def 12;
        now
          let y2 be object;
          assume y2 in rng f;
          then consider y1 be object such that
A31:      [y1,y2] in f by XTUPLE_0:def 13;
          consider A,B be Element of Cosets N such that
A32:      [y1,y2] = [A,B] and
          for o being Element of O st x=o holds ex g,h being Element of G
          st g in A & h in B & h = (G^o).g by A31;
          B in Cosets N by A3;
          hence y2 in Cosets N by A32,XTUPLE_0:1;
        end;
        then rng f c= Cosets N;
        hence F(x) in Funcs(Cosets N,Cosets N) by A30,FUNCT_2:def 2;
      end;
      ex f being Function of O,Funcs(Cosets N,Cosets N) st for x being
      object st x in O holds f.x = F(x) from FUNCT_2:sch 2(A4);
      then consider IT be Function of O,Funcs(Cosets N,Cosets N) such that
A33:  for x being object st x in O holds IT.x = F(x);
      reconsider IT as Action of O, Cosets N;
      take IT;
      let o be Element of O;
      reconsider x=o as set;
      set X = {[A,B] where A,B is Element of Cosets N: for o being Element of
O st x=o holds ex g,h being Element of G st g in A & h in B & h = (G^o).g};
      set Y = {[A,B] where A,B is Element of Cosets N: ex g,h being Element of
      G st g in A & h in B & h = (G^o).g};
A34:  now
        let y be object;
        hereby
          assume y in X;
          then consider A,B be Element of Cosets N such that
A35:      y = [A,B] and
A36:      for o being Element of O st x=o holds ex g,h being Element
          of G st g in A & h in B & h = (G^o).g;
          ex g,h being Element of G st g in A & h in B & h = (G^o).g by A36;
          hence y in Y by A35;
        end;
        assume y in Y;
        then consider A,B be Element of Cosets N such that
A37:    y = [A,B] and
A38:    ex g,h being Element of G st g in A & h in B & h = (G^o).g;
        for o being Element of O st x=o holds ex g,h being Element of G
        st g in A & h in B & h = (G^o).g by A38;
        hence y in X by A37;
      end;
      IT.o = X by A2,A33;
      hence IT.o = Y by A34,TARSKI:2;
    end;
    now
      assume O is empty;
      then reconsider IT=[:{},{id Cosets N}:] as Action of O, Cosets N by Lm1;
      take IT;
      thus IT=[:{},{id Cosets N}:];
    end;
    hence thesis by A1;
  end;
  uniqueness
  proof
    now
      assume O is not empty;
      let IT1,IT2 be Action of O, Cosets N;
      assume
A39:  for o being Element of O holds IT1.o = {[A,B] where A,B is
Element of Cosets N: ex g,h being Element of G st g in A & h in B & h = (G^o).g
      };
      assume
A40:  for o being Element of O holds IT2.o = {[A,B] where A,B is
Element of Cosets N: ex g,h being Element of G st g in A & h in B & h = (G^o).g
      };
A41:  now
        let x be object;
        assume x in dom IT1;
        then reconsider o=x as Element of O;
        IT1.o = {[A,B] where A,B is Element of Cosets N: ex g,h being
        Element of G st g in A & h in B & h = (G^o).g} by A39;
        hence IT1.x=IT2.x by A40;
      end;
      dom IT1 = O & dom IT2 = O by FUNCT_2:def 1;
      hence IT1=IT2 by A41;
    end;
    hence thesis;
  end;
  correctness;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let N be normal StableSubgroup of G;
  func G./.N -> HGrWOpStr over O equals
  HGrWOpStr (# Cosets N, CosOp N, CosAc
    N #);
  correctness;
end;

registration
  let O be set;
  let G be GroupWithOperators of O;
  let N be normal StableSubgroup of G;
  cluster G./.N -> non empty;
  correctness
  proof
    reconsider H = the multMagma of N as strict normal Subgroup of G by Lm6;
    Cosets N = Cosets H by Def14;
    hence thesis;
  end;
  cluster G./.N -> distributive Group-like associative;
  correctness
  proof
    reconsider H = the multMagma of N as strict normal Subgroup of G by Lm6;
    set G9 = the multMagma of G./.N;
A1: now
      set e9=1_(G./.H);
      reconsider e=e9 as Element of G./.N by Def14;
      take e;
      let h be Element of G./.N;
      reconsider h9=h as Element of G./.H by Def14;
      set g=h9";
      set g9=g;
      h*e = h9*e9 by Def15
        .= h9 by GROUP_1:def 4;
      hence h * e = h;
      e*h = e9*h9 by Def15
        .= h9 by GROUP_1:def 4;
      hence e * h = h;
      reconsider g as Element of G./.N by Def14;
      take g;
      h*g = h9*g9 by Def15
        .= 1_(G./.H) by GROUP_1:def 5;
      hence h * g = e;
      g*h = g9*h9 by Def15
        .= 1_(G./.H) by GROUP_1:def 5;
      hence g * h = e;
    end;
A2: now
      let G9 be Group;
      let a be Action of O, the carrier of G9;
      assume
A3:   a = the action of G./.N;
      assume
A4:   the multMagma of G9 = the multMagma of G./.N;
      now
        let o be Element of O;
        assume
A5:     o in O;
        then
A6:     a.o = {[A,B] where A,B is Element of Cosets N: ex g,h being
        Element of G st g in A & h in B & h = (G^o).g} by A3,Def16;
        a.o in Funcs(Cosets N, Cosets N) by A3,A5,FUNCT_2:5;
        then consider f be Function such that
A7:     a.o = f and
A8:     dom f = Cosets N and
A9:     rng f c= Cosets N by FUNCT_2:def 2;
        reconsider f as Function of the carrier of G9,the carrier of G9 by A4
,A8,A9,FUNCT_2:2;
        now
          let A1,A2 be Element of G9;
          set A3=A1*A2;
          set B1=f.A1,B2=f.A2,B3=f.A3;
          [A1,B1] in f by A4,A8,FUNCT_1:1;
          then consider A19,B19 be Element of Cosets N such that
A10:      [A1,B1] = [A19,B19] and
A11:      ex g1,h1 being Element of G st g1 in A19 & h1 in B19 & h1 =
          (G^o). g1 by A6,A7;
          [A2,B2] in f by A4,A8,FUNCT_1:1;
          then consider A29,B29 be Element of Cosets N such that
A12:      [A2,B2] = [A29,B29] and
A13:      ex g2,h2 being Element of G st g2 in A29 & h2 in B29 & h2 =
          (G^o). g2 by A6,A7;
          [A3,B3] in f by A4,A8,FUNCT_1:1;
          then consider A39,B39 be Element of Cosets N such that
A14:      [A3,B3] = [A39,B39] and
A15:      ex g3,h3 being Element of G st g3 in A39 & h3 in B39 & h3 =
          (G^o). g3 by A6,A7;
          consider g3,h3 be Element of G such that
A16:      g3 in A39 and
A17:      h3 in B39 and
A18:      h3 = (G^o).g3 by A15;
          consider g2,h2 be Element of G such that
A19:      g2 in A29 and
A20:      h2 in B29 and
A21:      h2 = (G^o).g2 by A13;
          consider g1,h1 be Element of G such that
A22:      g1 in A19 and
A23:      h1 in B19 and
A24:      h1 = (G^o).g1 by A11;
A25:      @((nat_hom H).g1)=(nat_hom H).g1 & @((nat_hom H).g2)=(nat_hom H ).g2;
A26:      (nat_hom H).g1=g1*H & (nat_hom H).g2=g2*H by GROUP_6:def 8;
          reconsider A19,A29,A39,B19,B29,B39 as Element of Cosets H by Def14;
A27:      A29 = g2 * H by A19,Lm8;
A28:      A39 = g3 * H by A16,Lm8;
A29:      B29 = h2 * H by A20,Lm8;
          reconsider A19,A29,B19,B29 as Element of G./.H;
          A2=g2 * H by A12,A27,XTUPLE_0:1;
          then A1*A2 = (the multF of G9).(A19,A29) by A10,A27,XTUPLE_0:1
            .= @(A19*A29) by A4,Def15
            .= @A19 * @A29 by GROUP_6:20;
          then A1*A2 = (g1 * H)*(g2 * H) by A22,A27,Lm8
            .= ((nat_hom H).g1)*((nat_hom H).g2) by A25,A26,GROUP_6:19
            .= (nat_hom H).(g1*g2) by GROUP_6:def 6
            .= (g1*g2) * H by GROUP_6:def 8;
          then g3 * H = (g1*g2) * H by A14,A28,XTUPLE_0:1;
          then g3" * (g1*g2) in H by GROUP_2:114;
          then g3" * (g1*g2) in the carrier of H by STRUCT_0:def 5;
          then g3" * (g1*g2) in N by STRUCT_0:def 5;
          then (G^o).(g3" * (g1*g2)) in N by Lm9;
          then (G^o).(g3") * ((G^o).(g1*g2)) in N by GROUP_6:def 6;
          then (G^o).(g3") * (((G^o).g1)*(G^o).g2) in N by GROUP_6:def 6;
          then h3" * (h1*h2) in N by A24,A21,A18,GROUP_6:32;
          then h3" * (h1*h2) in the carrier of N by STRUCT_0:def 5;
          then
A30:      h3" * (h1*h2) in H by STRUCT_0:def 5;
A31:      (nat_hom H).h1=h1*H & (nat_hom H).h2=h2*H by GROUP_6:def 8;
          B39 = h3 * H by A17,Lm8;
          then
A32:      B3=h3 * H by A14,XTUPLE_0:1;
A33:      @((nat_hom H).h1)=(nat_hom H).h1 & @((nat_hom H).h2)=(nat_hom H ).h2;
          B2=h2 * H by A12,A29,XTUPLE_0:1;
          then B1*B2 = (the multF of G9).(B19,B29) by A10,A29,XTUPLE_0:1
            .= @(B19*B29) by A4,Def15
            .= @B19 * @B29 by GROUP_6:20;
          then B1*B2 = (h1 * H)*(h2 * H) by A23,A29,Lm8
            .= ((nat_hom H).h1)*((nat_hom H).h2) by A33,A31,GROUP_6:19
            .= (nat_hom H).(h1*h2) by GROUP_6:def 6
            .= (h1*h2) * H by GROUP_6:def 8;
          hence f.A3 = f.A1 * f.A2 by A32,A30,GROUP_2:114;
        end;
        hence a.o is Homomorphism of G9,G9 by A7,GROUP_6:def 6;
      end;
      hence a is distributive;
    end;
    the carrier of G./.N = the carrier of G./.H by Def14;
    then
A34: G9 is Group-like associative by Def15;
    now
      let x,y,z be Element of G./.N;
      reconsider x9=x,y9=y,z9=z as Element of G9;
      (x9*y9)*z9 = (x*y)*z & x9*(y9*z9) = x*(y*z);
      hence (x*y)*z = x*(y*z) by A34,GROUP_1:def 3;
    end;
    hence thesis by A1,A2,GROUP_1:def 2,def 3;
  end;
end;

:: ALG I.4.2 Definition 3

definition
  let O be set;
  let G,H be GroupWithOperators of O;
  let f be Function of G, H;
  attr f is homomorphic means
  :Def18:
  for o being Element of O, g being
  Element of G holds f.((G^o).g) = (H^o).(f.g);
end;

registration
  let O be set;
  let G,H be GroupWithOperators of O;
  cluster multiplicative homomorphic for Function of G, H;
  existence
  proof
    take f = 1:(G,H);
    thus f is multiplicative;
    let o be Element of O;
    let g be Element of G;
    (H^o).(f.g) = (H^o).(1_H) by FUNCOP_1:7
      .= 1_H by GROUP_6:31;
    hence thesis by FUNCOP_1:7;
  end;
end;

definition
  let O be set;
  let G,H be GroupWithOperators of O;
  mode Homomorphism of G, H is multiplicative homomorphic Function of G, H;
end;

:: like GROUP_6:48

Lm10: for O being set, G,H,I being GroupWithOperators of O, h being
Homomorphism of G, H for h1 being Homomorphism of H, I holds h1 * h is
Homomorphism of G,I
proof
  let O be set;
  let G,H,I be GroupWithOperators of O;
  let h be Homomorphism of G, H;
  let h1 be Homomorphism of H, I;
  reconsider f = h1 * h as Function of G, I;
  now
    let o be Element of O;
    let g be Element of G;
    thus f.((G^o).g) = h1.(h.((G^o).g)) by FUNCT_2:15
      .= h1.((H^o).(h.g)) by Def18
      .= (I^o).(h1.(h.g)) by Def18
      .= (I^o).(f.g) by FUNCT_2:15;
  end;
  hence thesis by Def18;
end;

definition
  let O be set;
  let G,H,I be GroupWithOperators of O;
  let h be Homomorphism of G, H;
  let h1 be Homomorphism of H, I;
  redefine func h1 * h -> Homomorphism of G,I;  :: redefines * (FUNCT_1, synonym) → * (RELAT_1, synonym) → (#) (RELAT_1, definition)
  correctness by Lm10;
end;

definition

  let O be set;
  let G,H be GroupWithOperators of O;
  pred G,H are_isomorphic means

  ex h being Homomorphism of G,H st h is bijective;
  reflexivity
  proof
    let G be GroupWithOperators of O;
    reconsider G9=G as Group;
    set h = id the carrier of G9;
    for o be Element of O, g be Element of G holds h.((G^o).g) = (G^o).(h.g);
    then reconsider h as Homomorphism of G, G by Def18,GROUP_6:38;
    take h;
    h is onto;
    hence thesis;
  end;
end;

:: like GROUP_6:77

Lm11: for O being set, G,H being GroupWithOperators of O holds G,H
are_isomorphic implies H,G are_isomorphic
proof
  let O be set;
  let G,H be GroupWithOperators of O;
  assume G,H are_isomorphic;
  then consider f be Homomorphism of G,H such that
A1: f is bijective;
  set f9 = f";
A2: rng f = the carrier of H by A1,FUNCT_2:def 3;
  then
A3: dom f9 = the carrier of H by A1,FUNCT_1:33;
A4: dom f = the carrier of G by FUNCT_2:def 1;
  then
A5: rng f9 = the carrier of G by A1,FUNCT_1:33;
  then reconsider f9 as Function of H,G by A3,FUNCT_2:1;
A6: now
    let o be Element of O;
    let h be Element of H;
    set g=f9.h;
    thus f9.((H^o).h) = f9.((H^o).(f.g)) by A1,A2,FUNCT_1:35
      .= f9.(f.((G^o).g)) by Def18
      .= (G^o).(f9.h) by A1,A4,FUNCT_1:34;
  end;
  now
    let h1,h2 be Element of H;
    set g1=f9.h1;
    set g2=f9.h2;
    f.g1=h1 & f.g2=h2 by A1,A2,FUNCT_1:35;
    hence f9.(h1*h2) = f9.(f.(g1*g2)) by GROUP_6:def 6
      .= f9.h1 * f9.h2 by A1,A4,FUNCT_1:34;
  end;
  then reconsider f9 as Homomorphism of H,G by A6,Def18,GROUP_6:def 6;
  take f9;
  f9 is onto by A5;
  hence thesis by A1;
end;

definition
  let O be set, G,H be GroupWithOperators of O;
  redefine pred G,H are_isomorphic;  :: redefines are_isomorphic (GROUP_9, definition)
  symmetry by Lm11;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let N be normal StableSubgroup of G;
  func nat_hom N -> Homomorphism of G, G./.N means
  :Def20:
  for H being strict
  normal Subgroup of G st H = the multMagma of N holds it = nat_hom H;
  existence
  proof
    set H = the multMagma of N;
    reconsider H as strict normal Subgroup of G by Lm6;
    set IT = nat_hom H;
    reconsider K = G./.N as GroupWithOperators of O;
    reconsider IT9 = IT as Function of G, K by Def14;
A1: now
      let a, b be Element of G;
      IT9.(a * b) = IT.a * IT.b by GROUP_6:def 6
        .= IT9.a * IT9.b by Def15;
      hence IT9.(a * b) = IT9.a * IT9.b;
    end;
    now
      let o be Element of O;
      let g be Element of G;
      per cases;
      suppose
A2:     O<>{};
        then (the action of K).o in Funcs(the carrier of K, the carrier of K)
        by FUNCT_2:5;
        then consider f be Function such that
A3:     f=(the action of K).o and
A4:     dom f = the carrier of K and
        rng f c= the carrier of K by FUNCT_2:def 2;
A5:     f = {[A,B] where A,B is Element of Cosets N: ex g,h being Element
        of G st g in A & h in B & h = (G^o).g} by A2,A3,Def16;
        [IT9.g, f.(IT9.g)] in f by A4,FUNCT_1:def 2;
        then consider A,B be Element of Cosets N such that
A6:     [IT9.g, f.(IT9.g)] = [A,B] and
A7:     ex g,h being Element of G st g in A & h in B & h = (G^o).g by A5;
A8:     IT9.g = A by A6,XTUPLE_0:1;
        consider g9,h9 be Element of G such that
A9:     g9 in A and
A10:    h9 in B & h9 = (G^o).g9 by A7;
A11:    (G^o).(g9" * g) = (G^o).(g9") * (G^o).g by GROUP_6:def 6
          .= ((G^o).g9)" * (G^o).g by GROUP_6:32;
        reconsider A,B as Element of Cosets H by Def14;
        A = g9 * H by A9,Lm8;
        then g * H = g9 * H by A8,GROUP_6:def 8;
        then g9" * g in H by GROUP_2:114;
        then g9" * g in the carrier of N by STRUCT_0:def 5;
        then g9" * g in N by STRUCT_0:def 5;
        then (G^o).(g9" * g) in N by Lm9;
        then (G^o).(g9" * g) in the carrier of N by STRUCT_0:def 5;
        then
A12:    (G^o).(g9" * g) in H by STRUCT_0:def 5;
A13:    (K^o).(IT9.g) = f.(IT9.g) by A2,A3,Def6;
        IT9.((G^o).g) = ((G^o).g) * H by GROUP_6:def 8
          .= ((G^o).g9) * H by A12,A11,GROUP_2:114
          .= B by A10,Lm8;
        hence IT9.((G^o).g) = (K^o).(IT9.g) by A13,A6,XTUPLE_0:1;
      end;
      suppose
A14:    O={};
        then G^o = id the carrier of G by Def6;
        then
A15:    (G^o).g = g;
        K^o = id the carrier of K by A14,Def6;
        hence IT9.((G^o).g) = (K^o).(IT9.g) by A15;
      end;
    end;
    then reconsider IT9 as Homomorphism of G, K by A1,Def18,GROUP_6:def 6;
    reconsider IT9 as Homomorphism of G, G./.N;
    take IT9;
    let H be strict normal Subgroup of G;
    assume H = the multMagma of N;
    hence thesis;
  end;
  uniqueness
  proof
    reconsider H = the multMagma of N as strict normal Subgroup of G by Lm6;
    let IT1,IT2 be Homomorphism of G, G./.N;
    assume for H being strict normal Subgroup of G st H = the multMagma of N
    holds IT1 = nat_hom H;
    then
A16: IT1 = nat_hom H;
    assume for H being strict normal Subgroup of G st H = the multMagma of N
    holds IT2 = nat_hom H;
    hence thesis by A16;
  end;
end;

:: like GROUP_6:40

Lm12: for O being set, G,H being GroupWithOperators of O, g being Homomorphism
of G,H holds g.(1_G)=1_H
proof
  let O be set;
  let G,H be GroupWithOperators of O;
  let g be Homomorphism of G,H;
  g.(1_G) = g.(1_G * 1_G) by GROUP_1:def 4
    .= g.(1_G) * g.(1_G) by GROUP_6:def 6;
  hence thesis by GROUP_1:7;
end;

:: like GROUP_6:41

Lm13: for O being set, G,H being GroupWithOperators of O, a being Element of G
, g being Homomorphism of G,H holds g.(a")=(g.a)"
proof
  let O be set;
  let G,H be GroupWithOperators of O;
  let a be Element of G;
  let g be Homomorphism of G,H;
  g.(a") * g.a = g.(a" * a) by GROUP_6:def 6
    .= g.(1_G) by GROUP_1:def 5
    .= 1_H by Lm12;
  hence thesis by GROUP_1:12;
end;

:: like GROUP_2:61

Lm14: for O being set, G being GroupWithOperators of O, A being Subset of G st
A <> {} & (for g1,g2 being Element of G st g1 in A & g2 in A holds g1 * g2 in A
) & (for g being Element of G st g in A holds g" in A) & (for o being Element
of O, g being Element of G st g in A holds (G^o).g in A) holds ex H being
strict StableSubgroup of G st the carrier of H = A
proof
  let O be set;
  let G be GroupWithOperators of O;
  let A be Subset of G;
  assume
A1: A <> {};
  assume
A2: for g1,g2 being Element of G st g1 in A & g2 in A holds g1 * g2 in A;
  assume for g being Element of G st g in A holds g" in A;
  then consider H9 be strict Subgroup of G such that
A3: the carrier of H9 = A by A1,A2,GROUP_2:52;
  set m9 = the multF of H9;
  set A9 = the carrier of H9;
  assume
A4: for o being Element of O, g being Element of G st g in A holds (G^o)
  .g in A;
A5: now
    let H be non empty HGrWOpStr over O;
    let a9 be Action of O,A9;
    assume
A6: H = HGrWOpStr (#A9,m9,a9#);
    now
      let x,y,z be Element of H;
      reconsider x9=x,y9=y,z9=z as Element of H9 by A6;
      (x*y)*z = (x9*y9)*z9 by A6
        .= x9*(y9*z9) by GROUP_1:def 3;
      hence (x*y)*z = x*(y*z) by A6;
    end;
    hence H is associative by GROUP_1:def 3;
    now
      set e9=1_H9;
      reconsider e=e9 as Element of H by A6;
      take e;
      let h be Element of H;
      reconsider h9=h as Element of H9 by A6;
      set g9=h9";
      h*e = h9*e9 by A6
        .= h9 by GROUP_1:def 4;
      hence h * e = h;
      e*h = e9*h9 by A6
        .= h9 by GROUP_1:def 4;
      hence e * h = h;
      reconsider g=g9 as Element of H by A6;
      take g;
      h*g = h9*g9 by A6
        .= 1_H9 by GROUP_1:def 5;
      hence h * g = e;
      g*h = g9*h9 by A6
        .= 1_H9 by GROUP_1:def 5;
      hence g * h = e;
    end;
    hence H is Group-like by GROUP_1:def 2;
  end;
  per cases;
  suppose
A7: O is empty;
    set a9 = [:{},{id A9}:];
    reconsider a9 as Action of O,A9 by A7,Lm1;
    set H = HGrWOpStr (#A9,m9,a9#);
    reconsider H as non empty HGrWOpStr over O;
    for G9 be Group, a be Action of O, the carrier of G9 st
     a = the action of H & the multMagma of G9 = the multMagma of H holds
      a is distributive by A7;
    then reconsider H as GroupWithOperators of O by A5,Def5;
A8: the carrier of H c= the carrier of G by GROUP_2:def 5;
A9: now
      let o be Element of O;
A10:  now
        let x,y be object;
        assume
A11:    [x,y] in (id the carrier of G)|the carrier of H;
        then [x,y] in id the carrier of G by RELAT_1:def 11;
        then
A12:    x=y by RELAT_1:def 10;
        x in the carrier of H by A11,RELAT_1:def 11;
        hence [x,y] in id the carrier of H by A12,RELAT_1:def 10;
      end;
A13:  now
        let x,y be object;
        assume
A14:    [x,y] in id the carrier of H;
        then
A15:    x in the carrier of H by RELAT_1:def 10;
        x=y by A14,RELAT_1:def 10;
        then [x,y] in id the carrier of G by A8,A15,RELAT_1:def 10;
        hence [x,y] in (id the carrier of G)|the carrier of H by A15,
RELAT_1:def 11;
      end;
      H^o = id the carrier of H by A7,Def6
        .= (id the carrier of G)|the carrier of H by A13,A10;
      hence H^o = (G^o)|the carrier of H by A7,Def6;
    end;
    the multF of H = (the multF of G)||the carrier of H by GROUP_2:def 5;
    then H is Subgroup of G by A8,GROUP_2:def 5;
    then reconsider H as strict StableSubgroup of G by A9,Def7;
    take H;
    thus thesis by A3;
  end;
  suppose
A16: O is not empty;
    set a9 = the set of all [o,(G^o)|A9] where o is Element of O ;
    now
      let x be object;
      assume x in a9;
      then ex o be Element of O st x=[o,(G^o)|A9];
      hence ex y1,y2 being object st x = [y1,y2];
    end;
    then reconsider a9 as Relation by RELAT_1:def 1;
A17: now
      let x be object;
      assume x in O;
      then reconsider o=x as Element of O;
      reconsider y = (G^o)|A9 as object;
      take y;
      thus [x,y] in a9;
    end;
    now
      let x be object;
      given y be object such that
A18:  [x,y] in a9;
      consider o be Element of O such that
A19:  [x,y] = [o,(G^o)|A9] by A18;
      o in O by A16;
      hence x in O by A19,XTUPLE_0:1;
    end;
    then
A20: dom a9 = O by A17,XTUPLE_0:def 12;
    now
      let x,y1,y2 be object;
      assume [x,y1] in a9;
      then consider o1 be Element of O such that
A21:  [x,y1]=[o1,(G^o1)|A9];
A22:  x=o1 by A21,XTUPLE_0:1;
      assume [x,y2] in a9;
      then consider o2 be Element of O such that
A23:  [x,y2]=[o2,(G^o2)|A9];
      x=o2 by A23,XTUPLE_0:1;
      hence y1 = y2 by A21,A23,A22,XTUPLE_0:1;
    end;
    then reconsider a9 as Function by FUNCT_1:def 1;
    now
      let y be object;
      assume y in rng a9;
      then consider x be object such that
A24:  x in dom a9 & y = a9.x by FUNCT_1:def 3;
      [x,y] in a9 by A24,FUNCT_1:1;
      then consider o be Element of O such that
A25:  [x,y]=[o,(G^o)|A9];
      now
        reconsider f = (G^o)|A9 as Function;
        take f;
A26:    dom((G^o)|A9) = dom((G^o)*(id A9)) by RELAT_1:65
          .= dom(G^o) /\ A9 by FUNCT_1:19
          .= (the carrier of G) /\ A9 by FUNCT_2:def 1;
        thus y = f by A25,XTUPLE_0:1;
        A9 c= the carrier of G by GROUP_2:def 5;
        hence
A27:    dom f = A9 by A26,XBOOLE_1:28;
        now
          let y be object;
A28:      dom f = dom((G^o)*(id A9)) by RELAT_1:65;
          assume y in rng f;
          then consider x be object such that
A29:      x in dom f and
A30:      y = f.x by FUNCT_1:def 3;
          y = ((G^o)*(id A9)).x by A30,RELAT_1:65
            .= (G^o).((id A9).x) by A28,A29,FUNCT_1:12
            .= (G^o).x by A27,A29,FUNCT_1:18;
          hence y in A9 by A4,A3,A27,A29;
        end;
        hence rng f c= A9;
      end;
      hence y in Funcs(A9,A9) by FUNCT_2:def 2;
    end;
    then rng a9 c= Funcs(A9,A9);
    then reconsider a9 as Action of O,A9 by A20,FUNCT_2:2;
    reconsider H = HGrWOpStr (#A9,m9,a9#) as non empty HGrWOpStr over O;
A31: the multF of H = (the multF of G)||the carrier of H by GROUP_2:def 5;
    H is Group-like & the carrier of H c= the carrier of G by A5,GROUP_2:def 5;
    then
A32: H is Subgroup of G by A31,GROUP_2:def 5;
    now
      let G9 be Group;
      let a be Action of O, the carrier of G9;
      assume
A33:  a = the action of H;
      assume
A34:  the multMagma of G9 = the multMagma of H;
      now
        let o be Element of O;
        assume o in O;
        then
A35:    o in dom a by FUNCT_2:def 1;
        then a.o in rng a by FUNCT_1:3;
        then consider f be Function such that
A36:    a.o = f and
A37:    dom f = the carrier of G9 & rng f c= the carrier of G9 by FUNCT_2:def 2
;
        reconsider f as Function of G9,G9 by A37,FUNCT_2:2;
        [o,a.o] in a9 by A33,A35,FUNCT_1:1;
        then consider o9 be Element of O such that
A38:    [o,a.o] = [o9,(G^o9)|A9];
A39:    o=o9 & a.o=(G^o9)|A9 by A38,XTUPLE_0:1;
        now
          let a9, b9 be Element of G9;
          b9 in the carrier of H9 by A34;
          then
A40:      b9 in dom id A9;
          reconsider a=a9,b=b9 as Element of H by A34;
          reconsider g1=a,g2=b as Element of G by GROUP_2:42;
          a9 in the carrier of H9 by A34;
          then
A41:      a9 in dom id A9;
          reconsider h1=(G^o).g1,h2=(G^o).g2 as Element of H by A4,A3;
          a9*b9 in the carrier of H9 by A34;
          then
A42:      a9*b9 in dom id A9;
A43:      f.b9 = ((G^o)*(id A9)).b9 by A36,A39,RELAT_1:65
            .= (G^o).((id A9).b9) by A40,FUNCT_1:13
            .= h2;
A44:      f.a9 = ((G^o)*(id A9)).a9 by A36,A39,RELAT_1:65
            .= (G^o).((id A9).a9) by A41,FUNCT_1:13
            .= h1;
          thus f.(a9 * b9) = ((G^o)*(id A9)).(a9*b9) by A36,A39,RELAT_1:65
            .= (G^o).((id A9).(a9*b9)) by A42,FUNCT_1:13
            .= (G^o).(a*b) by A34
            .= (G^o).(g1*g2) by A32,GROUP_2:43
            .= ((G^o).g1) * ((G^o).g2) by GROUP_6:def 6
            .= h1 * h2 by A32,GROUP_2:43
            .= f.a9 * f.b9 by A34,A44,A43;
        end;
        hence a.o is Homomorphism of G9,G9 by A36,GROUP_6:def 6;
      end;
      hence a is distributive;
    end;
    then reconsider H as GroupWithOperators of O by A5,Def5;
    now
      let o be Element of O;
      o in O by A16;
      then o in dom a9 by FUNCT_2:def 1;
      then [o,a9.o] in a9 by FUNCT_1:1;
      then consider o9 be Element of O such that
A45:  [o,a9.o] = [o9,(G^o9)|A9];
      o=o9 & a9.o=(G^o9)|A9 by A45,XTUPLE_0:1;
      hence H^o = (G^o)|the carrier of H by A16,Def6;
    end;
    then reconsider H as strict StableSubgroup of G by A32,Def7;
    take H;
    thus thesis by A3;
  end;
end;

definition
  let O be set;
  let G,H be GroupWithOperators of O;
  let g be Homomorphism of G, H;
  func Ker g -> strict StableSubgroup of G means
  :Def21:
  the carrier of it = { a where a is Element of G: g.a = 1_H};
  existence
  proof
    defpred P[set] means g.$1 = 1_H;
    reconsider A = {a where a is Element of G: P[a]} as Subset of G from
    DOMAIN_1:sch 7;
A1: now
      let a,b be Element of G;
      assume a in A & b in A;
      then
A2:   ( ex a1 being Element of G st a1 = a & g.a1 = 1_H)& ex b1 being
      Element of G st b1 = b & g.b1 = 1_H;
      g.(a * b) = g.a * g.b by GROUP_6:def 6
        .= 1_H by A2,GROUP_1:def 4;
      hence a * b in A;
    end;
A3: now
      let a be Element of G;
      assume a in A;
      then ex a1 being Element of G st a1 = a & g.a1 = 1_H;
      then g.(a") = (1_H)" by Lm13
        .= 1_H by GROUP_1:8;
      hence a" in A;
    end;
A4: now
      let o be Element of O;
      let a be Element of G;
      assume a in A;
      then ex a1 being Element of G st a1 = a & g.a1 = 1_H;
      then g.((G^o).a) = (H^o).(1_H) by Def18
        .= 1_H by GROUP_6:31;
      hence (G^o).a in A;
    end;
    g.(1_G) = 1_H by Lm12;
    then 1_G in A;
    then consider B be strict StableSubgroup of G such that
A5: the carrier of B = A by A1,A3,A4,Lm14;
    take B;
    thus thesis by A5;
  end;
  uniqueness by Lm4;
end;

registration
  let O be set;
  let G,H be GroupWithOperators of O;
  let g be Homomorphism of G, H;
  cluster Ker g -> normal;
  correctness
  proof
    now
      reconsider G9=G,H9=H as Group;
      let N be strict Subgroup of G;
      reconsider g9=g as Homomorphism of G9, H9;
A1:   the carrier of Ker g9 = {a where a is Element of G: g.a = 1_H} by
GROUP_6:def 9;
      assume N = the multMagma of Ker g;
      then the carrier of Ker g9 = the carrier of N by A1,Def21;
      hence N is normal by GROUP_2:59;
    end;
    hence thesis;
  end;
end;

Lm15: for O being set, G being GroupWithOperators of O, H being StableSubgroup
of G holds the multMagma of H is strict Subgroup of G
proof
  let O be set;
  let G be GroupWithOperators of O;
  let H be StableSubgroup of G;
  reconsider H9=the multMagma of H as non empty multMagma;
  reconsider H9 as Group-like non empty multMagma;
  H is Subgroup of G by Def7;
  then
  the carrier of H9 c= the carrier of G & the multF of H9 = (the multF of
  G)|| the carrier of H9 by GROUP_2:def 5;
  hence thesis by GROUP_2:def 5;
end;

Lm16: for O being set, G,H being GroupWithOperators of O, G9 being strict
StableSubgroup of G, f being Homomorphism of G,H holds ex H9 being strict
StableSubgroup of H st the carrier of H9 = f.:(the carrier of G9)
proof
  let O be set;
  let G,H be GroupWithOperators of O;
  let G9 be strict StableSubgroup of G;
  reconsider G99 = the multMagma of G9 as strict Subgroup of G by Lm15;
  let f be Homomorphism of G,H;
  set A = {f.g where g is Element of G:g in G99};
  1_G in G99 by GROUP_2:46;
  then f.(1_G) in A;
  then reconsider A as non empty set;
  now
    let x be object;
    assume x in A;
    then ex g be Element of G st x=f.g & g in G99;
    hence x in the carrier of H;
  end;
  then reconsider A as Subset of H by TARSKI:def 3;
A1: now
    let h1,h2 be Element of H;
    assume that
A2: h1 in A and
A3: h2 in A;
    consider a be Element of G such that
A4: h1=f.a & a in G99 by A2;
    consider b be Element of G such that
A5: h2=f.b & b in G99 by A3;
    f.(a*b) = h1*h2 & a*b in G99 by A4,A5,GROUP_2:50,GROUP_6:def 6;
    hence h1*h2 in A;
  end;
A6: now
    let o be Element of O;
    let h be Element of H;
    assume h in A;
    then consider g be Element of G such that
A7: h=f.g and
A8: g in G99;
    g in the carrier of G99 by A8,STRUCT_0:def 5;
    then g in G9 by STRUCT_0:def 5;
    then (G^o).g in G9 by Lm9;
    then (G^o).g in the carrier of G9 by STRUCT_0:def 5;
    then
A9: (G^o).g in G99 by STRUCT_0:def 5;
    (H^o).h = f.((G^o).g) by A7,Def18;
    hence (H^o).h in A by A9;
  end;
  now
    let h be Element of H;
    assume h in A;
    then consider g be Element of G such that
A10: h=f.g & g in G99;
    g" in G99 & h" = f.(g") by A10,Lm13,GROUP_2:51;
    hence h" in A;
  end;
  then consider H99 be strict StableSubgroup of H such that
A11: the carrier of H99 = A by A1,A6,Lm14;
  take H99;
  now
    set R = f;
    let h be Element of H;
    reconsider R as Relation of the carrier of G, the carrier of H;
    hereby
      assume h in A;
      then consider g be Element of G such that
A12:  h=f.g and
A13:  g in G99;
A14:  g in the carrier of G9 by A13,STRUCT_0:def 5;
      dom f = the carrier of G by FUNCT_2:def 1;
      then [g,h] in f by A12,FUNCT_1:1;
      hence h in f.:(the carrier of G9) by A14,RELSET_1:29;
    end;
    assume h in f.:(the carrier of G9);
    then consider g be Element of G such that
A15: [g,h] in R & g in the carrier of G9 by RELSET_1:29;
    f.g=h & g in G99 by A15,FUNCT_1:1,STRUCT_0:def 5;
    hence h in A;
  end;
  hence thesis by A11,SUBSET_1:3;
end;

definition
  let O be set;
  let G,H be GroupWithOperators of O;
  let g be Homomorphism of G, H;
  func Image g -> strict StableSubgroup of H means
  :Def22:
  the carrier of it = g.:(the carrier of G);
  existence
  proof
    reconsider G9 = the HGrWOpStr of G as strict StableSubgroup of G by Lm3;
    consider H9 be strict StableSubgroup of H such that
A1: the carrier of H9 = g.:(the carrier of G9) by Lm16;
    take H9;
    thus thesis by A1;
  end;
  uniqueness by Lm4;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let H be StableSubgroup of G;
  func carr(H) -> Subset of G equals
  the carrier of H;
  coherence
  proof
    reconsider H9=H as Subgroup of G by Def7;
    carr(H9) is Subset of G;
    hence thesis;
  end;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let H1,H2 be StableSubgroup of G;
  func H1 * H2 -> Subset of G equals
  carr H1 * carr H2;
  coherence;
end;

:: like GROUP_2:55

Lm17: for O being set, G being GroupWithOperators of O, H being StableSubgroup
of G holds 1_G in H
proof
  let O be set;
  let G be GroupWithOperators of O;
  let H be StableSubgroup of G;
  H is Subgroup of G by Def7;
  hence thesis by GROUP_2:46;
end;

:: like GROUP_2:59

Lm18: for O being set, G being GroupWithOperators of O, H being StableSubgroup
of G, g1,g2 being Element of G holds g1 in H & g2 in H implies g1 * g2 in H
proof
  let O be set;
  let G be GroupWithOperators of O;
  let H be StableSubgroup of G;
  let g1,g2 be Element of G;
  assume
A1: g1 in H & g2 in H;
  H is Subgroup of G by Def7;
  hence thesis by A1,GROUP_2:50;
end;

:: like GROUP_2:60

Lm19: for O being set, G being GroupWithOperators of O, H being StableSubgroup
of G, g being Element of G holds g in H implies g" in H
proof
  let O be set;
  let G be GroupWithOperators of O;
  let H be StableSubgroup of G;
  let g be Element of G;
  assume
A1: g in H;
  H is Subgroup of G by Def7;
  hence thesis by A1,GROUP_2:51;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let H1,H2 be StableSubgroup of G;
  func H1 /\ H2 -> strict StableSubgroup of G means
  :Def25:
  the carrier of it = carr(H1) /\ carr(H2);
  existence
  proof
    set A = carr(H1) /\ carr(H2);
    1_G in H2 by Lm17;
    then
A1: 1_G in the carrier of H2 by STRUCT_0:def 5;
A2: now
      let g1,g2 be Element of G;
      assume that
A3:   g1 in A and
A4:   g2 in A;
      g2 in carr(H2) by A4,XBOOLE_0:def 4;
      then
A5:   g2 in H2 by STRUCT_0:def 5;
      g1 in carr(H2) by A3,XBOOLE_0:def 4;
      then g1 in H2 by STRUCT_0:def 5;
      then g1 * g2 in H2 by A5,Lm18;
      then
A6:   g1 * g2 in carr(H2) by STRUCT_0:def 5;
      g2 in carr(H1) by A4,XBOOLE_0:def 4;
      then
A7:   g2 in H1 by STRUCT_0:def 5;
      g1 in carr(H1) by A3,XBOOLE_0:def 4;
      then g1 in H1 by STRUCT_0:def 5;
      then g1 * g2 in H1 by A7,Lm18;
      then g1 * g2 in carr(H1) by STRUCT_0:def 5;
      hence g1 * g2 in A by A6,XBOOLE_0:def 4;
    end;
A8: now
      let o be Element of O;
      let a be Element of G;
      assume
A9:   a in A;
      then a in carr(H2) by XBOOLE_0:def 4;
      then a in H2 by STRUCT_0:def 5;
      then (G^o).a in H2 by Lm9;
      then
A10:  (G^o).a in carr(H2) by STRUCT_0:def 5;
      a in carr(H1) by A9,XBOOLE_0:def 4;
      then a in H1 by STRUCT_0:def 5;
      then (G^o).a in H1 by Lm9;
      then (G^o).a in carr(H1) by STRUCT_0:def 5;
      hence (G^o).a in A by A10,XBOOLE_0:def 4;
    end;
A11: now
      let g be Element of G;
      assume
A12:  g in A;
      then g in carr(H2) by XBOOLE_0:def 4;
      then g in H2 by STRUCT_0:def 5;
      then g" in H2 by Lm19;
      then
A13:  g" in carr(H2) by STRUCT_0:def 5;
      g in carr(H1) by A12,XBOOLE_0:def 4;
      then g in H1 by STRUCT_0:def 5;
      then g" in H1 by Lm19;
      then g" in carr(H1) by STRUCT_0:def 5;
      hence g" in A by A13,XBOOLE_0:def 4;
    end;
    1_G in H1 by Lm17;
    then 1_G in the carrier of H1 by STRUCT_0:def 5;
    then A <> {} by A1,XBOOLE_0:def 4;
    hence thesis by A2,A11,A8,Lm14;
  end;
  uniqueness by Lm4;
  commutativity;
end;

:: like GROUP_2:66

Lm20: for O being set, G being GroupWithOperators of O, H1,H2 being
StableSubgroup of G holds the carrier of H1 c= the carrier of H2 implies H1 is
StableSubgroup of H2
proof
  let O be set;
  let G be GroupWithOperators of O;
  let H1,H2 be StableSubgroup of G;
  reconsider H19=H1,H29=H2 as Subgroup of G by Def7;
  assume
A1: the carrier of H1 c= the carrier of H2;
A2: now
    let o be Element of O;
    thus H1^o = (G^o)|the carrier of H1 by Def7
      .= ((G^o)|the carrier of H2)|the carrier of H1 by A1,RELAT_1:74
      .= (H2^o)|the carrier of H1 by Def7;
  end;
  H19 is Subgroup of H29 by A1,GROUP_2:57;
  hence thesis by A2,Def7;
end;

:: like GROUP_4:def 5

definition
  let O be set;
  let G be GroupWithOperators of O;
  let A be Subset of G;
  func the_stable_subgroup_of A -> strict StableSubgroup of G means
  :Def26:
  A c= the carrier of it & for H being strict StableSubgroup of G st A c= the
  carrier of H holds it is StableSubgroup of H;
  existence
  proof
    defpred P[set] means
     ex H being strict StableSubgroup of G st $1 = carr H & A c= $1;
    consider X be set such that
A1: for Y being set holds Y in X iff Y in bool the carrier of G & P[Y]
    from XFAMILY:sch 1;
    set M = meet X;
A2: carr (Omega).G = the carrier of (Omega).G;
    then
A3: X <> {} by A1;
A4: the carrier of G in X by A1,A2;
A5: M c= the carrier of G
    by A4,SETFAM_1:def 1;
    now
      let Y be set;
      assume Y in X;
      then consider H be strict StableSubgroup of G such that
A6:   Y = carr H and
      A c= Y by A1;
      1_G in H by Lm17;
      hence 1_G in Y by A6,STRUCT_0:def 5;
    end;
    then
A7: M <> {} by A3,SETFAM_1:def 1;
    reconsider M as Subset of G by A5;
A8: now
      let o be Element of O;
      let a be Element of G;
      assume
A9:  a in M;
      now
        let Y be set;
        assume
A10:    Y in X;
        then consider H be strict StableSubgroup of G such that
A11:    Y = carr H and
        A c= Y by A1;
        a in carr H by A9,A10,A11,SETFAM_1:def 1;
        then a in H by STRUCT_0:def 5;
        then (G^o).a in H by Lm9;
        hence (G^o).a in Y by A11,STRUCT_0:def 5;
      end;
      hence (G^o).a in M by A3,SETFAM_1:def 1;
    end;
A12: now
      let a,b be Element of G;
      assume that
A13:  a in M and
A14:  b in M;
      now
        let Y be set;
        assume
A15:    Y in X;
        then consider H be strict StableSubgroup of G such that
A16:    Y = carr H and
        A c= Y by A1;
        b in carr H by A14,A15,A16,SETFAM_1:def 1;
        then
A17:    b in H by STRUCT_0:def 5;
        a in carr H by A13,A15,A16,SETFAM_1:def 1;
        then a in H by STRUCT_0:def 5;
        then a * b in H by A17,Lm18;
        hence a * b in Y by A16,STRUCT_0:def 5;
      end;
      hence a * b in M by A3,SETFAM_1:def 1;
    end;
    now
      let a be Element of G;
      assume
A18:  a in M;
      now
        let Y be set;
        assume
A19:    Y in X;
        then consider H be strict StableSubgroup of G such that
A20:    Y = carr H and
        A c= Y by A1;
        a in carr H by A18,A19,A20,SETFAM_1:def 1;
        then a in H by STRUCT_0:def 5;
        then a" in H by Lm19;
        hence a" in Y by A20,STRUCT_0:def 5;
      end;
      hence a" in M by A3,SETFAM_1:def 1;
    end;
    then consider H be strict StableSubgroup of G such that
A21: the carrier of H = M by A7,A12,A8,Lm14;
    take H;
    now
      let Y be set;
      assume Y in X;
      then ex H being strict StableSubgroup of G st Y = carr H & A c= Y by A1;
      hence A c= Y;
    end;
    hence A c= the carrier of H by A3,A21,SETFAM_1:5;
    let H1 be strict StableSubgroup of G;
A22: the carrier of H1 = carr H1;
    assume A c= the carrier of H1;
    then the carrier of H1 in X by A1,A22;
    hence thesis by A21,Lm20,SETFAM_1:3;
  end;
  uniqueness
  proof
    let H1,H2 be strict StableSubgroup of G;
    assume that
A23: A c= the carrier of H1 and
A24: ( for H being strict StableSubgroup of G st A c= the carrier of H
    holds H1 is StableSubgroup of H)& A c= the carrier of H2 and
A25: for H being strict StableSubgroup of G st A c= the carrier of H
    holds H2 is StableSubgroup of H;
    H1 is StableSubgroup of H2 by A24;
    then H1 is Subgroup of H2 by Def7;
    then
A26: the carrier of H1 c= the carrier of H2 by GROUP_2:def 5;
    H2 is StableSubgroup of H1 by A23,A25;
    then H2 is Subgroup of H1 by Def7;
    then the carrier of H2 c= the carrier of H1 by GROUP_2:def 5;
    then the carrier of H1 = the carrier of H2 by A26,XBOOLE_0:def 10;
    hence thesis by Lm4;
  end;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let H1,H2 be StableSubgroup of G;
  func H1 "\/" H2 -> strict StableSubgroup of G equals
  the_stable_subgroup_of
  (carr H1 \/ carr H2);
  correctness;
end;

begin :: Some Theorems on Groups reformulated for Groups with Operators

reserve x,O for set,
  o for Element of O,
  G,H,I for GroupWithOperators of O,
  A, B for Subset of G,
  N for normal StableSubgroup of G,
  H1,H2,H3 for StableSubgroup of G,
  g1,g2 for Element of G,
  h1,h2 for Element of H1,
  h for Homomorphism of G,H;

:: GROUP_2:49

theorem Th1:
 for x being object holds x in H1 implies x in G
proof let x be object;
  assume
A1: x in H1;
  H1 is Subgroup of G by Def7;
  hence thesis by A1,GROUP_2:40;
end;

:: GROUP_2:51

theorem Th2:
  h1 is Element of G
proof
  H1 is Subgroup of G by Def7;
  hence thesis by GROUP_2:42;
end;

:: GROUP_2:52

theorem Th3:
  h1 = g1 & h2 = g2 implies h1 * h2 = g1 * g2
proof
  assume
A1: h1 = g1 & h2 = g2;
  H1 is Subgroup of G by Def7;
  hence thesis by A1,GROUP_2:43;
end;

:: GROUP_2:53

theorem Th4:
  1_G = 1_H1
proof
  reconsider H19=H1 as Subgroup of G by Def7;
  1_H1 = 1_H19;
  hence thesis by GROUP_2:44;
end;

:: GROUP_2:55

theorem
  1_G in H1 by Lm17;

:: GROUP_2:57

theorem Th6:
  h1 = g1 implies h1" = g1"
proof
  reconsider g9 = h1" as Element of G by Th2;
A1: h1 * h1" = 1_H1 by GROUP_1:def 5;
  assume h1 = g1;
  then g1 * g9 = 1_H1 by A1,Th3
    .= 1_G by Th4;
  hence thesis by GROUP_1:12;
end;

:: GROUP_2:59

theorem
  g1 in H1 & g2 in H1 implies g1 * g2 in H1 by Lm18;

:: GROUP_2:60

theorem
  g1 in H1 implies g1" in H1 by Lm19;

:: GROUP_2:61

theorem
  A <> {} & (for g1,g2 st g1 in A & g2 in A holds g1 * g2 in A) & (for
  g1 st g1 in A holds g1" in A) & (for o,g1 st g1 in A holds (G^o).g1 in A)
implies ex H being strict StableSubgroup of G st the carrier of H = A by Lm14;

:: GROUP_2:63

theorem Th10:
  G is StableSubgroup of G
proof
A1: for o being Element of O holds G^o = (G^o)|the carrier of G;
  G is Subgroup of G by GROUP_2:54;
  hence thesis by A1,Def7;
end;

:: GROUP_2:65

theorem Th11:
  for G1,G2,G3 being GroupWithOperators of O holds G1 is
StableSubgroup of G2 & G2 is StableSubgroup of G3 implies G1 is StableSubgroup
  of G3
proof
  let G1,G2,G3 be GroupWithOperators of O;
  assume that
A1: G1 is StableSubgroup of G2 and
A2: G2 is StableSubgroup of G3;
A3: G1 is Subgroup of G2 by A1,Def7;
A4: now
    let o be Element of O;
A5: the carrier of G1 c= the carrier of G2 by A3,GROUP_2:def 5;
    G1^o = (G2^o)|the carrier of G1 by A1,Def7
      .= ((G3^o)|the carrier of G2)|the carrier of G1 by A2,Def7
      .= (G3^o)|((the carrier of G2) /\ the carrier of G1) by RELAT_1:71;
    hence G1^o = (G3^o)|the carrier of G1 by A5,XBOOLE_1:28;
  end;
  G2 is Subgroup of G3 by A2,Def7;
  then G1 is Subgroup of G3 by A3,GROUP_2:56;
  hence thesis by A4,Def7;
end;

:: GROUP_2:66

theorem
  the carrier of H1 c= the carrier of H2 implies H1 is StableSubgroup of
  H2 by Lm20;

:: GROUP_2:67

theorem Th13:
  (for g being Element of G st g in H1 holds g in H2) implies H1
  is StableSubgroup of H2
proof
  assume
A1: for g being Element of G st g in H1 holds g in H2;
  the carrier of H1 c= the carrier of H2
  proof
    let x be object;
    assume x in the carrier of H1;
    then reconsider g = x as Element of H1;
    reconsider g as Element of G by Th2;
    g in H1 by STRUCT_0:def 5;
    then g in H2 by A1;
    hence thesis by STRUCT_0:def 5;
  end;
  hence thesis by Lm20;
end;

:: GROUP_2:68

theorem
  for H1,H2 being strict StableSubgroup of G st the carrier of H1 = the
  carrier of H2 holds H1 = H2 by Lm4;

:: GROUP_2:75

theorem Th15:
  (1).G = (1).H1
proof
A1: 1_H1 = 1_G by Th4;
  (1).H1 is StableSubgroup of G & the carrier of (1).H1 = {1_H1} by Def8,Th11;
  hence thesis by A1,Def8;
end;

:: GROUP_2:77

theorem Th16:
  (1).G is StableSubgroup of H1
proof
  (1).G = (1).H1 by Th15;
  hence thesis;
end;

:: GROUP_2:93

theorem Th17:
  carr H1 * carr H2 = carr H2 * carr H1 implies ex H being strict
  StableSubgroup of G st the carrier of H=carr H1 * carr H2
proof
  assume
A1: carr H1 * carr H2 = carr H2 * carr H1;
A2: now
    let o be Element of O;
    let g be Element of G;
    assume g in carr H1 * carr H2;
    then consider a,b be Element of G such that
A3: g = a * b and
A4: a in carr H1 and
A5: b in carr H2;
    a in H1 by A4,STRUCT_0:def 5;
    then (G^o).a in H1 by Lm9;
    then
A6: (G^o).a in carr H1 by STRUCT_0:def 5;
    b in H2 by A5,STRUCT_0:def 5;
    then (G^o).b in H2 by Lm9;
    then (G^o).b in carr H2 by STRUCT_0:def 5;
    then ((G^o).a) * ((G^o).b) in carr H1 * carr H2 by A6;
    hence (G^o).g in carr H1 * carr H2 by A3,GROUP_6:def 6;
  end;
A7: H2 is Subgroup of G by Def7;
A8: H1 is Subgroup of G by Def7;
A9: now
    let g be Element of G;
    assume
A10: g in carr H1 * carr H2;
    then consider a,b be Element of G such that
A11: g = a * b and
    a in carr H1 and
    b in carr H2;
    consider b1,a1 be Element of G such that
A12: a * b = b1 * a1 and
A13: b1 in carr H2 and
A14: a1 in carr H1 by A1,A10,A11;
    b1 in H2 by A13,STRUCT_0:def 5;
    then b1" in H2 by A7,GROUP_2:51;
    then
A15: b1" in carr H2 by STRUCT_0:def 5;
    a1 in H1 by A14,STRUCT_0:def 5;
    then a1" in H1 by A8,GROUP_2:51;
    then
A16: a1" in carr H1 by STRUCT_0:def 5;
    g" = a1" * b1" by A11,A12,GROUP_1:17;
    hence g" in carr H1 * carr H2 by A16,A15;
  end;
A17: now
    let g1,g2 be Element of G;
    assume that
A18: g1 in carr(H1) * carr(H2) and
A19: g2 in carr(H1) * carr(H2);
    consider a1,b1 be Element of G such that
A20: g1 = a1 * b1 and
A21: a1 in carr(H1) and
A22: b1 in carr(H2) by A18;
    consider a2,b2 be Element of G such that
A23: g2 = a2 * b2 and
A24: a2 in carr H1 and
A25: b2 in carr H2 by A19;
    b1 * a2 in carr H1 * carr H2 by A1,A22,A24;
    then consider a,b be Element of G such that
A26: b1 * a2 = a * b and
A27: a in carr H1 and
A28: b in carr H2;
A29: a in H1 by A27,STRUCT_0:def 5;
A30: b in H2 by A28,STRUCT_0:def 5;
    b2 in H2 by A25,STRUCT_0:def 5;
    then b * b2 in H2 by A7,A30,GROUP_2:50;
    then
A31: b * b2 in carr H2 by STRUCT_0:def 5;
    a1 in H1 by A21,STRUCT_0:def 5;
    then a1 * a in H1 by A8,A29,GROUP_2:50;
    then
A32: a1 * a in carr H1 by STRUCT_0:def 5;
    g1 * g2 = a1 * b1 * a2 * b2 by A20,A23,GROUP_1:def 3
      .= a1 * (b1 * a2) * b2 by GROUP_1:def 3;
    then g1 * g2 = a1 * a * b * b2 by A26,GROUP_1:def 3
      .= a1 * a * (b * b2) by GROUP_1:def 3;
    hence g1 * g2 in carr H1 * carr H2 by A32,A31;
  end;
  carr H1 * carr H2 <> {} by GROUP_2:9;
  hence thesis by A17,A9,A2,Lm14;
end;

:: GROUP_2:97

theorem Th18:
  (for H being StableSubgroup of G st H = H1 /\ H2 holds the
carrier of H = (the carrier of H1) /\ (the carrier of H2)) & for H being strict
  StableSubgroup of G holds the carrier of H = (the carrier of H1) /\ (the
  carrier of H2) implies H = H1 /\ H2
proof
A1: the carrier of H1 = carr(H1) & the carrier of H2 = carr(H2);
  thus for H being StableSubgroup of G st H = H1 /\ H2 holds the carrier of H
  = (the carrier of H1) /\ (the carrier of H2)
  proof
    let H be StableSubgroup of G;
    assume H = H1 /\ H2;
    hence the carrier of H = carr(H1)/\carr(H2) by Def25
      .= (the carrier of H1)/\(the carrier of H2);
  end;
  let H be strict StableSubgroup of G;
  assume the carrier of H = (the carrier of H1) /\ (the carrier of H2);
  hence thesis by A1,Def25;
end;

:: GROUP_2:100

theorem Th19:
  for H being strict StableSubgroup of G holds H /\ H = H
proof
  let H be strict StableSubgroup of G;
  the carrier of H /\ H = carr(H) /\ carr(H) by Def25
    .= the carrier of H;
  hence thesis by Lm4;
end;

:: GROUP_2:102

theorem Th20:
  H1 /\ H2 /\ H3 = H1 /\ (H2 /\ H3)
proof
  the carrier of H1 /\ H2 /\ H3 = carr(H1 /\ H2) /\ carr(H3) by Def25
    .= carr(H1) /\ carr(H2) /\ carr(H3) by Def25
    .= carr(H1) /\ (carr(H2) /\ carr(H3)) by XBOOLE_1:16
    .= carr(H1) /\ carr(H2 /\ H3) by Def25
    .= the carrier of H1 /\ (H2 /\ H3) by Def25;
  hence thesis by Lm4;
end;

Lm21: for H1 being strict StableSubgroup of G holds H1 is StableSubgroup of H2
iff H1 /\ H2 = H1
proof
  let H1 be strict StableSubgroup of G;
  thus H1 is StableSubgroup of H2 implies H1 /\ H2 = H1
  proof
    assume H1 is StableSubgroup of H2;
    then H1 is Subgroup of H2 by Def7;
    then
A1: the carrier of H1 c= the carrier of H2 by GROUP_2:def 5;
    the carrier of H1 /\ H2 = carr(H1) /\ carr (H2) by Def25;
    hence thesis by A1,Lm4,XBOOLE_1:28;
  end;
  assume H1 /\ H2 = H1;
  then the carrier of H1 = carr(H1) /\ carr(H2) by Def25
    .= (the carrier of H1) /\ (the carrier of H2);
  hence thesis by Lm20,XBOOLE_1:17;
end;

:: GROUP_2:103

theorem Th21:
  (1).G /\ H1 = (1).G & H1 /\ (1).G = (1).G
proof
A1: (1).G is StableSubgroup of H1 by Th16;
  hence (1).G /\ H1 = (1).G by Lm21;
  thus thesis by A1,Lm21;
end;

:: GROUP_2:167

theorem Th22:
  union Cosets N = the carrier of G
proof
  reconsider H = the multMagma of N as strict normal Subgroup of G by Lm6;
  now
    set h = the Element of H;
    let x be object;
    reconsider g = h as Element of G by GROUP_2:42;
    assume x in the carrier of G;
    then reconsider a = x as Element of G;
A1: a = a * 1_G by GROUP_1:def 4
      .= a * (g" * g) by GROUP_1:def 5
      .= a * g" * g by GROUP_1:def 3;
A2: a * g" * H in Cosets H by GROUP_2:def 15;
    h in H by STRUCT_0:def 5;
    then a in a * g" * H by A1,GROUP_2:103;
    hence x in union Cosets H by A2,TARSKI:def 4;
  end;
  then
A3: the carrier of G c= union Cosets H;
  Cosets N = Cosets H by Def14;
  hence thesis by A3,XBOOLE_0:def 10;
end;

:: GROUP_3:149

theorem Th23:
  for N1,N2 being strict normal StableSubgroup of G ex N being
  strict normal StableSubgroup of G st the carrier of N = carr N1 * carr N2
proof
  let N1,N2 be strict normal StableSubgroup of G;
  set N19 = the multMagma of N1;
  set N29 = the multMagma of N2;
  reconsider N19,N29 as strict normal Subgroup of G by Lm6;
  set A = carr N19 * carr N29;
  set B = carr N19;
  set C = carr N29;
  carr N19 * carr N29 = carr N29 * carr N19 by GROUP_3:125;
  then consider H9 be strict Subgroup of G such that
A1: the carrier of H9 = A by GROUP_2:78;
A2: now
    let o be Element of O;
    let g be Element of G;
    assume g in A;
    then consider a,b be Element of G such that
A3: g = a * b and
A4: a in carr N1 and
A5: b in carr N2;
    a in N1 by A4,STRUCT_0:def 5;
    then (G^o).a in N1 by Lm9;
    then
A6: (G^o).a in carr N1 by STRUCT_0:def 5;
    b in N2 by A5,STRUCT_0:def 5;
    then (G^o).b in N2 by Lm9;
    then (G^o).b in carr N2 by STRUCT_0:def 5;
    then ((G^o).a) * ((G^o).b) in carr N1 * carr N2 by A6;
    hence (G^o).g in A by A3,GROUP_6:def 6;
  end;
A7: now
    let g be Element of G;
    assume g in A;
    then g in H9 by A1,STRUCT_0:def 5;
    then g" in H9 by GROUP_2:51;
    hence g" in A by A1,STRUCT_0:def 5;
  end;
  now
    let g1,g2 be Element of G;
    assume g1 in A & g2 in A;
    then g1 in H9 & g2 in H9 by A1,STRUCT_0:def 5;
    then g1 * g2 in H9 by GROUP_2:50;
    hence g1 * g2 in A by A1,STRUCT_0:def 5;
  end;
  then consider H be strict StableSubgroup of G such that
A8: the carrier of H = A by A1,A7,A2,Lm14;
  now
    let a be Element of G;
    thus a * H9 = a * N19 * C by A1,GROUP_2:29
      .= N19 * a * C by GROUP_3:117
      .= B * (a * N29) by GROUP_2:30
      .= B * (N29 * a) by GROUP_3:117
      .= H9 * a by A1,GROUP_2:31;
  end;
  then H9 is normal Subgroup of G by GROUP_3:117;
  then for H99 being strict Subgroup of G st H99 = the multMagma of H holds
  H99 is normal by A1,A8,GROUP_2:59;
  then H is normal;
  hence thesis by A8;
end;

Lm22: for F1 being FinSequence, y being Element of NAT st y in dom F1 holds
len F1 - y + 1 is Element of NAT & len F1 - y + 1 >= 1 & len F1 - y + 1 <= len
F1
proof
  let F1 be FinSequence, y be Element of NAT;
  assume
A1: y in dom F1;
  now
    assume len F1 - y + 1 < 0;
    then 1 < 0 qua Nat - (len F1 - y) by XREAL_1:20;
    then 1 < y - len F1;
    then
A2: len F1 + 1 < y by XREAL_1:20;
    y <= len F1 by A1,FINSEQ_3:25;
    hence contradiction by A2,NAT_1:12;
  end;
  then reconsider n = len F1 - y + 1 as Element of NAT by INT_1:3;
  y >= 1 by A1,FINSEQ_3:25;
  then n - 1 - y <= len F1 - y - 1 by XREAL_1:13;
  then
A3: n - (y + 1) <= len F1 - (y + 1);
  y + 0 <= len F1 by A1,FINSEQ_3:25;
  then 0 + 1 = 1 & 0 <= len F1 - y by XREAL_1:19;
  hence thesis by A3,XREAL_1:6,9;
end;

Lm23: for G,H being Group, F1 being FinSequence of the carrier of G, F2 being
FinSequence of the carrier of H, I being FinSequence of INT, f being
Homomorphism of G,H st (for k being Nat st k in dom F1 holds F2.k = f.(F1.k)) &
len F1 = len I & len F2 = len I holds f.(Product(F1 |^ I)) = Product(F2 |^ I)
proof
  defpred P[Nat] means for G,H being Group, F1 being FinSequence of the
carrier of G, F2 being FinSequence of the carrier of H, I being FinSequence of
INT, f being Homomorphism of G,H st (for k being Nat st k in dom F1 holds F2.k
= f.(F1.k)) & len F1 = len I & len F2 = len I & $1 = len I holds f.(Product(F1
  |^ I)) = Product(F2 |^ I);
  let G,H be Group;
  let F1 be FinSequence of the carrier of G;
  let F2 be FinSequence of the carrier of H;
  let I be FinSequence of INT;
  let f be Homomorphism of G,H;
  assume
A1: ( for k being Nat st k in dom F1 holds F2.k = f.(F1.k))& len F1 =
  len I & len F2 = len I;
A2: now
    let n be Nat;
    assume
A3: P[n];
    thus P[n+1]
    proof
      let G,H be Group;
      let F1 be FinSequence of the carrier of G;
      let F2 be FinSequence of the carrier of H;
      let I be FinSequence of INT;
      let f be Homomorphism of G,H;
      assume
A4:   for k being Nat st k in dom F1 holds F2.k = f.(F1.k);
      assume that
A5:   len F1 = len I and
A6:   len F2 = len I and
A7:   n+1 = len I;
      consider F1n be FinSequence of the carrier of G, g be Element of G such
      that
A8:   F1 = F1n^<*g*> by A5,A7,FINSEQ_2:19;
A9:   len F1 = len F1n + len <*g*> by A8,FINSEQ_1:22;
      then
A10:  n+1 = len F1n + 1 by A5,A7,FINSEQ_1:40;
      consider F2n be FinSequence of the carrier of H, h be Element of H such
      that
A11:  F2 = F2n^<*h*> by A6,A7,FINSEQ_2:19;
A12:  dom F1 = dom F2 & dom F2 = dom I by A5,A6,FINSEQ_3:29;
      1 <= n+1 by NAT_1:11;
      then
A13:  n+1 in dom I by A7,FINSEQ_3:25;
      set F21=<*h*>;
      set F11=<*g*>;
      consider In be FinSequence of INT, i be Element of INT such that
A14:  I = In^<*i*> by A7,FINSEQ_2:19;
      set I1=<*i*>;
      len I = len In + len <*i*> by A14,FINSEQ_1:22;
      then
A15:  n+1 = len In + 1 by A7,FINSEQ_1:40;
A16:  len F2 = len F2n + len <*h*> by A11,FINSEQ_1:22;
      then
A17:  n+1 = len F2n + 1 by A6,A7,FINSEQ_1:40;
A18:  now
        let k be Nat;
        0+n <= 1+n by XREAL_1:6;
        then
A19:    dom F1n c= dom F1 by A5,A7,A10,FINSEQ_3:30;
        assume
A20:    k in dom F1n;
        then k in dom F2n by A10,A17,FINSEQ_3:29;
        hence F2n.k = F2.k by A11,FINSEQ_1:def 7
          .= f.(F1.k) by A4,A20,A19
          .= f.(F1n.k) by A8,A20,FINSEQ_1:def 7;
      end;
A21:  F2.(n+1)=(F2n^<*h*>).(len F2n +1) by A6,A7,A11,A16,FINSEQ_1:40
        .= h by FINSEQ_1:42;
A22:  F1.(n+1)=(F1n^<*g*>).(len F1n +1) by A5,A7,A8,A9,FINSEQ_1:40
        .= g by FINSEQ_1:42;
      len F21 = 1 by FINSEQ_1:40
        .=len I1 by FINSEQ_1:40;
      then
A23:  Product(F2 |^ I) = Product((F2n |^ In)^(F21 |^ I1)) by A14,A11,A15,A17,
GROUP_4:19
        .= Product(F2n |^ In) * Product(F21 |^ I1) by GROUP_4:5;
A24:  f.Product(F11 |^ I1) = f.Product(<*g*>|^<*@i*>)
        .= f.Product <*g|^i*> by GROUP_4:22
        .= f.(g|^i) by GROUP_4:9
        .= (f.g)|^i by GROUP_6:37
        .= h|^i by A4,A13,A12,A22,A21
        .= Product <*h|^i*> by GROUP_4:9
        .= Product(<*h*>|^<*@i*>) by GROUP_4:22
        .= Product(F21 |^ I1);
      len F11 = 1 by FINSEQ_1:40
        .=len I1 by FINSEQ_1:40;
      then
      Product(F1 |^ I) = Product((F1n |^ In)^(F11 |^ I1)) by A14,A8,A15,A10,
GROUP_4:19
        .= Product(F1n |^ In) * Product(F11 |^ I1) by GROUP_4:5;
      then f.(Product(F1 |^ I)) = f.Product(F1n |^ In) * f.Product(F11 |^ I1)
      by GROUP_6:def 6
        .= Product(F2n |^ In) * Product(F21 |^ I1) by A3,A15,A10,A17,A18,A24;
      hence thesis by A23;
    end;
  end;
A25: P[0]
  proof
    let G,H be Group;
    let F1 be FinSequence of the carrier of G;
    let F2 be FinSequence of the carrier of H;
    let I be FinSequence of INT;
    let f be Homomorphism of G,H;
    assume for k being Nat st k in dom F1 holds F2.k = f.(F1.k);
    assume that
A26: len F1 = len I and
A27: len F2 = len I and
A28: 0 = len I;
    len(F2 |^ I) = 0 by A27,A28,GROUP_4:def 3;
    then F2 |^ I = <*> the carrier of H;
    then
A29: Product(F2 |^ I) = 1_H by GROUP_4:8;
    len(F1 |^ I) = 0 by A26,A28,GROUP_4:def 3;
    then F1 |^ I = <*> the carrier of G;
    then Product(F1 |^ I) = 1_G by GROUP_4:8;
    hence thesis by A29,GROUP_6:31;
  end;
  for n being Nat holds P[n] from NAT_1:sch 2(A25,A2);
  hence thesis by A1;
end;

:: GROUP_4:37

theorem Th24:
  g1 in the_stable_subgroup_of A iff ex F being FinSequence of the
  carrier of G, I being FinSequence of INT, C being Subset of G st C =
the_stable_subset_generated_by (A, the action of G) & len F = len I & rng F c=
  C & Product(F |^ I) = g1
proof
  set H9 = the_stable_subgroup_of A;
  set Y = the carrier of H9;
A1: A c= the carrier of H9 by Def26;
  thus g1 in the_stable_subgroup_of A implies ex F being FinSequence of the
  carrier of G, I being FinSequence of INT, C being Subset of G st C =
the_stable_subset_generated_by (A, the action of G) & len F = len I & rng F c=
  C & Product(F |^ I) = g1
  proof
    defpred P[set] means ex F being FinSequence of the carrier of G, I being
FinSequence of INT, C being Subset of G st C = the_stable_subset_generated_by (
    A, the action of G) & $1 = Product (F |^ I) & len F = len I & rng F c= C;
    assume
A2: g1 in the_stable_subgroup_of A;
    reconsider B = {b where b is Element of G : P[b]} as Subset of G from
    DOMAIN_1:sch 7;
A3: now
      let c,d be Element of G;
      assume that
A4:   c in B and
A5:   d in B;
      ex d1 being Element of G st c = d1 & ex F being FinSequence of the
      carrier of G, I being FinSequence of INT, C being Subset of G st C =
the_stable_subset_generated_by (A, the action of G) & d1 = Product(F |^ I) &
      len F = len I & rng F c= C by A4;
      then consider
      F1 be FinSequence of the carrier of G, I1 be FinSequence of INT
      , C be Subset of G such that
A6:   C = the_stable_subset_generated_by (A, the action of G) and
A7:   c = Product(F1 |^ I1) and
A8:   len F1 = len I1 and
A9:   rng F1 c= C;
      ex d2 being Element of G st d = d2 & ex F being FinSequence of the
      carrier of G, I being FinSequence of INT, C being Subset of G st C =
the_stable_subset_generated_by (A, the action of G) & d2 = Product(F |^ I) &
      len F = len I & rng F c= C by A5;
      then consider
      F2 be FinSequence of the carrier of G, I2 be FinSequence of INT
      , C be Subset of G such that
A10:  C = the_stable_subset_generated_by (A, the action of G) and
A11:  d = Product(F2 |^ I2) and
A12:  len F2 = len I2 and
A13:  rng F2 c= C;
A14:  len(F1 ^ F2) = len I1 + len I2 by A8,A12,FINSEQ_1:22
        .= len(I1 ^ I2) by FINSEQ_1:22;
      rng(F1 ^ F2) = rng F1 \/ rng F2 by FINSEQ_1:31;
      then
A15:  rng(F1 ^ F2) c= C by A6,A9,A10,A13,XBOOLE_1:8;
      c * d = Product((F1 |^ I1) ^ (F2 |^ I2)) by A7,A11,GROUP_4:5
        .= Product((F1 ^ F2) |^ (I1 ^ I2)) by A8,A12,GROUP_4:19;
      hence c * d in B by A10,A15,A14;
    end;
A16: now
      let o be Element of O;
      let c be Element of G;
      assume c in B;
      then ex d1 being Element of G st c = d1 & ex F being FinSequence of the
      carrier of G, I being FinSequence of INT, C being Subset of G st C =
the_stable_subset_generated_by (A, the action of G) & d1 = Product(F |^ I) &
      len F = len I & rng F c= C;
      then consider
      F1 be FinSequence of the carrier of G, I1 be FinSequence of INT
      , C be Subset of G such that
A17:  C = the_stable_subset_generated_by (A, the action of G) and
A18:  c = Product(F1 |^ I1) and
A19:  len F1 = len I1 and
A20:  rng F1 c= C;
      deffunc F(Nat) = (G^o).(F1.$1);
      consider F2 being FinSequence such that
A21:  len F2 = len F1 and
A22:  for k being Nat st k in dom F2 holds F2.k = F(k) from FINSEQ_1:
      sch 2;
A23:  dom F2 = dom F1 by A21,FINSEQ_3:29;
A24:  Seg len F1 = dom F1 by FINSEQ_1:def 3;
      now
A25:    C is_stable_under_the_action_of the action of G by A17,Def2;
        let y be object;
        assume y in rng F2;
        then consider x being object such that
A26:    x in dom F2 and
A27:    y = F2.x by FUNCT_1:def 3;
A28:    x in Seg len F1 by A21,A26,FINSEQ_1:def 3;
        reconsider x as Element of NAT by A26;
A29:    F2.x = (G^o).(F1.x) by A22,A26;
A30:    F1.x in rng F1 by A24,A28,FUNCT_1:3;
        per cases;
        suppose
A31:      O<>{};
          set f = (the action of G).o;
A32:      G^o = (the action of G).o by A31,Def6;
          then reconsider f as Function of G, G;
          dom f = the carrier of G by FUNCT_2:def 1;
          then
A33:      y in f .: C by A20,A27,A29,A30,A32,FUNCT_1:def 6;
          (f .: C) c= C by A25,A31;
          hence y in C by A33;
        end;
        suppose
          O={};
          then G^o = id the carrier of G by Def6;
          then (G^o).(F1.x) = F1.x by A30,FUNCT_1:18;
          hence y in C by A20,A27,A29,A30;
        end;
      end;
      then
A34:  rng F2 c= C;
      then rng F2 c= the carrier of G by XBOOLE_1:1;
      then reconsider F2 as FinSequence of the carrier of G by FINSEQ_1:def 4;
      (G^o).c = Product(F2 |^ I1) by A18,A19,A21,A22,A23,Lm23;
      hence (G^o).c in B by A17,A19,A21,A34;
    end;
A35: now
      let c be Element of G;
      assume c in B;
      then ex d1 being Element of G st c = d1 & ex F being FinSequence of the
      carrier of G, I being FinSequence of INT, C being Subset of G st C =
the_stable_subset_generated_by (A, the action of G) & d1 = Product(F |^ I) &
      len F = len I & rng F c= C;
      then consider
      F1 be FinSequence of the carrier of G, I1 be FinSequence of INT
      , C be Subset of G such that
A36:  C = the_stable_subset_generated_by (A, the action of G) & c =
      Product(F1 |^ I1) and
A37:  len F1 = len I1 and
A38:  rng F1 c= C;
      deffunc F(Nat) = F1.(len F1 - $1 + 1);
      consider F2 being FinSequence such that
A39:  len F2 = len F1 and
A40:  for k being Nat st k in dom F2 holds F2.k = F(k) from FINSEQ_1:
      sch 2;
A41:  Seg len I1 = dom I1 by FINSEQ_1:def 3;
A42:  rng F2 c= rng F1
      proof
        let x be object;
        assume x in rng F2;
        then consider y be object such that
A43:    y in dom F2 and
A44:    F2.y = x by FUNCT_1:def 3;
        reconsider y as Element of NAT by A43;
        reconsider n = len F1 - y + 1 as Element of NAT by A39,A43,Lm22;
        1 <= n & n <= len F1 by A39,A43,Lm22;
        then
A45:    n in dom F1 by FINSEQ_3:25;
        x = F1.(len F1 - y + 1) by A40,A43,A44;
        hence thesis by A45,FUNCT_1:def 3;
      end;
      then
A46:  rng F2 c= C by A38;
      set p = F1 |^ I1;
A47:  Seg len F1 = dom F1 by FINSEQ_1:def 3;
A48:  len p = len F1 by GROUP_4:def 3;
      defpred P[Nat,object] means
ex i being Integer st i = I1.(len I1 - $1 + 1)
      & $2 = - i;
A49:  for k being Nat st k in Seg len I1 ex x being object st P[k,x]
      proof
        let k be Nat;
        assume k in Seg len I1;
        then
A50:    k in dom I1 by FINSEQ_1:def 3;
        then reconsider n = len I1 - k + 1 as Element of NAT by Lm22;
        1 <= n & n <= len I1 by A50,Lm22;
        then n in dom I1 by FINSEQ_3:25;
        then I1.n in rng I1 by FUNCT_1:def 3;
        then reconsider i = I1.n as Element of INT qua non empty set;
        take -i,i;
        thus thesis;
      end;
      consider I2 being FinSequence such that
A51:  dom I2 = Seg len I1 and
A52:  for k be Nat st k in Seg len I1 holds P[k,I2.k] from FINSEQ_1:
      sch 1(A49);
A53:  len F2 = len I2 by A37,A39,A51,FINSEQ_1:def 3;
A54:  rng I2 c= INT
      proof
        let x be object;
        assume x in rng I2;
        then consider y be object such that
A55:    y in dom I2 and
A56:    x = I2.y by FUNCT_1:def 3;
        reconsider y as Element of NAT by A55;
        ex i being Integer st i = I1.(len I1 - y + 1) & x = - i by A51,A52,A55
,A56;
        hence thesis by INT_1:def 2;
      end;
A57:  rng F2 c= the carrier of G by A42,XBOOLE_1:1;
A58:  dom F2 = dom I2 by A37,A39,A51,FINSEQ_1:def 3;
      reconsider I2 as FinSequence of INT by A54,FINSEQ_1:def 4;
      reconsider F2 as FinSequence of the carrier of G by A57,FINSEQ_1:def 4;
      set q = F2 |^ I2;
A59:  len q = len F2 by GROUP_4:def 3;
      then
A60:  dom q = dom F2 by FINSEQ_3:29;
A61:  dom F1 = dom I1 by A37,FINSEQ_3:29;
      now
        let k be Nat;
A62:    I2/.k = @(I2/.k);
        assume
A63:    k in dom q;
        then reconsider n = len p - k + 1 as Element of NAT by A39,A48,A59,Lm22
;
A64:    I1/.n = @(I1/.n) & q/.k = q.k by A63,PARTFUN1:def 6;
A65:    F2/.k = F2.k & F2.k = F1.n by A40,A48,A60,A63,PARTFUN1:def 6;
        1 <= n & len p >= n by A39,A48,A59,A63,Lm22;
        then
A66:    n in dom I2 by A37,A51,A48;
        then
A67:    I1.n = I1/.n by A51,A41,PARTFUN1:def 6;
        dom q = dom I1 by A37,A39,A59,FINSEQ_3:29;
        then consider i be Integer such that
A68:    i = I1.n and
A69:    I2.k = - i by A37,A52,A41,A48,A63;
        I2.k = I2/.k by A58,A60,A63,PARTFUN1:def 6;
        then
A70:    q.k = (F2/.k) |^ (- i) by A60,A63,A69,A62,GROUP_4:def 3;
        F1/.n= F1.n by A37,A47,A51,A66,PARTFUN1:def 6;
        then q.k = ((F1/.n) |^ i)" by A70,A65,GROUP_1:36;
        hence (q/.k)" = p.(len p - k + 1) by A61,A51,A41,A66,A68,A67,A64,
GROUP_4:def 3;
      end;
      then Product p" = Product q by A39,A48,A59,GROUP_4:14;
      hence c" in B by A36,A53,A46;
    end;
A71: rng <*> the carrier of G = {} & {} c= the_stable_subset_generated_by (
    A, the action of G);
    1_G = Product <*> the carrier of G & (<*> the carrier of G) |^ (<*>
    INT) = {} by GROUP_4:8,21;
    then 1_G in B by A71;
    then consider H be strict StableSubgroup of G such that
A72: the carrier of H = B by A3,A35,A16,Lm14;
    A c= B
    proof
      set C = the_stable_subset_generated_by (A, the action of G);
      reconsider p = 1 as Integer;
      let x be object;
      assume
A73:  x in A;
      then reconsider a = x as Element of G;
      A c= C by Def2;
      then
A74:  rng<* a *> = {a} & {a} c= C by A73,FINSEQ_1:39,ZFMISC_1:31;
A75:  Product(<* a *> |^ <* @p *>) = Product<* a |^ 1 *> by GROUP_4:22
        .= a |^ 1 by GROUP_4:9
        .= a by GROUP_1:26;
      len<* a *> = 1 & len<* @p *> = 1 by FINSEQ_1:39;
      hence thesis by A75,A74;
    end;
    then the_stable_subgroup_of A is StableSubgroup of H by A72,Def26;
    then the_stable_subgroup_of A is Subgroup of H by Def7;
    then g1 in H by A2,GROUP_2:40;
    then g1 in B by A72,STRUCT_0:def 5;
    then ex b being Element of G st b = g1 & ex F being FinSequence of the
    carrier of G, I being FinSequence of INT, C being Subset of G st C =
the_stable_subset_generated_by (A, the action of G) & b = Product(F |^ I) & len
    F = len I & rng F c= C;
    hence thesis;
  end;
  given F be FinSequence of the carrier of G, I be FinSequence of INT, C be
  Subset of G such that
A76: C = the_stable_subset_generated_by (A, the action of G) and
  len F = len I and
A77: rng F c= C and
A78: Product(F |^ I) = g1;
  H9 is Subgroup of G by Def7;
  then reconsider Y as Subset of G by GROUP_2:def 5;
  now
    let o be Element of O;
    let f be Function of G, G;
    assume
A79: o in O;
    assume
A80: f = (the action of G).o;
    now
      let y be object;
      assume y in f .: Y;
      then consider x being object such that
A81:  x in dom f and
A82:  x in Y and
A83:  y = f.x by FUNCT_1:def 6;
      reconsider x as Element of G by A81;
      x in H9 by A82,STRUCT_0:def 5;
      then (G^o).x in H9 by Lm9;
      then f.x in H9 by A79,A80,Def6;
      hence y in Y by A83,STRUCT_0:def 5;
    end;
    hence (f .: Y) c= Y;
  end;
  then
A84: Y is_stable_under_the_action_of the action of G;
  reconsider H9 as Subgroup of G by Def7;
  C c= the carrier of H9 by A76,A1,A84,Def2;
  then rng F c= carr H9 by A77;
  hence thesis by A78,GROUP_4:20;
end;

Lm24: A is empty implies the_stable_subgroup_of A = (1).G
proof
A1: now
    let H be strict StableSubgroup of G;
    assume A c= the carrier of H;
    (1).G = (1).H by Th15;
    hence (1).G is StableSubgroup of H;
  end;
  assume A is empty;
  then A c= the carrier of (1).G;
  hence thesis by A1,Def26;
end;

Lm25: for O being non empty set, E being set, o being Element of O, A being
Action of O,E holds Product(<*o*>,A) = A.o
proof
  let O be non empty set;
  let E be set;
  let o be Element of O;
  let A be Action of O,E;
  len <*o*> = 1 & ex PF be FinSequence of Funcs(E,E) st Product(<*o*>,A) =
PF .(len <*o*>) & len PF = len <*o*> & PF.1 = A.(<*o*>.1) & for k being Nat st
k<>0 & k<len <*o*> holds ex f,g being Function of E,E st f = PF.k & g = A.( <*o
  *>.(k+1)) & PF.(k+1) = f*g by Def3,FINSEQ_1:39;
  hence thesis;
end;

Lm26: for O being non empty set, E being set, o being Element of O, F being
FinSequence of O, A being Action of O,E holds Product(F^<*o*>,A) = Product(F,A)
*Product(<*o*>,A)
proof
  let O be non empty set;
  let E be set;
  let o be Element of O;
  let F be FinSequence of O;
  let A be Action of O,E;
  set F1=F^<*o*>;
A1: len F1 = len F + len <*o*> by FINSEQ_1:22
    .= len F + 1 by FINSEQ_1:39;
  consider PF1 be FinSequence of Funcs(E,E) such that
A2: Product(F1,A) = PF1.(len F1) and
A3: len PF1 = len F1 and
A4: PF1.1 = A.(F1.1) and
A5: for k being Nat st k<>0 & k<len F1 holds ex f,g being Function of E
  ,E st f = PF1.k & g = A.(F1.(k+1)) & PF1.(k+1) = f*g by Def3;
  per cases;
  suppose
A6: len F <> 0;
    reconsider PF=PF1|(Seg len F) as FinSequence of Funcs(E,E) by FINSEQ_1:18;
    set IT = PF.(len F);
A7: Product(<*o*>,A) = A.o by Lm25
      .= A.(F1.(len F + 1)) by FINSEQ_1:42;
A8: now
      let k be Nat;
      assume
A9:   k<>0;
      then
A10:  0+1<k+1 by XREAL_1:6;
      assume
A11:  k<len F;
      then k<len F1 by A1,NAT_1:13;
      then consider f,g be Function of E,E such that
A12:  f = PF1.k and
A13:  g = A.(F1.(k+1)) and
A14:  PF1.(k+1) = f*g by A5,A9;
      take f,g;
      1<=k by A10,NAT_1:13;
      then k in Seg len F by A11;
      hence f = PF.k by A12,FUNCT_1:49;
      k+1<=len F by A11,NAT_1:13;
      then
A15:  k+1 in Seg len F by A10;
      then k+1 in dom F by FINSEQ_1:def 3;
      hence g = A.(F.(k+1)) by A13,FINSEQ_1:def 7;
      thus PF.(k+1) = f*g by A14,A15,FUNCT_1:49;
    end;
A16: len F<len F1 by A1,NAT_1:13;
    then
A17: ex f,g be Function of E,E st f = PF1.(len F) & g = A.(F1 .(len F+1)) &
    PF1.(len F+1) = f*g by A5,A6;
    0+1<len F+1 by A6,XREAL_1:6;
    then 1<=len F by NAT_1:13;
    then
A18: 1 in Seg len F;
    then
A19: 1 in dom F by FINSEQ_1:def 3;
A20: len F in Seg len F by A6,FINSEQ_1:3;
    Seg len F c= Seg len PF1 by A3,A16,FINSEQ_1:5;
    then len F in Seg len PF1 by A20;
    then len F in dom PF1 by FINSEQ_1:def 3;
    then len F in dom PF1 /\ Seg len F by A20,XBOOLE_0:def 4;
    then len F in dom PF by RELAT_1:61;
    then IT in rng PF by FUNCT_1:3;
    then ex f being Function st IT = f & dom f = E & rng f c= E by
FUNCT_2:def 2;
    then reconsider IT as Function of E,E by FUNCT_2:2;
A21: len PF = len F by A3,A16,FINSEQ_1:17;
    PF.1 = A.(F1.1) by A4,A18,FUNCT_1:49
      .= A.(F.1) by A19,FINSEQ_1:def 7;
    then IT = Product(F,A) by A6,A21,A8,Def3;
    hence thesis by A1,A2,A6,A17,A7,FINSEQ_1:3,FUNCT_1:49;
  end;
  suppose
A22: len F = 0;
     then F = <*>O;
    hence Product(F^<*o*>,A) = Product(<*o*>,A) by FINSEQ_1:34
      .= (id E)*Product(<*o*>,A) by FUNCT_2:17
      .= Product(F,A)*Product(<*o*>,A) by A22,Def3;
  end;
end;

Lm27: for O being non empty set, E being set, o being Element of O, F being
FinSequence of O, A being Action of O,E holds Product(<*o*>^F,A) = Product(<*o
*>,A)*Product(F,A)
proof
  let O be non empty set;
  let E be set;
  let o be Element of O;
  let F be FinSequence of O;
  let A be Action of O,E;
  defpred P[Nat] means
 for F being FinSequence of O st len F = $1
  holds Product(<*o*>^F,A) = Product(<*o*>,A)*Product(F,A);
  reconsider k = len F as Element of NAT;
A1: k = len F;
A2: for k being Nat st P[k] holds P[k + 1]
  proof
    let k be Nat;
    assume
A3: P[k];
    now
      let F be FinSequence of O;
      assume
A4:   len F = k+1;
      then consider Fk be FinSequence of O, o9 be Element of O such that
A5:   F = Fk^<*o9*> by FINSEQ_2:19;
      len F = len Fk + len <*o9*> by A5,FINSEQ_1:22;
      then
A6:   k+1 = len Fk + 1 by A4,FINSEQ_1:39;
      set F2k=<*o*>^Fk;
      thus Product(<*o*>^F,A) = Product(<*o*>^Fk^<*o9*>,A) by A5,FINSEQ_1:32
        .= Product(F2k,A)*Product(<*o9*>,A) by Lm26
        .= Product(<*o*>,A)*Product(Fk,A)*Product(<*o9*>,A) by A3,A6
        .= Product(<*o*>,A)*((Product(Fk,A))*Product(<*o9*>,A)) by RELAT_1:36
        .= Product(<*o*>,A)*Product(F,A) by A5,Lm26;
    end;
    hence thesis;
  end;
A7: P[0]
  proof
    let F be FinSequence of O;
    assume
A8: len F = 0;
     then F = <*>O;
    hence Product(<*o*>^F,A) = Product(<*o*>,A) by FINSEQ_1:34
      .= Product(<*o*>,A)*id E by FUNCT_2:17
      .= Product(<*o*>,A)*Product(F,A) by A8,Def3;
  end;
  for k being Nat holds P[k] from NAT_1:sch 2(A7,A2);
  hence thesis by A1;
end;

Lm28: for O being non empty set, E being set, F1,F2 being FinSequence of O, A
being Action of O,E holds Product(F1^F2,A) = Product(F1,A) * Product(F2,A)
proof
  let O be non empty set, E be set;
  let F1,F2 be FinSequence of O;
  let A be Action of O,E;
  defpred P[Nat] means
for F1,F2 being FinSequence of O st len F1 =
  $1 holds Product(F1^F2,A) = Product(F1,A)*Product(F2,A);
  reconsider k = len F1 as Element of NAT;
A1: k = len F1;
A2: for k being Nat st P[k] holds P[k + 1]
  proof
    let k be Nat;
    assume
A3: P[k];
    now
      let F1,F2 be FinSequence of O;
      assume
A4:   len F1 = k+1;
      then consider F1k be FinSequence of O, o be Element of O such that
A5:   F1 = F1k^<*o*> by FINSEQ_2:19;
      set F2k=<*o*>^F2;
      len F1 = len F1k + len <*o*> by A5,FINSEQ_1:22;
      then
A6:   k+1 = len F1k + 1 by A4,FINSEQ_1:39;
      thus Product(F1^F2,A) = Product(F1k^F2k,A) by A5,FINSEQ_1:32
        .= Product(F1k,A)*Product(F2k,A) by A3,A6
        .= Product(F1k,A)*(Product(<*o*>,A)*Product(F2,A)) by Lm27
        .= (Product(F1k,A)*Product(<*o*>,A))*Product(F2,A) by RELAT_1:36
        .= Product(F1,A)*Product(F2,A) by A3,A5,A6;
    end;
    hence thesis;
  end;
A7: P[0]
  proof
    let F1,F2 be FinSequence of O;
    assume
A8: len F1 = 0;
     then F1 = <*>O;
    hence Product(F1^F2,A) = Product(F2,A) by FINSEQ_1:34
      .= (id E)*Product(F2,A) by FUNCT_2:17
      .= Product(F1,A)*Product(F2,A) by A8,Def3;
  end;
  for k being Nat holds P[k] from NAT_1:sch 2(A7,A2);
  hence thesis by A1;
end;

Lm29: for O,E being set, F being FinSequence of O, Y being Subset of E, A
being Action of O,E st Y is_stable_under_the_action_of A holds Product(F,A) .:
Y c= Y
proof
  let O,E be set;
  let F be FinSequence of O;
  let Y be Subset of E;
  let A be Action of O,E;
  assume
A1: Y is_stable_under_the_action_of A;
  per cases;
  suppose
    O={};
    then len F = 0;
    then Product(F,A) = id E by Def3;
    hence thesis by FUNCT_1:92;
  end;
  suppose
A2: O<>{};
    defpred P[Nat] means
for F being FinSequence of O st len F = $1
    holds Product(F,A) .: Y c= Y;
A3: for k being Nat st P[k] holds P[k + 1]
    proof
      let k be Nat;
      assume
A4:   P[k];
      now
        let F be FinSequence of O;
        assume
A5:     len F = k+1;
        then consider Fk be FinSequence of O, o be Element of O such that
A6:     F = Fk^<*o*> by FINSEQ_2:19;
        len F = len Fk + len <*o*> by A6,FINSEQ_1:22;
        then k+1 = len Fk + 1 by A5,FINSEQ_1:39;
        then
A7:     Product(Fk,A) .: Y c= Y by A4;
        reconsider F1 = <*o*> as FinSequence of O by A6,FINSEQ_1:36;
        Product(F,A) = Product(Fk,A)*Product(F1,A) by A2,A6,Lm28;
        then
A8:     Product(F,A) .: Y = Product(Fk,A) .: (Product(F1,A) .: Y) by
RELAT_1:126;
        Product(F1,A) = A.o by A2,Lm25;
        then Product(F1,A) .: Y c= Y by A1,A2;
        then Product(F,A) .: Y c= Product(Fk,A) .: Y by A8,RELAT_1:123;
        hence Product(F,A) .: Y c= Y by A7;
      end;
      hence thesis;
    end;
    reconsider k = len F as Element of NAT;
A9: k = len F;
A10: P[0]
    proof
      let F be FinSequence of O;
      assume len F = 0;
      then Product(F,A) = id E by Def3;
      hence thesis by FUNCT_1:92;
    end;
    for k being Nat holds P[k] from NAT_1:sch 2(A10,A3);
    hence thesis by A9;
  end;
end;

Lm30: for E being non empty set, A being Action of O,E holds for X being
Subset of E, a being Element of E st X is not empty holds a in
the_stable_subset_generated_by(X,A) iff ex F being FinSequence of O, x being
Element of X st Product(F,A).x = a
proof
  let E be non empty set;
  let A be Action of O,E;
  let X be Subset of E;
  let a be Element of E;
  defpred P[set] means ex F being FinSequence of O, x being Element of X st
  Product(F,A).x = $1;
  set B = {e where e is Element of E: P[e]};
  reconsider B as Subset of E from DOMAIN_1:sch 7;
  assume
A1: X is not empty;
A2: now
    let Y be Subset of E;
    assume
A3: Y is_stable_under_the_action_of A;
    assume
A4: X c= Y;
    now
      let x be object;
      assume x in B;
      then consider e be Element of E such that
A5:   x=e and
A6:   ex F being FinSequence of O, x9 being Element of X st Product(F
      ,A). x9 = e;
      consider F be FinSequence of O, x9 be Element of X such that
A7:   Product(F,A).x9 = e by A6;
A8:   x9 in X by A1;
      then x9 in E;
      then x9 in dom Product(F,A) by FUNCT_2:def 1;
      then
A9:   Product(F,A).x9 in Product(F,A).:Y by A4,A8,FUNCT_1:def 6;
      Product(F,A).:Y c= Y by A3,Lm29;
      hence x in Y by A5,A7,A9;
    end;
    hence B c= Y;
  end;
  now
    let o be Element of O;
    let f be Function of E, E;
    assume
A10: o in O;
    assume
A11: f = A.o;
    per cases;
    suppose
      O={};
      hence (f .: B) c= B by A10;
    end;
    suppose
A12:  O<>{};
      now
        reconsider o as Element of O;
        reconsider F99=<*o*> as FinSequence of O by A12,FINSEQ_1:74;
        let y be object;
        assume y in f .: B;
        then consider x being object such that
A13:    x in dom f and
A14:    x in B and
A15:    y = f.x by FUNCT_1:def 6;
        y in rng f by A13,A15,FUNCT_1:3;
        then reconsider e=y as Element of E;
        consider e9 be Element of E such that
A16:    e9=x and
A17:    ex F9 being FinSequence of O, x9 being Element of X st
        Product(F9,A ).x9 = e9 by A14;
        consider F9 be FinSequence of O, x9 be Element of X such that
A18:    Product(F9,A).x9 = e9 by A17;
        reconsider F=F99^F9 as FinSequence of O;
        x9 in X by A1;
        then x9 in E;
        then
A19:    x9 in dom Product(F9,A) by FUNCT_2:def 1;
        Product(F,A).x9 = (Product(F99,A)*Product(F9,A)).x9 by A12,Lm28
          .= Product(F99,A).(Product(F9,A).x9) by A19,FUNCT_1:13
          .= e by A11,A12,A15,A16,A18,Lm25;
        hence y in B;
      end;
      hence (f .: B) c= B;
    end;
  end;
  then
A20: B is_stable_under_the_action_of A;
  now
    set F=<*>O;
    let x be object;
    assume
A21: x in X;
    then reconsider e=x as Element of E;
    reconsider x9=e as Element of X by A21;
    len F = 0;
    then Product(F,A).x = (id E).x by Def3
      .= x by A21,FUNCT_1:18;
    then Product(F,A).x9 = e;
    hence x in B;
  end;
  then X c= B;
  then
A22: B = the_stable_subset_generated_by(X,A) by A20,A2,Def2;
  hereby
    assume a in the_stable_subset_generated_by(X,A);
    then consider e be Element of E such that
A23: a=e and
A24: ex F being FinSequence of O, x being Element of X st Product(F,A)
    .x = e by A22;
    consider F be FinSequence of O, x be Element of X such that
A25: Product(F,A).x = e by A24;
    take F, x;
    thus Product(F,A).x = a by A23,A25;
  end;
  given F be FinSequence of O, x be Element of X such that
A26: Product(F,A).x = a;
  thus thesis by A22,A26;
end;

:: GROUP_4:40

theorem Th25:
  for H being strict StableSubgroup of G holds
  the_stable_subgroup_of carr H = H
proof
  let H be strict StableSubgroup of G;
  for H1 be strict StableSubgroup of G st carr H c= the carrier of H1
  holds H is StableSubgroup of H1 by Lm20;
  hence thesis by Def26;
end;

:: GROUP_4:41

theorem Th26:
  A c= B implies the_stable_subgroup_of A is StableSubgroup of
  the_stable_subgroup_of B
proof
  assume
A1: A c= B;
  per cases;
  suppose
A2: A is empty;
    reconsider H1 = (1).G,H2 = (1).(the_stable_subgroup_of B) as strict
    StableSubgroup of G by Th11;
    the carrier of H1 = {1_G} by Def8
      .= {1_(the_stable_subgroup_of B)} by Th4
      .= the carrier of H2 by Def8;
    then (1).G = (1).(the_stable_subgroup_of B) by Lm4;
    hence thesis by A2,Lm24;
  end;
  suppose
A3: A is not empty;
    now
      set D = the_stable_subset_generated_by (B, the action of G);
      let a be Element of G;
      assume a in the_stable_subgroup_of A;
      then consider
      F be FinSequence of the carrier of G, I be FinSequence of INT,
      C be Subset of G such that
A4:   C = the_stable_subset_generated_by (A, the action of G) and
A5:   len F = len I and
A6:   rng F c= C and
A7:   Product(F |^ I) = a by Th24;
      now
        let y be object;
        assume
A8:     y in C;
        then reconsider b=y as Element of G;
        consider F1 be FinSequence of O, x be Element of A such that
A9:     Product(F1,the action of G).x = b by A3,A4,A8,Lm30;
        x in A by A3;
        hence y in D by A1,A9,Lm30;
      end;
      then C c= D;
      then rng F c= D by A6;
      hence a in the_stable_subgroup_of B by A5,A7,Th24;
    end;
    hence thesis by Th13;
  end;
end;

scheme
  MeetSbgWOpEx{O() -> set, G() -> GroupWithOperators of O(), P[set]}: ex H
  being strict StableSubgroup of G() st the carrier of H = meet{A where A is
Subset of G() : ex K being strict StableSubgroup of G() st A = the carrier of K
  & P[K]}
provided
A1: ex H being strict StableSubgroup of G() st P[H]
proof
  set X = {A where A is Subset of G(): ex K being strict StableSubgroup of G()
  st A = the carrier of K & P[K]};
  consider T being strict StableSubgroup of G() such that
A2: P[T] by A1;
A3: carr T in X by A2;
  then reconsider Y = meet X as Subset of G() by SETFAM_1:7;
A4: now
    let a be Element of G();
    assume
A5: a in Y;
    now
      let Z be set;
      assume
A6:   Z in X;
      then consider A being Subset of G() such that
A7:   A = Z and
A8:   ex H being strict StableSubgroup of G() st A = the carrier of H & P[H];
      consider H being StableSubgroup of G() such that
A9:   A = the carrier of H and
      P[H] by A8;
      a in the carrier of H by A5,A6,A7,A9,SETFAM_1:def 1;
      then a in H by STRUCT_0:def 5;
      then a" in H by Lm19;
      hence a" in Z by A7,A9,STRUCT_0:def 5;
    end;
    hence a" in Y by A3,SETFAM_1:def 1;
  end;
A10: now
    let a,b be Element of G();
    assume that
A11: a in Y and
A12: b in Y;
    now
      let Z be set;
      assume
A13:  Z in X;
      then consider A being Subset of G() such that
A14:  A = Z and
A15:  ex H being strict StableSubgroup of G() st A = the carrier of H & P[H];
      consider H being StableSubgroup of G() such that
A16:  A = the carrier of H and
      P[H] by A15;
      b in the carrier of H by A12,A13,A14,A16,SETFAM_1:def 1;
      then
A17:  b in H by STRUCT_0:def 5;
      a in the carrier of H by A11,A13,A14,A16,SETFAM_1:def 1;
      then a in H by STRUCT_0:def 5;
      then a * b in H by A17,Lm18;
      hence a * b in Z by A14,A16,STRUCT_0:def 5;
    end;
    hence a * b in Y by A3,SETFAM_1:def 1;
  end;
A18: now
    let o be Element of O();
    let a be Element of G();
    assume
A19: a in Y;
    now
      let Z be set;
      assume
A20:  Z in X;
      then consider A being Subset of G() such that
A21:  A = Z and
A22:  ex H being strict StableSubgroup of G() st A = the carrier of H & P[H];
      consider H being StableSubgroup of G() such that
A23:  A = the carrier of H and
      P[H] by A22;
      a in the carrier of H by A19,A20,A21,A23,SETFAM_1:def 1;
      then a in H by STRUCT_0:def 5;
      then (G()^o).a in H by Lm9;
      hence (G()^o).a in Z by A21,A23,STRUCT_0:def 5;
    end;
    hence (G()^o).a in Y by A3,SETFAM_1:def 1;
  end;
  now
    let Z be set;
    assume Z in X;
    then consider A being Subset of G() such that
A24: Z = A and
A25: ex K being strict StableSubgroup of G() st A = the carrier of K & P[K];
    consider H being StableSubgroup of G() such that
A26: A = the carrier of H and
    P[H] by A25;
    1_G() in H by Lm17;
    hence 1_G() in Z by A24,A26,STRUCT_0:def 5;
  end;
  then Y <> {} by A3,SETFAM_1:def 1;
  hence thesis by A10,A4,A18,Lm14;
end;

:: GROUP_4:43

theorem Th27:
  the carrier of the_stable_subgroup_of A = meet{B where B is
Subset of G: ex H being strict StableSubgroup of G st B = the carrier of H & A
  c= carr H}
proof
  defpred P[StableSubgroup of G] means A c= carr $1;
  set X = {B where B is Subset of G :ex H being strict StableSubgroup of G st
  B = the carrier of H & A c= carr H};
A1: now
    let Y be set;
    assume Y in X;
    then
    ex B being Subset of G st Y = B & ex H being strict StableSubgroup of
    G st B = the carrier of H & A c= carr H;
    hence A c= Y;
  end;
  the carrier of (Omega).G = carr (Omega).G;
  then
A2: ex H being strict StableSubgroup of G st P[H];
  consider H being strict StableSubgroup of G such that
A3: the carrier of H = meet{B where B is Subset of G: ex H being strict
  StableSubgroup of G st B = the carrier of H & P[H]} from MeetSbgWOpEx(A2);
A4: now
    let H1 be strict StableSubgroup of G;
A5: the carrier of H1 = carr H1;
    assume A c= the carrier of H1;
    then the carrier of H1 in X by A5;
    hence H is StableSubgroup of H1 by A3,Lm20,SETFAM_1:3;
  end;
  carr (Omega).G in X;
  then A c= the carrier of H by A3,A1,SETFAM_1:5;
  hence thesis by A3,A4,Def26;
end;

Lm31: B = the carrier of gr A implies the_stable_subgroup_of A =
the_stable_subgroup_of B
proof
A1: A c= the carrier of gr A by GROUP_4:def 4;
  assume
A2: B = the carrier of gr A;
A3: now
    let H be strict StableSubgroup of G;
    reconsider H9=the multMagma of H as strict Subgroup of G by Lm15;
    assume A c= the carrier of H;
    then gr A is Subgroup of H9 by GROUP_4:def 4;
    then B c= the carrier of H9 by A2,GROUP_2:def 5;
    hence the_stable_subgroup_of B is StableSubgroup of H by Def26;
  end;
  the carrier of gr A c= the carrier of the_stable_subgroup_of B by A2,Def26;
  then A c= the carrier of the_stable_subgroup_of B by A1;
  hence thesis by A3,Def26;
end;

:: GROUP_4:64

theorem Th28:
  for N1,N2 being strict normal StableSubgroup of G holds N1 * N2 = N2 * N1
proof
  let N1,N2 be strict normal StableSubgroup of G;
  reconsider N19= the multMagma of N1,N29= the multMagma of N2 as strict
  normal Subgroup of G by Lm6;
  thus N1 * N2 = carr N29 * carr N19 by GROUP_3:125
    .= N2 * N1;
end;

:: GROUP_4:68

theorem Th29:
  H1 "\/" H2 = the_stable_subgroup_of(H1 * H2)
proof
  reconsider H19=H1,H29=H2 as Subgroup of G by Def7;
  reconsider Y = the carrier of (H19"\/"H29) as Subset of G by GROUP_2:def 5;
A1: Y = the carrier of gr(H19*H29) by GROUP_4:50;
  H1 "\/" H2 = the_stable_subgroup_of Y by Lm31
    .= the_stable_subgroup_of(H19*H29) by A1,Lm31;
  hence thesis;
end;

:: GROUP_4:69

theorem Th30:
  H1 * H2 = H2 * H1 implies the carrier of H1 "\/" H2 = H1 * H2
proof
  assume H1 * H2 = H2 * H1;
  then consider H being strict StableSubgroup of G such that
A1: the carrier of H = carr H1 * carr H2 by Th17;
  now
    set A = carr H1 \/ carr H2;
    let a be Element of G;
    set X = {B where B is Subset of G: ex H being strict StableSubgroup of G
    st B = the carrier of H & A c= carr H};
    assume a in H;
    then a in carr H1 * carr H2 by A1,STRUCT_0:def 5;
    then consider b,c be Element of G such that
A2: a = b * c and
A3: b in carr H1 and
A4: c in carr H2;
A5: now
      let Y be set;
      assume Y in X;
      then consider B be Subset of G such that
A6:   Y = B and
A7:   ex H being strict StableSubgroup of G st B = the carrier of H &
      A c= carr H;
      consider H9 be strict StableSubgroup of G such that
A8:   B = the carrier of H9 and
A9:   A c= carr H9 by A7;
      c in A by A4,XBOOLE_0:def 3;
      then
A10:  c in H9 by A9,STRUCT_0:def 5;
A11:  H9 is Subgroup of G by Def7;
      b in A by A3,XBOOLE_0:def 3;
      then b in H9 by A9,STRUCT_0:def 5;
      then b * c in H9 by A11,A10,GROUP_2:50;
      hence a in Y by A2,A6,A8,STRUCT_0:def 5;
    end;
    carr (Omega).G in X;
    then a in meet X by A5,SETFAM_1:def 1;
    then a in the carrier of the_stable_subgroup_of A by Th27;
    hence a in H1 "\/" H2 by STRUCT_0:def 5;
  end;
  then H is StableSubgroup of H1 "\/" H2 by Th13;
  then H is Subgroup of H1 "\/" H2 by Def7;
  then
A12: the carrier of H c= the carrier of H1 "\/" H2 by GROUP_2:def 5;
  carr H1 \/ carr H2 c= carr H1 * carr H2
  proof
    let x be object;
    assume
A13: x in carr H1 \/ carr H2;
    then reconsider a = x as Element of G;
    now
      per cases by A13,XBOOLE_0:def 3;
      suppose
A14:    x in carr H1;
        1_G in H2 by Lm17;
        then
A15:    1_G in carr H2 by STRUCT_0:def 5;
        a * 1_G = a by GROUP_1:def 4;
        hence thesis by A14,A15;
      end;
      suppose
A16:    x in carr H2;
        1_G in H1 by Lm17;
        then
A17:    1_G in carr H1 by STRUCT_0:def 5;
        1_G * a = a by GROUP_1:def 4;
        hence thesis by A16,A17;
      end;
    end;
    hence thesis;
  end;
  then H1 "\/" H2 is StableSubgroup of H by A1,Def26;
  then H1 "\/" H2 is Subgroup of H by Def7;
  then the carrier of H1 "\/" H2 c= the carrier of H by GROUP_2:def 5;
  hence thesis by A1,A12,XBOOLE_0:def 10;
end;

:: GROUP_4:71

theorem Th31:
  for N1,N2 being strict normal StableSubgroup of G holds the
  carrier of N1 "\/" N2 = N1 * N2
proof
  let N1,N2 be strict normal StableSubgroup of G;
  N1 * N2 = N2 * N1 by Th28;
  hence thesis by Th30;
end;

:: GROUP_4:72

theorem Th32:
  for N1,N2 being strict normal StableSubgroup of G holds N1 "\/"
  N2 is normal StableSubgroup of G
proof
  let N1,N2 be strict normal StableSubgroup of G;
  (ex N be strict normal StableSubgroup of G st the carrier of N = carr N1
  * carr N2 )& the carrier of N1 "\/" N2 = N1 * N2 by Th23,Th31;
  hence thesis by Lm4;
end;

:: GROUP_4:76

theorem Th33:
  for H being strict StableSubgroup of G holds (1).G "\/" H = H &
  H "\/" (1).G = H
proof
  let H be strict StableSubgroup of G;
  1_G in H by Lm17;
  then 1_G in carr H by STRUCT_0:def 5;
  then {1_G} c= carr H by ZFMISC_1:31;
  then
A1: {1_G} \/ carr H = carr H by XBOOLE_1:12;
  carr(1).G = {1_G} by Def8;
  hence thesis by A1,Th25;
end;

:: GROUP_4:77

theorem Th34:
  (Omega).G "\/" H1 = (Omega).G & H1 "\/" (Omega).G = (Omega).G
proof
  (the carrier of (Omega).G) \/ carr H1 = [#] the carrier of G by SUBSET_1:11;
  hence thesis by Th25;
end;

:: Lm7 in GROUP_4

Lm32: H1 is StableSubgroup of H1 "\/" H2
proof
  carr H1 c= carr H1 \/ carr H2 & carr H1 \/ carr H2 c= the carrier of
  the_stable_subgroup_of (carr H1 \/ carr H2) by Def26,XBOOLE_1:7;
  hence thesis by Lm20,XBOOLE_1:1;
end;

:: GROUP_4:78

theorem Th35:
  H1 is StableSubgroup of H1 "\/" H2 & H2 is StableSubgroup of H1 "\/" H2
proof
  H1 "\/" H2 = H2 "\/" H1;
  hence thesis by Lm32;
end;

:: GROUP_4:79

theorem Th36:
  for H2 being strict StableSubgroup of G holds H1 is
  StableSubgroup of H2 iff H1 "\/" H2 = H2
proof
  let H2 be strict StableSubgroup of G;
  thus H1 is StableSubgroup of H2 implies H1 "\/" H2 = H2
  proof
    assume H1 is StableSubgroup of H2;
    then H1 is Subgroup of H2 by Def7;
    then the carrier of H1 c= the carrier of H2 by GROUP_2:def 5;
    hence H1 "\/" H2 = the_stable_subgroup_of carr H2 by XBOOLE_1:12
      .= H2 by Th25;
  end;
  thus thesis by Th35;
end;

:: GROUP_4:81

theorem Th37:
  for H3 being strict StableSubgroup of G holds H1 is
  StableSubgroup of H3 & H2 is StableSubgroup of H3 implies H1 "\/" H2 is
  StableSubgroup of H3
proof
  let H3 be strict StableSubgroup of G;
  assume that
A1: H1 is StableSubgroup of H3 and
A2: H2 is StableSubgroup of H3;
  H2 is Subgroup of H3 by A2,Def7;
  then
A3: carr H2 c= carr H3 by GROUP_2:def 5;
  H1 is Subgroup of H3 by A1,Def7;
  then carr H1 c= carr H3 by GROUP_2:def 5;
  then the_stable_subgroup_of(carr H1 \/ carr H2) is StableSubgroup of
  the_stable_subgroup_of carr H3 by A3,Th26,XBOOLE_1:8;
  hence thesis by Th25;
end;

:: GROUP_4:82

theorem Th38:
  for H2,H3 being strict StableSubgroup of G holds H1 is
  StableSubgroup of H2 implies H1 "\/" H3 is StableSubgroup of H2 "\/" H3
proof
  let H2,H3 be strict StableSubgroup of G;
  assume H1 is StableSubgroup of H2;
  then H1 is Subgroup of H2 by Def7;
  then carr H1 c= carr H2 by GROUP_2:def 5;
  hence thesis by Th26,XBOOLE_1:9;
end;

:: GROUP_6:3

theorem Th39:
  for X,Y being StableSubgroup of H1, X9,Y9 being StableSubgroup
  of G st X = X9 & Y = Y9 holds X9 /\ Y9 = X /\ Y
proof
  let X,Y be StableSubgroup of H1;
  reconsider Z = X /\ Y as StableSubgroup of G by Th11;
  let X9,Y9 be StableSubgroup of G;
  assume
A1: X=X9 & Y=Y9;
  the carrier of X /\ Y = (carr X) /\ (carr Y) by Def25;
  then X9 /\ Y9 = Z by A1,Th18;
  hence thesis;
end;

:: GROUP_6:9

theorem Th40:
  N is StableSubgroup of H1 implies N is normal StableSubgroup of H1
proof
  assume N is StableSubgroup of H1;
  then reconsider N9 = N as StableSubgroup of H1;
  now
    reconsider N99=the multMagma of N as normal Subgroup of G by Lm6;
    let H be strict Subgroup of H1;
    assume
A1: H = the multMagma of N9;
    reconsider N as Subgroup of G by Def7;
    H1 is Subgroup of G & N99 is Subgroup of N by Def7,GROUP_2:57;
    hence H is normal by A1,GROUP_6:8;
  end;
  hence thesis by Def10;
end;

:: Lm4 in GROUP_6

Lm33: H1 /\ H2 is StableSubgroup of H1
proof
  the carrier of H1 /\ H2 = (the carrier of H1) /\ (the carrier of H2) by Th18;
  hence thesis by Lm20,XBOOLE_1:17;
end;

:: GROUP_6:10

theorem Th41:
  H1 /\ N is normal StableSubgroup of H1 & N /\ H1 is normal
  StableSubgroup of H1
proof
  thus H1 /\ N is normal StableSubgroup of H1
  proof
    reconsider A = H1 /\ N as StableSubgroup of H1 by Lm33;
    now
      reconsider N9=the multMagma of N as normal Subgroup of G by Lm6;
      let H be strict Subgroup of H1;
      assume
A1:   H = the multMagma of A;
      now
        let b be Element of H1;
        thus b * H c= H * b
        proof
          let x be object;
          assume x in b * H;
          then consider a be Element of H1 such that
A2:       x = b * a and
A3:       a in H by GROUP_2:103;
          reconsider a9 = a, b9 = b as Element of G by Th2;
          reconsider x9 = x as Element of H1 by A2;
A4:       b9" = b" by Th6;
          a in the carrier of A by A1,A3,STRUCT_0:def 5;
          then a in carr(H1) /\ carr(N) by Def25;
          then a in carr N9 by XBOOLE_0:def 4;
          then
A5:       a in N9 by STRUCT_0:def 5;
          x = b9 * a9 by A2,Th3;
          then
A6:       x in b9 * N9 by A5,GROUP_2:103;
          b9 * N9 c= N9 * b9 by GROUP_3:118;
          then consider b1 be Element of G such that
A7:       x = b1 * b9 and
A8:       b1 in N9 by A6,GROUP_2:104;
          reconsider x99 = x as Element of G by A7;
          b1 = x99 * b9" by A7,GROUP_1:14;
          then
A9:       b1 = x9 * b" by A4,Th3;
          then reconsider b19 = b1 as Element of H1;
          b1 in the carrier of N by A8,STRUCT_0:def 5;
          then b1 in carr(H1) /\ carr(N) by A9,XBOOLE_0:def 4;
          then b19 in the carrier of A by Def25;
          then
A10:      b19 in H by A1,STRUCT_0:def 5;
          b19 * b = x by A7,Th3;
          hence thesis by A10,GROUP_2:104;
        end;
      end;
      hence H is normal by GROUP_3:118;
    end;
    hence thesis by Def10;
  end;
  hence thesis;
end;

:: GROUP_6:13

theorem Th42:
  for G being strict GroupWithOperators of O holds G is trivial
  implies (1).G = G
proof
  let G be strict GroupWithOperators of O;
  reconsider H=G as StableSubgroup of G by Lm3;
  assume G is trivial;
  then ex x be object st the carrier of G = {x};
  then the carrier of H = {1_G} by TARSKI:def 1;
  hence thesis by Def8;
end;

Lm34: for N9 being normal Subgroup of G st N9 = the multMagma of N holds G./.
N9 = the multMagma of G./.N & 1_(G./.N9) = 1_(G./.N)
proof
  let N9 be normal Subgroup of G;
  assume
A1: N9 = the multMagma of N;
  then reconsider e=1_(G./.N9) as Element of G./.N by Def14;
  Cosets N9 = Cosets N by A1,Def14;
  hence G./.N9 = the multMagma of G./.N by A1,Def15;
  now
    let h be Element of G./.N;
    reconsider h9=h as Element of G./.N9 by A1,Def14;
    thus h * e = h9 * 1_(G./.N9) by A1,Def15
      .= h by GROUP_1:def 4;
    thus e * h = 1_(G./.N9) * h9 by A1,Def15
      .= h by GROUP_1:def 4;
  end;
  hence thesis by GROUP_1:4;
end;

:: GROUP_6:29

theorem Th43:
  1_(G./.N) = carr N
proof
  reconsider N9 = the multMagma of N as normal Subgroup of G by Lm6;
  1_(G./.N9) = carr N9 by GROUP_6:24;
  hence thesis by Lm34;
end;

:: GROUP_6:35

theorem Th44:
  for M,N being strict normal StableSubgroup of G, MN being normal
  StableSubgroup of N st MN=M & M is StableSubgroup of N holds N./.MN is normal
  StableSubgroup of G./.M
proof
  let M,N be strict normal StableSubgroup of G;
  reconsider M9 = the multMagma of M as normal Subgroup of G by Lm6;
  reconsider N9 = the multMagma of N as normal Subgroup of G by Lm6;
  let MN be normal StableSubgroup of N;
  assume
A1: MN=M;
  reconsider MN99=(N9,M9)`*` as normal Subgroup of N9;
  reconsider MN9 = the multMagma of MN as normal Subgroup of N by Lm6;
  assume M is StableSubgroup of N;
  then M is Subgroup of N by Def7;
  then
  the carrier of M c= the carrier of N & the multF of M = (the multF of N)
  || the carrier of M by GROUP_2:def 5;
  then
A2: M9 is Subgroup of N9 by GROUP_2:def 5;
  then
A3: (N9,M9)`*` = MN9 by A1,GROUP_6:def 1;
  reconsider K=N9./.(N9,M9)`*` as normal Subgroup of G./.M9 by A2,GROUP_6:29;
A4: now
    let x be object;
    hereby
      assume x in Cosets MN9;
      then consider a be Element of N such that
A5:   x = a * MN9 and
      x = MN9 * a by GROUP_6:13;
      reconsider a9 = a as Element of N9;
      reconsider A = {a} as Subset of N by ZFMISC_1:31;
      reconsider A9 = {a9} as Subset of N9 by ZFMISC_1:31;
      now
        let y be object;
        hereby
          assume y in {g * h where g,h is Element of N:g in A & h in carr MN9};
          then consider g,h be Element of N such that
A6:       y = g*h and
A7:       g in A & h in carr MN9;
          reconsider h9=h as Element of N9;
          reconsider g9=g as Element of N9;
          y = g9*h9 by A6;
          hence y in {g99*h99 where g99,h99 is Element of N9: g99 in A9 & h99
          in carr MN99} by A3,A7;
        end;
        assume y in {g*h where g,h is Element of N9: g in A9 & h in carr MN99};
        then consider g,h be Element of N9 such that
A8:     y = g*h and
A9:     g in A9 & h in carr MN99;
        reconsider h9=h as Element of N;
        reconsider g9=g as Element of N;
        y = g9*h9 by A8;
        hence y in {g99*h99 where g99,h99 is Element of N: g99 in A & h99 in
        carr MN9} by A3,A9;
      end;
      then x = a9 * MN99 by A5,TARSKI:2;
      hence x in Cosets MN99 by GROUP_6:14;
    end;
    assume x in Cosets MN99;
    then consider a9 be Element of N9 such that
A10: x = a9 * MN99 and
    x = MN99 * a9 by GROUP_6:13;
    reconsider a = a9 as Element of N;
    reconsider A9 = {a9} as Subset of N9 by ZFMISC_1:31;
    reconsider A = {a} as Subset of N by ZFMISC_1:31;
    now
      let y be object;
      hereby
        assume y in {g * h where g,h is Element of N:g in A & h in carr MN9};
        then consider g,h be Element of N such that
A11:    y = g*h and
A12:    g in A & h in carr MN9;
        reconsider h9=h as Element of N9;
        reconsider g9=g as Element of N9;
        y = g9*h9 by A11;
        hence y in {g99*h99 where g99,h99 is Element of N9: g99 in A9 & h99 in
        carr MN99} by A3,A12;
      end;
      assume y in {g*h where g,h is Element of N9: g in A9 & h in carr MN99};
      then consider g,h be Element of N9 such that
A13:  y = g*h and
A14:  g in A9 & h in carr MN99;
      reconsider h9=h as Element of N;
      reconsider g9=g as Element of N;
      y = g9*h9 by A13;
      hence
      y in {g99*h99 where g99,h99 is Element of N: g99 in A & h99 in carr
      MN9} by A3,A14;
    end;
    then x = a * MN9 by A10,TARSKI:2;
    hence x in Cosets MN9 by GROUP_6:14;
  end;
  then
A15: the carrier of K = Cosets MN9 by TARSKI:2
    .= the carrier of N./.MN by Def14;
A16: now
    let H be strict Subgroup of G./.M;
    assume
A17: H = the multMagma of N./.MN;
    now
      let a be Element of G./.M;
      reconsider a9=a as Element of G./.M9 by Def14;
      now
        let x be object;
        assume x in a * carr H;
        then consider b be Element of G./.M such that
A18:    x = a * b and
A19:    b in carr H by GROUP_2:27;
        reconsider b9=b as Element of G./.M9 by Def14;
A20:    x = a9 * b9 by A18,Def15;
        then reconsider x9=x as Element of G./.M9;
        a9 * K c= K * a9 & x9 in a9 * carr K by A15,A17,A19,A20,GROUP_2:27
,GROUP_3:118;
        then consider c9 be Element of G./.M9 such that
A21:    x9 = c9 * a9 and
A22:    c9 in carr K by GROUP_2:28;
        reconsider c = c9 as Element of G./.M by Def14;
        x = c * a by A21,Def15;
        hence x in carr H * a by A15,A17,A22,GROUP_2:28;
      end;
      hence a * H c= H * a;
    end;
    hence H is normal by GROUP_3:118;
  end;
A23: the carrier of G./.M = the carrier of G./.M9 by Def14;
  then
A24: the carrier of N./.MN c= the carrier of G./.M by A15,GROUP_2:def 5;
A25: now
    let o be Element of O;
    per cases;
    suppose
A26:  not o in O;
A27:  the carrier of N./.MN c= the carrier of G./.M by A23,A15,GROUP_2:def 5;
A28:  now
        let x,y be object;
        assume
A29:    [x,y] in id the carrier of N./.MN;
        then
A30:    x in the carrier of N./.MN by RELAT_1:def 10;
        x=y by A29,RELAT_1:def 10;
        then [x,y] in id the carrier of G./.M by A27,A30,RELAT_1:def 10;
        hence [x,y] in (id the carrier of G./.M)|the carrier of N./.MN by A30,
RELAT_1:def 11;
      end;
A31:  now
        let x,y be object;
        assume
A32:    [x,y] in (id the carrier of G./.M)|the carrier of N./.MN;
        then [x,y] in id the carrier of G ./.M by RELAT_1:def 11;
        then
A33:    x=y by RELAT_1:def 10;
        x in the carrier of N./.MN by A32,RELAT_1:def 11;
        hence [x,y] in id the carrier of N./.MN by A33,RELAT_1:def 10;
      end;
      thus (N./.MN)^o = id the carrier of N./.MN by A26,Def6
        .= (id the carrier of G./.M)|the carrier of N./.MN by A28,A31
        .= ((G./.M)^o)|the carrier of N./.MN by A26,Def6;
    end;
    suppose
A34:  o in O;
      then (the action of G./.M).o in Funcs(the carrier of G./.M, the carrier
      of G./.M) by FUNCT_2:5;
      then consider f be Function such that
A35:  f=(the action of G./.M).o and
A36:  dom f = the carrier of G./.M and
      rng f c= the carrier of G./.M by FUNCT_2:def 2;
A37:  f = {[A,B] where A,B is Element of Cosets M: ex a,b being Element
      of G st a in A & b in B & b = (G^o).a} by A34,A35,Def16;
      (the action of N./.MN).o in Funcs(the carrier of N./.MN, the
      carrier of N./.MN) by A34,FUNCT_2:5;
      then consider g be Function such that
A38:  g=(the action of N./.MN).o and
A39:  dom g = the carrier of N./.MN and
      rng g c= the carrier of N./.MN by FUNCT_2:def 2;
A40:  dom g = dom f /\ the carrier of N./.MN by A24,A36,A39,XBOOLE_1:28;
A41:  g = {[A,B] where A,B is Element of Cosets MN: ex a,b being Element
      of N st a in A & b in B & b = (N^o).a} by A34,A38,Def16;
A42:  now
        let x be object;
        assume
A43:    x in dom g;
        then [x,g.x] in g by FUNCT_1:1;
        then consider A2,B2 be Element of Cosets MN such that
A44:    [x,g.x]=[A2,B2] and
A45:    ex a,b being Element of N st a in A2 & b in B2 & b = (N^o).a by A41;
A46:    A2=x by A44,XTUPLE_0:1;
        [x,f.x] in f by A24,A36,A39,A43,FUNCT_1:1;
        then consider A1,B1 be Element of Cosets M such that
A47:    [x,f.x]=[A1,B1] and
A48:    ex a,b being Element of G st a in A1 & b in B1 & b = (G^o).a by A37;
A49:    A1=x by A47,XTUPLE_0:1;
        reconsider A29=A2,B29=B2 as Element of Cosets MN9 by Def14;
        reconsider A19=A1,B19=B1 as Element of Cosets M9 by Def14;
        set fo = G^o;
        N is Subgroup of G by Def7;
        then
A50:    the carrier of N c= the carrier of G by GROUP_2:def 5;
        consider a2,b2 be Element of N such that
A51:    a2 in A2 and
A52:    b2 in B2 and
A53:    b2 = (N^o).a2 by A45;
A54:    B29 = b2 * MN9 by A52,Lm8;
        reconsider a29=a2,b29=b2 as Element of G by A50;
        consider a1,b1 be Element of G such that
A55:    a1 in A1 and
A56:    b1 in B1 and
A57:    b1 = (G^o).a1 by A48;
A58:    A19 = a1 * M9 by A55,Lm8;
        now
          let x be object;
          hereby
            assume x in b2 * carr MN9;
            then consider h be Element of N such that
A59:        x = b2 * h and
A60:        h in carr MN9 by GROUP_2:27;
            reconsider h9=h as Element of G by A50;
            x = b29 * h9 by A59,Th3;
            hence x in b29 * carr M9 by A1,A60,GROUP_2:27;
          end;
          assume x in b29 * carr M9;
          then consider h be Element of G such that
A61:      x = b29 * h and
A62:      h in carr M9 by GROUP_2:27;
          h in carr MN9 by A1,A62;
          then reconsider h9=h as Element of N;
          x = b2 * h9 by A61,Th3;
          hence x in b2 * carr MN9 by A1,A62,GROUP_2:27;
        end;
        then
A63:    b29 * M9 = b2 * MN9 by TARSKI:2;
A64:    B2=g.x by A44,XTUPLE_0:1;
A65:    B1=f.x by A47,XTUPLE_0:1;
        now
          let x be object;
          hereby
            assume x in a2 * carr MN9;
            then consider h be Element of N such that
A66:        x = a2 * h and
A67:        h in carr MN9 by GROUP_2:27;
            reconsider h9=h as Element of G by A50;
            x = a29 * h9 by A66,Th3;
            hence x in a29 * carr M9 by A1,A67,GROUP_2:27;
          end;
          assume x in a29 * carr M9;
          then consider h be Element of G such that
A68:      x = a29 * h and
A69:      h in carr M9 by GROUP_2:27;
          h in carr MN9 by A1,A69;
          then reconsider h9=h as Element of N;
          x = a2 * h9 by A68,Th3;
          hence x in a2 * carr MN9 by A1,A69,GROUP_2:27;
        end;
        then
A70:    a2 * MN9 = a29 * M9 by TARSKI:2;
        A29 = a2 * MN9 by A51,Lm8;
        then a1" * a29 in M9 by A49,A46,A58,A70,GROUP_2:114;
        then a1" * a29 in the carrier of M by STRUCT_0:def 5;
        then a1" * a29 in M by STRUCT_0:def 5;
        then
A71:    fo.(a1" * a29) in M by Lm9;
A72:    b1" = fo.a1" by A57,GROUP_6:32;
        b29 = ((G^o)|the carrier of N).a2 by A53,Def7
          .= fo.a29 by FUNCT_1:49;
        then b1" * b29 in M by A72,A71,GROUP_6:def 6;
        then b1" * b29 in the carrier of M by STRUCT_0:def 5;
        then
A73:    b1" * b29 in M9 by STRUCT_0:def 5;
        B19 = b1 * M9 by A56,Lm8;
        hence g.x = f.x by A65,A64,A63,A73,A54,GROUP_2:114;
      end;
      thus (N./.MN)^o = (the action of N./.MN).o by A34,Def6
        .= f|the carrier of N./.MN by A38,A40,A42,FUNCT_1:46
        .= ((G./.M)^o)|the carrier of N./.MN by A34,A35,Def6;
    end;
  end;
  Cosets MN99 = Cosets MN9 by A4,TARSKI:2;
  then reconsider f=CosOp MN99 as BinOp of Cosets MN9;
  now
    let W1,W2 be Element of Cosets MN9;
    reconsider W19=W1,W29=W2 as Element of Cosets MN99 by A4;
    let A1,A2 be Subset of N;
    assume
A74: W1 = A1;
    reconsider A19=A1,A29=A2 as Subset of N9;
    assume
A75: W2 = A2;
A76: now
      let x be object;
      hereby
        assume x in A1 * A2;
        then consider g,h be Element of N such that
A77:    x = g * h and
A78:    g in A1 & h in A2;
        reconsider g9=g,h9=h as Element of N9;
        x = g9 * h9 by A77;
        hence x in A19 * A29 by A78;
      end;
      assume x in A19 * A29;
      then consider g9,h9 be Element of N9 such that
A79:  x = g9 * h9 and
A80:  g9 in A19 & h9 in A29;
      reconsider g=g9,h=h9 as Element of N;
      x = g * h by A79;
      hence x in A1 * A2 by A80;
    end;
    thus f.(W1,W2) = f.(W19,W29) .= A19 * A29 by A74,A75,GROUP_6:def 3
      .= A1 * A2 by A76,TARSKI:2;
  end;
  then the multF of K = CosOp MN9 by GROUP_6:def 3
    .= the multF of N./.MN by Def15;
  then the multF of N./.MN = (the multF of G./.M9)||the carrier of K by
GROUP_2:def 5
    .= (the multF of G./.M)||the carrier of N./.MN by A15,Def15;
  then N./.MN is Subgroup of G./.M by A24,GROUP_2:def 5;
  hence thesis by A16,A25,Def7,Def10;
end;

:: GROUP_6:40

theorem
  h.(1_G)=1_H by Lm12;

:: GROUP_6:41

theorem
  h.(g1")=(h.g1)" by Lm13;

:: GROUP_6:50

theorem Th47:
  g1 in Ker h iff h.g1 = 1_H
proof
  thus g1 in Ker h implies h.g1 = 1_H
  proof
    assume g1 in Ker h;
    then g1 in the carrier of Ker h by STRUCT_0:def 5;
    then g1 in {b where b is Element of G : h.b = 1_H} by Def21;
    then ex b being Element of G st g1 = b & h.b = 1_H;
    hence thesis;
  end;
  assume h.g1 = 1_H;
  then g1 in {b where b is Element of G: h.b = 1_H};
  then g1 in the carrier of Ker h by Def21;
  hence thesis by STRUCT_0:def 5;
end;

:: GROUP_6:52

theorem Th48:
  for N being strict normal StableSubgroup of G holds Ker nat_hom N = N
proof
  let N be strict normal StableSubgroup of G;
  reconsider N9 = the multMagma of N as strict normal Subgroup of G by Lm6;
A1: nat_hom N = nat_hom N9 & 1_(G./.N) = 1_(G./.N9) by Def20,Lm34;
  the carrier of Ker nat_hom N = {a where a is Element of G: (nat_hom N).a
  = 1_(G./.N)} by Def21
    .= {a where a is Element of G: (nat_hom N9).a = 1_(G./.N9)} by A1
    .= the carrier of Ker nat_hom N9 by GROUP_6:def 9
    .= the carrier of N by GROUP_6:43;
  hence thesis by Lm4;
end;

:: GROUP_6:53

theorem Th49:
  rng h = the carrier of Image h
proof
  the carrier of Image h = h .: (the carrier of G) by Def22
    .= h .: (dom h) by FUNCT_2:def 1
    .= rng h by RELAT_1:113;
  hence thesis;
end;

:: GROUP_6:57

theorem Th50:
  Image nat_hom N = G./.N
proof
  reconsider N9 = the multMagma of N as strict normal Subgroup of G by Lm6;
  reconsider H = G./.N as strict StableSubgroup of G./.N by Lm3;
A1: G./.N9 = the multMagma of G./.N by Lm34;
  the carrier of Image nat_hom N = nat_hom N .: (the carrier of G) by Def22
    .= nat_hom N9 .: (the carrier of G) by Def20
    .= the carrier of Image nat_hom N9 by GROUP_6:def 10
    .= the carrier of H by A1,GROUP_6:48;
  hence thesis by Lm4;
end;

:: GROUP_6:67

theorem Th51:
  for H being strict GroupWithOperators of O, h being Homomorphism
  of G,H holds h is onto iff Image h = H
proof
  let H be strict GroupWithOperators of O, h be Homomorphism of G,H;
  thus h is onto implies Image h = H
  proof
    reconsider H9=H as strict StableSubgroup of H by Lm3;
    assume rng h = the carrier of H;
    then the carrier of H9 = the carrier of Image h by Th49;
    hence thesis by Lm4;
  end;
  assume
A1: Image h = H;
  the carrier of H c= rng h
  proof
    let x be object;
    assume x in the carrier of H;
    then x in h .: (the carrier of G) by A1,Def22;
    then ex y being object
st y in dom h & y in the carrier of G & h.y = x by FUNCT_1:def 6;
    hence thesis by FUNCT_1:def 3;
  end;
  then rng h = the carrier of H by XBOOLE_0:def 10;
  hence thesis;
end;

:: GROUP_6:68

theorem Th52:
  for H being strict GroupWithOperators of O, h being Homomorphism
of G,H st h is onto holds for c being Element of H ex a being Element of G st h
  .a = c
proof
  let H be strict GroupWithOperators of O;
  let h be Homomorphism of G,H;
  assume
A1: h is onto;
  let c be Element of H;
  rng h = the carrier of H by A1;
  then consider a be object such that
A2: a in dom h and
A3: c = h.a by FUNCT_1:def 3;
  reconsider a as Element of G by A2;
  take a;
  thus thesis by A3;
end;

:: GROUP_6:69

theorem Th53:
  nat_hom N is onto
proof
  Image nat_hom N = G./.N by Th50;
  hence thesis by Th51;
end;

:: GROUP_6:75

theorem Th54:
  nat_hom (1).G is bijective
proof
  reconsider H = the multMagma of (1).G as strict normal Subgroup of G by Lm6;
  set g = nat_hom (1).G;
  reconsider G9=G as Group;
A1: the carrier of H = {1_G9} by Def8;
A2: nat_hom (1).G9 is bijective & g is onto by Th53,GROUP_6:65;
  nat_hom (1).G = nat_hom H by Def20
    .= nat_hom (1).G9 by A1,GROUP_2:def 7;
  hence thesis by A2;
end;

:: GROUP_6:78

theorem Th55:
  G,H are_isomorphic & H,I are_isomorphic implies G,I are_isomorphic
proof
  assume that
A1: G,H are_isomorphic and
A2: H,I are_isomorphic;
  consider g be Homomorphism of G,H such that
A3: g is bijective by A1;
  consider h1 be Homomorphism of H,I such that
A4: h1 is bijective by A2;
A5: rng h1 = the carrier of I by A4,FUNCT_2:def 3;
  rng g = the carrier of H by A3,FUNCT_2:def 3;
  then dom h1 = rng g by FUNCT_2:def 1;
  then rng(h1 * g) = the carrier of I by A5,RELAT_1:28;
  then h1 * g is onto;
  hence thesis by A3,A4;
end;

:: GROUP_6:82

theorem Th56:
  for G being strict GroupWithOperators of O holds G,G./.(1).G are_isomorphic
proof
  let G be strict GroupWithOperators of O;
  nat_hom (1).G is bijective by Th54;
  hence thesis;
end;

:: GROUP_6:83

theorem Th57:
  for G being strict GroupWithOperators of O holds G./.(Omega).G is trivial
proof
  let G be strict GroupWithOperators of O;
  reconsider G9=G as Group;
  reconsider H=the multMagma of (Omega).G as strict normal Subgroup of G by Lm6
;
A1: H = (Omega).G9;
  the carrier of G./.(Omega).G = Cosets H by Def14
    .= {the carrier of G} by A1,GROUP_2:142;
  hence thesis;
end;

:: GROUP_6:87

theorem Th58:
  for G,H being strict GroupWithOperators of O holds G,H
  are_isomorphic & G is trivial implies H is trivial
proof
  let G,H be strict GroupWithOperators of O;
  assume that
A1: G,H are_isomorphic and
A2: G is trivial;
  consider e be object such that
A3: the carrier of G = {e} by A2;
  consider g be Homomorphism of G,H such that
A4: g is bijective by A1;
  e in the carrier of G by A3,TARSKI:def 1;
  then
A5: e in dom g by FUNCT_2:def 1;
  the carrier of H = the carrier of Image g by A4,Th51
    .= Im(g,e) by A3,Def22
    .= {g.e} by A5,FUNCT_1:59;
  hence thesis;
end;

:: GROUP_6:90

theorem Th59:
  G./.Ker h, Image h are_isomorphic
proof
  reconsider G9=G,H9=H as Group;
  reconsider h9=h as Homomorphism of G9,H9;
  consider g9 be Homomorphism of G9./.Ker h9, Image h9 such that
A1: g9 is bijective and
A2: h9 = g9 * nat_hom Ker h9 by GROUP_6:79;
A3: the carrier of Image h9 = h9 .: (the carrier of G9) by GROUP_6:def 10
    .= the carrier of Image h by Def22;
  now
    let x be object;
    hereby
      assume x in the carrier of Ker h;
      then x in {a where a is Element of G: h.a = 1_H} by Def21;
      hence x in the carrier of Ker h9 by GROUP_6:def 9;
    end;
    assume x in the carrier of Ker h9;
    then x in {a9 where a9 is Element of G9: h9.a9 = 1_H9} by GROUP_6:def 9;
    hence x in the carrier of Ker h by Def21;
  end;
  then
A4: the carrier of Ker h9 = the carrier of Ker h by TARSKI:2;
  Ker h is Subgroup of G by Def7;
  then
A5: the multMagma of Ker h9 = the multMagma of Ker h by A4,GROUP_2:59;
  then the carrier of G9./.Ker h9 = the carrier of G./.Ker h by Def14;
  then reconsider g=g9 as Function of G./.Ker h, Image h by A3;
  Image h is Subgroup of H by Def7;
  then
A6: the multMagma of Image h9 = the multMagma of Image h by A3,GROUP_2:59;
A7: now
    let a, b be Element of G./.Ker h;
    reconsider b9=b as Element of G9./.Ker h9 by A5,Def14;
    reconsider a9=a as Element of G9./.Ker h9 by A5,Def14;
    thus g.(a * b) = g9.(a9 * b9) by A5,Def15
      .= g9.a9 * g9.b9 by GROUP_6:def 6
      .= g.a * g.b by A6;
  end;
  now
    let o be Element of O;
    let a be Element of G./.Ker h;
    per cases;
    suppose
A8:   O is empty;
      hence g.(((G./.Ker h)^o).a) = g.((id the carrier of (G./.Ker h)).a) by
Def6
        .= (id the carrier of Image h).(g.a)
        .= ((Image h)^o).(g.a) by A8,Def6;
    end;
    suppose
A9:   O is not empty;
      reconsider G99=G./.Ker h as Group;
      set f = (the action of G./.Ker h).o;
A10:  f = {[A,B] where A,B is Element of Cosets Ker h: ex g,h being
      Element of G st g in A & h in B & h=(G^o).g} by A9,Def16;
      f = (G./.Ker h)^o by A9,Def6;
      then reconsider f as Homomorphism of G99, G99;
      a in the carrier of G99;
      then a in dom f by FUNCT_2:def 1;
      then [a,f.a] in f by FUNCT_1:1;
      then consider A,B be Element of Cosets Ker h such that
A11:  [A,B]=[a,f.a] and
A12:  ex g1,g2 being Element of G st g1 in A & g2 in B & g2=(G^o).g1 by A10;
      reconsider A,B as Element of Cosets Ker h9 by A5,Def14;
      consider g1,g2 be Element of G9 such that
A13:  g1 in A and
A14:  g2 in B and
A15:  g2=(G^o).g1 by A12;
A16:  A = g1 * Ker h9 by A13,Lm8;
      g1 in the carrier of G9;
      then
A17:  g1 in dom nat_hom Ker h9 by FUNCT_2:def 1;
      g2 in the carrier of G9;
      then
A18:  g2 in dom nat_hom Ker h9 by FUNCT_2:def 1;
A19:  ((Image h)^o).(g.a) = ((H^o)|the carrier of Image h).(g.a) by Def7
        .= (H^o).(g.a) by FUNCT_1:49
        .= (H^o).(g9.(g1 * Ker h9)) by A11,A16,XTUPLE_0:1;
A20:  B = g2 * Ker h9 by A14,Lm8;
      h9.g2 = (H^o).(h9.g1) by A15,Def18;
      then g9.(nat_hom Ker h9.g2)=(H^o).((g9 * nat_hom Ker h9).g1) by A2,A18,
FUNCT_1:13;
      then g9.(nat_hom Ker h9.g2)=(H^o).(g9.(nat_hom Ker h9.g1)) by A17,
FUNCT_1:13;
      then
A21:  g9.(g2 * Ker h9) = (H^o).(g9.(nat_hom Ker h9.g1)) by GROUP_6:def 8;
      g.(((G./.Ker h)^o).a) = g.(f.a) by A9,Def6
        .= g9.(g2 * Ker h9) by A11,A20,XTUPLE_0:1;
      hence g.(((G./.Ker h)^o).a)=((Image h)^o).(g.a) by A19,A21,GROUP_6:def 8;
    end;
  end;
  then reconsider g as Homomorphism of G./.Ker h, Image h by A7,Def18,
GROUP_6:def 6;
  g is onto by A1,A3;
  hence thesis by A1;
end;

:: GRSOLV_1:1

theorem Th60:
  for H,F1,F2 being strict StableSubgroup of G st F1 is normal
  StableSubgroup of F2 holds H /\ F1 is normal StableSubgroup of H /\ F2
proof
  let H,F1,F2 be strict StableSubgroup of G;
  reconsider F=F2 /\ H as StableSubgroup of F2 by Lm33;
  assume
A1: F1 is normal StableSubgroup of F2;
  then
A2: F1 /\ H=(F1 /\ F2) /\ H by Lm21
    .=F1 /\ (F2 /\ H) by Th20;
  reconsider F1 as normal StableSubgroup of F2 by A1;
  F1 /\ F is normal StableSubgroup of F by Th41;
  hence thesis by A2,Th39;
end;

begin :: Other Theorems on Actions and Groups with Operators

reserve E for set,
  A for Action of O,E,
  C for Subset of G,
  N1 for normal StableSubgroup of H1;

theorem
  [#]E is_stable_under_the_action_of A;

theorem
  [:O,{id E}:] is Action of O, E by Lm1;

theorem
  for O being non empty set, E being set, o being Element of O, A being
  Action of O,E holds Product(<*o*>,A) = A.o by Lm25;

theorem
  for O being non empty set, E being set, F1,F2 being FinSequence of O,
A being Action of O,E holds Product(F1^F2,A) = Product(F1,A) * Product(F2,A)
by Lm28;

theorem
  for F being FinSequence of O, Y being Subset of E st Y
  is_stable_under_the_action_of A holds Product(F,A) .: Y c= Y by Lm29;

theorem
  for E being non empty set, A being Action of O,E holds for X being
  Subset of E, a being Element of E st X is not empty holds a in
  the_stable_subset_generated_by(X,A) iff ex F being FinSequence of O, x being
  Element of X st Product(F,A).x = a by Lm30;

theorem
  for G being strict Group holds ex H being strict GroupWithOperators of
  O st G = the multMagma of H
proof
  let G be strict Group;
  consider H be non empty HGrWOpStr over O such that
A1: H is strict distributive Group-like associative and
A2: G = the multMagma of H by Lm2;
  reconsider H as strict GroupWithOperators of O by A1;
  take H;
  thus thesis by A2;
end;

theorem
  the multMagma of H1 is strict Subgroup of G by Lm15;

theorem
  the multMagma of N is strict normal Subgroup of G by Lm6;

theorem
  g1 in H1 implies (G^o).g1 in H1 by Lm9;

theorem
  for O being set, G,H being GroupWithOperators of O, G9 being strict
  StableSubgroup of G, f being Homomorphism of G,H holds ex H9 being strict
  StableSubgroup of H st the carrier of H9 = f.:(the carrier of G9) by Lm16;

theorem
  B is empty implies the_stable_subgroup_of B = (1).G by Lm24;

theorem
  B = the carrier of gr C implies the_stable_subgroup_of C =
  the_stable_subgroup_of B by Lm31;

theorem
  for N9 being normal Subgroup of G st N9 = the multMagma of N holds G
  ./.N9 = the multMagma of G./.N & 1_(G./.N9) = 1_(G./.N) by Lm34;

theorem Th75:
  the carrier of H1 = the carrier of H2 implies the HGrWOpStr of
  H1 = the HGrWOpStr of H2
proof
  reconsider H19=H1,H29=H2 as Subgroup of G by Def7;
A1: dom the action of H2 = O by FUNCT_2:def 1
    .= dom the action of H1 by FUNCT_2:def 1;
  assume
A2: the carrier of H1 = the carrier of H2;
A3: now
    let x be object;
    assume
A4: x in dom the action of H2;
    then reconsider o=x as Element of O;
A5: H1^o = (the action of H1).o by A4,Def6;
    H1^o = (G^o)|the carrier of H2 by A2,Def7
      .= H2^o by Def7;
    hence (the action of H1).x = (the action of H2).x by A4,A5,Def6;
  end;
  the multMagma of H19 = the multMagma of H29 by A2,GROUP_2:59;
  hence thesis by A1,A3,FUNCT_1:2;
end;

theorem Th76:
  H1./.N1 is trivial implies the HGrWOpStr of H1 = the HGrWOpStr of N1
proof
  reconsider N9=N1 as StableSubgroup of G by Th11;
  set H=H1;
  reconsider N=the multMagma of N1 as normal Subgroup of H by Lm6;
  assume
A1: H1./.N1 is trivial;
  Cosets N1 = Cosets N by Def14;
  then consider e be object such that
A2: the carrier of H./.N = {e} by A1;
A3: the carrier of H = union {e} by A2,GROUP_2:137;
A4: now
    assume not the carrier of H c= the carrier of N;
    then (the carrier of H) \ (the carrier of N) <> {} by XBOOLE_1:37;
    then consider x being object such that
A5: x in (the carrier of H) \ (the carrier of N) by XBOOLE_0:def 1;
    reconsider x as Element of H1 by A5;
A6: now
      assume x * N = e;
      then x * N = the carrier of H by A3,ZFMISC_1:25;
      then consider x9 be Element of H such that
A7:   1_H = x * x9 and
A8:   x9 in N by GROUP_2:103;
      x9=x" by A7,GROUP_1:12;
      then x"" in N by A8,GROUP_2:51;
      then x in carr(N) by STRUCT_0:def 5;
      hence contradiction by A5,XBOOLE_0:def 5;
    end;
    x * N in Cosets N by GROUP_6:14;
    hence contradiction by A2,A6,TARSKI:def 1;
  end;
  the carrier of N c= the carrier of H by GROUP_2:def 5;
  then the carrier of N9 = the carrier of H1 by A4,XBOOLE_0:def 10;
  hence thesis by Th75;
end;

theorem Th77:
  the carrier of H1 = the carrier of N1 implies H1./.N1 is trivial
proof
  reconsider N19 = the multMagma of N1 as strict normal Subgroup of H1 by Lm6;
  assume
A1: the carrier of H1 = the carrier of N1;
  now
    let x be object;
    hereby
      assume
A2:   x in Left_Cosets N19;
      then reconsider A=x as Subset of H1;
      consider a be Element of H1 such that
A3:   A = a * N19 by A2,GROUP_2:def 15;
      A = a * [#]the carrier of H1 by A1,A3;
      hence x = the carrier of H1 by GROUP_2:17;
    end;
    the carrier of H1 = 1_H1 * [#]the carrier of H1 by GROUP_2:17;
    then
A4: the carrier of H1 = 1_H1 * N19 by A1;
    assume x = the carrier of H1;
    hence x in Left_Cosets N19 by A4,GROUP_2:def 15;
  end;
  then
A5: {the carrier of H1} = Left_Cosets N19 by TARSKI:def 1;
  Cosets N1 = Cosets N19 by Def14;
  hence thesis by A5;
end;

:: ALG I.4.6 Proposition 7(a)

theorem Th78:
  for G,H being GroupWithOperators of O, N being StableSubgroup of
G, H9 being strict StableSubgroup of H, f being Homomorphism of G,H st N = Ker
  f holds ex G9 being strict StableSubgroup of G st the carrier of G9 = f"(the
carrier of H9) & (H9 is normal implies N is normal StableSubgroup of G9 & G9 is
  normal)
proof
  let G,H be GroupWithOperators of O;
  let N be StableSubgroup of G;
  let H9 be strict StableSubgroup of H;
  reconsider H99 = the multMagma of H9 as strict Subgroup of H by Lm15;
  let f be Homomorphism of G,H;
  assume
A1: N = Ker f;
  set A = {g where g is Element of G:f.g in H99};
A2: 1_H in H99 by GROUP_2:46;
  then f.(1_G) in H99 by Lm12;
  then 1_G in A;
  then reconsider A as non empty set;
  now
    let x be object;
    assume x in A;
    then ex g be Element of G st x=g & f.g in H99;
    hence x in the carrier of G;
  end;
  then reconsider A as Subset of G by TARSKI:def 3;
A3: now
    let g1,g2 be Element of G;
    assume that
A4: g1 in A and
A5: g2 in A;
    consider b be Element of G such that
A6: b=g2 and
A7: f.b in H99 by A5;
    consider a be Element of G such that
A8: a=g1 and
A9: f.a in H99 by A4;
    set fb = f.b;
    set fa = f.a;
    f.(a*b) = f.a * f.b & fa * fb in H99 by A9,A7,GROUP_2:50,GROUP_6:def 6;
    hence g1*g2 in A by A8,A6;
  end;
A10: now
    let o be Element of O;
    let g be Element of G;
    assume g in A;
    then consider a be Element of G such that
A11: a=g and
A12: f.a in H99;
    f.a in the carrier of H99 by A12,STRUCT_0:def 5;
    then f.a in H9 by STRUCT_0:def 5;
    then (H^o).(f.g) in H9 by A11,Lm9;
    then f.((G^o).g) in H9 by Def18;
    then f.((G^o).g) in the carrier of H9 by STRUCT_0:def 5;
    then f.((G^o).g) in H99 by STRUCT_0:def 5;
    hence (G^o).g in A;
  end;
  now
    let g be Element of G;
    assume g in A;
    then consider a be Element of G such that
A13: a=g and
A14: f.a in H99;
    (f.a)" in H99 by A14,GROUP_2:51;
    then f.(a") in H99 by Lm13;
    hence g" in A by A13;
  end;
  then consider G99 be strict StableSubgroup of G such that
A15: the carrier of G99 = A by A3,A10,Lm14;
  take G99;
  now
    reconsider R = f as Relation of the carrier of G, the carrier of H;
    let g be Element of G;
    hereby
      assume g in A;
      then ex a be Element of G st a=g & f.a in H99;
      then
A16:  f.g in the carrier of H9 by STRUCT_0:def 5;
      dom f = the carrier of G by FUNCT_2:def 1;
      then [g,f.g] in f by FUNCT_1:1;
      hence g in f"(the carrier of H9) by A16,RELSET_1:30;
    end;
    assume g in f"(the carrier of H9);
    then consider h be Element of H such that
A17: [g,h] in R & h in (the carrier of H9) by RELSET_1:30;
    f.g=h & h in H99 by A17,FUNCT_1:1,STRUCT_0:def 5;
    hence g in A;
  end;
  hence the carrier of G99 = f"(the carrier of H9) by A15,SUBSET_1:3;
  reconsider G9 = the multMagma of G99 as strict Subgroup of G by Lm15;
  now
    assume
A18: H9 is normal;
    now
      let g be Element of G;
      assume g in N;
      then f.g = 1_H by A1,Th47;
      then g in the carrier of G99 by A2,A15;
      hence g in G99 by STRUCT_0:def 5;
    end;
    hence N is normal StableSubgroup of G99 by A1,Th13,Th40;
    now
      let g be Element of G;
      now
        H99 is normal by A18;
        then
A19:    H99 |^ (f.g)" = H99 by GROUP_3:def 13;
        let x be object;
        assume x in g * G9;
        then consider h be Element of G such that
A20:    x=g*h and
A21:    h in A by A15,GROUP_2:27;
        set h9=g*h*g";
A22:    f.h9 = f.(g*h) * f.(g") by GROUP_6:def 6
          .= f.g * f.h * f.(g") by GROUP_6:def 6
          .= ((f.g)")" * f.h * (f.g)" by Lm13
          .= f.h |^ (f.g)" by GROUP_3:def 2;
        ex a be Element of G st a=h & f.a in H99 by A21;
        then f.h9 in H99 by A19,A22,GROUP_3:58;
        then
A23:    h9 in A;
        h9*g = (g*h)*(g"*g) by GROUP_1:def 3
          .= (g*h)*1_G by GROUP_1:def 5
          .= x by A20,GROUP_1:def 4;
        hence x in G9 * g by A15,A23,GROUP_2:28;
      end;
      hence g * G9 c= G9 * g;
    end;
    then for H being strict Subgroup of G st H = the multMagma of G99 holds H
    is normal by GROUP_3:118;
    hence G99 is normal;
  end;
  hence thesis;
end;

:: ALG I.4.6 Proposition 7(b)

theorem Th79:
  for G,H being GroupWithOperators of O, N being StableSubgroup of
G, G9 being strict StableSubgroup of G, f being Homomorphism of G,H st N = Ker
  f holds ex H9 being strict StableSubgroup of H st the carrier of H9 = f.:(the
carrier of G9) & f"(the carrier of H9) = the carrier of G9"\/"N & (f is onto &
  G9 is normal implies H9 is normal)
proof
  let G,H be GroupWithOperators of O;
  let N be StableSubgroup of G;
  reconsider N9=the multMagma of N as strict Subgroup of G by Lm15;
  let G9 be strict StableSubgroup of G;
  reconsider G99 = the multMagma of G9 as strict Subgroup of G by Lm15;
  let f be Homomorphism of G,H;
  set A = {f.g where g is Element of G:g in G99};
A1: G99*N9 = G9*N & N9*G99 = N*G9;
  1_G in G99 by GROUP_2:46;
  then f.(1_G) in A;
  then reconsider A as non empty set;
  now
    let x be object;
    assume x in A;
    then ex g be Element of G st x=f.g & g in G99;
    hence x in the carrier of H;
  end;
  then reconsider A as Subset of H by TARSKI:def 3;
A2: now
    let h1,h2 be Element of H;
    assume that
A3: h1 in A and
A4: h2 in A;
    consider a be Element of G such that
A5: h1=f.a & a in G99 by A3;
    consider b be Element of G such that
A6: h2=f.b & b in G99 by A4;
    f.(a*b) = h1*h2 & a*b in G99 by A5,A6,GROUP_2:50,GROUP_6:def 6;
    hence h1*h2 in A;
  end;
A7: now
    let o be Element of O;
    let h be Element of H;
    assume h in A;
    then consider g be Element of G such that
A8: h=f.g and
A9: g in G99;
    g in the carrier of G99 by A9,STRUCT_0:def 5;
    then g in G9 by STRUCT_0:def 5;
    then (G^o).g in G9 by Lm9;
    then (G^o).g in the carrier of G9 by STRUCT_0:def 5;
    then
A10: (G^o).g in G99 by STRUCT_0:def 5;
    (H^o).h = f.((G^o).g) by A8,Def18;
    hence (H^o).h in A by A10;
  end;
  now
    let h be Element of H;
    assume h in A;
    then consider g be Element of G such that
A11: h=f.g & g in G99;
    g" in G99 & h"=f.(g") by A11,Lm13,GROUP_2:51;
    hence h" in A;
  end;
  then consider H99 be strict StableSubgroup of H such that
A12: the carrier of H99 = A by A2,A7,Lm14;
  assume
A13: N = Ker f;
  then N9 is normal by Def10;
  then
A14: carr G99 * N9 = N9 * carr G99 by GROUP_3:120;
  reconsider H9 = the multMagma of H99 as strict Subgroup of H by Lm15;
  take H99;
A15: now
    reconsider R = f as Relation of the carrier of G, the carrier of H;
    let h be Element of H;
    hereby
      assume h in A;
      then consider g be Element of G such that
A16:  h=f.g and
A17:  g in G99;
A18:  g in the carrier of G9 by A17,STRUCT_0:def 5;
      dom f = the carrier of G by FUNCT_2:def 1;
      then [g,h] in f by A16,FUNCT_1:1;
      hence h in f.:(the carrier of G9) by A18,RELSET_1:29;
    end;
    assume h in f.:(the carrier of G9);
    then consider g be Element of G such that
A19: [g,h] in R & g in the carrier of G9 by RELSET_1:29;
    f.g=h & g in G99 by A19,FUNCT_1:1,STRUCT_0:def 5;
    hence h in A;
  end;
  hence
A20: the carrier of H99 = f.:(the carrier of G9) by A12,SUBSET_1:3;
A21: now
    let x be object;
    assume
A22: x in f"(the carrier of H9);
    then f.x in the carrier of H9 by FUNCT_1:def 7;
    then consider g1 be object such that
A23: g1 in dom f and
A24: g1 in the carrier of G9 and
A25: f.g1 = f.x by A20,FUNCT_1:def 6;
    reconsider g1,g2=x as Element of G by A22,A23;
    consider g3 be Element of G such that
A26: g2 = g1 * g3 by GROUP_1:15;
    f.g2 = f.g2*f.g3 by A25,A26,GROUP_6:def 6;
    then f.g3 = 1_H by GROUP_1:7;
    then g3 in Ker f by Th47;
    then g3 in the carrier of N by A13,STRUCT_0:def 5;
    hence x in G99 * N9 by A24,A26;
  end;
A27: dom f = the carrier of G by FUNCT_2:def 1;
  now
    let x be object;
    assume
A28: x in G99 * N9;
    then consider g1,g2 be Element of G such that
A29: x = g1*g2 and
A30: g1 in carr G9 and
A31: g2 in carr N9;
A32: g2 in Ker f by A13,A31,STRUCT_0:def 5;
    f.x = f.g1*f.g2 by A29,GROUP_6:def 6
      .= f.g1*1_H by A32,Th47
      .= f.g1 by GROUP_1:def 4;
    then f.x in f.:(the carrier of G9) by A27,A30,FUNCT_1:def 6;
    then x in f"(f.:(the carrier of G9)) by A27,A28,FUNCT_1:def 7;
    hence x in f"(the carrier of H9) by A12,A15,SUBSET_1:3;
  end;
  then f"(the carrier of H9) = carr G9 * carr N by A21,TARSKI:2;
  hence f"(the carrier of H99) = the carrier of G9"\/"N by A14,A1,Th30;
  now
    assume that
A33: f is onto and
A34: G9 is normal;
A35: G99 is normal by A34;
    now
      let h1 be Element of H;
      now
        let x be object;
        assume x in h1 * H9;
        then consider h2 be Element of H such that
A36:    x=h1*h2 and
A37:    h2 in A by A12,GROUP_2:27;
        set h29 = h1*h2*h1";
        h2 in f.:(the carrier of G9) by A15,A37;
        then consider g2 be object such that
A38:    g2 in dom f and
A39:    g2 in the carrier of G99 and
A40:    f.g2 = h2 by FUNCT_1:def 6;
        rng f = the carrier of H by A33;
        then consider g1 be object such that
A41:    g1 in dom f and
A42:    h1 = f.g1 by FUNCT_1:def 3;
        reconsider g1,g2 as Element of G by A38,A41;
        set g29=g1*g2*g1";
        g29=(g1"")*g2*g1";
        then
A43:    g29=g2 |^ g1" by GROUP_3:def 2;
        g2 in G99 by A39,STRUCT_0:def 5;
        then g29 in G99 |^ g1" by A43,GROUP_3:58;
        then
A44:    g29 in the carrier of G99 |^ g1" by STRUCT_0:def 5;
        G99 |^ g1" is Subgroup of G99 by A35,GROUP_3:122;
        then
A45:    the carrier of G99 |^ g1" c= the carrier of G99 by GROUP_2:def 5;
        h29 = f.g1*f.g2*f.(g1") by A40,A42,Lm13
          .= f.(g1*g2)*f.(g1") by GROUP_6:def 6
          .= f.g29 by GROUP_6:def 6;
        then h29 in f.:(the carrier of G99) by A27,A44,A45,FUNCT_1:def 6;
        then
A46:    h29 in A by A15;
        h29*h1 = (h1*h2)*(h1"*h1) by GROUP_1:def 3
          .= (h1*h2)*1_H by GROUP_1:def 5
          .= x by A36,GROUP_1:def 4;
        hence x in H9 * h1 by A12,A46,GROUP_2:28;
      end;
      hence h1 * H9 c= H9 * h1;
    end;
    then for H1 being strict Subgroup of H st H1 = the multMagma of H99 holds
    H1 is normal by GROUP_3:118;
    hence H99 is normal;
  end;
  hence thesis;
end;

theorem Th80:
  for G being strict GroupWithOperators of O, N being strict
  normal StableSubgroup of G, H being strict StableSubgroup of G./.N st the
  carrier of G = (nat_hom N)"(the carrier of H) holds H = (Omega).(G./.N)
proof
  let G be strict GroupWithOperators of O;
  let N be strict normal StableSubgroup of G;
  reconsider N9 = the multMagma of N as strict normal Subgroup of G by Lm6;
  let H be strict StableSubgroup of G./.N;
  reconsider H9 = the multMagma of H as strict Subgroup of G./.N by Lm15;
A1: the carrier of H9 c= the carrier of G./.N & the multF of H9 = (the multF
  of G./.N)||the carrier of H9 by GROUP_2:def 5;
  the carrier of G./.N = the carrier of G./.N9 & the multF of G./.N = the
  multF of G./.N9 by Def14,Def15;
  then reconsider H9 as strict Subgroup of G./.N9 by A1,GROUP_2:def 5;
  assume the carrier of G = (nat_hom N)"(the carrier of H);
  then
A2: the carrier of G = (nat_hom N9)"(the carrier of H9) by Def20;
  now
    reconsider R = nat_hom N9 as Relation of the carrier of G, the carrier of
    G./.N9;
    let h be Element of G./.N9;
    thus h in H9 implies h in (Omega).(G./.N9) by STRUCT_0:def 5;
    assume h in (Omega).(G./.N9);
    h in Left_Cosets N9;
    then consider g be Element of G such that
A3: h = g * N9 by GROUP_2:def 15;
    consider h9 be Element of G./.N9 such that
A4: [g,h9] in R and
A5: h9 in (the carrier of H9) by A2,RELSET_1:30;
    (nat_hom N9).g = h9 by A4,FUNCT_1:1;
    then h in the carrier of H9 by A3,A5,GROUP_6:def 8;
    hence h in H9 by STRUCT_0:def 5;
  end;
  then H9 = (Omega).(G./.N9);
  then the carrier of H = Cosets N by Def14;
  hence thesis by Lm4;
end;

theorem Th81:
  for G being strict GroupWithOperators of O, N being strict
  normal StableSubgroup of G, H being strict StableSubgroup of G./.N st the
  carrier of N = (nat_hom N)"(the carrier of H) holds H = (1).(G./.N)
proof
  let G be strict GroupWithOperators of O;
  let N be strict normal StableSubgroup of G;
  reconsider N9 = the multMagma of N as strict normal Subgroup of G by Lm6;
  let H be strict StableSubgroup of G./.N;
  reconsider H9 = the multMagma of H as strict Subgroup of G./.N by Lm15;
A1: the carrier of H9 c= the carrier of G./.N & the multF of H9 = (the multF
  of G./.N)||the carrier of H9 by GROUP_2:def 5;
  the carrier of G./.N = the carrier of G./.N9 & the multF of G./.N = the
  multF of G./.N9 by Def14,Def15;
  then reconsider H9 as strict Subgroup of G./.N9 by A1,GROUP_2:def 5;
  assume the carrier of N = (nat_hom N)"(the carrier of H);
  then
A2: the carrier of N9 = (nat_hom N9)"(the carrier of H9) by Def20;
  assume not H = (1).(G./.N);
  then not the carrier of H = {1_(G./.N)} by Def8;
  then consider h be object such that
A3: not (h in the carrier of H iff h in {1_(G./.N)}) by TARSKI:2;
  per cases by A3;
  suppose
A4: h in the carrier of H & not h in {1_(G./.N)};
    then {h} c= the carrier of H by ZFMISC_1:31;
    then
A5: (nat_hom N9)"{h} c= the carrier of N9 by A2,RELAT_1:143;
A6: rng nat_hom N9 = the carrier of Image nat_hom N9 by GROUP_6:44
      .= the carrier of G./.N9 by GROUP_6:48;
    the carrier of H9 c= the carrier of G./.N9 by GROUP_2:def 5;
    then consider x be object such that
A7: x in dom nat_hom N9 and
A8: (nat_hom N9).x = h by A4,A6,FUNCT_1:def 3;
    (nat_hom N9).x in {h} by A8,TARSKI:def 1;
    then x in (nat_hom N9)"{h} by A7,FUNCT_1:def 7;
    then
A9: x in N9 by A5,STRUCT_0:def 5;
    h <> 1_(G./.N) by A4,TARSKI:def 1;
    then
A10: h <> carr N by Th43;
    reconsider x as Element of G by A7;
    x * N9 = h by A8,GROUP_6:def 8;
    hence contradiction by A10,A9,GROUP_2:113;
  end;
  suppose
    not h in the carrier of H & h in {1_(G./.N)};
    then h = 1_(G./.N) & not h in H by STRUCT_0:def 5,TARSKI:def 1;
    hence contradiction by Lm17;
  end;
end;

theorem Th82:
  for G,H being strict GroupWithOperators of O st G,H
  are_isomorphic & G is simple holds H is simple
proof
  let G,H be strict GroupWithOperators of O;
  assume
A1: G,H are_isomorphic;
  assume
A2: G is simple;
  assume
A3: H is not simple;
  per cases by A3;
  suppose
    H is trivial;
    then G is trivial by A1,Th58;
    hence contradiction by A2;
  end;
  suppose
    ex H9 being strict normal StableSubgroup of H st H9 <> (Omega).H &
    H9 <> (1).H;
    then consider H9 be strict normal StableSubgroup of H such that
A4: H9 <> (Omega).H and
A5: H9 <> (1).H;
    consider f be Homomorphism of G,H such that
A6: f is bijective by A1;
    reconsider H99 = the multMagma of H9 as strict normal Subgroup of H by Lm6;
    the multMagma of H9 <> the multMagma of H by A4,Lm4;
    then consider h be Element of H such that
A7: not h in H99 by GROUP_2:62;
    the carrier of H9<>{1_H} by A5,Def8;
    then consider x be object such that
A8: x in the carrier of H9 and
A9: x<>1_H by ZFMISC_1:35;
A10: x in H99 by A8,STRUCT_0:def 5;
    then x in H by GROUP_2:40;
    then reconsider x as Element of H by STRUCT_0:def 5;
    consider y be Element of G such that
A11: f.y = x by A6,Th52;
    set A = {g where g is Element of G: f.g in H99};
    consider g be Element of G such that
A12: f.g = h by A6,Th52;
    1_H in H99 by GROUP_2:46;
    then f.(1_G) in H99 by Lm12;
    then 1_G in A;
    then reconsider A as non empty set;
    now
      let x be object;
      assume x in A;
      then ex g be Element of G st x=g & f.g in H99;
      hence x in the carrier of G;
    end;
    then reconsider A as Subset of G by TARSKI:def 3;
A13: now
      let g1,g2 be Element of G;
      assume that
A14:  g1 in A and
A15:  g2 in A;
      consider b be Element of G such that
A16:  b=g2 and
A17:  f.b in H99 by A15;
      consider a be Element of G such that
A18:  a=g1 and
A19:  f.a in H99 by A14;
      set fb = f.b;
      set fa = f.a;
      f.(a*b) = f.a * f.b & fa * fb in H99 by A19,A17,GROUP_2:50,GROUP_6:def 6;
      hence g1*g2 in A by A18,A16;
    end;
A20: now
      let o be Element of O;
      let g be Element of G;
      assume g in A;
      then consider a be Element of G such that
A21:  a=g and
A22:  f.a in H99;
      f.a in the carrier of H99 by A22,STRUCT_0:def 5;
      then f.a in H9 by STRUCT_0:def 5;
      then (H^o).(f.g) in H9 by A21,Lm9;
      then f.((G^o).g) in H9 by Def18;
      then f.((G^o).g) in the carrier of H9 by STRUCT_0:def 5;
      then f.((G^o).g) in H99 by STRUCT_0:def 5;
      hence (G^o).g in A;
    end;
    now
      let g be Element of G;
      assume g in A;
      then consider a be Element of G such that
A23:  a=g and
A24:  f.a in H99;
      (f.a)" in H99 by A24,GROUP_2:51;
      then f.(a") in H99 by Lm13;
      hence g" in A by A23;
    end;
    then consider G99 be strict StableSubgroup of G such that
A25: the carrier of G99 = A by A13,A20,Lm14;
    reconsider G9=the multMagma of G99 as strict Subgroup of G by Lm15;
    now
      let g be Element of G;
      now
        let x be object;
A26:    H99 |^ (f.g)" = H99 by GROUP_3:def 13;
        assume x in g * G9;
        then consider h be Element of G such that
A27:    x=g*h and
A28:    h in A by A25,GROUP_2:27;
        set h9=g*h*g";
A29:    f.h9 = f.(g*h) * f.(g") by GROUP_6:def 6
          .= f.g * f.h * f.(g") by GROUP_6:def 6
          .= ((f.g)")" * f.h * (f.g)" by Lm13
          .= f.h |^ (f.g)" by GROUP_3:def 2;
        ex a be Element of G st a=h & f.a in H99 by A28;
        then f.h9 in H99 by A26,A29,GROUP_3:58;
        then
A30:    h9 in A;
        h9*g = (g*h)*(g"*g) by GROUP_1:def 3
          .= (g*h)*1_G by GROUP_1:def 5
          .= x by A27,GROUP_1:def 4;
        hence x in G9 * g by A25,A30,GROUP_2:28;
      end;
      hence g * G9 c= G9 * g;
    end;
    then for H being strict Subgroup of G st H = the multMagma of G99 holds H
    is normal by GROUP_3:118;
    then
A31: G99 is normal;
A32: y<>1_G by A9,A11,Lm12;
    y in the carrier of G99 by A25,A10,A11;
    then the carrier of G99 <> {1_G} by A32,TARSKI:def 1;
    then
A33: G99<>(1).G by Def8;
    now
      assume g in A;
      then ex g9 be Element of G st g9=g & f.g9 in H99;
      hence contradiction by A7,A12;
    end;
    then G99<>(Omega).G by A25;
    hence contradiction by A2,A33,A31;
  end;
end;

theorem Th83:
  for G being GroupWithOperators of O, H being StableSubgroup of G
, FG being FinSequence of the carrier of G, FH being FinSequence of the carrier
of H, I be FinSequence of INT st FG=FH & len FG = len I holds Product(FG |^ I)
  = Product(FH |^ I)
proof
  let G be GroupWithOperators of O;
  let H be StableSubgroup of G;
  let FG be FinSequence of the carrier of G;
  let FH be FinSequence of the carrier of H;
  let I be FinSequence of INT;
  assume
A1: FG=FH & len FG = len I;
  defpred P[Nat] means for FG being FinSequence of the carrier of G, FH being
FinSequence of the carrier of H, I being FinSequence of INT st len FG = $1 & FG
  =FH & len FG = len I holds Product(FG |^ I) = Product(FH |^ I);
A2: now
    let n be Nat;
    assume
A3: P[n];
    thus P[n+1]
    proof
      let FG be FinSequence of the carrier of G;
      let FH be FinSequence of the carrier of H;
      let I be FinSequence of INT;
      assume
A4:   len FG = n+1;
      then consider
      FGn be FinSequence of the carrier of G, g be Element of G such
      that
A5:   FG = FGn^<*g*> by FINSEQ_2:19;
A6:   len FG = len FGn + len <*g*> by A5,FINSEQ_1:22;
      then
A7:   n+1 = len FGn + 1 by A4,FINSEQ_1:40;
      assume that
A8:   FG=FH and
A9:   len FG = len I;
      consider FHn be FinSequence of the carrier of H, h be Element of H such
      that
A10:  FH = FHn^<*h*> by A4,A8,FINSEQ_2:19;
      consider In be FinSequence of INT, i be Element of INT such that
A11:  I = In^<*i*> by A4,A9,FINSEQ_2:19;
      set FG1=<*g*>;
      set I1=<*i*>;
      len I = len In + len <*i*> by A11,FINSEQ_1:22;
      then
A12:  n+1 = len In + 1 by A4,A9,FINSEQ_1:40;
A13:  len FH = len FHn + len <*h*> by A10,FINSEQ_1:22;
      then
A14:  FH.(n+1)=(FHn^<*h*>).(len FHn +1) by A4,A8,A10,FINSEQ_1:40
        .= h by FINSEQ_1:42;
A15:  n+1 = len FHn + 1 by A4,A8,A13,FINSEQ_1:40;
A16:  FG.(n+1)=(FGn^<*g*>).(len FGn +1) by A4,A5,A6,FINSEQ_1:40
        .= g by FINSEQ_1:42;
A17:  now
        reconsider H9=H as Subgroup of G by Def7;
        reconsider h9=h as Element of H9;
        g|^i = h9|^i by A8,A16,A14,GROUP_4:2;
        hence g|^i = h|^i;
      end;
      len FG1 = 1 by FINSEQ_1:40
        .=len I1 by FINSEQ_1:40;
      then
A18:  Product(FG |^ I) = Product((FGn |^ In)^(FG1 |^ I1)) by A11,A5,A12,A7,
GROUP_4:19
        .= Product(FGn |^ In) * Product(FG1 |^ I1) by GROUP_4:5;
      set FH1=<*h*>;
A19:  len FH1 = 1 by FINSEQ_1:40
        .=len I1 by FINSEQ_1:40;
A20:  Product(FG1 |^ I1) = Product(<*g*>|^<*@i*>)
        .= Product <*g|^i*> by GROUP_4:22
        .= h|^i by A17,GROUP_4:9
        .= Product <*h|^i*> by GROUP_4:9
        .= Product(<*h*>|^<*@i*>) by GROUP_4:22
        .= Product(FH1 |^ I1);
      FGn = FHn by A8,A5,A10,A16,A14,FINSEQ_1:33;
      then Product(FGn |^ In) = Product(FHn |^ In) by A3,A12,A15;
      then Product(FG |^ I) = Product(FHn |^ In) * Product(FH1 |^ I1) by A18
,A20,Th3
        .= Product((FHn |^ In)^(FH1 |^ I1)) by GROUP_4:5
        .= Product((FHn^FH1) |^ (In^I1)) by A12,A15,A19,GROUP_4:19;
      hence thesis by A11,A10;
    end;
  end;
A21: P[0]
  proof
    let FG be FinSequence of the carrier of G;
    let FH be FinSequence of the carrier of H;
    let I be FinSequence of INT;
    assume
A22: len FG = 0;
    then len(FG |^ I) = 0 by GROUP_4:def 3;
    then FG |^ I = <*> the carrier of G;
    then
A23: Product(FG |^ I) = 1_G by GROUP_4:8;
    assume that
A24: FG=FH and
    len FG = len I;
    len(FH |^ I) = 0 by A22,A24,GROUP_4:def 3;
    then FH |^ I = <*> the carrier of H;
    then Product(FH |^ I) = 1_H by GROUP_4:8;
    hence thesis by A23,Th4;
  end;
  for n being Nat holds P[n] from NAT_1:sch 2(A21,A2);
  hence thesis by A1;
end;

theorem Th84:
  for O,E1,E2 being set, A1 being Action of O,E1, A2 being Action
  of O,E2, F being FinSequence of O st E1 c= E2 & (for o being Element of O, f1
being Function of E1,E1, f2 being Function of E2,E2 st f1=A1.o & f2=A2.o holds
  f1 = f2|E1) holds Product(F,A1) = Product(F,A2)|E1
proof
  let O,E1,E2 be set;
  let A1 be Action of O,E1;
  let A2 be Action of O,E2;
  let F be FinSequence of O;
  defpred P[Nat] means
for F being FinSequence of O st len F = $1
  holds Product(F,A1) = Product(F,A2)|E1;
  assume
A1: E1 c= E2;
A2: P[0]
  proof
    let F be FinSequence of O;
A3: now
      let x be object;
      assume
A4:   x in dom id E1;
      then
A5:   x in E1;
      thus (id E1).x = x by A4,FUNCT_1:18
        .= (id E2).x by A1,A5,FUNCT_1:18;
    end;
    E1 = E2 /\ E1 by A1,XBOOLE_1:28;
    then dom id E1 = E2 /\ E1;
    then
A6: dom id E1 = dom id E2 /\ E1;
    assume
A7: len F = 0;
    hence Product(F,A1) = id E1 by Def3
      .= (id E2)|E1 by A6,A3,FUNCT_1:46
      .= Product(F,A2)|E1 by A7,Def3;
  end;
  assume
A8: for o being Element of O, f1 being Function of E1,E1, f2 being
  Function of E2,E2 st f1=A1.o & f2=A2.o holds f1 = f2|E1;
  per cases;
  suppose
    O is empty;
    then len F = 0;
    hence thesis by A2;
  end;
  suppose
A9: O is non empty;
A10: for k being Nat st P[k] holds P[k + 1]
    proof
      let k be Nat;
      assume
A11:  P[k];
      now
        let F be FinSequence of O;
        assume
A12:    len F = k+1;
        then consider Fk be FinSequence of O, o be Element of O such that
A13:    F = Fk^<*o*> by FINSEQ_2:19;
        len F = len Fk + len <*o*> by A13,FINSEQ_1:22;
        then
A14:    k+1 = len Fk + 1 by A12,FINSEQ_1:39;
A15:    now
          {o} c= O by A9,ZFMISC_1:31;
          then rng <*o*> c= O by FINSEQ_1:38;
          then reconsider Fo=<*o*> as FinSequence of O by FINSEQ_1:def 4;
          let x be object;
          assume
A16:      x in dom Product(F,A1);
          then
A17:      x in E1;
A18:      o in O by A9;
          then o in dom A1 by FUNCT_2:def 1;
          then A1.o in rng A1 by FUNCT_1:3;
          then consider f1 be Function such that
A19:      f1=A1.o and
A20:      dom f1 = E1 and
A21:      rng f1 c= E1 by FUNCT_2:def 2;
A22:      Product(Fo,A1) = f1 by A9,A19,Lm25;
          o in dom A2 by A18,FUNCT_2:def 1;
          then A2.o in rng A2 by FUNCT_1:3;
          then consider f2 be Function such that
A23:      f2=A2.o and
A24:      dom f2 = E2 and
          rng f2 c= E2 by FUNCT_2:def 2;
A25:      Product(Fo,A2) = f2 by A9,A23,Lm25;
A26:      f1.x in rng f1 by A16,A20,FUNCT_1:3;
A27:      Product(F,A2) = (Product(Fk,A2)*Product(Fo,A2)) by A9,A13,Lm28
            .= Product(Fk,A2)*f2 by A9,A23,Lm25;
          Product(F,A1) = (Product(Fk,A1)*Product(Fo,A1)) by A9,A13,Lm28
            .= Product(Fk,A1)*f1 by A9,A19,Lm25;
          hence Product(F,A1).x = Product(Fk,A1).(f1.x) by A16,A20,FUNCT_1:13
            .= (Product(Fk,A2)|E1).(f1.x) by A11,A14
            .= Product(Fk,A2).(f1.x) by A21,A26,FUNCT_1:49
            .= Product(Fk,A2).((f2|E1).x) by A8,A19,A23,A22,A25
            .= Product(Fk,A2).(f2.x) by A16,FUNCT_1:49
            .= (Product(Fk,A2)*f2).x by A1,A17,A24,FUNCT_1:13
            .= (Product(F,A2)|E1).x by A16,A27,FUNCT_1:49;
        end;
        Product(F,A2) in Funcs(E2,E2) by FUNCT_2:9;
        then ex f2 be Function st Product(F,A2) = f2 & dom f2 = E2 & rng f2 c=
        E2 by FUNCT_2:def 2;
        then
A28:    dom(Product(F,A2)|E1) = E2 /\ E1 by RELAT_1:61
          .= E1 by A1,XBOOLE_1:28;
        Product(F,A1) in Funcs(E1,E1) by FUNCT_2:9;
        then ex f1 be Function st Product(F,A1) = f1 & dom f1 = E1 & rng f1 c=
        E1 by FUNCT_2:def 2;
        hence Product(F,A1) = Product(F,A2)|E1 by A28,A15,FUNCT_1:2;
      end;
      hence thesis;
    end;
A29: for k being Nat holds P[k] from NAT_1:sch 2(A2,A10);
    reconsider k = len F as Element of NAT;
    k = len F;
    hence thesis by A29;
  end;
end;

theorem Th85:
  for N1,N2 being strict StableSubgroup of H1, N19,N29 being
  strict StableSubgroup of G st N1 = N19 & N2 = N29 holds N19 * N29 = N1 * N2
proof
  let N1,N2 be strict StableSubgroup of H1;
  let N19,N29 be strict StableSubgroup of G;
  set X={g * h where g,h is Element of G: g in carr N19 & h in carr N29};
  set Y={g * h where g,h is Element of H1: g in carr N1 & h in carr N2};
  assume
A1: N1=N19 & N2=N29;
A2: now
    N2 is Subgroup of H1 by Def7;
    then
A3: the carrier of N2 c= the carrier of H1 by GROUP_2:def 5;
    let x be object;
    assume x in X;
    then consider g,h be Element of G such that
A4: x=g*h and
A5: g in carr N19 & h in carr N29;
    N1 is Subgroup of H1 by Def7;
    then the carrier of N1 c= the carrier of H1 by GROUP_2:def 5;
    then reconsider g,h as Element of H1 by A1,A5,A3;
    x=g*h by A4,Th3;
    hence x in Y by A1,A5;
  end;
  now
    let x be object;
    assume x in Y;
    then consider g,h be Element of H1 such that
A6: x=g*h and
A7: g in carr N1 & h in carr N2;
    reconsider g,h as Element of G by Th2;
    x=g*h by A6,Th3;
    hence x in X by A1,A7;
  end;
  hence thesis by A2,TARSKI:2;
end;

theorem Th86:
  for N1,N2 being strict StableSubgroup of H1, N19,N29 being
strict StableSubgroup of G st N1 = N19 & N2 = N29 holds N19 "\/" N29 = N1 "\/"
  N2
proof
  let N1,N2 be strict StableSubgroup of H1;
  reconsider S2 = the_stable_subgroup_of(N1*N2) as StableSubgroup of G by Th11;
  let N19,N29 be strict StableSubgroup of G;
  set S1 = the_stable_subgroup_of(N19*N29);
  set X1={B where B is Subset of G : ex H being strict StableSubgroup of G st
  B = the carrier of H & N19*N29 c= carr H};
  set X2={B where B is Subset of H1 : ex H being strict StableSubgroup of H1
  st B = the carrier of H & N1*N2 c= carr H};
A1: N19 "\/" N29 = the_stable_subgroup_of(N19*N29) & N1 "\/" N2 =
  the_stable_subgroup_of(N1*N2) by Th29;
A2: the carrier of the_stable_subgroup_of(N19*N29) = meet X1 & the carrier
  of the_stable_subgroup_of(N1*N2) = meet X2 by Th27;
  assume
A3: N1=N19 & N2=N29;
  now
    let x be object;
    assume x in X2;
    then consider B be Subset of H1 such that
A4: x=B and
A5: ex H being strict StableSubgroup of H1 st B = the carrier of H &
    N1 *N2 c= carr H;
    now
      consider H be strict StableSubgroup of H1 such that
A6:   B = the carrier of H & N1*N2 c= carr H by A5;
      reconsider H as strict StableSubgroup of G by Th11;
      take H;
      thus B = the carrier of H & N19*N29 c= carr H by A3,A6,Th85;
    end;
    hence x in X1 by A4;
  end;
  then
A7: X2 c= X1;
  now
    set x9=carr H1;
    reconsider x=x9 as set;
    take x;
    now
      set H=(Omega).H1;
      take H;
      thus x9 = the carrier of H;
      thus N1*N2 c= carr H;
    end;
    hence x in X2;
  end;
  then
A8: meet X1 c= meet X2 by A7,SETFAM_1:6;
  now
    let x be object;
    assume
A9: x in the carrier of the_stable_subgroup_of(N1*N2);
    the_stable_subgroup_of(N1*N2) is Subgroup of H1 by Def7;
    then the carrier of the_stable_subgroup_of(N1*N2) c= the carrier of H1 by
GROUP_2:def 5;
    then reconsider g=x as Element of H1 by A9;
    g in the_stable_subgroup_of(N1*N2) by A9,STRUCT_0:def 5;
    then consider
    F be FinSequence of the carrier of H1, I be FinSequence of INT, C
    be Subset of H1 such that
A10: C = the_stable_subset_generated_by (N1*N2, the action of H1) and
A11: len F = len I and
A12: rng F c= C and
A13: Product(F |^ I) = g by Th24;
    now
      N2 is Subgroup of H1 by Def7;
      then 1_H1 in N2 by GROUP_2:46;
      then
A14:  1_H1 in carr N2 by STRUCT_0:def 5;
      let x be object;
      assume
A15:  x in the_stable_subset_generated_by (N1*N2, the action of H1);
      then reconsider a=x as Element of H1;
      N1 is Subgroup of H1 by Def7;
      then 1_H1 in N1 by GROUP_2:46;
      then
A16:  1_H1 in carr N1 by STRUCT_0:def 5;
      1_H1=1_H1*1_H1 by GROUP_1:def 4;
      then
A17:  1_H1 in carr N1 * carr N2 by A16,A14;
      then consider F be FinSequence of O, h be Element of N1*N2 such that
A18:  Product(F,the action of H1).h = a by A15,Lm30;
      H1 is Subgroup of G by Def7;
      then
A19:  the carrier of H1 c= the carrier of G by GROUP_2:def 5;
      then reconsider a as Element of G;
A20:  h in N1*N2 by A17;
      reconsider h as Element of N19*N29 by A3,Th85;
      now
        let o be Element of O;
        let f1 be Function of the carrier of H1,the carrier of H1;
        let f2 be Function of the carrier of G,the carrier of G;
        assume that
A21:    f1=(the action of H1).o and
A22:    f2=(the action of G).o;
        per cases;
        suppose
          o in O;
          then H1^o = f1 & G^o = f2 by A21,A22,Def6;
          hence f1 = f2|the carrier of H1 by Def7;
        end;
        suppose
          not o in O;
          then not o in dom the action of H1;
          hence f1 = f2|the carrier of H1 by A21,FUNCT_1:def 2;
        end;
      end;
      then Product(F,the action of H1) = Product(F,the action of G)|the
      carrier of H1 by A19,Th84;
      then
A23:  Product(F,the action of G).h = a by A18,A20,FUNCT_1:49;
      N19*N29 is non empty by A3,A20,Th85;
      hence x in the_stable_subset_generated_by (N19*N29, the action of G) by
A23,Lm30;
    end;
    then the_stable_subset_generated_by (N1*N2, the action of H1) c=
    the_stable_subset_generated_by (N19*N29, the action of G);
    then
A24: rng F c= the_stable_subset_generated_by (N19*N29, the action of G )
    by A10,A12;
    reconsider g as Element of G by Th2;
    H1 is Subgroup of G by Def7;
    then the carrier of H1 c= the carrier of G by GROUP_2:def 5;
    then rng F c= the carrier of G;
    then reconsider F as FinSequence of the carrier of G by FINSEQ_1:def 4;
    Product(F |^ I) = g by A11,A13,Th83;
    then
A25: g in the_stable_subgroup_of(N19*N29) by A11,A24,Th24;
    assume not x in the carrier of the_stable_subgroup_of(N19*N29);
    hence contradiction by A25,STRUCT_0:def 5;
  end;
  then meet X2 c= meet X1 by A2;
  then the carrier of S1 = the carrier of S2 by A2,A8,XBOOLE_0:def 10;
  hence thesis by A1,Lm4;
end;

theorem Th87:
  for N1,N2 being strict StableSubgroup of G st N1 is normal
  StableSubgroup of H1 & N2 is normal StableSubgroup of H1 holds N1 "\/" N2 is
  normal StableSubgroup of H1
proof
  let N1,N2 be strict StableSubgroup of G;
  assume
A1: N1 is normal StableSubgroup of H1 & N2 is normal StableSubgroup of H1;
  then reconsider N19=N1,N29=N2 as StableSubgroup of H1;
  N1 "\/" N2 = N19 "\/" N29 by Th86;
  hence thesis by A1,Th32;
end;

theorem Th88:
  for f being Homomorphism of G,H holds for g being Homomorphism
  of H,I holds the carrier of Ker(g*f) = f"(the carrier of Ker g)
proof
  let f be Homomorphism of G,H;
  let g be Homomorphism of H,I;
A1: now
    let x be object;
    assume
A2: x in f"(the carrier of Ker g);
    then f.x in the carrier of Ker g by FUNCT_1:def 7;
    then f.x in {b where b is Element of H: g.b = 1_I} by Def21;
    then
A3: ex b be Element of H st b=f.x & g.b = 1_I;
    x in dom f by A2,FUNCT_1:def 7;
    then 1_I = (g*f).x by A3,FUNCT_1:13;
    then x in {a9 where a9 is Element of G: (g*f).a9 = 1_I} by A2;
    hence x in the carrier of Ker(g*f) by Def21;
  end;
A4: dom f = the carrier of G by FUNCT_2:def 1;
  now
    let x be object;
    assume x in the carrier of Ker(g*f);
    then x in {a where a is Element of G: (g*f).a = 1_I} by Def21;
    then consider a be Element of G such that
A5: x=a and
A6: (g*f).a =1_I;
    reconsider b=f.a as Element of H;
    g.b = 1_I by A4,A6,FUNCT_1:13;
    then f.x in {b9 where b9 is Element of H: g.b9 = 1_I} by A5;
    then f.x in the carrier of Ker g by Def21;
    hence x in f"(the carrier of Ker g) by A4,A5,FUNCT_1:def 7;
  end;
  hence thesis by A1,TARSKI:2;
end;

theorem Th89:
  for G9 being StableSubgroup of G, H9 being StableSubgroup of H,
  f being Homomorphism of G,H st the carrier of H9 = f.:(the carrier of G9) or
  the carrier of G9 = f"(the carrier of H9) holds f|(the carrier of G9) is
  Homomorphism of G9,H9
proof
  let G9 be StableSubgroup of G;
  let H9 be StableSubgroup of H;
  let f be Homomorphism of G,H;
  set g=f|(the carrier of G9);
  G9 is Subgroup of G by Def7;
  then
A1: the carrier of G9 c= the carrier of G by GROUP_2:def 5;
  then
A2: the carrier of G9 c= dom f by FUNCT_2:def 1;
  then
A3: dom g = the carrier of G9 by RELAT_1:62;
  assume
A4: the carrier of H9 = f.:(the carrier of G9) or the carrier of G9 = f"
  (the carrier of H9);
A5: for x st x in the carrier of G9 holds f.x in the carrier of H9
  proof
    let x;
    assume
A6: x in the carrier of G9;
    per cases by A4;
    suppose
A7:   the carrier of H9 = f.:(the carrier of G9);
      assume not f.x in the carrier of H9;
      hence contradiction by A2,A6,A7,FUNCT_1:def 6;
    end;
    suppose
      the carrier of G9 = f"(the carrier of H9);
      hence thesis by A6,FUNCT_1:def 7;
    end;
  end;
  now
    let y be object;
    assume y in rng g;
    then consider x being object such that
A8: x in dom g and
A9: y = g.x by FUNCT_1:def 3;
A10: x in the carrier of G9 by A2,A8,RELAT_1:62;
    then y = f.x by A9,FUNCT_1:49;
    hence y in the carrier of H9 by A5,A10;
  end;
  then rng g c= the carrier of H9;
  then reconsider g as Function of G9,H9 by A3,RELSET_1:4;
A11: now
    let a9,b9 be Element of G9;
    reconsider a=a9,b=b9 as Element of G by A1;
A12: f.a = g.a9 & f.b = g.b9 by FUNCT_1:49;
    thus g.(a9* b9) = f.(a9*b9) by FUNCT_1:49
      .= f.(a*b) by Th3
      .= f.a * f.b by GROUP_6:def 6
      .= g.a9 * g.b9 by A12,Th3;
  end;
  now
    let o be Element of O;
    let a9 be Element of G9;
    reconsider a=a9 as Element of G by A1;
    thus g.((G9^o).a9) = f.((G9^o).a9) by FUNCT_1:49
      .= f.(((G^o)|the carrier of G9).a9) by Def7
      .= f.((G^o).a) by FUNCT_1:49
      .= (H^o).(f.a) by Def18
      .= (H^o).(g.a9) by FUNCT_1:49
      .= ((H^o)|the carrier of H9).(g.a9) by FUNCT_1:49
      .= (H9^o).(g.a9) by Def7;
  end;
  hence thesis by A11,Def18,GROUP_6:def 6;
end;

:: ALG I.4.6 Corollary 2

theorem Th90:
  for G,H being strict GroupWithOperators of O, N,L,G9 being
  strict StableSubgroup of G, f being Homomorphism of G,H st N = Ker f & L is
strict normal StableSubgroup of G9 holds L"\/"(G9/\N) is normal StableSubgroup
of G9 & L"\/"N is normal StableSubgroup of G9"\/"N & for N1 being strict normal
StableSubgroup of G9"\/"N, N2 being strict normal StableSubgroup of G9 st N1=L
  "\/"N & N2=L"\/"(G9/\N) holds (G9"\/"N)./.N1, G9./.N2 are_isomorphic
proof
  let G,H be strict GroupWithOperators of O;
  let N,L,G9 be strict StableSubgroup of G;
  reconsider N9=G9/\N as StableSubgroup of G9 by Lm33;
  reconsider Gs9 = the multMagma of G9 as strict Subgroup of G by Lm15;
  let f be Homomorphism of G,H;
  reconsider L99=L as Subgroup of G by Def7;
  assume
A1: N = Ker f;
  then consider H9 be strict StableSubgroup of H such that
A2: the carrier of H9 = f.:(the carrier of G9) and
A3: f"(the carrier of H9) = the carrier of G9"\/"N and
  f is onto & G9 is normal implies H9 is normal by Th79;
  reconsider f99 = f|(the carrier of G9"\/"N) as Homomorphism of G9"\/"N,H9 by
A3,Th89;
  reconsider Ns = the multMagma of N as strict normal Subgroup of G by A1,Lm6;
  carr Gs9 * Ns = Ns * carr Gs9 by GROUP_3:120;
  then
A4: G9 * N = N * G9;
A5: now
    let y be object;
    assume y in f.:the carrier of G9;
    then consider x being object such that
A6: x in dom f and
A7: x in the carrier of G9 and
A8: y = f.x by FUNCT_1:def 6;
    reconsider x as Element of G by A6;
    consider x9 be set such that
A9: x9=x*1_G;
A10: x9 in dom f by A6,A9,GROUP_1:def 4;
A11: y = f.x * 1_H by A8,GROUP_1:def 4
      .= f.x * f.(1_G) by Lm12
      .= f.x9 by A9,GROUP_6:def 6;
    f.(1_G) = 1_H by Lm12;
    then 1_G in Ker f by Th47;
    then 1_G in carr N by A1,STRUCT_0:def 5;
    then x9 in G9*N by A7,A9;
    hence y in f.:(G9*N) by A10,A11,FUNCT_1:def 6;
  end;
A12: dom f = the carrier of G by FUNCT_2:def 1;
  now
    let y be object;
    assume y in f.:(G9*N);
    then consider x being object such that
A13: x in dom f and
A14: x in G9*N and
A15: y = f.x by FUNCT_1:def 6;
    reconsider x as Element of G by A13;
    consider g1,g2 be Element of G such that
A16: x = g1*g2 and
A17: g1 in carr G9 and
A18: g2 in carr N by A14;
A19: g2 in N by A18,STRUCT_0:def 5;
    y = f.g1*f.g2 by A15,A16,GROUP_6:def 6
      .= f.g1*1_H by A1,A19,Th47
      .= f.g1 by GROUP_1:def 4;
    hence y in f.:(the carrier of G9) by A12,A17,FUNCT_1:def 6;
  end;
  then f.:(the carrier of G9) = f.:(G9*N) by A5,TARSKI:2;
  then
A20: f99.:(the carrier of (G9"\/"N))=f.:(the carrier of (G9"\/"N)) & the
  carrier of H9 = f.:(the carrier of (G9"\/"N)) by A2,A4,Th30,RELAT_1:129;
A21: now
    let x be object;
    assume x in f99"(f.:(the carrier of L));
    then
A22: x in ((the carrier of G9"\/"N) /\ f"(f.:(the carrier of L))) by FUNCT_1:70
;
    then x in f"(f.:(the carrier of L)) by XBOOLE_0:def 4;
    then f.x in f.:(the carrier of L) by FUNCT_1:def 7;
    then consider g1 be object such that
A23: g1 in dom f and
A24: g1 in the carrier of L and
A25: f.x = f.g1 by FUNCT_1:def 6;
    reconsider g1,g2=x as Element of G by A22,A23;
    consider g3 be Element of G such that
A26: g2 = g1 * g3 by GROUP_1:15;
    f.g2 = f.g2*f.g3 by A25,A26,GROUP_6:def 6;
    then f.g3 = 1_H by GROUP_1:7;
    then g3 in Ker f by Th47;
    then g3 in the carrier of N by A1,STRUCT_0:def 5;
    hence x in L * N by A24,A26;
  end;
  reconsider f9=f|(the carrier of G9) as Homomorphism of G9,H9 by A2,Th89;
A27: now
    let x be object;
    assume x in the carrier of N9;
    then
A28: x in carr G9 /\ carr N by Def25;
    then reconsider a9=x as Element of G9 by XBOOLE_0:def 4;
    reconsider a99=a9 as Element of G by Th2;
    x in carr N by A28,XBOOLE_0:def 4;
    then x in N by STRUCT_0:def 5;
    then f.a99 = 1_H by A1,Th47;
    then f.a9 = 1_H9 by Th4;
    then f9.a9 = 1_H9 by FUNCT_1:49;
    hence x in {a where a is Element of G9: f9.a = 1_H9};
  end;
  assume
A29: L is strict normal StableSubgroup of G9;
  then reconsider L9=L as strict StableSubgroup of G9;
  reconsider N1=L"\/"N as StableSubgroup of G9"\/"N by A29,Th38;
  carr L99 * Ns = Ns * carr L99 by GROUP_3:120;
  then
A30: L * N = N * L;
  now
    let x be object;
    assume x in {a where a is Element of G9: f9.a = 1_H9};
    then consider a be Element of G9 such that
A31: x=a and
A32: f9.a = 1_H9;
    reconsider a as Element of G by Th2;
    f.a = 1_H9 by A32,FUNCT_1:49;
    then f.a = 1_H by Th4;
    then x in N by A1,A31,Th47;
    then x in carr N by STRUCT_0:def 5;
    then x in carr G9 /\ carr N by A31,XBOOLE_0:def 4;
    hence x in the carrier of N9 by Def25;
  end;
  then
the carrier of N9 = {a where a is Element of G9: f9.a = 1_H9} by A27,TARSKI:2;
  then
A33: N9 = Ker f9 by Def21;
  then consider H99 be strict StableSubgroup of H9 such that
A34: the carrier of H99 = f9.:(the carrier of L9) and
A35: f9"(the carrier of H99) = the carrier of L9"\/"N9 and
A36: f9 is onto & L9 is normal implies H99 is normal by Th79;
  consider N2 be strict StableSubgroup of G9 such that
A37: the carrier of N2 = f9"(the carrier of H99) and
A38: H99 is normal implies N9 is normal StableSubgroup of N2 & N2 is
  normal by A33,Th78;
  f9.:(the carrier of G9) = f.:(the carrier of G9) & H9 is strict
  StableSubgroup of H9 by Lm3,RELAT_1:129;
  then Image f9 = H9 by A2,Def22;
  then
A39: rng f9 = the carrier of H9 by Th49;
  then reconsider H99 as normal StableSubgroup of H9 by A29,A36;
A40: N2 = L9"\/"N9 by A35,A37,Lm4;
  hence L"\/"(G9/\N) is normal StableSubgroup of G9 by A29,A36,A38,A39,Th86;
  set l = nat_hom H99;
  set f1 = l*f99;
A41: N2 = L"\/"(G9/\N) by A40,Th86;
A42: L"\/"N is StableSubgroup of G9"\/"N by A29,Th38;
A43: now
    let x be object;
    assume
A44: x in L * N;
    then consider g1,g2 be Element of G such that
A45: x = g1*g2 and
A46: g1 in carr L and
A47: g2 in carr N;
A48: g2 in N by A47,STRUCT_0:def 5;
    f.x = f.g1*f.g2 by A45,GROUP_6:def 6
      .= f.g1*1_H by A1,A48,Th47
      .= f.g1 by GROUP_1:def 4;
    then
A49: f.x in f.:(the carrier of L) by A12,A46,FUNCT_1:def 6;
    L"\/"N is Subgroup of G9"\/"N by A42,Def7;
    then
A50: the carrier of L"\/"N c= the carrier of G9"\/"N by GROUP_2:def 5;
A51: x in the carrier of L"\/"N by A30,A44,Th30;
    then x in G9"\/"N by A50,STRUCT_0:def 5;
    then x in G by Th1;
    then x in dom f by A12,STRUCT_0:def 5;
    then x in f"(f.:(the carrier of L)) by A49,FUNCT_1:def 7;
    then x in ((the carrier of G9"\/"N) /\ f"(f.:(the carrier of L))) by A51
,A50,XBOOLE_0:def 4;
    hence x in f99"(f.:(the carrier of L)) by FUNCT_1:70;
  end;
  L is Subgroup of G9 by A29,Def7;
  then the carrier of L c= the carrier of G9 by GROUP_2:def 5;
  then f9.:(the carrier of L) = f.:(the carrier of L) by RELAT_1:129;
  then f99"(f9.:(the carrier of L)) = L * N by A21,A43,TARSKI:2;
  then
A52: f99"(the carrier of H99) = the carrier of N1 by A34,A30,Th30;
A53: f99"(the carrier of Ker l) = f99"(the carrier of H99) by Th48;
  then the carrier of Ker f1 = the carrier of N1 by A52,Th88;
  hence L"\/"N is normal StableSubgroup of G9"\/"N by Lm4;
A54: Ker f1 = N1 by A52,A53,Lm4,Th88;
  now
    set f2 = l*f9;
    let N19 be strict normal StableSubgroup of G9"\/"N;
    let N29 be strict normal StableSubgroup of G9;
    assume
A55: N19=L"\/"N;
    f99.:(the carrier of G9"\/"N) = f9.:(the carrier of G9) & f1.:(the
carrier of G9"\/"N) = l.:(f99.:(the carrier of G9"\/"N)) by A2,A20,RELAT_1:126
,129;
    then
A56: f1.:(the carrier of G9"\/"N)=f2.:(the carrier of G9) by RELAT_1:126;
A57: f9"(the carrier of Ker l) = f9"(the carrier of H99) by Th48;
    assume N29=L"\/"(G9/\N);
    then
A58: N29=Ker f2 by A37,A41,A57,Lm4,Th88;
    the carrier of Image f1=f1.:(the carrier of G9"\/"N) by Def22
      .= the carrier of Image f2 by A56,Def22;
    then
A59: Image f1 = Image f2 by Lm4;
    (G9"\/"N)./.Ker f1, Image f1 are_isomorphic & Image f2, G9./.Ker f2
    are_isomorphic by Th59;
    hence (G9"\/"N)./.N19,G9./.N29 are_isomorphic by A54,A55,A59,A58,Th55;
  end;
  hence thesis;
end;

:: ALG I.4.7 Lemma 1

begin :: The Zassenhaus Butterfly Lemma

theorem Th91:
  for H,K,H9,K9 being strict StableSubgroup of G, JH being normal
StableSubgroup of H9"\/"(H/\K), HK being normal StableSubgroup of H/\K st H9 is
normal StableSubgroup of H & K9 is normal StableSubgroup of K & JH = H9"\/"(H/\
  K9) & HK=(H9/\K)"\/"(K9/\H) holds (H9"\/"(H/\K))./.JH, (H/\K)./.HK
  are_isomorphic
proof
  let H,K,H9,K9 be strict StableSubgroup of G;
  reconsider GG = H as GroupWithOperators of O;
  set G9=H/\K;
  set L=H/\K9;
  reconsider G9 as strict StableSubgroup of GG by Lm33;
  let JH be normal StableSubgroup of H9"\/"(H/\K);
  let HK be normal StableSubgroup of H/\K;
  assume that
A1: H9 is normal StableSubgroup of H and
A2: K9 is normal StableSubgroup of K;
A3: L is normal StableSubgroup of G9 by A2,Th60;
  reconsider N9 = H9 as normal StableSubgroup of GG by A1;
  assume that
A4: JH = H9"\/"(H/\K9) and
A5: HK=(H9/\K)"\/"(K9/\H);
  reconsider N = N9 as StableSubgroup of GG;
  set N1=G9/\N;
A6: G9"\/"N = (H/\K) "\/" H9 by Th86
    .= H9"\/"(H/\K);
  reconsider L as StableSubgroup of GG by A3,Th11;
  N1=(H/\K)/\H9 by Th39;
  then
A7: L"\/"N1 = (H/\K9)"\/"((H/\K)/\H9) by Th86
    .= ((H9/\H)/\K)"\/"(K9/\H) by Th20
    .= HK by A1,A5,Lm21;
  reconsider HH = GG./.N9 as GroupWithOperators of O;
  reconsider f = nat_hom N9 as Homomorphism of GG,HH;
A8: N = Ker f by Th48;
  L"\/"N = (H/\K9)"\/"H9 by Th86
    .=JH by A4;
  hence thesis by A3,A7,A8,A6,Th90;
end;

theorem Th92:
  for H,K,H9,K9 being strict StableSubgroup of G st H9 is normal
  StableSubgroup of H & K9 is normal StableSubgroup of K holds H9"\/"(H/\K9) is
  normal StableSubgroup of H9"\/"(H/\K)
proof
  let H,K,H9,K9 be strict StableSubgroup of G;
  reconsider GG=H as GroupWithOperators of O;
  reconsider G9=H/\K as strict StableSubgroup of GG by Lm33;
  assume that
A1: H9 is normal StableSubgroup of H and
A2: K9 is normal StableSubgroup of K;
  reconsider N9=H9 as normal StableSubgroup of GG by A1;
  reconsider N=N9 as StableSubgroup of GG;
  reconsider HH=GG./.N9 as GroupWithOperators of O;
  reconsider f=nat_hom N9 as Homomorphism of GG,HH;
  set L=H/\K9;
A3: L is strict normal StableSubgroup of G9 by A2,Th60;
  then reconsider L as strict StableSubgroup of GG by Th11;
A4: N = Ker f by Th48;
A5: G9"\/"N = (H/\K)"\/"H9 by Th86
    .= H9"\/"(H/\K);
  L"\/"N = (H/\K9)"\/"H9 by Th86
    .= H9"\/"(H/\K9);
  hence thesis by A3,A4,A5,Th90;
end;

::$N Zassenhaus Lemma
theorem Th93:
  for H,K,H9,K9 being strict StableSubgroup of G, JH being normal
StableSubgroup of H9"\/"(H/\K), JK being normal StableSubgroup of K9"\/"(K/\H)
st JH = H9"\/"(H/\K9) & JK= K9"\/"(K/\H9) & H9 is normal StableSubgroup of H &
K9 is normal StableSubgroup of K holds (H9"\/"(H/\K))./.JH, (K9"\/"(K/\H))./.JK
  are_isomorphic
proof
  let H,K,H9,K9 be strict StableSubgroup of G;
  let JH be normal StableSubgroup of H9"\/"(H/\K);
  let JK be normal StableSubgroup of K9"\/"(K/\H);
  assume that
A1: JH = H9"\/"(H/\K9) and
A2: JK= K9"\/"(K/\H9);
  set HK=(H9/\K)"\/"(K9/\H);
  assume
A3: H9 is normal StableSubgroup of H;
  then
A4: H9/\K is normal StableSubgroup of H/\K by Th60;
  assume
A5: K9 is normal StableSubgroup of K;
  then K9/\H is normal StableSubgroup of H/\K by Th60;
  then reconsider HK as normal StableSubgroup of H/\K by A4,Th87;
  HK=(K9/\H)"\/"(H9/\K);
  then
A6: (K9"\/"(K/\H))./.JK, (H/\K)./.HK are_isomorphic by A2,A3,A5,Th91;
  (H9"\/"(H/\K))./.JH, (H/\K)./.HK are_isomorphic by A1,A3,A5,Th91;
  hence thesis by A6,Th55;
end;

begin :: Composition Series
:: ALG I.4.7 Definition 9

definition
  let O be set;
  let G be GroupWithOperators of O;
  let IT be FinSequence of the_stable_subgroups_of G;
  attr IT is composition_series means
  :Def28:
  IT.1=(Omega).G & IT.(len IT)=
  (1).G & for i being Nat st i in dom IT & i+1 in dom IT for H1,H2 being
StableSubgroup of G st H1=IT.i & H2=IT.(i+1) holds H2 is normal StableSubgroup
  of H1;
end;

registration
  let O be set;
  let G be GroupWithOperators of O;
  cluster composition_series for FinSequence of the_stable_subgroups_of G;
  existence
  proof
    take H=<*(Omega).G,(1).G*>;
    (Omega).G is Element of the_stable_subgroups_of G & (1).G is Element
    of the_stable_subgroups_of G by Def11;
    then reconsider H as FinSequence of the_stable_subgroups_of G by
FINSEQ_2:13;
A1: H.(len H) = H.2 by FINSEQ_1:44
      .=(1).G;
A2: for i being Nat st i in dom H & i+1 in dom H for H1,H2 being
StableSubgroup of G st H1=H.i & H2=H.(i+1) holds H2 is normal StableSubgroup of
    H1
    proof
      let i be Nat;
      assume
A3:   i in dom H;
      assume
A4:   i+1 in dom H;
      len H = 2 by FINSEQ_1:44;
      then
A5:   dom H = {1,2} by FINSEQ_1:2,def 3;
      per cases by A3,A5,TARSKI:def 2;
      suppose
A6:     i=1;
        let H1,H2 be StableSubgroup of G;
        assume H1=H.i;
        assume H2=H.(i+1);
        then
A7:     H2=(1).G by A6;
        then reconsider H2 as StableSubgroup of H1 by Th16;
        now
          let H be strict Subgroup of H1;
          reconsider H1 as Subgroup of G by Def7;
          assume the multMagma of H2 = H;
          then the carrier of H = {1_G} by A7,Def8;
          then the carrier of H = {1_H1} by GROUP_2:44;
          then H = (1).H1 by GROUP_2:def 7;
          hence H is normal;
        end;
        hence thesis by Def10;
      end;
      suppose
        i=2;
        hence thesis by A4,A5,TARSKI:def 2;
      end;
    end;
    H.1=(Omega).G;
    hence thesis by A1,A2,Def28;
  end;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  mode CompositionSeries of G is composition_series FinSequence of
    the_stable_subgroups_of G;
end;

:: ALG I.4.7 Definition 9

definition
  let O be set;
  let G be GroupWithOperators of O;
  let s1,s2 be CompositionSeries of G;
  pred s1 is_finer_than s2 means

  ex x being set st x c= dom s1 & s2 = s1 * Sgm x;
  reflexivity
  proof
    now
      let s1 be CompositionSeries of G;
      set x=dom s1;
      reconsider x as set;
      take x;
      thus x c= dom s1;
      set i=len s1;
      Sgm x = Sgm Seg i by FINSEQ_1:def 3
        .= idseq i by FINSEQ_3:48;
      hence s1 = s1 * Sgm x by FINSEQ_2:54;
    end;
    hence thesis;
  end;
end;

definition
  let O be set;
  let G be GroupWithOperators of O;
  let IT be CompositionSeries of G;
  attr IT is strictly_decreasing means

  for i being Nat st i in dom IT
& i+1 in dom IT for H being StableSubgroup of G, N being normal StableSubgroup
  of H st H=IT.i & N=IT.(i+1) holds H./.N is not trivial;
end;

:: ALG I.4.7 Definition 10

definition
  let O be set;
  let G be GroupWithOperators of O;
  let IT be CompositionSeries of G;
  attr IT is jordan_holder means

  IT is strictly_decreasing & not ex s
  being CompositionSeries of G st s<>IT & s is strictly_decreasing & s
  is_finer_than IT;
end;

:: ALG I.4.7 Definition 9

definition
  let O be set;
  let G1,G2 be GroupWithOperators of O;
  let s1 be CompositionSeries of G1;
  let s2 be CompositionSeries of G2;
  pred s1 is_equivalent_with s2 means

  len s1 = len s2 & for n being
  Nat st n + 1 = len s1 holds ex p being Permutation of Seg n st for H1 being
  StableSubgroup of G1, H2 being StableSubgroup of G2, N1 being normal
StableSubgroup of H1, N2 being normal StableSubgroup of H2, i,j being Nat st 1
<=i & i<=n & j=p.i & H1=s1.i & H2=s2.j & N1=s1.(i+1) & N2=s2.(j+1) holds H1./.
  N1,H2./.N2 are_isomorphic;
end;

:: ALG I.4.7 Definition 9

definition
  let O be set;
  let G be GroupWithOperators of O;
  let s be CompositionSeries of G;
  func the_series_of_quotients_of s -> FinSequence means
  :Def33:
  len s = len
  it + 1 & for i being Nat st i in dom it for H being StableSubgroup of G, N
being normal StableSubgroup of H st H=s.i & N=s.(i+1) holds it.i = H./.N if len
  s > 1 otherwise it={};
  existence
  proof
    now
      set i=len s - 1;
      assume len s > 1;
      then len s - 1 > 1 - 1 by XREAL_1:9;
      then reconsider i as Element of NAT by INT_1:3;
      defpred P[set,object] means
for H being StableSubgroup of G, N being normal
StableSubgroup of H, j being Nat st $1 in Seg i & j=$1 & H=s.j & N=s.(j+1)
      holds $2 = H./.N;
A1:   for k being Nat st k in Seg i ex x being object st P[k,x]
      proof
        let k be Nat;
        reconsider k1=k as Element of NAT by ORDINAL1:def 12;
        assume
A2:     k in Seg i;
        then
A3:     1<=k by FINSEQ_1:1;
        k<=i by A2,FINSEQ_1:1;
        then
A4:     k+1<=len s - 1 + 1 by XREAL_1:6;
        0+k<=1+k by XREAL_1:6;
        then k<=len s by A4,XXREAL_0:2;
        then k1 in Seg len s by A3;
        then
A5:     k in dom s by FINSEQ_1:def 3;
        1+1<=k+1 by A3,XREAL_1:6;
        then 1<=k+1 by XXREAL_0:2;
        then k1+1 in Seg len s by A4;
        then
A6:     k+1 in dom s by FINSEQ_1:def 3;
        then reconsider
        H=s.k, N=s.(k+1) as Element of the_stable_subgroups_of G by A5,
FINSEQ_2:11;
        reconsider H,N as StableSubgroup of G by Def11;
        reconsider N as normal StableSubgroup of H by A5,A6,Def28;
        take H./.N;
        thus thesis;
      end;
      consider f be FinSequence such that
A7:   dom f = Seg i & for k being Nat st k in Seg i holds P[k,f.k]
      from FINSEQ_1:sch 1(A1);
      take f;
      len f = i by A7,FINSEQ_1:def 3;
      hence len s = len f + 1;
      let j be Nat;
      assume
A8:   j in dom f;
      let H be StableSubgroup of G;
      let N be normal StableSubgroup of H;
      assume
A9:   H=s.j;
      assume N=s.(j+1);
      hence f.j = H./.N by A7,A8,A9;
    end;
    hence thesis;
  end;
  uniqueness
  proof
    let f1,f2 be FinSequence;
    now
      assume len s > 1;
      assume
A10:  len s = len f1 + 1;
      assume
A11:  for i being Nat st i in dom f1 for H1 being StableSubgroup of G
, N1 being normal StableSubgroup of H1 st H1=s.i & N1=s.(i+1) holds f1.i = H1
      ./.N1;
      assume
A12:  len s = len f2 + 1;
      assume
A13:  for i being Nat st i in dom f2 for H1 being StableSubgroup of G
, N1 being normal StableSubgroup of H1 st H1=s.i & N1=s.(i+1) holds f2.i = H1
      ./.N1;
      for k being Nat st 1 <=k & k <= len f1 holds f1.k=f2.k
      proof
        let k be Nat;
        reconsider k1 = k as Element of NAT by ORDINAL1:def 12;
        assume that
A14:    1 <=k and
A15:    k <= len f1;
A16:    k+1<=len s - 1 + 1 by A10,A15,XREAL_1:6;
        0+k<=1+k by XREAL_1:6;
        then k<=len s by A16,XXREAL_0:2;
        then k1 in Seg len s by A14;
        then
A17:    k in dom s by FINSEQ_1:def 3;
        1+1<=k+1 by A14,XREAL_1:6;
        then 1<=k+1 by XXREAL_0:2;
        then k1+1 in Seg len s by A16;
        then
A18:    k+1 in dom s by FINSEQ_1:def 3;
        then reconsider
        H1=s.k,N1=s.(k+1) as Element of the_stable_subgroups_of G
        by A17,FINSEQ_2:11;
        reconsider H1,N1 as StableSubgroup of G by Def11;
        reconsider N1 as normal StableSubgroup of H1 by A17,A18,Def28;
A19:    k1 in Seg len f1 by A14,A15;
        then k in dom f1 by FINSEQ_1:def 3;
        then
A20:    f1.k=H1./.N1 by A11;
        k in dom f2 by A10,A12,A19,FINSEQ_1:def 3;
        hence thesis by A13,A20;
      end;
      hence f1=f2 by A10,A12;
    end;
    hence thesis;
  end;
  consistency;
end;

definition
  let O be set;
  let f1,f2 be FinSequence;
  let p be Permutation of dom f1;
  pred f1,f2 are_equivalent_under p,O means

  len f1 = len f2 & for H1,
H2 being GroupWithOperators of O, i,j being Nat st i in dom f1 & j=p".i & H1=f1
  .i & H2=f2.j holds H1,H2 are_isomorphic;
end;

reserve y for set,
  H19,H29 for StableSubgroup of G,
  N19 for normal StableSubgroup of H19,
  s1,s19,s2,s29 for CompositionSeries of G,
  fs for FinSequence of the_stable_subgroups_of G,
  f1,f2 for FinSequence,
  i,j,n for Nat;

theorem Th94:
  i in dom s1 & i+1 in dom s1 & s1.i=s1.(i+1) & fs=Del(s1,i)
  implies fs is composition_series
proof
  assume
A1: i in dom s1;
  then consider k be Nat such that
A2: len s1 = k + 1 and
A3: len Del(s1,i) = k by FINSEQ_3:104;
  assume i+1 in dom s1;
  then i+1 in Seg len s1 by FINSEQ_1:def 3;
  then
A4: i+1<=len s1 by FINSEQ_1:1;
  assume
A5: s1.i=s1.(i+1);
  assume
A6: fs = Del(s1,i);
A7: i in Seg len s1 by A1,FINSEQ_1:def 3;
  then
A8: 1<=i by FINSEQ_1:1;
  then 1+1<=i+1 by XREAL_1:6;
  then 1+1 <= len fs+1 by A6,A4,A2,A3,XXREAL_0:2;
  then
A9: 1 <= len fs by XREAL_1:6;
  per cases by A9,XXREAL_0:1;
  suppose
A10: len fs = 1;
A11: now
      let n be Nat;
      assume n in dom fs;
      then n in Seg 1 by A10,FINSEQ_1:def 3;
      then
A12:  n=1 by FINSEQ_1:2,TARSKI:def 1;
      assume
A13:  n+1 in dom fs;
      let H1,H2;
      assume that
      H1=fs.n and
      H2=fs.(n+1);
      2 in Seg 1 by A10,A12,A13,FINSEQ_1:def 3;
      hence H2 is normal StableSubgroup of H1 by FINSEQ_1:2,TARSKI:def 1;
    end;
A14: s1.1=(Omega).G by Def28;
A15: 1<=i by A7,FINSEQ_1:1;
A16: i<=1 by A6,A4,A2,A3,A10,XREAL_1:6;
    then
A17: i=1 by A15,XXREAL_0:1;
    dom s1 = Seg 2 by A6,A2,A3,A10,FINSEQ_1:def 3;
    then 1 in dom s1;
    then
A18: i in dom s1 by A15,A16,XXREAL_0:1;
    i<=1 by A6,A4,A2,A3,A10,XREAL_1:6;
    then
A19: fs.(len fs) = s1.(1+1) by A6,A2,A3,A10,A18,FINSEQ_3:111
      .= (1).G by A6,A2,A3,A10,Def28;
    s1.2=(1).G by A6,A2,A3,A10,Def28;
    hence thesis by A5,A10,A17,A14,A19,A11;
  end;
  suppose
A20: len fs > 1;
A21: fs.1=(Omega).G
    proof
      per cases by A8,XXREAL_0:1;
      suppose
A22:    i=1;
        then fs.1 = s1.(1+1) by A1,A6,A2,A3,A20,FINSEQ_3:111;
        hence thesis by A5,A22,Def28;
      end;
      suppose
A23:    i>1;
        reconsider i as Element of NAT by INT_1:3;
        fs.1 = s1.1 by A23,A6,FINSEQ_3:110;
        hence thesis by Def28;
      end;
    end;
A24: now
      let n be Nat;
      assume that
A25:  n in dom fs and
A26:  n+1 in dom fs;
A27:  n in Seg len fs by A25,FINSEQ_1:def 3;
      then
A28:  n <= k by A6,A3,FINSEQ_1:1;
      reconsider n1=n+1 as Nat;
A29:  n+1 in Seg len fs by A26,FINSEQ_1:def 3;
      then
A30:  n1 <= k by A6,A3,FINSEQ_1:1;
A31:  0+len fs < 1+len fs by XREAL_1:6;
      then
A32:  Seg len fs c= Seg len s1 by A6,A2,A3,FINSEQ_1:5;
      then n in Seg len s1 by A27;
      then
A33:  n in dom s1 by FINSEQ_1:def 3;
      n1 in Seg len s1 by A29,A32;
      then
A34:  n1 in dom s1 by FINSEQ_1:def 3;
      n1 <= len fs by A29,FINSEQ_1:1;
      then n1 < len s1 by A6,A2,A3,A31,XXREAL_0:2;
      then n1 + 1 <= k + 1 by A2,NAT_1:13;
      then Seg(n1+1) c= Seg len s1 by A2,FINSEQ_1:5;
      then
A35:  Seg(n1+1) c= dom s1 by FINSEQ_1:def 3;
A36:  n1+1 in Seg(n1+1) by FINSEQ_1:4;
      let H1, H2;
      assume
A37:  H1 = fs.n;
      assume
A38:  H2 = fs.(n+1);
      reconsider i,n as Nat;
      per cases;
      suppose
A39:    n<i;
        then
A40:    n1<=i by NAT_1:13;
        reconsider n9=n,i as Element of NAT by INT_1:3;
A41:    Del(s1,i).n9 = s1.n9 by A39,FINSEQ_3:110;
        per cases by A40,XXREAL_0:1;
        suppose
A42:      n1<i;
          reconsider n19=n1,i as Element of NAT;
          Del(s1,i).n19 = s1.n19 by A42,FINSEQ_3:110;
          hence H2 is normal StableSubgroup of H1 by A6,A37,A38,A33,A34,A41
,Def28;
        end;
        suppose
A43:      n1=i;
          then Del(s1,i).n1 = s1.(n1+1) by A1,A2,A30,FINSEQ_3:111;
          hence
          H2 is normal StableSubgroup of H1 by A5,A6,A37,A38,A33,A34,A41,A43
,Def28;
        end;
      end;
      suppose
A44:    n>=i;
        reconsider n9=n,i as Element of NAT by INT_1:3;
A45:    Del(s1,i).n9 = s1.(n9+1) by A1,A2,A28,A44,FINSEQ_3:111;
        reconsider n19=n1,i,k as Element of NAT by INT_1:3;
        0+n<=n+1 by XREAL_1:6;
        then
A46:    i<=n19 by A44,XXREAL_0:2;
        n19<=k by A6,A3,A29,FINSEQ_1:1;
        then Del(s1,i).n19 = s1.(n19+1) by A1,A2,A46,FINSEQ_3:111;
        hence H2 is normal StableSubgroup of H1 by A6,A37,A38,A34,A35,A36,A45
,Def28;
      end;
    end;
    i<=len fs by A6,A4,A2,A3,XREAL_1:6;
    then fs.(len fs) = s1.(len s1) by A1,A6,A2,A3,FINSEQ_3:111;
    then fs.(len fs)=(1).G by Def28;
    hence thesis by A21,A24;
  end;
end;

theorem Th95:
  s1 is_finer_than s2 implies ex n st len s1 = len s2 + n
proof
  set n=len s1 - len s2;
  assume s1 is_finer_than s2;
  then consider x such that
A1: x c= dom s1 and
A2: s2 = s1 * Sgm x;
  x c= Seg len s1 by A1,FINSEQ_1:def 3;
  then
a3: x is included_in_Seg;
  reconsider x as finite set by A1;
  now
    let y1 be object;
    assume y1 in dom s2;
    then y1 in dom Sgm x by A2,FUNCT_1:11;
    then
A4: y1 in Seg card x by a3,FINSEQ_3:40;
    card x <= card dom s1 by A1,NAT_1:43;
    then Seg card x c= Seg card dom s1 by FINSEQ_1:5;
    then y1 in Seg card dom s1 by A4;
    then y1 in Seg card Seg len s1 by FINSEQ_1:def 3;
    then y1 in Seg len s1 by FINSEQ_1:57;
    hence y1 in dom s1 by FINSEQ_1:def 3;
  end;
  then dom s2 c= dom s1;
  then Seg len s2 c= dom s1 by FINSEQ_1:def 3;
  then Seg len s2 c= Seg len s1 by FINSEQ_1:def 3;
  then len s2 <= len s1 by FINSEQ_1:5;
  then len s2 - len s2 <= len s1 - len s2 by XREAL_1:9;
  then n in NAT by INT_1:3;
  then reconsider n as Nat;
  take n;
  thus thesis;
end;

theorem Th96:
  len s2 = len s1 & s2 is_finer_than s1 implies s1 = s2
proof
  reconsider X = Seg len s2 as finite set;
  assume len s2 = len s1;
  then
A1: dom s1 = Seg len s2 by FINSEQ_1:def 3
    .= dom s2 by FINSEQ_1:def 3;
  assume s2 is_finer_than s1;
  then consider x such that
A2: x c= dom s2 and
A3: s1 = s2 * Sgm x;
  set y = X \ x;
A4: x c= Seg len s2 by A2,FINSEQ_1:def 3;
  then
a4: x is included_in_Seg;
  then x = rng Sgm x by FINSEQ_1:def 14;
  then
A5: dom(s2 * Sgm x)=dom Sgm x by A2,RELAT_1:27;
  reconsider x,y as finite set by A2;
  dom Sgm x = Seg len s2 by A3,A1,A5,FINSEQ_1:def 3;
  then len Sgm x = len s2 by FINSEQ_1:def 3;
  then
A6: card x = len s2 by a4,FINSEQ_3:39;
A7: X = X \/ x by A4,XBOOLE_1:12
    .= x \/ y by XBOOLE_1:39;
  card(x \/ y) = (card x) + (card y) by CARD_2:40,XBOOLE_1:79;
  then len s2 = (card x) + (card y) by A7,FINSEQ_1:57;
  then y = {} by A6;
  then Sgm x = idseq len s2 by A7,FINSEQ_3:48;
  hence thesis by A3,FINSEQ_2:54;
end;

theorem Th97:
  s1 is not empty & s2 is_finer_than s1 implies s2 is not empty;

theorem
  s1 is_finer_than s2 & s1 is jordan_holder & s2 is jordan_holder implies s1=s2
;

Lm35: for P,R being Relation holds P = (rng P)|`R iff P~ = (R~)|(dom (P~))
proof
  let P,R be Relation;
  hereby
    assume
A1: P = (rng P)|`R;
    now
      let x,y be object;
      hereby
        assume
A2:     [x,y] in P~;
        then [y,x] in P by RELAT_1:def 7;
        then [y,x] in R by A1,RELAT_1:def 12;
        then
A3:     [x,y] in R~ by RELAT_1:def 7;
        x in dom(P~) by A2,XTUPLE_0:def 12;
        hence [x,y] in R~|(dom (P~)) by A3,RELAT_1:def 11;
      end;
      assume
A4:   [x,y] in R~|(dom (P~));
      then [x,y] in R~ by RELAT_1:def 11;
      then
A5:   [y,x] in R by RELAT_1:def 7;
      x in dom(P~) by A4,RELAT_1:def 11;
      then x in rng P by RELAT_1:20;
      then [y,x] in (rng P)|`R by A5,RELAT_1:def 12;
      hence [x,y] in P~ by A1,RELAT_1:def 7;
    end;
    hence P~ = (R~)|(dom (P~));
  end;
  assume
A6: P~ = (R~)|(dom (P~));
  now
    let x,y be object;
    hereby
      assume [x,y] in P;
      then
A7:   [y,x] in P~ by RELAT_1:def 7;
      then [y,x] in R~ by A6,RELAT_1:def 11;
      then
A8:   [x,y] in R by RELAT_1:def 7;
      y in dom(P~) by A6,A7,RELAT_1:def 11;
      then y in rng P by RELAT_1:20;
      hence [x,y] in (rng P)|`R by A8,RELAT_1:def 12;
    end;
    assume
A9: [x,y] in (rng P)|`R;
    then [x,y] in R by RELAT_1:def 12;
    then
A10: [y,x] in R~ by RELAT_1:def 7;
    y in rng P by A9,RELAT_1:def 12;
    then y in dom(P~) by RELAT_1:20;
    then [y,x] in R~|(dom (P~)) by A10,RELAT_1:def 11;
    hence [x,y] in P by A6,RELAT_1:def 7;
  end;
  hence thesis;
end;

Lm36: for X being set, P,R being Relation holds P*(R|X) = (X|`P)*R
proof
  let X be set;
  let P,R be Relation;
A1: now
    let x be object;
    assume
A2: x in (X|`P)*R;
    then consider y,z be object such that
A3: x = [y,z] by RELAT_1:def 1;
    consider w be object such that
A4: [y,w] in X|`P and
A5: [w,z] in R by A2,A3,RELAT_1:def 8;
    w in X by A4,RELAT_1:def 12;
    then
A6: [w,z] in R|X by A5,RELAT_1:def 11;
    [y,w] in P by A4,RELAT_1:def 12;
    hence x in P*(R|X) by A3,A6,RELAT_1:def 8;
  end;
  now
    let x be object;
    assume
A7: x in P*(R|X);
    then consider y,z be object such that
A8: x = [y,z] by RELAT_1:def 1;
    consider w be object such that
A9: [y,w] in P and
A10: [w,z] in R|X by A7,A8,RELAT_1:def 8;
    w in X by A10,RELAT_1:def 11;
    then
A11: [y,w] in X|`P by A9,RELAT_1:def 12;
    [w,z] in R by A10,RELAT_1:def 11;
    hence x in (X|`P)*R by A8,A11,RELAT_1:def 8;
  end;
  hence thesis by A1;
end;

Lm37: for n being Nat, X being set, f being PartFunc of REAL, REAL st X c= Seg
n & X c= dom f & f|X is increasing & f.:X c= NAT \ {0} holds Sgm(f.:X) = f *
Sgm X
proof
  let n be Nat;
  let X be set;
  let f be PartFunc of REAL, REAL;
  assume
A1: X c= Seg n;
  then
a1: X is included_in_Seg;
  then
A2: rng Sgm X = X by FINSEQ_1:def 14;
  assume
A3: X c= dom f;
  assume
A4: f|X is increasing;
  assume
A5: f.:X c= NAT \ {0};
  per cases;
  suppose
A6: X misses dom f;
    then f.:X = {} by RELAT_1:118;
    then Sgm(f.:X) = {} by FINSEQ_1:51;
    hence thesis by A2,A6,RELAT_1:44;
  end;
  suppose
A8: X meets dom f;
    reconsider X9=X as finite set by A1;
    set fX = f.:X;
    reconsider f9=f as Function;
AA: f9.:X9 is finite;
    fX c= NAT \ {0} by A5;
    then reconsider fX as finite non empty natural-membered set
    by A8,AA,RELAT_1:118;
    reconsider k = max fX as Nat by TARSKI:1;
    set fs = f * Sgm X;
    rng Sgm X c= dom f by a1,A3,FINSEQ_1:def 14;
    then reconsider fs as FinSequence by FINSEQ_1:16;
    f.:(rng Sgm X) c= NAT \ {0} by a1,A5,FINSEQ_1:def 14;
    then
A9: rng fs c= NAT \ {0} by RELAT_1:127;
    rng fs c= NAT by A9,XBOOLE_1:1;
    then reconsider fs as FinSequence of NAT by FINSEQ_1:def 4;
    now
      let x be object;
      assume
A10:  x in f.:X;
      then reconsider k9=x as Nat by A5;
      not k9 in {0} by A5,A10,XBOOLE_0:def 5;
      then k9 <> 0 by TARSKI:def 1;
      then 0+1 < k9+1 by XREAL_1:6;
      then
A11:  1 <= k9 by NAT_1:13;
      k9 <= k by A10,XXREAL_2:def 8;
      hence x in Seg k by A11;
    end;
    then f.:X c= Seg k;
    then
a12: f.:X is included_in_Seg;
A13: now
A14:  dom fs = Seg len fs by FINSEQ_1:def 3;
      let l,m be Nat;
      assume that
A15:  1 <= l and
A16:  l < m and
A17:  m <= len fs;
      set k19=(Sgm X).l;
      l <= len fs by A16,A17,XXREAL_0:2;
      then
A18:  l in dom fs by A15,A14;
      then l in dom Sgm X by FUNCT_1:11;
      then
A19:  k19 in X by A2,FUNCT_1:3;
      set k29=(Sgm X).m;
      1 <= m by A15,A16,XXREAL_0:2;
      then
A20:  m in dom fs by A17,A14;
      then
A21:  m in dom Sgm X by FUNCT_1:11;
      then
A22:  k29 in X by A2,FUNCT_1:3;
      reconsider k19,k29 as Nat;
      m in Seg len Sgm X by A21,FINSEQ_1:def 3;
      then m <= len Sgm X by FINSEQ_1:1;
      then
A23:  k19 < k29 by a1,A15,A16,FINSEQ_1:def 14;
      reconsider k19,k29 as Element of NAT by ORDINAL1:def 12;
      reconsider k19,k29 as Element of REAL by XREAL_0:def 1;
      (Sgm X).l in dom f by A18,FUNCT_1:11;
      then
A24:  k19 in X /\ dom f by A19,XBOOLE_0:def 4;
      set k1 = fs.l;
      set k2 = fs.m;
A27:  k2 = f.((Sgm X).m) by A20,FUNCT_1:12;
      (Sgm X).m in dom f by A20,FUNCT_1:11;
      then
A28:  k29 in X /\ dom f by A22,XBOOLE_0:def 4;
      k1 = f.((Sgm X).l) by A18,FUNCT_1:12;
      hence k1 < k2 by A4,A27,A23,A24,A28,RFUNCT_2:20;
    end;
    rng fs = f.:X by A2,RELAT_1:127;
    hence thesis by a12,A13,FINSEQ_1:def 14;
  end;
end;

Lm38: y c= Seg(n+1) & i in Seg(n+1) & not i in y implies ex x st Sgm x = Sgm(
Seg(n+1)\{i})" * Sgm y & x c= Seg n
proof
  set x1 = {k where k is Element of NAT: k in y & k<i};
  set x2 = {k-1 where k is Element of NAT: k in y & k>i};
  set x = x1 \/ x2;
  set f1 = id x1;
  assume
A1: y c= Seg(n+1);
  then y is included_in_Seg;
    then
A2: y = rng Sgm y by FINSEQ_1:def 14;
  assume
A3: i in Seg(n+1);
  then
A4: 1<=i by FINSEQ_1:1;
A5: i<=n+1 by A3,FINSEQ_1:1;
A6: now
    let z be object;
    assume
A7: z in x;
    per cases by A7,XBOOLE_0:def 3;
    suppose
      z in x1;
      then
A8:   ex k be Element of NAT st k = z & k in y & k < i;
      then reconsider z9=z as Element of NAT;
      z9<n+1 by A5,A8,XXREAL_0:2;
      then
A9:   z9<=n by NAT_1:13;
      1<=z9 by A1,A8,FINSEQ_1:1;
      hence z in Seg n by A9;
    end;
    suppose
      z in x2;
      then consider k be Element of NAT such that
A10:  k-1 = z and
A11:  k in y and
A12:  k > i;
      reconsider z9=z as Integer by A10;
      1<k by A4,A12,XXREAL_0:2;
      then 1+1<k+1 by XREAL_1:6;
      then 2<=k by NAT_1:13;
      then
A13:  2-1<=k-1 by XREAL_1:9;
      then reconsider z9 as Element of NAT by A10,INT_1:3;
      k<=n+1 by A1,A11,FINSEQ_1:1;
      then k-1<=n+1-1 by XREAL_1:9;
      then z9<=n by A10;
      hence z in Seg n by A10,A13;
    end;
  end;
  then
A14: x c= Seg n;
  then reconsider x9=x,y9=y as finite set by A1;
  set f2 = {[k-1,k] where k is Element of NAT:k in y9 & k>i};
  now
    let x be object;
    assume x in f2;
    then consider k be Element of NAT such that
A15: [k-1,k] = x and
    k in y9 and
    k > i;
    reconsider y=k-1,z=k as object;
    take y,z;
    thus x = [y,z] by A15;
  end;
  then reconsider f2 as Relation by RELAT_1:def 1;
  set f = f1 \/ f2;
A16: now
    let x be object;
    assume x in x2;
    then consider k be Element of NAT such that
A17: k-1 = x & k in y9 & k > i;
    reconsider y=k as set;
    [x,y] in f2 by A17;
    hence x in dom f2 by XTUPLE_0:def 12;
  end;
  now
    let x be object;
    assume x in dom f2;
    then consider y be object such that
A18: [x,y] in f2 by XTUPLE_0:def 12;
    consider k be Element of NAT such that
A19: [k-1,k] = [x,y] and
A20: k in y9 & k > i by A18;
    k-1 = x by A19,XTUPLE_0:1;
    hence x in x2 by A20;
  end;
  then
A21: dom f2 = x2 by A16,TARSKI:2;
A22: now
    let x,y1,y2 be object;
    assume
A23: [x,y1] in f;
    assume
A24: [x,y2] in f;
A25: y1 is set & y2 is set by TARSKI:1;
    per cases by A23,XBOOLE_0:def 3;
    suppose
A26:  [x,y1] in f1;
      then
A27:  x in dom f1 by XTUPLE_0:def 12;
      then f1.x = x by FUNCT_1:17;
      then
A28:  y1 = x by A26,A27,A25,FUNCT_1:def 2;
      per cases by A24,XBOOLE_0:def 3;
      suppose
A29:    [x,y2] in f1;
        then
A30:    x in dom f1 by XTUPLE_0:def 12;
        then f1.x = x by FUNCT_1:17;
        hence y1 = y2 by A28,A29,A30,A25,FUNCT_1:def 2;
      end;
      suppose
A31:    [x,y2] in f2;
        x in x1 by A27;
        then consider k9 be Element of NAT such that
A32:    k9=x and
        k9 in y and
A33:    k9<i;
        x in x2 by A21,A31,XTUPLE_0:def 12;
        then ex k be Element of NAT st k-1=x & k in y & k>i;
        then k9+1>i by A32;
        hence y1 = y2 by A33,NAT_1:13;
      end;
    end;
    suppose
      [x,y1] in f2;
      then consider k be Element of NAT such that
A34:  [k-1,k] = [x,y1] and
      k in y9 and
A35:  k > i;
A36:  k-1=x by A34,XTUPLE_0:1;
      per cases by A24,XBOOLE_0:def 3;
      suppose
        [x,y2] in f1;
        then x in dom f1 by XTUPLE_0:def 12;
        then x in x1;
        then consider k9 be Element of NAT such that
A37:    k9=x and
        k9 in y and
A38:    k9<i;
        k9=k-1 by A34,A37,XTUPLE_0:1;
        then k9+1>i by A35;
        hence y1 = y2 by A38,NAT_1:13;
      end;
      suppose
        [x,y2] in f2;
        then consider k9 be Element of NAT such that
A39:    [k9-1,k9] = [x,y2] and
        k9 in y9 and
        k9 > i;
        k9-1=x by A39,XTUPLE_0:1;
        hence y1 = y2 by A34,A36,A39,XTUPLE_0:1;
      end;
    end;
  end;
A40: now
    let x,y1,y2 be object;
    assume [x,y1] in f2;
    then consider k be Element of NAT such that
A41: [k-1,k] = [x,y1] and
    k in y9 and
    k > i;
A42: k-1 = x by A41,XTUPLE_0:1;
    assume [x,y2] in f2;
    then consider k9 be Element of NAT such that
A43: [k9-1,k9] = [x,y2] and
    k9 in y9 and
    k9 > i;
    k9-1 = x by A43,XTUPLE_0:1;
    hence y1 = y2 by A41,A43,A42,XTUPLE_0:1;
  end;
  reconsider f as Function by A22,FUNCT_1:def 1;
A44: now
    let x be object;
A45: f1 c= f by XBOOLE_1:7;
    dom f = dom f1 \/ dom f2 by XTUPLE_0:23;
    then
A46: dom f1 c= dom f by XBOOLE_1:7;
    assume
A47: x in dom f1;
    then [x,f1.x] in f1 by FUNCT_1:def 2;
    hence f.x = f1.x by A47,A46,A45,FUNCT_1:def 2;
  end;
  reconsider f2 as Function by A40,FUNCT_1:def 1;
  assume
A48: not i in y;
A49: now
    let z be object;
    set k=z;
    assume
A50: z in y9;
    then k in Seg(n+1) by A1;
    then reconsider k as Element of NAT;
    per cases;
    suppose
      k <= i;
      then k < i by A48,A50,XXREAL_0:1;
      then z in x1 by A50;
      then z in rng f1;
      then z in (rng f1 \/ rng f2) by XBOOLE_0:def 3;
      hence z in rng f by RELAT_1:12;
    end;
    suppose
A51:  k > i;
      set x99=k-1;
      [x99,z] in f2 by A50,A51;
      then z in rng f2 by XTUPLE_0:def 13;
      then z in (rng f1 \/ rng f2) by XBOOLE_0:def 3;
      hence z in rng f by RELAT_1:12;
    end;
  end;
  now
    let z be object;
    assume z in rng f;
    then
A52: z in (rng f1 \/ rng f2) by RELAT_1:12;
    per cases by A52,XBOOLE_0:def 3;
    suppose
      z in rng f1;
      then z in x1;
      then ex k be Element of NAT st k = z & k in y & k < i;
      hence z in y9;
    end;
    suppose
      z in rng f2;
      then consider x99 be object such that
A53:  [x99,z] in f2 by XTUPLE_0:def 13;
      ex k be Element of NAT st [k-1,k] = [x99,z] & k in y9 & k > i by A53;
      hence z in y9 by XTUPLE_0:1;
    end;
  end;
  then
A54: rng f = y9 by A49,TARSKI:2;
  now
    let a,b be object;
    hereby
      assume
A55:  [a,b] in f;
      per cases by A55,XBOOLE_0:def 3;
      suppose
A56:    [a,b] in f1;
        reconsider i9=i,n9=n as Element of NAT by ORDINAL1:def 12;
A57:    a = b by A56,RELAT_1:def 10;
        a in x1 by A56,RELAT_1:def 10;
        then consider a9 be Element of NAT such that
A58:    a9 = a and
A59:    a9 in y and
A60:    a9<i;
A61:    1<=a9 by A1,A59,FINSEQ_1:1;
        i<=n+1 by A3,FINSEQ_1:1;
        then a9<n+1 by A60,XXREAL_0:2;
        then a9<=n by NAT_1:13;
        then
A62:    a in Seg n by A58,A61;
        then a in Seg len Sgm(Seg(n+1)\{i}) by A3,FINSEQ_3:107;
        then
A63:    a in dom Sgm(Seg(n+1)\{i}) by FINSEQ_1:def 3;
        a9 = Sgm(Seg(n9+1)\{i9}).a9 by A3,A58,A60,A61,A62,FINSEQ_3:108;
        then [a,b] in Sgm(Seg(n+1)\{i}) by A57,A58,A63,FUNCT_1:1;
        hence [a,b] in (rng f)|`Sgm(Seg(n+1)\{i}) by A54,A57,A58,A59,
RELAT_1:def 12;
      end;
      suppose
A64:    [a,b] in f2;
        reconsider i9=i,n9=n as Element of NAT by ORDINAL1:def 12;
        consider b9 be Element of NAT such that
A65:    [a,b] = [b9-1,b9] and
A66:    b9 in y9 and
A67:    b9>i by A64;
A68:    a = b9-1 by A65,XTUPLE_0:1;
        reconsider a9=b9-1 as Integer;
        i+1<=b9 by A67,NAT_1:13;
        then
A69:    i+1-1<=b9-1 by XREAL_1:9;
        then
A70:    1<=a9 by A4,XXREAL_0:2;
        reconsider a9 as Element of NAT by A69,INT_1:3;
        b9<=n+1 by A1,A66,FINSEQ_1:1;
        then
A71:    b9-1<=n+1-1 by XREAL_1:9;
        then
A72:    a9 in Seg n by A70;
        then a in Seg n by A65,XTUPLE_0:1;
        then a in Seg len Sgm(Seg(n+1)\{i}) by A3,FINSEQ_3:107;
        then
A73:    a in dom Sgm(Seg(n+1)\{i}) by FINSEQ_1:def 3;
        a9+1 = Sgm(Seg(n9+1)\{i9}).a9 by A3,A71,A69,A72,FINSEQ_3:108;
        then [a,b] in Sgm(Seg(n+1)\{i}) by A65,A68,A73,FUNCT_1:1;
        hence [a,b] in (rng f)|`Sgm(Seg(n+1)\{i})
           by A54,A65,A66,RELAT_1:def 12;
      end;
    end;
    assume
A74: [a,b] in (rng f)|`Sgm(Seg(n+1)\{i});
    then
A75: [a,b] in Sgm(Seg(n+1)\{i}) by RELAT_1:def 12;
    then
A76: a in dom Sgm(Seg(n+1)\{i}) by XTUPLE_0:def 12;
    b in rng f by A74,RELAT_1:def 12;
    then b in Seg(n+1) by A1,A54;
    then reconsider a9=a,b9=b as Element of NAT by A76;
A77: a in Seg len Sgm(Seg(n+1)\{i}) by A76,FINSEQ_1:def 3;
    then
A78: 1<=a9 by FINSEQ_1:1;
A79: b in y by A54,A74,RELAT_1:def 12;
A80: a in Seg n by A3,A77,FINSEQ_3:107;
    reconsider i,n as Element of NAT by ORDINAL1:def 12;
A81: a9<=n by A80,FINSEQ_1:1;
    per cases;
    suppose
A82:  a9<i;
      then Sgm(Seg(n+1)\{i}).a9 = a9 by A3,A80,A78,FINSEQ_3:108;
      then
A83:  b=a by A75,FUNCT_1:1;
      then a9 in x1 by A79,A82;
      then [a,b] in id x1 by A83,RELAT_1:def 10;
      hence [a,b] in f by XBOOLE_0:def 3;
    end;
    suppose
A84:  i<=a9;
      then Sgm(Seg(n+1)\{i}).a9 = a9+1 by A3,A80,A81,FINSEQ_3:108;
      then
A85:  b9=a9+1 by A75,FUNCT_1:1;
      then
A86:  b9>i by A84,NAT_1:13;
A87:  a = b9-1 by A85;
      b9 in y9 by A54,A74,RELAT_1:def 12;
      then [a,b] in f2 by A86,A87;
      hence [a,b] in f by XBOOLE_0:def 3;
    end;
  end;
  then
A88: f = (rng f)|`Sgm(Seg(n+1)\{i});
  reconsider g=f" as PartFunc of dom(f"), rng(f") by RELSET_1:4;
A89: now
    let x be set;
A90: f2 c= f by XBOOLE_1:7;
    dom f = dom f1 \/ dom f2 by XTUPLE_0:23;
    then
A91: dom f2 c= dom f by XBOOLE_1:7;
    assume
A92: x in dom f2;
    then [x,f2.x] in f2 by FUNCT_1:def 2;
    hence f.x = f2.x by A92,A91,A90,FUNCT_1:def 2;
  end;
  now
    let y1,y2 be object;
    assume y1 in dom f;
    then
A93: y1 in dom f1 \/ dom f2 by XTUPLE_0:23;
    assume y2 in dom f;
    then
A94: y2 in dom f1 \/ dom f2 by XTUPLE_0:23;
    assume
A95: f.y1 = f.y2;
    per cases by A93,XBOOLE_0:def 3;
    suppose
A96:  y1 in dom f1;
      then
A97:  f1.y1 = y1 by FUNCT_1:17;
      then
A98:  f.y1 = y1 by A44,A96;
      per cases by A94,XBOOLE_0:def 3;
      suppose
A99:    y2 in dom f1;
        then f1.y2 = y2 by FUNCT_1:17;
        hence y1 = y2 by A44,A95,A98,A99;
      end;
      suppose
A100:    y2 in dom f2;
        then f.y2 = f2.y2 by A89;
        then [y2,f.y2] in f2 by A100,FUNCT_1:def 2;
        then
A101:   ex k be Element of NAT st [k-1,k] = [y2,f.y2] & k in y9 & k>i;
        f.y1 = f1.y1 by A44,A96;
        then f.y1 in x1 by A96,A97;
        then ex k9 be Element of NAT st k9=f.y1 & k9 in y & k9<i;
        hence y1 = y2 by A95,A101,XTUPLE_0:1;
      end;
    end;
    suppose
A102: y1 in dom f2;
      then f.y1 = f2.y1 by A89;
      then [y1,f.y1] in f2 by A102,FUNCT_1:def 2;
      then consider k be Element of NAT such that
A103: [k-1,k] = [y1,f.y1] and
      k in y9 and
A104: k>i;
A105: k = f.y1 by A103,XTUPLE_0:1;
      per cases by A94,XBOOLE_0:def 3;
      suppose
A106:   y2 in dom f1;
        then f1.y2 = y2 by FUNCT_1:17;
        then f.y2 in dom f1 by A44,A106;
        then f.y2 in x1;
        then ex k9 be Element of NAT st k9=f.y2 & k9 in y & k9<i;
        hence y1 = y2 by A95,A103,A104,XTUPLE_0:1;
      end;
      suppose
A107:   y2 in dom f2;
        then f.y2 = f2.y2 by A89;
        then [y2,f.y2] in f2 by A107,FUNCT_1:def 2;
        then consider k be Element of NAT such that
A108:   [k-1,k] = [y2,f.y2] and
        k in y9 and
        k>i;
        k = f.y2 by A108,XTUPLE_0:1;
        hence y1 = y2 by A95,A103,A105,A108,XTUPLE_0:1;
      end;
    end;
  end;
  then
A109: f is one-to-one by FUNCT_1:def 4;
  then f" = f~ by FUNCT_1:def 5;
  then
A110: f" = (Sgm(Seg(n+1)\{i})~)|dom(f") by A88,Lm35;
  dom f1 = x1;
  then
A111: dom f = x9 by A21,XTUPLE_0:23;
  then dom f c= NAT by A14,XBOOLE_1:1;
  then rng g c= NAT by A109,FUNCT_1:33;
  then
A112: rng g c= REAL by NUMBERS:19;
  rng f c= NAT by A1,A54,XBOOLE_1:1;
  then dom g c= NAT by A109,FUNCT_1:33;
  then dom g c= REAL by NUMBERS:19;
  then reconsider g as PartFunc of REAL,REAL by A112,RELSET_1:7;
A113: dom(f") = y by A109,A54,FUNCT_1:33;
  now
    let r1,r2 be Real;
A114: g = (f1 \/ f2)~ by A109,FUNCT_1:def 5
      .= f1~ \/ f2~ by RELAT_1:23;
    assume r1 in y /\ dom g;
    then
A115: [r1,g.r1] in g by A113,FUNCT_1:1;
    assume r2 in y /\ dom g;
    then
A116: [r2,g.r2] in g by A113,FUNCT_1:1;
    assume
A117: r1 < r2;
    per cases by A115,A114,XBOOLE_0:def 3;
    suppose
      [r1,g.r1] in f1~;
      then
A118: [r1,g.r1] in id x1;
      then
A119: r1=g.r1 by RELAT_1:def 10;
      r1 in x1 by A118,RELAT_1:def 10;
      then
A120: ex k9 be Element of NAT st g.r1=k9 & k9 in y & k9<i by A119;
      per cases by A116,A114,XBOOLE_0:def 3;
      suppose
        [r2,g.r2] in f1~;
        then [r2,g.r2] in id x1;
        hence g.r1 < g.r2 by A117,A119,RELAT_1:def 10;
      end;
      suppose
        [r2,g.r2] in f2~;
        then [g.r2,r2] in f2 by RELAT_1:def 7;
        then consider k99 be Element of NAT such that
A121:   [k99-1,k99]=[g.r2,r2] and
        k99 in y9 and
A122:   k99>i;
        reconsider k999=g.r2,i9=i-1 as Integer by A121,XTUPLE_0:1;
        k99-1=g.r2 by A121,XTUPLE_0:1;
        then i-1 < g.r2 by A122,XREAL_1:9;
        then i9+1<=k999 by INT_1:7;
        hence g.r1 < g.r2 by A120,XXREAL_0:2;
      end;
    end;
    suppose
      [r1,g.r1] in f2~;
      then [g.r1,r1] in f2 by RELAT_1:def 7;
      then consider k9 be Element of NAT such that
A123: [k9-1,k9]=[g.r1,r1] and
      k9 in y9 and
A124: k9>i;
A125: k9-1=g.r1 by A123,XTUPLE_0:1;
A126: r1=k9 by A123,XTUPLE_0:1;
      per cases by A116,A114,XBOOLE_0:def 3;
      suppose
        [r2,g.r2] in f1~;
        then [r2,g.r2] in id x1;
        then r2 in x1 by RELAT_1:def 10;
        then ex k99 be Element of NAT st r2=k99 & k99 in y & k99<i;
        hence g.r1 < g.r2 by A117,A124,A126,XXREAL_0:2;
      end;
      suppose
        [r2,g.r2] in f2~;
        then [g.r2,r2] in f2 by RELAT_1:def 7;
        then consider k99 be Element of NAT such that
A127:   [k99-1,k99]=[g.r2,r2] and
        k99 in y9 and
        k99>i;
        k99-1=g.r2 & r2=k99 by A127,XTUPLE_0:1;
        hence g.r1 < g.r2 by A117,A125,A126,XREAL_1:9;
      end;
    end;
  end;
  then
A128: g|y is increasing by RFUNCT_2:20;
A129: rng(f") = x by A109,A111,FUNCT_1:33;
  then
A130: x = (f").: y by A113,RELAT_1:113;
  now
    let x9 be object;
    assume
A131: x9 in g.:y;
    then not x9=0 by A14,A130,FINSEQ_1:1;
    then
A132: not x9 in {0} by TARSKI:def 1;
    x9 in Seg n by A6,A130,A131;
    hence x9 in NAT \ {0} by A132,XBOOLE_0:def 5;
  end;
  then
A133: g.:y c= NAT \ {0};
  take x;
  Sgm(Seg(n+1)\{i}) is one-to-one by FINSEQ_3:92;
  then
A134: Sgm(Seg(n+1)\{i})"=Sgm(Seg(n+1)\{i})~ by FUNCT_1:def 5;
  Sgm x = Sgm (g.:y) by A113,A129,RELAT_1:113
    .= ((Sgm(Seg(n+1)\{i})")|y) * Sgm y by A1,A113,A128,A133,A134,A110,Lm37
    .= Sgm(Seg(n+1)\{i})" * y|`Sgm y by Lm36
    .= Sgm(Seg(n+1)\{i})" * Sgm y by A2;
  hence Sgm x = Sgm(Seg(n+1)\{i})" * Sgm y;
  thus thesis by A6;
end;

theorem Th99:
  i in dom s1 & i+1 in dom s1 & s1.i = s1.(i+1) & s19 = Del(s1,i)
  & s2 is jordan_holder & s1 is_finer_than s2 implies s19 is_finer_than s2
proof
  assume that
A1: i in dom s1 and
A2: i+1 in dom s1;
A3: i in Seg len s1 by A1,FINSEQ_1:def 3;
  then
A4: 1 <= i by FINSEQ_1:1;
  set k = len s1 - 1;
  assume
A5: s1.i = s1.(i+1);
  reconsider k as Integer;
  assume
A6: s19 = Del(s1,i);
  assume
A7: s2 is jordan_holder;
  i<=len s1 by A3,FINSEQ_1:1;
  then 1 <= len s1 by A4,XXREAL_0:2;
  then 1-1 <= len s1 - 1 by XREAL_1:9;
  then reconsider k as Element of NAT by INT_1:3;
A8: dom s1 = Seg(k+1) by FINSEQ_1:def 3;
  assume s1 is_finer_than s2;
  then consider z be set such that
A9: z c= dom s1 and
A10: s2 = s1 * Sgm z;
a9:  z is included_in_Seg by A8,A9;
A11: i+1 in Seg len s1 by A2,FINSEQ_1:def 3;
  now
    per cases;
    suppose
A12:  not i in z;
      set y = z;
      take y;
      thus y c= Seg(k+1) by A9,FINSEQ_1:def 3;
      thus not i in y by A12;
      thus s2 = s1 * Sgm y by A10;
    end;
    suppose
A13:  i in z;
      now
        let x be object;
        assume
A14:    x in {i+1} /\ {i};
        then x in {i} by XBOOLE_0:def 4;
        then
A15:    x=i by TARSKI:def 1;
        x in {i+1} by A14,XBOOLE_0:def 4;
        then x=i+1 by TARSKI:def 1;
        hence contradiction by A15;
      end;
      then {i+1} /\ {i} = {} by XBOOLE_0:def 1;
      then
A16:  {i+1} misses {i} by XBOOLE_0:def 7;
      reconsider y = (z \/ {i+1}) \ {i} as set;
      take y;
      {i+1} c= Seg(k+1) by A11,ZFMISC_1:31;
      then
A17:  z \/ {i+1} c= Seg(k+1) by A9,A8,XBOOLE_1:8;
      then
a17:  z \/ {i+1} is included_in_Seg;
      thus
A18:  y c= Seg(k+1) by A17;
      then
a18:  y is included_in_Seg;
      y c= dom s1 by A18,FINSEQ_1:def 3;
      then
A19:  rng Sgm y c= dom s1 by a18,FINSEQ_1:def 14;
      reconsider y9=y,z as finite set by A9;
A20:  dom Sgm y9 = Seg card y9 by a17,FINSEQ_3:40;
      i in z \/ {i+1} by A13,XBOOLE_0:def 3;
      then {i} c= z \/ {i+1} by ZFMISC_1:31;
      then card((z \/ {i+1})\{i}) = card(z \/ {i+1}) - card{i} by CARD_2:44;
      then
A21:  card y9 = card(z \/ {i+1}) - 1 by CARD_1:30;
A22:  now
A23:    0+i < 1+i by XREAL_1:6;
        assume i+1 in z;
        then i+1 in rng Sgm z by a9,FINSEQ_1:def 14;
        then consider x99 be object such that
A24:    x99 in dom Sgm z and
A25:    i+1 = Sgm(z).x99 by FUNCT_1:def 3;
        i in rng Sgm z by a9,A13,FINSEQ_1:def 14;
        then consider x9 be object such that
A26:    x9 in dom Sgm z and
A27:    i = Sgm(z).x9 by FUNCT_1:def 3;
        reconsider x9,x99 as Element of NAT by A26,A24;
A28:    dom Sgm z = Seg len Sgm z by FINSEQ_1:def 3;
        then
A29:    x9 <= len Sgm z by A26,FINSEQ_1:1;
        1 <= x99 by A24,A28,FINSEQ_1:1;
        then x9 < x99 by a9,A27,A25,A23,A29,FINSEQ_3:41;
        then reconsider l = x99 - x9 as Element of NAT by INT_1:5;
        per cases;
        suppose
          l = 0;
          hence contradiction by A27,A25,A23;
        end;
        suppose
A30:      0 < l;
          set x999 = x9+1;
          0+1 < l+1 by A30,XREAL_1:6;
          then x9+1-x9 <= x99-x9 by NAT_1:13;
          then
A31:      x999 <= x99 by XREAL_1:9;
          x99 <= len Sgm z by A24,A28,FINSEQ_1:1;
          then
A32:      x999 <= len Sgm z by A31,XXREAL_0:2;
A33:      1+x9 > 0+x9 & 1 <= x9 by A26,A28,FINSEQ_1:1,XREAL_1:6;
          then 1 <= x999 by XXREAL_0:2;
          then x999 in dom Sgm z by A28,A32;
          then reconsider k3= Sgm(z).x999 as Element of NAT by FINSEQ_2:11;
          i < k3 by a9,A27,A33,A32,FINSEQ_1:def 14;
          then
A34:      i+1 <= k3 by NAT_1:13;
A35:      1 <= x999 & x999 < x99 & x99 <= len Sgm z or x999 = x99 by A24,A28
,A31,A33,FINSEQ_1:1,XXREAL_0:1,2;
          then
A36:      x9+1 in dom s2
          by a9,A2,A10,A24,A25,A34,FINSEQ_1:def 14,FUNCT_1:11;
A37:      s2 is strictly_decreasing by A7;
A38:      x9 in dom s2 by A1,A10,A26,A27,FUNCT_1:11;
          then reconsider H1=s2.x9,H2=s2.(x9+1) as Element of
          the_stable_subgroups_of G by A36,FINSEQ_2:11;
          reconsider H1,H2 as StableSubgroup of G by Def11;
          reconsider H1 as GroupWithOperators of O;
          reconsider H2 as normal StableSubgroup of H1 by A38,A36,Def28;
          s2.x9 = s1.(Sgm(z).x9) by A10,A26,FUNCT_1:13
            .= s2.(x9+1) by a9,A5,A10,A27,A24,A25,A35,A34,FINSEQ_1:def 14
,FUNCT_1:13;
          then the carrier of H1 = the carrier of H2;
          then H1./.H2 is trivial by Th77;
          hence contradiction by A38,A36,A37;
        end;
      end;
      then card(z \/ {i+1}) = card z + 1 by CARD_2:41;
      then
A39:  dom Sgm y9 = dom Sgm z by a9,A21,A20,FINSEQ_3:40;
      set z2 = {x where x is Element of NAT: x in z & i+1 < x};
      set z1 = {x where x is Element of NAT: x in z & x < i};
A40:  now
        let x be object;
        assume x in z1 \/ {i} \/ z2;
        then x in z1 \/ {i} or x in z2 by XBOOLE_0:def 3;
        then x in z1 or x in {i} or x in z2 by XBOOLE_0:def 3;
        then consider x9,x99 be Element of NAT such that
A41:    x = x9 & x9 in z & x9<i or x in {i} or x = x99 & x99 in z & i +1<x99;
        per cases by A41;
        suppose
          x = x9 & x9 in z & x9<i;
          hence x in z;
        end;
        suppose
          x in {i};
          hence x in z by A13,TARSKI:def 1;
        end;
        suppose
          x = x99 & x99 in z & i+1<x99;
          hence x in z;
        end;
      end;
A42:  z c= Seg(k+1) by A9,FINSEQ_1:def 3;
A43:  now
        let x be object;
        assume
A44:    x in z;
        then x in Seg(k+1) by A42;
        then reconsider x9=x as Element of NAT;
        x9<=i or i+1<=x9 by NAT_1:13;
        then x9<i or x9=i or i+1<x9 by A22,A44,XXREAL_0:1;
        then x in z1 or x in {i} or x in z2 by A44,TARSKI:def 1;
        then x in z1 \/ {i} or x in z2 by XBOOLE_0:def 3;
        hence x in z1 \/ {i} \/ z2 by XBOOLE_0:def 3;
      end;
      then
A45:  z = z1 \/ {i} \/ z2 by A40,TARSKI:2;
      then z2 c= z by XBOOLE_1:7;
      then z2 c= Seg(k+1) by A42;
      then
a46:  z2 is included_in_Seg;
      now
        let x be object;
        assume
A48:    x in z2 /\ {i};
        then x in z2 by XBOOLE_0:def 4;
        then consider x9 be Element of NAT such that
A49:    x9=x and
        x9 in z and
A50:    i+1<x9;
        x in {i} by A48,XBOOLE_0:def 4;
        then x9=i by A49,TARSKI:def 1;
        then i+1-i<i-i by A50,XREAL_1:9;
        then 1<0;
        hence contradiction;
      end;
      then z2 /\ {i} = {} by XBOOLE_0:def 1;
      then
A51:  z2 misses {i} by XBOOLE_0:def 7;
      now
        let x be object;
        assume
A52:    x in z1 /\ {i};
        then x in z1 by XBOOLE_0:def 4;
        then
A53:    ex x9 be Element of NAT st x9=x & x9 in z & x9<i;
        x in {i} by A52,XBOOLE_0:def 4;
        hence contradiction by A53,TARSKI:def 1;
      end;
      then z1 /\ {i} = {} by XBOOLE_0:def 1;
      then
A54:  z1 misses {i} by XBOOLE_0:def 7;
A55:  y = (z1 \/ {i} \/ z2 \/ {i+1}) \ {i} by A43,A40,TARSKI:2
        .= ((z1 \/ {i} \/ z2)\{i}) \/ ({i+1}\{i}) by XBOOLE_1:42
        .= ((z1 \/ {i} \/ z2)\{i}) \/ {i+1} by A16,XBOOLE_1:83
        .= ((z1 \/ {i})\{i}) \/ (z2\{i}) \/ {i+1} by XBOOLE_1:42
        .= ((z1 \/ {i})\{i}) \/ z2 \/ {i+1} by A51,XBOOLE_1:83
        .= (z1\{i}) \/ ({i}\{i}) \/ z2 \/ {i+1} by XBOOLE_1:42
        .= (z1\{i}) \/ {} \/ z2 \/ {i+1} by XBOOLE_1:37
        .= z1 \/ {} \/ z2 \/ {i+1} by A54,XBOOLE_1:83
        .= z1 \/ {i+1} \/ z2 by XBOOLE_1:4;
      now
        assume i in y;
        then not i in {i} by XBOOLE_0:def 5;
        hence contradiction by TARSKI:def 1;
      end;
      hence not i in y;
A58:  now
        let m,n be Nat;
        assume m in z1 \/ {i};
        then m in z1 or m in {i} by XBOOLE_0:def 3;
        then
A59:    ex x9 be Element of NAT st ( m = x9 & x9 in z & x9<i or m in {i});
        assume n in z2;
        then
A60:    ex x99 be Element of NAT st n = x99 & x99 in z & i+1< x99;
        0+i<1+i by XREAL_1:6;
        then m<i+1 by A59,TARSKI:def 1,XXREAL_0:2;
        hence m < n by A60,XXREAL_0:2;
      end;
A61:  now
        let m,n be Nat;
        assume m in z1;
        then
A62:    ex x9 be Element of NAT st m = x9 & x9 in z & x9<i;
        assume n in {i};
        hence m < n by A62,TARSKI:def 1;
      end;
A63:  now
        let m,n be Nat;
        assume m in z1 \/ {i+1};
        then m in z1 or m in {i+1} by XBOOLE_0:def 3;
        then
A64:    ex x9 be Element of NAT st ( m = x9 & x9 in z & x9<i or m in {i+1 });
        assume n in z2;
        then
A65:    ex x99 be Element of NAT st n = x99 & x99 in z & i+1< x99;
        0+i<1+i by XREAL_1:6;
        then m<i+1 or m=i+1 by A64,TARSKI:def 1,XXREAL_0:2;
        hence m < n by A65,XXREAL_0:2;
      end;
A66:  now
        let m,n be Nat;
A67:    0+i<1+i by XREAL_1:6;
        assume m in z1;
        then
A68:    ex x9 be Element of NAT st m = x9 & x9 in z & x9<i;
        assume n in {i+1};
        then n=i+1 by TARSKI:def 1;
        hence m < n by A68,A67,XXREAL_0:2;
      end;
      z1 c= y by A55,XBOOLE_1:7,11;
      then z1 c= Seg(k+1) by A18;
      then
bbb:  z1 is included_in_Seg;
      then
A69:  Sgm(z1 \/ {i+1}) = Sgm z1 ^ Sgm {i+1} by A66,FINSEQ_3:42;
      z1 \/ {i} c= z by A45,XBOOLE_1:7;
      then z1 \/ {i} c= Seg(k+1) by A42;
      then z1 \/ {i} is included_in_Seg;
      then
A70:  Sgm z = Sgm(z1 \/ {i}) ^ Sgm z2 by a46,A45,A58,FINSEQ_3:42;
      {i} c= z by A45,XBOOLE_1:7,11;
      then {i} c= Seg(k+1) by A42;
      then {i} is included_in_Seg;
      then
A71:  Sgm(z1 \/ {i}) = Sgm z1 ^ Sgm {i} by bbb,A61,FINSEQ_3:42;
      then
A72:  Sgm z = Sgm z1 ^ <*i*> ^ Sgm z2 by A4,A70,FINSEQ_3:44;
      z1 \/ {i+1} c= y by A55,XBOOLE_1:7;
      then z1 \/ {i+1} c= Seg(k+1) by A18;
      then z1 \/ {i+1} is included_in_Seg;
      then
A73:  Sgm y = Sgm(z1 \/ {i+1}) ^ Sgm z2 by a46,A55,A63,FINSEQ_3:42;
      then
A74:  Sgm y = Sgm z1 ^ <*i+1*> ^ Sgm z2 by A69,FINSEQ_3:44;
A75:  now
        let x;
A76:    len(Sgm z1 ^ <*i*>) = len Sgm z1 + len <*i*> by FINSEQ_1:22
          .= len Sgm z1 + 1 by FINSEQ_1:40
          .= len Sgm z1 + len <*i+1*> by FINSEQ_1:40
          .= len(Sgm z1 ^ <*i+1*>) by FINSEQ_1:22;
        assume
A77:    x in dom Sgm z;
        then reconsider x9=x as Element of NAT;
A78:    dom(Sgm z1 ^ <*i*>) = Seg len(Sgm z1 ^ <*i*>) by FINSEQ_1:def 3
          .= dom(Sgm z1 ^ <*i+1*>) by A76,FINSEQ_1:def 3;
        per cases by A72,A77,FINSEQ_1:25;
        suppose
A79:      x9 in dom(Sgm z1 ^ <*i*>);
          per cases by A79,FINSEQ_1:25;
          suppose
A80:        x9 in dom Sgm z1;
            then
A81:        (Sgm z1).x9 = (Sgm z1 ^ <*i*>).x9 by FINSEQ_1:def 7
              .= (Sgm z1 ^ <*i*> ^ Sgm z2).x9 by A79,FINSEQ_1:def 7
              .= (Sgm z).x9 by A4,A70,A71,FINSEQ_3:44;
            (Sgm z1).x9 = (Sgm z1 ^ <*i+1*>).x9 by A80,FINSEQ_1:def 7
              .= (Sgm z1 ^ <*i+1*> ^ Sgm z2).x9 by A78,A79,FINSEQ_1:def 7
              .= (Sgm y).x9 by A73,A69,FINSEQ_3:44;
            hence (Sgm z).x <> i implies (Sgm y).x = (Sgm z).x by A81;
            thus (Sgm z).x = i implies (Sgm y).x = i+1
            proof
              assume (Sgm z).x = i;
              then i in rng Sgm z1 by A80,A81,FUNCT_1:3;
              then i in z1 by bbb,FINSEQ_1:def 14;
              then ex x999 be Element of NAT st x999=i & x999 in z & x999< i;
              hence thesis;
            end;
          end;
          suppose
            ex x99 being Nat st x99 in dom <*i*> & x9=len Sgm z1 + x99;
            then consider x99 be Nat such that
A82:        x99 in dom <*i*> and
A83:        x9=len Sgm z1 + x99;
A84:        x99 in Seg 1 by A82,FINSEQ_1:38;
            then
A85:        x99 = 1 by FINSEQ_1:2,TARSKI:def 1;
            then i = <*i*>.x99
              .= (Sgm z1 ^ <*i*>).x9 by A82,A83,FINSEQ_1:def 7
              .= (Sgm z1 ^ <*i*> ^ Sgm z2).x9 by A79,FINSEQ_1:def 7
              .= (Sgm z).x9 by A4,A70,A71,FINSEQ_3:44;
            hence (Sgm z).x <> i implies (Sgm y).x = (Sgm z).x;
            thus (Sgm z).x = i implies (Sgm y).x = i+1
            proof
              assume (Sgm z).x = i;
A86:          x99 in dom <*i+1*> by A84,FINSEQ_1:38;
              i+1 = <*i+1*>.x99 by A85
                .= (Sgm z1 ^ <*i+1*>).x9 by A83,A86,FINSEQ_1:def 7
                .= (Sgm z1 ^ <*i+1*> ^ Sgm z2).x9 by A78,A79,FINSEQ_1:def 7;
              hence thesis by A73,A69,FINSEQ_3:44;
            end;
          end;
        end;
        suppose
          ex x99 being Nat st x99 in dom Sgm z2 & x9=len(Sgm z1 ^ <*
          i*>) + x99;
          then consider x99 be Nat such that
A87:      x99 in dom Sgm z2 and
A88:      x9=len(Sgm z1 ^ <*i*>) + x99;
          (Sgm y).x9 = (Sgm z2).x99 by A74,A76,A87,A88,FINSEQ_1:def 7;
          hence
          (Sgm z).x <> i implies (Sgm y).x = (Sgm z).x by A72,A87,A88,
FINSEQ_1:def 7;
          thus (Sgm z).x = i implies (Sgm y).x = i+1
          proof
            assume (Sgm z).x = i;
            then (Sgm z2).x99 = i by A72,A87,A88,FINSEQ_1:def 7;
            then i in rng Sgm z2 by A87,FUNCT_1:3;
            then i in z2 by a46,FINSEQ_1:def 14;
            then ex x999 be Element of NAT st x999=i & x999 in z & i+1< x999;
            then i+1-i<i-i by XREAL_1:9;
            then 1<0;
            hence thesis;
          end;
        end;
      end;
      rng Sgm z c= dom s1 by a9,A9,FINSEQ_1:def 14;
      then
A89:  dom(s1 * Sgm z) = dom Sgm z by RELAT_1:27;
      then
A90:  dom(s1 * Sgm y) = dom(s1 * Sgm z) by A39,A19,RELAT_1:27;
      now
        let x be object;
        assume
A91:    x in dom(s1 * Sgm y);
        then
A92:    x in dom Sgm z by A39,A19,RELAT_1:27;
A93:    x in dom(s1 * Sgm z) by A39,A19,A89,A91,RELAT_1:27;
        per cases;
        suppose
A94:      (Sgm z).x = i;
          (s1 * Sgm y).x = s1.((Sgm y).x) by A91,FUNCT_1:12
            .= s1.((Sgm z).x) by A5,A75,A92,A94
            .= (s1 * Sgm z).x by A90,A91,FUNCT_1:12;
          hence (s1 * Sgm y).x = (s1 * Sgm z).x;
        end;
        suppose
A95:      (Sgm z).x <> i;
          (s1 * Sgm y).x = s1.((Sgm y).x) by A91,FUNCT_1:12
            .= s1.((Sgm z).x) by A75,A92,A95
            .= (s1 * Sgm z).x by A93,FUNCT_1:12;
          hence (s1 * Sgm y).x = (s1 * Sgm z).x;
        end;
      end;
      hence s2 = s1 * Sgm y by A10,A39,A19,A89,FUNCT_1:2,RELAT_1:27;
    end;
  end;
  then consider y be set such that
A96: y c= Seg(k+1) and
A97: not i in y and
A98: s2 = s1 * Sgm y;
a96: y is included_in_Seg by A96;
  now
    consider x such that
A99: Sgm x = Sgm(Seg(k+1)\{i})" * Sgm y and
A100: x c= Seg k by A3,A96,A97,Lm38;
    take x;
    ex m be Nat st len s1 = m + 1 & len Del(s1,i) = m by A1,FINSEQ_3:104;
    hence x c= dom s19 by A6,A100,FINSEQ_1:def 3;
    set f = Sgm (Seg(k+1)\{i});
    set X = dom f;
    set Y = rng f;
    reconsider f as Function of X,Y by FUNCT_2:1;
A101: f is one-to-one by FINSEQ_3:92;
A102: rng f = Seg(k+1)\{i} by FINSEQ_1:def 14;
    now
      let x9 be object;
      assume
A103: x9 in y;
      then not x9 in {i} by A97,TARSKI:def 1;
      hence x9 in rng f by A96,A102,A103,XBOOLE_0:def 5;
    end;
    then y c= rng f;
    then
A104: rng Sgm y c= rng f by a96,FINSEQ_1:def 14;
A105: now
      1<=i by A3,FINSEQ_1:1;
      then
A106: 1+1<=i+1 by XREAL_1:6;
      i+1<=len s1 by A11,FINSEQ_1:1;
      then 2<=len s1 by A106,XXREAL_0:2;
      then Seg 2 c= Seg(k+1) by FINSEQ_1:5;
      then
A107: Seg 2\{i} c= rng f by A102,XBOOLE_1:33;
      assume
A108: rng f = {};
      per cases by A108,A107,XBOOLE_1:3,ZFMISC_1:58;
      suppose
        Seg 2 = {};
        hence contradiction;
      end;
      suppose
        Seg 2 = {i};
        hence contradiction by FINSEQ_1:2,ZFMISC_1:5;
      end;
    end;
    s19 * Sgm x = s1 * f * Sgm x by A6,FINSEQ_1:def 3
      .= s1 * f * f" * Sgm y by A99,RELAT_1:36
      .= s1 * (f * f") * Sgm y by RELAT_1:36
      .= s1 * id rng f * Sgm y by A101,A105,FUNCT_2:29
      .= s1 * (id rng f * Sgm y) by RELAT_1:36
      .= s1 * Sgm y by A104,RELAT_1:53;
    hence s2 = s19 * Sgm x by A98;
  end;
  hence thesis;
end;

theorem Th100:
  len s1 > 1 & s2<>s1 & s2 is strictly_decreasing & s2
is_finer_than s1 implies ex i,j st i in dom s1 & i in dom s2 & i+1 in dom s1 &
i+1 in dom s2 & j in dom s2 & i+1<j & s1.i=s2.i & s1.(i+1)<>s2.(i+1) & s1.(i+1)
  =s2.j
proof
  assume len s1 > 1;
  then len s1 >= 1+1 by NAT_1:13;
  then Seg 2 c= Seg len s1 by FINSEQ_1:5;
  then
A1: Seg 2 c= dom s1 by FINSEQ_1:def 3;
  assume
A2: s2<>s1;
  assume
A3: s2 is strictly_decreasing;
  assume
A4: s2 is_finer_than s1;
  then consider n such that
A5: len s2 = len s1 + n by Th95;
  n<>0 by A2,A4,A5,Th96;
  then
A6: 0 + len s1 < n + len s1 by XREAL_1:6;
  then Seg len s1 c= Seg len s2 by A5,FINSEQ_1:5;
  then Seg len s1 c= dom s2 by FINSEQ_1:def 3;
  then
A7: dom s1 c= dom s2 by FINSEQ_1:def 3;
  now
    set fX = {k where k is Element of NAT: k in dom s1 & s1.k=s2.k};
A8: 1 in Seg 2;
    s1.1 = (Omega).G & s2.1 = (Omega).G by Def28;
    then
A9: 1 in fX by A1,A8;
    now
      let x be object;
      assume x in fX;
      then ex k be Element of NAT st x=k & k in dom s1 & s1.k=s2.k;
      hence x in dom s1;
    end;
    then fX c= dom s1;
    then reconsider fX as finite non empty real-membered set by A9;
    set i = max fX;
    i in fX by XXREAL_2:def 8;
    then
A10: ex k be Element of NAT st i=k & k in dom s1 & s1.k=s2.k;
    then reconsider i as Element of NAT;
    take i;
    thus i in dom s1 & s1.i=s2.i by A10;
A11: now
      assume not i+1 in dom s1;
      then
A12:  not i+1 in Seg len s1 by FINSEQ_1:def 3;
      per cases by A12;
      suppose
        1>i+1;
        then 1-1>i+1-1 by XREAL_1:9;
        then 0>i;
        hence contradiction;
      end;
      suppose
A13:    i+1>len s1;
        i in Seg len s1 by A10,FINSEQ_1:def 3;
        then
A14:    i<=len s1 by FINSEQ_1:1;
        i>=len s1 by A13,NAT_1:13;
        then
A15:    i=len s1 by A14,XXREAL_0:1;
        then 0+1<=i+1 & i+1<=len s2 by A5,A6,NAT_1:13;
        then i+1 in Seg len s2;
        then
A16:    i+1 in dom s2 by FINSEQ_1:def 3;
        then reconsider
        H1=s2.i,H2=s2.(i+1) as Element of the_stable_subgroups_of G
        by A10,FINSEQ_2:11;
        reconsider H1,H2 as StableSubgroup of G by Def11;
A17:    s2.i=(1).G by A10,A15,Def28;
        then
A18:    the carrier of H1 = {1_G} by Def8;
        reconsider H2 as normal StableSubgroup of H1 by A7,A10,A16,Def28;
        1_G in H2 by Lm17;
        then 1_G in the carrier of H2 by STRUCT_0:def 5;
        then
A19:    {1_G} c= the carrier of H2 by ZFMISC_1:31;
        H2 is Subgroup of (1).G by A17,Def7;
        then the carrier of H2 c= the carrier of (1).G by GROUP_2:def 5;
        then the carrier of H2 c= {1_G} by Def8;
        then the carrier of H2 = {1_G} by A19,XBOOLE_0:def 10;
        then H1./.H2 is trivial by A18,Th77;
        hence contradiction by A3,A7,A10,A16;
      end;
    end;
    hence i+1 in dom s1;
    now
A20:  1+i>0+i by XREAL_1:6;
      assume s1.(i+1)=s2.(i+1);
      then consider k be Element of NAT such that
A21:  k>i and
A22:  k in dom s1 & s1.k=s2.k by A11,A20;
      k in fX by A22;
      hence contradiction by A21,XXREAL_2:def 8;
    end;
    hence s1.(i+1)<>s2.(i+1);
  end;
  then consider i such that
A23: i in dom s1 and
A24: i+1 in dom s1 and
A25: s1.i=s2.i and
A26: s1.(i+1)<>s2.(i+1);
  now
    consider x such that
A27: x c= dom s2 and
A28: s1 = s2 * Sgm x by A4;
    set j = (Sgm x).(i+1);
A29: x c= Seg len s2 by A27,FINSEQ_1:def 3;
     then
a29: x is included_in_Seg;
A30: i+1 in dom Sgm x by A24,A28,FUNCT_1:11;
    then j in rng Sgm x by FUNCT_1:3;
    then j in x by a29,FINSEQ_1:def 14;
    then
A31: j in Seg len s2 by A29;
    then reconsider j as Element of NAT;
A32: i+1 <= j by a29,A30,FINSEQ_3:152;
    take j;
    thus j in dom s2 by A31,FINSEQ_1:def 3;
    thus s1.(i+1)=s2.j by A24,A28,FUNCT_1:12;
    j<>i+1 by A24,A26,A28,FUNCT_1:12;
    hence i+1<j by A32,XXREAL_0:1;
  end;
  then consider j such that
A33: j in dom s2 & i+1<j and
A34: s1.(i+1)=s2.j;
  take i,j;
  thus i in dom s1 & i in dom s2 by A7,A23;
  thus i+1 in dom s1 & i+1 in dom s2 by A7,A24;
  thus j in dom s2 & i+1<j by A33;
  thus s1.i=s2.i & s1.(i+1)<>s2.(i+1) by A25,A26;
  thus thesis by A34;
end;

theorem Th101:
  i in dom s1 & j in dom s1 & i<=j & H1 = s1.i & H2 = s1.j
  implies H2 is StableSubgroup of H1
proof
  assume that
A1: i in dom s1 and
A2: j in dom s1;
  defpred P[Nat] means for n,H2 st i+$1 in dom s1 & H2 = s1.(i+$1) holds H2 is
  StableSubgroup of H1;
  assume
A3: i<=j;
  assume that
A4: H1 = s1.i and
A5: H2 = s1.j;
A6: for n st P[n] holds P[n+1]
  proof
    let n;
    assume
A7: P[n];
    set H2 = s1.(i+n);
    per cases;
    suppose
A8:   i+n in dom s1;
      then reconsider H2 as Element of the_stable_subgroups_of G by FINSEQ_2:11
;
      reconsider H2 as StableSubgroup of G by Def11;
A9:   H2 is StableSubgroup of H1 by A7,A8;
      now
        let k be Element of NAT;
        let H3;
        assume i+(n+1) in dom s1;
        then
A10:    i+n+1 in dom s1;
        assume H3 = s1.(i+(n+1));
        then H3 is StableSubgroup of H2 by A8,A10,Def28;
        hence H3 is StableSubgroup of H1 by A9,Th11;
      end;
      hence thesis;
    end;
    suppose
      not i+n in dom s1;
      then
A11:  not i+n in Seg len s1 by FINSEQ_1:def 3;
      per cases by A11;
      suppose
        i+n<0+1;
        then n=0 by NAT_1:13;
        hence thesis by A1,A4,Def28;
      end;
      suppose
A12:    i+n>len s1;
A13:    1+len s1>0+len s1 by XREAL_1:6;
        i+n+1>len s1+1 by A12,XREAL_1:6;
        then i+n+1>len s1 by A13,XXREAL_0:2;
        then not i+n+1 in Seg len s1 by FINSEQ_1:1;
        hence thesis by FINSEQ_1:def 3;
      end;
    end;
  end;
A14: P[0] by A4,Th10;
A15: for n holds P[n] from NAT_1:sch 2(A14,A6);
  set n=j-i;
  i-i<=j-i by A3,XREAL_1:9;
  then reconsider n as Element of NAT by INT_1:3;
  reconsider n as Nat;
  j=i+n;
  hence thesis by A2,A5,A15;
end;

theorem Th102:
  y in rng the_series_of_quotients_of s1 implies y is strict
  GroupWithOperators of O
proof
  assume
A1: y in rng the_series_of_quotients_of s1;
  set f1=the_series_of_quotients_of s1;
A2: len f1 = 0 or len f1 >= 0+1 by NAT_1:13;
  per cases by A2;
  suppose
    len f1 = 0;
    then f1 = {};
    hence thesis by A1;
  end;
  suppose
    len f1 >= 1;
    then
A3: len s1 > 1 by Def33,CARD_1:27;
    then
A4: len s1 = len f1 + 1 by Def33;
    consider i be object such that
A5: i in dom f1 and
A6: f1.i=y by A1,FUNCT_1:def 3;
    reconsider i as Nat by A5;
A7: i in Seg len f1 by A5,FINSEQ_1:def 3;
    then
A8: 1<=i by FINSEQ_1:1;
    1<=i by A7,FINSEQ_1:1;
    then 1+1<=i+1 by XREAL_1:6;
    then
A9: 1<=i+1 by XXREAL_0:2;
A10: i<=len f1 by A7,FINSEQ_1:1;
    then 0+i<=1+i & i+1<=len f1 + 1 by XREAL_1:6;
    then i<=len s1 by A4,XXREAL_0:2;
    then i in Seg len s1 by A8;
    then
A11: i in dom s1 by FINSEQ_1:def 3;
    then s1.i in the_stable_subgroups_of G by FINSEQ_2:11;
    then reconsider H1=s1.i as strict StableSubgroup of G by Def11;
    i + 1<=len f1 + 1 by A10,XREAL_1:6;
    then i+1<=len s1 by A3,Def33;
    then i+1 in Seg len s1 by A9;
    then
A12: i+1 in dom s1 by FINSEQ_1:def 3;
    then s1.(i+1) in the_stable_subgroups_of G by FINSEQ_2:11;
    then reconsider N1=s1.(i+1) as strict StableSubgroup of G by Def11;
    reconsider N1 as normal StableSubgroup of H1 by A11,A12,Def28;
    y = H1./.N1 by A3,A5,A6,Def33;
    hence thesis;
  end;
end;

theorem Th103:
  i in dom the_series_of_quotients_of s1 & (for H st H=(
the_series_of_quotients_of s1).i holds H is trivial) implies i in dom s1 & i+1
  in dom s1 & s1.i=s1.(i+1)
proof
  assume
A1: i in dom the_series_of_quotients_of s1;
  set f1 = the_series_of_quotients_of s1;
  assume
A2: for H st H=(the_series_of_quotients_of s1).i holds H is trivial;
A3: len f1 = 0 or len f1 >= 0+1 by NAT_1:13;
  per cases by A3,XXREAL_0:1;
  suppose
    len f1 = 0;
    then f1 = {};
    hence thesis by A1;
  end;
  suppose
A4: len f1 = 1;
    f1.i in rng f1 by A1,FUNCT_1:3;
    then reconsider H=f1.i as strict GroupWithOperators of O by Th102;
    set H1=(Omega).G;
A5: H is trivial by A2;
A6: len s1 > 1 by A4,Def33,CARD_1:27;
    then
A7: len s1 = len f1 + 1 by Def33;
    then
A8: s1.2=(1).G by A4,Def28;
    i in Seg 1 by A1,A4,FINSEQ_1:def 3;
    then
A9: i=1 by FINSEQ_1:2,TARSKI:def 1;
    then i in Seg 2;
    hence i in dom s1 by A4,A7,FINSEQ_1:def 3;
    reconsider N1=(1).G as StableSubgroup of H1 by Th16;
A10: s1.1=(Omega).G by Def28;
A11: (1).G = (1).H1 by Th15;
    then reconsider N1 as normal StableSubgroup of H1;
A12: H1,H1./.N1 are_isomorphic by A11,Th56;
    i+1 in Seg 2 by A9;
    hence i+1 in dom s1 by A4,A7,FINSEQ_1:def 3;
    for H1, N1 st H1=s1.i & N1=s1.(i+1) holds f1.i = H1./.N1 by A1,A6,Def33;
    then H1./.N1 is trivial by A10,A8,A9,A5;
    hence thesis by A10,A8,A9,A11,A12,Th42,Th58;
  end;
  suppose
A13: len f1 > 1;
    f1.i in rng f1 by A1,FUNCT_1:3;
    then reconsider H = f1.i as strict GroupWithOperators of O by Th102;
A14: i in Seg len f1 by A1,FINSEQ_1:def 3;
    then
A15: 1<=i by FINSEQ_1:1;
    1<=i by A14,FINSEQ_1:1;
    then 1+1<=i+1 by XREAL_1:6;
    then
A16: 1<=i+1 by XXREAL_0:2;
A17: i<=len f1 by A14,FINSEQ_1:1;
    then
A18: 0+i<=1+i & i+1<=len f1 + 1 by XREAL_1:6;
A19: len s1 > 1 by A13,Def33,CARD_1:27;
    then len s1 = len f1 + 1 by Def33;
    then i<=len s1 by A18,XXREAL_0:2;
    then
A20: i in Seg len s1 by A15;
    hence i in dom s1 by FINSEQ_1:def 3;
    i + 1<=len f1 + 1 by A17,XREAL_1:6;
    then i+1<=len s1 by A19,Def33;
    then
A21: i+1 in Seg len s1 by A16;
    hence i+1 in dom s1 by FINSEQ_1:def 3;
A22: i+1 in dom s1 by A21,FINSEQ_1:def 3;
    then s1.(i+1) in the_stable_subgroups_of G by FINSEQ_2:11;
    then reconsider N1=s1.(i+1) as strict StableSubgroup of G by Def11;
A23: i in dom s1 by A20,FINSEQ_1:def 3;
    then s1.i in the_stable_subgroups_of G by FINSEQ_2:11;
    then reconsider H1=s1.i as strict StableSubgroup of G by Def11;
    reconsider N1 as normal StableSubgroup of H1 by A23,A22,Def28;
    H is trivial by A2;
    then H1./.N1 is trivial by A1,A19,Def33;
    hence thesis by Th76;
  end;
end;

theorem Th104:
  i in dom s1 & i+1 in dom s1 & s1.i=s1.(i+1) & s2=Del(s1,i)
  implies the_series_of_quotients_of s2=Del(the_series_of_quotients_of s1,i)
proof
  set f1 = the_series_of_quotients_of s1;
  assume
A1: i in dom s1;
  then consider k be Nat such that
A2: len s1 = k + 1 and
A3: len Del(s1,i) = k by FINSEQ_3:104;
  assume i+1 in dom s1;
  then i+1 in Seg len s1 by FINSEQ_1:def 3;
  then
A4: i+1<=len s1 by FINSEQ_1:1;
  assume
A5: s1.i=s1.(i+1);
A6: i in Seg len s1 by A1,FINSEQ_1:def 3;
  then 1<=i by FINSEQ_1:1;
  then
A7: 1+1<=i+1 by XREAL_1:6;
  then 2 <= len s1 by A4,XXREAL_0:2;
  then
A8: 1 < len s1 by XXREAL_0:2;
  then
A9: len s1 = len f1 + 1 by Def33;
  assume
A10: s2=Del(s1,i);
  then 1+1 <= len s2+1 by A7,A4,A2,A3,XXREAL_0:2;
  then
A11: 1 <= len s2 by XREAL_1:6;
  per cases by A11,XXREAL_0:1;
  suppose
A12: len s2 = 1;
    then 1 in Seg len f1 by A10,A2,A3,A9;
    then 1 in dom f1 by FINSEQ_1:def 3;
    then
A13: ex k1 be Nat st len f1 = k1 + 1 & len Del(f1,1) = k1 by FINSEQ_3:104;
A14: 1<=i by A6,FINSEQ_1:1;
A15: the_series_of_quotients_of s2 = {} by A12,Def33;
    i<=1 by A10,A4,A2,A3,A12,XREAL_1:6;
    then len Del(f1,i) = 0 by A10,A2,A3,A9,A12,A13,A14,XXREAL_0:1;
    hence thesis by A15;
  end;
  suppose
A16: len s2 > 1;
    i+1-1<=len s1-1 & 1 <= i by A6,A4,FINSEQ_1:1,XREAL_1:9;
    then i in Seg len f1 by A9;
    then
A17: i in dom f1 by FINSEQ_1:def 3;
    then consider k1 be Nat such that
A18: len f1 = k1 + 1 and
A19: len Del(f1,i) = k1 by FINSEQ_3:104;
    now
      let n;
      set n1 = n+1;
      assume n in dom Del(f1,i);
      then
A20:  n in Seg len Del(f1,i) by FINSEQ_1:def 3;
      then
A21:  n<=k1 by A19,FINSEQ_1:1;
      then
A22:  n1<=k by A2,A9,A18,XREAL_1:6;
      1<=n by A20,FINSEQ_1:1;
      then 1+1<=n+1 by XREAL_1:6;
      then 1<=n1 by XXREAL_0:2;
      then n1 in Seg len f1 by A2,A9,A22;
      then
A23:  n1 in dom f1 by FINSEQ_1:def 3;
      reconsider n1 as Nat;
      let H1, N1;
      assume
A24:  H1 = s2.n;
      0+n<1+n by XREAL_1:6;
      then
A25:  n<=k by A22,XXREAL_0:2;
      len f1-len Del(f1,i)+len Del(f1,i)>0+len Del(f1,i) by A18,A19,XREAL_1:6;
      then Seg len Del(f1,i) c= Seg len f1 by FINSEQ_1:5;
      then n in Seg len f1 by A20;
      then
A26:  n in dom f1 by FINSEQ_1:def 3;
      assume
A27:  N1 = s2.(n+1);
      per cases;
      suppose
A28:    n<i;
        then
A29:    n1<=i by NAT_1:13;
        per cases by A29,XXREAL_0:1;
        suppose
A30:      n1<i;
          reconsider n9=n as Element of NAT by INT_1:3;
A31:      s1.(n9+1) = N1 by A10,A27,A30,FINSEQ_3:110;
          s1.n9 = H1 by A10,A24,A28,FINSEQ_3:110;
          then f1.n = H1./.N1 by A8,A26,A31,Def33;
          hence Del(f1,i).n = H1./.N1 by A28,FINSEQ_3:110;
        end;
        suppose
          n1=i;
          then s1.n = H1 & s1.(n+1) = N1 by A1,A5,A10,A2,A24,A27,A22,A28,
FINSEQ_3:110,111;
          then f1.n = H1./.N1 by A8,A26,Def33;
          hence Del(f1,i).n = H1./.N1 by A28,FINSEQ_3:110;
        end;
      end;
      suppose
A32:    n>=i;
        reconsider n19=n1 as Element of NAT;
        0+i<1+i & n+1>=i+1 by A32,XREAL_1:6;
        then n1>=i by XXREAL_0:2;
        then
A33:    s1.(n19+1) = N1 by A1,A10,A2,A27,A22,FINSEQ_3:111;
        s1.n19 = H1 by A1,A10,A2,A24,A25,A32,FINSEQ_3:111;
        then f1.n1 = H1./.N1 by A8,A23,A33,Def33;
        hence Del(f1,i).n = H1./.N1 by A17,A18,A21,A32,FINSEQ_3:111;
      end;
    end;
    hence thesis by A10,A2,A3,A9,A16,A18,A19,Def33;
  end;
end;

theorem
  f1=the_series_of_quotients_of s1 & i in dom f1 & (for H st H = f1.i
holds H is trivial) implies Del(s1,i) is CompositionSeries of G & for s2 st s2
  = Del(s1,i) holds the_series_of_quotients_of s2 = Del(f1,i)
proof
  assume
A1: f1=the_series_of_quotients_of s1;
  assume
A2: i in dom f1;
  assume
A3: for H st H = f1.i holds H is trivial;
  then
A4: s1.i=s1.(i+1) by A1,A2,Th103;
A5: i in dom s1 & i+1 in dom s1 by A1,A2,A3,Th103;
  hence Del(s1,i) is CompositionSeries of G by A4,Th94,FINSEQ_3:105;
  let s2;
  assume s2 = Del(s1,i);
  hence thesis by A1,A5,A4,Th104;
end;

theorem Th106:
  i in dom f1 & (ex p being Permutation of dom f1
  st f1,f2 are_equivalent_under p,O & j = p".i) implies ex p9 being Permutation
  of dom Del(f1,i) st Del(f1,i),Del(f2,j) are_equivalent_under p9,O
proof
A1: len f1=0 or len f1>=0+1 by NAT_1:13;
  assume
A2: i in dom f1;
  given p be Permutation of dom f1 such that
A3: f1,f2 are_equivalent_under p,O and
A4: j = p".i;
A5: len f1 = len f2 by A3;
  rng(p") c= dom f1;
  then
A6: rng(p") c= Seg len f1 by FINSEQ_1:def 3;
  p".i in rng(p") by A2,FUNCT_2:4;
  then p".i in Seg len f1 by A6;
  then
A7: j in dom f2 by A4,A5,FINSEQ_1:def 3;
  then
A8: ex k2 be Nat st len f2 = k2 + 1 & len Del(f2,j) = k2 by FINSEQ_3:104;
  consider k1 be Nat such that
A9: len f1 = k1 + 1 and
A10: len Del(f1,i) = k1 by A2,FINSEQ_3:104;
  per cases by A1,XXREAL_0:1;
  suppose
A11: len f1 = 0;
    set p9 = the Permutation of dom Del(f1,i);
    take p9;
    thus thesis by A9,A11;
  end;
  suppose
A12: len f1 = 1;
    reconsider p9={} as Function of dom {}, rng {} by FUNCT_2:1;
    reconsider p9 as Function of {},{};
A13: p9 is onto;
    Del(f1,i)={} by A9,A10,A12;
    then reconsider p9 as Permutation of dom Del(f1,i) by A13;
    take p9;
    thus thesis by A5,A9,A10,A8;
  end;
  suppose
A14: len f1 > 1;
    set Y = (dom f2)\{j};
A15: now
      assume Y={};
      then
A16:  dom f2 c= {j} by XBOOLE_1:37;
      {j} c= dom f2 by A7,ZFMISC_1:31;
      then
A17:  dom f2 = {j} by A16,XBOOLE_0:def 10;
      consider k be Nat such that
A18:  dom f2 = Seg k by FINSEQ_1:def 2;
      k in NAT by ORDINAL1:def 12;
      then k = len f2 by A18,FINSEQ_1:def 3;
      then k >= 1+1 by A5,A14,NAT_1:13;
      then Seg 2 c= Seg k by FINSEQ_1:5;
      then { 1,2 } = {j} by A17,A18,FINSEQ_1:2,ZFMISC_1:21;
      hence contradiction by ZFMISC_1:5;
    end;
    set X = (dom f1)\{i};
    set p9=(Sgm X)" * p * Sgm Y;
A21: rng Sgm X = X by FINSEQ_1:def 14;
A22: Sgm Y is one-to-one & rng Sgm Y = Y by FINSEQ_1:def 14,FINSEQ_3:92;
A23: dom f1 = Seg len f1 by FINSEQ_1:def 3
      .= dom f2 by A3,FINSEQ_1:def 3;
A24: p.j = (p*p").i by A2,A4,FUNCT_2:15
      .= (id dom f1).i by FUNCT_2:61
      .= i by A2,FUNCT_1:18;
A25: p9 is Permutation of dom Del(f1,i) & p9" = (Sgm Y)" * (p") * (Sgm X)
    proof
      set R6=p;
      set R5=p";
      set R4=Sgm X;
      set R3=(Sgm X)";
      set R2=Sgm Y;
      set R1=(Sgm Y)";
      set p99=(Sgm Y)" * (p") * (Sgm X);
A26:  {i} c= dom f1 by A2,ZFMISC_1:31;
A27:  X \/ {i} = dom f1 \/ {i} by XBOOLE_1:39
        .= dom f1 by A26,XBOOLE_1:12;
      card(X \/ {i}) = (card X) + card {i} by CARD_2:40,XBOOLE_1:79;
      then
A28:  (card X) + 1 = card(X \/ {i}) by CARD_1:30
        .= card Seg len f1 by A27,FINSEQ_1:def 3
        .= k1+1 by A9,FINSEQ_1:57;
A29:  {j} c= dom f2 by A7,ZFMISC_1:31;
A30:  Y \/ {j} = dom f2 \/ {j} by XBOOLE_1:39
        .= dom f2 by A29,XBOOLE_1:12;
A31:  Sgm X is one-to-one by FINSEQ_3:92;
      then
A32:  dom((Sgm X)") = X by A21,FUNCT_1:33;
      then dom((Sgm X)") c= dom f1 by XBOOLE_1:36;
      then
A33:  dom((Sgm X)") c= rng p by FUNCT_2:def 3;
A34:  now
        let x be object;
        assume
A35:    x in Y;
        dom f1 = dom p by A2,FUNCT_2:def 1;
        then
A36:    x in dom p by A23,A35,XBOOLE_0:def 5;
        not x in {j} by A35,XBOOLE_0:def 5;
        then x <> j by TARSKI:def 1;
        then p.x <> i by A7,A23,A24,A36,FUNCT_2:56;
        then
A37:    not p.x in {i} by TARSKI:def 1;
        dom f1 = rng p by FUNCT_2:def 3;
        then p.x in dom f1 by A36,FUNCT_1:3;
        then p.x in X by A37,XBOOLE_0:def 5;
        hence x in dom((Sgm X)" * p) by A32,A36,FUNCT_1:11;
      end;
      now
        let x be object;
        assume
A38:    x in dom((Sgm X)" * p);
        then p.x in dom((Sgm X)") by FUNCT_1:11;
        then p.x in X by A21,A31,FUNCT_1:33;
        then not p.x in {i} by XBOOLE_0:def 5;
        then p.x <> i by TARSKI:def 1;
        then
A39:    not x in {j} by A24,TARSKI:def 1;
        x in dom p by A38,FUNCT_1:11;
        hence x in Y by A23,A39,XBOOLE_0:def 5;
      end;
      then dom((Sgm X)" * p) = Y by A34,TARSKI:2;
      then
A40:  dom((Sgm X)" * p) = rng(Sgm Y) by FINSEQ_1:def 14;
      then rng((Sgm X)" * p * Sgm Y) = rng((Sgm X)" * p) by RELAT_1:28
        .= rng((Sgm X)") by A33,RELAT_1:28
        .= dom(Sgm X) by A31,FUNCT_1:33;
      then
A41:  rng p9=Seg k1 by A28,FINSEQ_3:40;
      card(Y \/ {j}) = (card Y) + card {j} by CARD_2:40,XBOOLE_1:79;
      then (card Y) + 1 = card(Y \/ {j}) by CARD_1:30
        .= card Seg len f2 by A30,FINSEQ_1:def 3
        .= k1+1 by A3,A9,FINSEQ_1:57;
      then dom(Sgm Y) = Seg k1 by FINSEQ_3:40;
      then
A42:  dom p9=Seg k1 by A40,RELAT_1:27;
A43:  dom Del(f1,i) = Seg k1 by A10,FINSEQ_1:def 3;
      then reconsider p9 as Function of dom Del(f1,i),dom Del(f1,i) by A41,A42,
FUNCT_2:1;
A44:  p9 is onto by A43,A41;
      Sgm Y is one-to-one by FINSEQ_3:92;
      then reconsider p9 as Permutation of dom Del(f1,i) by A31,A44;
      set R7=p9;
      reconsider R1,R2,R3,R4,R5,R6,R7,p9,p99 as Function;
A45:  R3=R4~ by A31,FUNCT_1:def 5;
A46:  Sgm Y is one-to-one & R5=R6~ by FINSEQ_3:92,FUNCT_1:def 5;
      reconsider R1,R2,R3,R4,R5,R6,R7 as Relation;
      p9"=R7~ by FUNCT_1:def 5
        .=((R6*R3)~)*(R2~) by RELAT_1:35
        .=((R3)~*(R6~))*(R2~) by RELAT_1:35
        .=((R4~)~*R5)*R1 by A45,A46,FUNCT_1:def 5
        .=p99 by RELAT_1:36;
      hence thesis;
    end;
    then reconsider p9 as Permutation of dom Del(f1,i);
    take p9;
A47: Sgm Y is Function of dom Sgm Y, rng Sgm Y by FUNCT_2:1;
    now
      let H1,H2 be GroupWithOperators of O,l being Nat ,n;
      assume
A48:  l in dom Del(f1,i);
      set n1=(Sgm Y).n;
      reconsider n1 as Nat;
A49:  (Sgm Y)*(p9") = (Sgm Y) * ((Sgm Y)" * ((p") * (Sgm X))) by A25,RELAT_1:36
        .= ((Sgm Y) * (Sgm Y)") * ((p") * (Sgm X)) by RELAT_1:36
        .= id Y * ((p") * (Sgm X)) by A22,A15,A47,FUNCT_2:29
        .= id Y * p" * (Sgm X) by RELAT_1:36
        .= (Y|`p")*(Sgm X) by RELAT_1:92;
      assume
A50:  n=p9".l;
A51:  l in dom (p9") by A48,FUNCT_2:def 1;
      then n in rng (p9") by A50,FUNCT_1:3;
      then n in dom Del(f1,i);
      then n in Seg len Del(f2,j) by A5,A9,A10,A8,FINSEQ_1:def 3;
      then
A52:  n in dom Del(f2,j) by FINSEQ_1:def 3;
      set l1=(Sgm X).l;
A53:  dom Del(f1,i) c= dom Sgm X by RELAT_1:25;
      then l1 in rng Sgm X by A48,FUNCT_1:3;
      then
A54:  l1 in dom f1 by A21,XBOOLE_0:def 5;
      assume that
A55:  H1 = Del(f1,i).l and
A56:  H2 = Del(f2,j).n;
      reconsider l1 as Nat;
A57:  H1 = f1.l1 by A48,A55,A53,FUNCT_1:13;
A58:  dom f1 = rng p by FUNCT_2:def 3;
      then
A59:  l1 in dom(p") by A54,FUNCT_1:33;
A60:  now
        assume p".l1 in {j};
        then
A61:    p".l1=p".i by A4,TARSKI:def 1;
        i in dom(p") by A2,A58,FUNCT_1:33;
        then l1=i by A59,A61,FUNCT_1:def 4;
        then i in rng Sgm X by A48,A53,FUNCT_1:3;
        then not i in {i} by A21,XBOOLE_0:def 5;
        hence contradiction by TARSKI:def 1;
      end;
      p".l1 in rng(p") by A59,FUNCT_1:3;
      then
A62:  p".l1 in Y by A23,A60,XBOOLE_0:def 5;
      dom Del(f2,j) c= dom Sgm Y by RELAT_1:25;
      then
A63:  H2 = f2.n1 by A56,A52,FUNCT_1:13;
      n1 = ((Sgm Y)*(p9")).l by A50,A51,FUNCT_1:13
        .= (Y|`p").l1 by A48,A53,A49,FUNCT_1:13
        .= p".l1 by A54,A62,FUNCT_2:34;
      hence H1,H2 are_isomorphic by A3,A54,A57,A63;
    end;
    hence thesis by A5,A9,A10,A8;
  end;
end;

theorem
  for G1,G2 being GroupWithOperators of O, s1 being
  CompositionSeries of G1, s2 being CompositionSeries of G2 st s1 is empty & s2
  is empty holds s1 is_equivalent_with s2;

theorem Th108:
  for G1,G2 being GroupWithOperators of O, s1 be
CompositionSeries of G1, s2 be CompositionSeries of G2 st s1 is not empty & s2
  is not empty holds s1 is_equivalent_with s2 iff ex p being Permutation of dom
  the_series_of_quotients_of s1 st the_series_of_quotients_of s1,
  the_series_of_quotients_of s2 are_equivalent_under p,O
proof
  let G1,G2 be GroupWithOperators of O;
  let s1 be CompositionSeries of G1,s2 be CompositionSeries of G2;
  assume that
A1: s1 is not empty and
A2: s2 is not empty;
  set f2 = the_series_of_quotients_of s2;
  set f1 = the_series_of_quotients_of s1;
  hereby
    assume
A3: s1 is_equivalent_with s2;
    then
A4: len s1 = len s2;
    per cases;
    suppose
A5:   len s1 <= 1;
      reconsider fs1=f1,fs2=f2 as FinSequence;
      set p = the Permutation of dom the_series_of_quotients_of s1;
      reconsider pf=p as Permutation of dom fs1;
      fs1 = {} by A5,Def33;
      then
A6:   for H1,H2 being GroupWithOperators of O, i,j st i in dom fs1 & j=pf"
      .i & H1=fs1.i & H2=fs2.j holds H1,H2 are_isomorphic;
      take p;
      fs2 = {} by A4,A5,Def33;
      then len f1 = len f2 by A5,Def33;
      hence the_series_of_quotients_of s1,the_series_of_quotients_of s2
      are_equivalent_under p,O by A6;
    end;
    suppose
A7:   len s1 > 1;
      set n = len s1 - 1;
      len s1 - 1 > 1-1 by A7,XREAL_1:9;
      then n in NAT by INT_1:3;
      then reconsider n as Nat;
      n+1 = len s1;
      then consider p be Permutation of Seg n such that
A8:   for H1 being StableSubgroup of G1, H2 being StableSubgroup of
G2, N1 being normal StableSubgroup of H1, N2 being normal StableSubgroup of H2,
i,j st 1<=i & i<=n & j=p.i & H1=s1.i & H2=s2.j & N1=s1.(i+1) & N2=s2.(j+1)
      holds H1./.N1,H2./.N2 are_isomorphic by A3;
A9:   len s1 = len the_series_of_quotients_of s1 + 1 by A7,Def33;
      then dom the_series_of_quotients_of s1 = Seg n by FINSEQ_1:def 3;
      then reconsider
      p9=p" as Permutation of dom the_series_of_quotients_of s1;
      reconsider fs1=f1,fs2=f2 as FinSequence;
A10:  len s2 = len the_series_of_quotients_of s2 + 1 by A4,A7,Def33;
      reconsider pf=p9 as Permutation of dom fs1;
      take p9;
A11:  pf" = p by FUNCT_1:43;
      now
        let H19,H29 be GroupWithOperators of O;
        let i,j;
        set H1=s1.i;
        set H2=s2.j;
        set N1=s1.(i+1);
        set N2=s2.(j+1);
        assume
A12:    i in dom fs1;
        then
A13:    i in Seg len fs1 by FINSEQ_1:def 3;
        then
A14:    1<=i by FINSEQ_1:1;
A15:    i<=len fs1 by A13,FINSEQ_1:1;
        then
A16:    i+1<=len fs1+1 by XREAL_1:6;
        0+i<1+i by XREAL_1:6;
        then 1<=i+1 by A14,XXREAL_0:2;
        then i+1 in Seg len s1 by A9,A16;
        then
A17:    i+1 in dom s1 by FINSEQ_1:def 3;
        assume
A18:    j = pf".i;
        0+len fs1<1+len fs1 by XREAL_1:6;
        then i<=len s1 by A9,A15,XXREAL_0:2;
        then i in Seg len s1 by A14;
        then
A19:    i in dom s1 by FINSEQ_1:def 3;
        then reconsider H1,N1 as Element of the_stable_subgroups_of G1 by A17,
FINSEQ_2:11;
        reconsider H1,N1 as StableSubgroup of G1 by Def11;
        reconsider N1 as normal StableSubgroup of H1 by A19,A17,Def28;
        assume that
A20:    H19=fs1.i and
A21:    H29=fs2.j;
        i in dom p by A9,A13,FUNCT_2:def 1;
        then
A22:    j in rng p by A11,A18,FUNCT_1:3;
        then
A23:    1<=j by FINSEQ_1:1;
A24:    j<=len fs2 by A4,A10,A22,FINSEQ_1:1;
        then
A25:    j+1<=len fs2+1 by XREAL_1:6;
        0+j<1+j by XREAL_1:6;
        then 1<=j+1 by A23,XXREAL_0:2;
        then j+1 in Seg len s2 by A10,A25;
        then
A26:    j+1 in dom s2 by FINSEQ_1:def 3;
        0+len fs2<1+len fs2 by XREAL_1:6;
        then j<=len s2 by A10,A24,XXREAL_0:2;
        then j in Seg len s2 by A23;
        then
A27:    j in dom s2 by FINSEQ_1:def 3;
        then reconsider H2,N2 as Element of the_stable_subgroups_of G2 by A26,
FINSEQ_2:11;
        reconsider H2,N2 as StableSubgroup of G2 by Def11;
        reconsider N2 as normal StableSubgroup of H2 by A27,A26,Def28;
        dom fs1 = Seg n by A9,FINSEQ_1:def 3;
        then 1<=i & i<=n by A12,FINSEQ_1:1;
        then
A28:    H1./.N1,H2./.N2 are_isomorphic by A8,A11,A18;
        j in Seg len f2 by A4,A10,A22;
        then j in dom fs2 by FINSEQ_1:def 3;
        then H2./.N2 = H29 by A4,A7,A21,Def33;
        hence H19,H29 are_isomorphic by A7,A12,A20,A28,Def33;
      end;
      hence the_series_of_quotients_of s1,the_series_of_quotients_of s2
      are_equivalent_under p9,O by A4,A9,A10;
    end;
  end;
  given p be Permutation of dom the_series_of_quotients_of s1 such that
A29: the_series_of_quotients_of s1,the_series_of_quotients_of s2
  are_equivalent_under p,O;
A30: len f1 = len f2 by A29;
  per cases;
  suppose
A31: len s1<=1;
A32: len s1>=0+1 by A1,NAT_1:13;
A33: now
      let n;
      set p = the Permutation of Seg n;
      assume n + 1 = len s1;
      then n+1=1 by A31,A32,XXREAL_0:1;
      then
A34:  n=0;
      take p;
      let H1 be StableSubgroup of G1;
      let H2 be StableSubgroup of G2;
      let N1 be normal StableSubgroup of H1;
      let N2 be normal StableSubgroup of H2;
      let i,j;
      assume that
A35:  1<=i & i<=n and
      j=p.i;
      assume that
      H1=s1.i and
      H2=s2.j;
      assume that
      N1=s1.(i+1) and
      N2=s2.(j+1);
      thus H1./.N1,H2./.N2 are_isomorphic by A34,A35;
    end;
A36: f1 = {} by A31,Def33;
    now
      assume
A37:  len s2<>1;
      len s2>=0+1 by A2,NAT_1:13;
      then len s2>1 by A37,XXREAL_0:1;
      then len f2 + 1 > 0 + 1 by Def33;
      hence contradiction by A30,A36;
    end;
    then len s1 = len s2 by A31,A32,XXREAL_0:1;
    hence thesis by A33;
  end;
  suppose
A38: len s1>1;
    then
A39: len s1 = len f1 + 1 by Def33;
A40: now
      assume len s2<=1;
      then f2 = {} by Def33;
      then len f2 = 0;
      hence contradiction by A30,A38,A39;
    end;
A41: now
      let n;
      assume
A42:  n + 1 = len s1;
      then
A43:  dom f1 = Seg n by A39,FINSEQ_1:def 3;
      then reconsider p9=p" as Permutation of Seg n;
      take p9;
      let H1 be StableSubgroup of G1;
      let H2 be StableSubgroup of G2;
      let N1 be normal StableSubgroup of H1;
      let N2 be normal StableSubgroup of H2;
      let i,j;
      assume 1<=i & i<=n;
      then
A44:  i in dom f1 by A43;
      assume
A45:  j=p9.i;
      assume that
A46:  H1=s1.i and
A47:  H2=s2.j;
      assume that
A48:  N1=s1.(i+1) and
A49:  N2=s2.(j+1);
      i in dom p9 by A44,FUNCT_2:def 1;
      then j in rng p9 by A45,FUNCT_1:3;
      then j in Seg n;
      then j in dom f2 by A30,A39,A42,FINSEQ_1:def 3;
      then
A50:  f2.j = H2./.N2 by A40,A47,A49,Def33;
      f1.i = H1./.N1 by A38,A44,A46,A48,Def33;
      hence H1./.N1,H2./.N2 are_isomorphic by A29,A44,A45,A50;
    end;
    len s1 = len s2 by A30,A39,A40,Def33;
    hence thesis by A41;
  end;
end;

theorem Th109:
  s1 is_finer_than s2 & s2 is jordan_holder & len s1 > len s2
  implies ex i st i in dom the_series_of_quotients_of s1 & for H st H = (
  the_series_of_quotients_of s1).i holds H is trivial
proof
  assume
A1: s1 is_finer_than s2;
  assume
A2: s2 is jordan_holder;
  assume
A3: len s1 > len s2;
  then not s1 is strictly_decreasing by A1,A2;
  then
  not for i st i in dom s1 & i+1 in dom s1 for H1,N1 st H1=s1.i & N1=s1.(i
  +1) holds not H1./.N1 is trivial;
  then consider i,H1,N1 such that
A4: i in dom s1 and
A5: i+1 in dom s1 and
A6: H1=s1.i & N1=s1.(i+1) & H1./.N1 is trivial;
  i+1 in Seg len s1 by A5,FINSEQ_1:def 3;
  then
A7: i+1 <= len s1 by FINSEQ_1:1;
  0+1 <= i+1 by XREAL_1:6;
  then
A8: 1 <= len s1 by A7,XXREAL_0:2;
  per cases;
  suppose
    len s1 <= 1;
    then
A9: len s1 = 1 by A8,XXREAL_0:1;
    now
      let i;
      assume i in dom s1;
      then i in Seg 1 by A9,FINSEQ_1:def 3;
      then
A10:  i = 1 by FINSEQ_1:2,TARSKI:def 1;
      assume
A11:  i+1 in dom s1;
      let H1,N1;
      assume H1=s1.i;
      assume N1=s1.(i+1);
      assume H1./.N1 is trivial;
      2 in Seg 1 by A9,A10,A11,FINSEQ_1:def 3;
      hence contradiction by FINSEQ_1:2,TARSKI:def 1;
    end;
    then s1 is strictly_decreasing;
    hence thesis by A1,A2,A3;
  end;
  suppose
A12: len s1 > 1;
    take i;
A13: i+1-1 <= len s1 - 1 by A7,XREAL_1:9;
    i in Seg len s1 by A4,FINSEQ_1:def 3;
    then
A14: 1 <= i by FINSEQ_1:1;
    len s1 = len the_series_of_quotients_of s1 + 1 by A12,Def33;
    then i in Seg len the_series_of_quotients_of s1 by A14,A13;
    hence
A15: i in dom the_series_of_quotients_of s1 by FINSEQ_1:def 3;
    let H;
    assume H = (the_series_of_quotients_of s1).i;
    hence thesis by A6,A12,A15,Def33;
  end;
end;

:: this is Lm15 of WSIERP_1

Lm39: for k,m being Element of NAT holds k<m iff k<=m-1
proof
  let k,m be Element of NAT;
A1: now
    assume k<=m-1;
    then
A2: k+1<=m by XREAL_1:19;
    k<k+1 by XREAL_1:29;
    hence k<m by A2,XXREAL_0:2;
  end;
  now
    assume k<m;
    then k+1<=m by INT_1:7;
    hence k<=m-1 by XREAL_1:19;
  end;
  hence thesis by A1;
end;

:: this is Lm19 of WSIERP_1

Lm40: for a being Element of NAT, fs being FinSequence holds a in dom fs
implies ex fs1,fs2 being FinSequence st fs=fs1^<*fs.a*>^fs2 & len fs1=a-1 & len
fs2=len fs -a
proof
  let a be Element of NAT;
  let fs be FinSequence;
  assume
A1: a in dom fs;
  then a>=1 & a<=len fs by FINSEQ_3:25;
  then reconsider b=len fs-a, d=a-1 as Element of NAT by INT_1:5;
  len fs=a+b;
  then consider fs3,fs2 be FinSequence such that
A2: len fs3=a and
A3: len fs2=b and
A4: fs=fs3^fs2 by FINSEQ_2:22;
  a=d+1;
  then consider fs1 be FinSequence,v be object such that
A5: fs3=fs1^<*v*> by A2,FINSEQ_2:18;
A6: len fs1 + 1=d+1 by A2,A5,FINSEQ_2:16;
  fs3 <> {} by A1,A2,FINSEQ_3:25;
  then a in dom fs3 by A2,FINSEQ_5:6;
  then fs3.a=fs.a by A4,FINSEQ_1:def 7;
  then fs.a=v by A5,A6,FINSEQ_1:42;
  hence thesis by A3,A4,A5,A6;
end;

:: this is Lm20 of WSIERP_1

Lm41: for a being Element of NAT, fs,fs1,fs2 being FinSequence, v being set
holds a in dom fs & fs=fs1^<*v*>^fs2 & len fs1=a-1 implies Del(fs,a)=fs1^fs2
proof
  let a be Element of NAT;
  let fs,fs1,fs2 be FinSequence;
  let v be set;
  assume that
A1: a in dom fs and
A2: fs=fs1^<*v*>^fs2 and
A3: len fs1=a-1;
A4: len(Del(fs,a))+1=len fs by A1,WSIERP_1:def 1;
  len fs=len(fs1^<*v*>)+len fs2 by A2,FINSEQ_1:22
    .=len fs1 +1 +len fs2 by FINSEQ_2:16
    .=a +len fs2 by A3;
  then len(Del(fs,a)) =len fs2 +len fs1 by A3,A4;
  then
A5: len(fs1^fs2)=len(Del(fs,a)) by FINSEQ_1:22;
A6: len<*v*>=1 by FINSEQ_1:39;
A7: fs=fs1^(<*v*>^fs2) by A2,FINSEQ_1:32;
  then len fs=(a-1) + len(<*v*>^fs2) by A3,FINSEQ_1:22;
  then
A8: len(<*v*>^fs2)=len fs -(a-1);
  now
    let e be Nat;
    assume that
A9: 1<=e and
A10: e<=len Del(fs,a);
    reconsider e1=e as Element of NAT by ORDINAL1:def 12;
    now
      per cases;
      suppose
A11:    e<a;
        then e1<=a-1 by Lm39;
        then
A12:    e in dom fs1 by A3,A9,FINSEQ_3:25;
        hence (fs1^fs2).e=fs1.e by FINSEQ_1:def 7
          .=fs.e1 by A7,A12,FINSEQ_1:def 7
          .=(Del(fs,a)).e by A1,A11,WSIERP_1:def 1;
      end;
      suppose
A13:    e>=a;
        then
A14:    e1>a-1 by Lm39;
        then
A15:    e+1>a by XREAL_1:19;
        then e+1-a>0 by XREAL_1:50;
        then
A16:    e+1-a+1>0+1 by XREAL_1:6;
A17:    e+1>a-1 by A15,XREAL_1:146,XXREAL_0:2;
        then e+1-(a-1)>0 by XREAL_1:50;
        then reconsider f=e+1-(a-1) as Element of NAT by INT_1:3;
A18:    e+1<=len fs by A4,A10,XREAL_1:6;
        then
A19:    e+1-(a-1)<=len(<*v*>^fs2) by A8,XREAL_1:9;
        thus (fs1^fs2).e=fs2.(e-len fs1) by A3,A5,A10,A14,FINSEQ_1:24
          .=fs2.(f-1) by A3
          .=(<*v*>^fs2).f by A6,A16,A19,FINSEQ_1:24
          .=(fs1^(<*v*>^fs2)).(e1+1) by A3,A7,A17,A18,FINSEQ_1:24
          .=(Del(fs,a)).e by A1,A7,A13,WSIERP_1:def 1;
      end;
    end;
    hence (fs1^fs2).e=(Del(fs,a)).e;
  end;
  hence thesis by A5;
end;

:: this is Lm22 of WSIERP_1

Lm42: for a being Element of NAT, fs1,fs2 being FinSequence holds (a<=len fs1
implies Del(fs1^fs2,a)=Del(fs1,a)^fs2) & (a>=1 implies Del(fs1^fs2,len fs1 +a)=
fs1^Del(fs2,a))
proof
  let a be Element of NAT;
  let fs1,fs2 be FinSequence;
  set f=fs1^fs2;
A1: len f=len fs1 + len fs2 by FINSEQ_1:22;
A2: now
    set f2=fs1^Del(fs2,a);
    set f1= Del(f,len fs1 + a);
    assume
A3: a>=1;
    now
      per cases;
      suppose
A4:     a>len fs2;
        then
A5:     not a in dom fs2 by FINSEQ_3:25;
        len fs1 + a>len f by A1,A4,XREAL_1:6;
        then not (len fs1 + a) in dom f by FINSEQ_3:25;
        hence f1=fs1^fs2 by WSIERP_1:def 1
          .=f2 by A5,WSIERP_1:def 1;
      end;
      suppose
A6:     a<=len fs2;
        then
A7:     a in dom fs2 by A3,FINSEQ_3:25;
        a-1>=0 by A3,XREAL_1:48;
        then
A8:     (a-1)+len fs1>=0+len fs1 by XREAL_1:6;
A9:     len fs1 + a>=1 by A3,NAT_1:12;
        len fs1 + a <= len f by A1,A6,XREAL_1:6;
        then
A10:    (len fs1 + a) in dom f by A9,FINSEQ_3:25;
        then consider g1,g2 being FinSequence such that
A11:    f=g1^<*f.(len fs1 +a)*>^g2 and
A12:    len g1=len fs1 +a -1 and
        len g2=len f -(len fs1 +a) by Lm40;
A13:    f1=g1^g2 by A10,A11,A12,Lm41;
        f=g1^(<*f.(len fs1 +a)*>^g2) by A11,FINSEQ_1:32;
        then consider t being FinSequence such that
A14:    fs1^t=g1 by A12,A8,FINSEQ_1:47;
        fs1^(t^<*f.(len fs1 +a)*>^g2)=fs1^(t^<*f.(len fs1 +a)*>)^g2 by
FINSEQ_1:32
          .=f by A11,A14,FINSEQ_1:32;
        then
A15:    fs2=t^<*f.(len fs1 +a)*>^g2 by FINSEQ_1:33;
        len fs1 +(a-1)=len fs1 +len t by A12,A14,FINSEQ_1:22;
        then Del(fs2,a)=t^g2 by A7,A15,Lm41;
        hence f1=f2 by A13,A14,FINSEQ_1:32;
      end;
    end;
    hence f1=f2;
  end;
  now
    set f3=<*f.a*>;
    set f2=((Del(fs1,a))^fs2);
    set f1= Del(f,a);
    assume
A16: a<=len fs1;
    len fs1<=len f by A1,NAT_1:11;
    then
A17: a<=len f by A16,XXREAL_0:2;
    now
      per cases;
      suppose
A18:    a<1;
        then
A19:    not a in dom fs1 by FINSEQ_3:25;
        not a in dom f by A18,FINSEQ_3:25;
        hence f1=f by WSIERP_1:def 1
          .= f2 by A19,WSIERP_1:def 1;
      end;
      suppose
A20:    a>=1;
        then
A21:    a in dom f by A17,FINSEQ_3:25;
        then consider g1,g2 being FinSequence such that
A22:    f=g1^f3^g2 and
A23:    len g1=a-1 and
        len g2=len f -a by Lm40;
        len(g1^f3)=a-1+1 by A23,FINSEQ_2:16
          .=a;
        then consider t being FinSequence such that
A24:    fs1=g1^f3^t by A16,A22,FINSEQ_1:47;
        g1^f3^g2=g1^f3^(t^fs2) by A22,A24,FINSEQ_1:32;
        then
A25:    g2=t^fs2 by FINSEQ_1:33;
        a in dom fs1 by A16,A20,FINSEQ_3:25;
        then
A26:    Del(fs1,a)=g1^t by A23,A24,Lm41;
        thus f1=g1^g2 by A21,A22,A23,Lm41
          .=f2 by A26,A25,FINSEQ_1:32;
      end;
    end;
    hence f1=f2;
  end;
  hence thesis by A2;
end;

Lm43: for D being non empty set, f being FinSequence of D, p being Element of
D, n being Nat st n in dom f holds f = Del(Ins(f,n,p),n+1)
proof
  let D be non empty set;
  let f be FinSequence of D;
  let p be Element of D;
  let n be Nat;
  set fs1=f|n^<*p*>;
  set fs2=(f/^n);
  assume n in dom f;
  then n in Seg len f by FINSEQ_1:def 3;
  then n<= len f by FINSEQ_1:1;
  then
A1: len(f|n) = n by FINSEQ_1:59;
  len fs1 = len(f|n) + len <*p*> by FINSEQ_1:22
    .= n + 1 by A1,FINSEQ_1:39;
  then Del(Ins(f,n,p),n+1) = Del(fs1,n+1)^fs2 by Lm42
    .= f|n^fs2 by A1,WSIERP_1:40;
  hence thesis by RFINSEQ:8;
end;

:: ALG I.4.7 Proposition 9

theorem Th110:
  len s1 > 1 implies (s1 is jordan_holder iff for i st i in dom
the_series_of_quotients_of s1 holds (the_series_of_quotients_of s1).i is strict
  simple GroupWithOperators of O)
proof
  assume
A1: len s1 > 1;
A2: now
    assume
A3: s1 is jordan_holder;
    assume not for i st i in dom the_series_of_quotients_of s1 holds (
    the_series_of_quotients_of s1).i is strict simple GroupWithOperators of O;
    then consider i such that
A4: i in dom the_series_of_quotients_of s1 and
A5: (the_series_of_quotients_of s1).i is not strict simple
    GroupWithOperators of O;
A6: i in Seg len the_series_of_quotients_of s1 by A4,FINSEQ_1:def 3;
    then
A7: i<=len the_series_of_quotients_of s1 by FINSEQ_1:1;
    len s1 = len the_series_of_quotients_of s1 + 1 by A1,Def33;
    then
A8: i+1 <= len s1 by A7,XREAL_1:6;
    0+1<=i+1 by XREAL_1:6;
    then i+1 in Seg len s1 by A8;
    then
A10: i+1 in dom s1 by FINSEQ_1:def 3;
    0+len the_series_of_quotients_of s1< 1+len the_series_of_quotients_of
    s1 by XREAL_1:6;
    then
A11: len the_series_of_quotients_of s1 < len s1 by A1,Def33;
    then
A12: i<=len s1 by A7,XXREAL_0:2;
    1<=i by A6,FINSEQ_1:1;
    then i in Seg len s1 by A12;
    then
A13: i in dom s1 by FINSEQ_1:def 3;
    then reconsider
    H1=s1.i,N1=s1.(i+1) as Element of the_stable_subgroups_of G by A10,
FINSEQ_2:11;
    reconsider H1,N1 as strict StableSubgroup of G by Def11;
    reconsider N1 as strict normal StableSubgroup of H1 by A13,A10,Def28;
A14: H1./.N1 is not strict simple GroupWithOperators of O by A1,A4,A5,Def33;
    per cases by A14,Def13;
    suppose
A15:  H1./.N1 is trivial;
      s1 is strictly_decreasing by A3;
      hence contradiction by A13,A10,A15;
    end;
    suppose
      ex H being strict normal StableSubgroup of H1./.N1 st H <>
      (Omega).(H1./.N1) & H <> (1).(H1./.N1);
      then consider H be strict normal StableSubgroup of H1./.N1 such that
A16:  H <> (Omega).(H1./.N1) and
A17:  H <> (1).(H1./.N1);
      N1 = Ker nat_hom N1 by Th48;
      then consider N2 be strict StableSubgroup of H1 such that
A18:  the carrier of N2 = (nat_hom N1)"(the carrier of H) and
A19:  H is normal implies N1 is normal StableSubgroup of N2 & N2 is
      normal by Th78;
A20:  N2 is strict StableSubgroup of G by Th11;
      reconsider i as Element of NAT by ORDINAL1:def 12;
A21:  1<=i & s1 is non empty by A1,A6,FINSEQ_1:1;
      reconsider N2 as Element of the_stable_subgroups_of G by A20,Def11;
      set s2 = Ins(s1,i,N2);
A22:  len s2 = len s1 + 1 by FINSEQ_5:69;
      then
A23:  s1<>s2;
A24:  now
        let j be Nat;
        assume j in dom s2;
        then
A26:    j in Seg len s2 by FINSEQ_1:def 3;
        then
A27:    1<=j by FINSEQ_1:1;
A28:    j<=len s2 by A26,FINSEQ_1:1;
        j<i or j=i or j>i by XXREAL_0:1;
        then j+1<=i or j=i or j>=i+1 by NAT_1:13;
        then
A29:    j+1-1<=i-1 or j=i or j>=i+1 by XREAL_1:9;
        assume j+1 in dom s2;
        then
A31:    j+1 in Seg len s2 by FINSEQ_1:def 3;
        then
A32:    1<=j+1 by FINSEQ_1:1;
A33:    j+1<=len s2 by A31,FINSEQ_1:1;
        let H19,H29;
        assume
A34:    H19=s2.j;
        assume
A35:    H29=s2.(j+1);
        per cases by A29,XXREAL_0:1;
        suppose
A36:      j<=i-1;
A37:      Seg len(s1|i) = Seg i by A11,A7,FINSEQ_1:59,XXREAL_0:2;
A38:      dom(s1|i) c= dom s1 by RELAT_1:60;
          -1+i<0+i by XREAL_1:6;
          then j<=i by A36,XXREAL_0:2;
          then j in Seg len (s1|i) by A27,A37;
          then
A39:      j in dom(s1|i) by FINSEQ_1:def 3;
          j+1<=i-1+1 by A36,XREAL_1:6;
          then j+1 in Seg len (s1|i) by A32,A37;
          then
A40:      j+1 in dom(s1|i) by FINSEQ_1:def 3;
A41:      s2.(j+1) = s1.(j+1) by A40,FINSEQ_5:72;
          s2.j = s1.j by A39,FINSEQ_5:72;
          hence H29 is normal StableSubgroup of H19 by A34,A35,A38,A39,A40,A41
,Def28;
        end;
        suppose
A42:      j=i;
          then
A43:      j in Seg i by A27;
          Seg len(s1|i) = Seg i by A11,A7,FINSEQ_1:59,XXREAL_0:2;
          then
A44:      j in dom(s1|i) by A43,FINSEQ_1:def 3;
A46:      s2.j = s1.j by A44,FINSEQ_5:72;
          s2.(j+1) = N2 by A11,A7,A42,FINSEQ_5:73,XXREAL_0:2;
          hence H29 is normal StableSubgroup of H19 by A19,A34,A35,A42,A46;
        end;
        suppose
A47:      j=i+1; then
A48:      H19 = N2 by A34,A11,A7,FINSEQ_5:73,XXREAL_0:2;
          H29 = s1.(i+1) by A35,A47,A8,FINSEQ_5:74;
          hence H29 is normal StableSubgroup of H19 by A19,A48;
        end;
        suppose
A50:      i+1<j;
          set j9=j-1;
          0+1<=i+1 by XREAL_1:6;
          then
A51:      0+1<j by A50,XXREAL_0:2;
          then
A52:      0+1-1<j-1 by XREAL_1:9;
          then reconsider j9 as Element of NAT by INT_1:3;
A53:      j-1<=len s2-1 by A28,XREAL_1:9;
          0+1<=j9 by A52,NAT_1:13;
          then
A54:      j9 in dom s1 by A22,A53,FINSEQ_3:25;
          i+1+1<=j by A50,NAT_1:13;
          then
A55:      i+1+1-1<=j-1 by XREAL_1:9;
          0+j9<1+j9 by XREAL_1:6;
          then
A56:      i+1 <= j9+1 by A55,XXREAL_0:2;
A57:      j+1-1<=len s2-1 by A33,XREAL_1:9;
          then
A58:      j9+1 in dom s1 by A22,A51,FINSEQ_3:25;
A59:      s2.(j+1) = s1.(j9+1) by A22,A56,A57,FINSEQ_5:74;
          s2.j = s2.(j9+1)
            .= s1.j9 by A22,A55,A53,FINSEQ_5:74;
          hence H29 is normal StableSubgroup of H19 by A34,A35,A54,A58,A59
,Def28;
        end;
      end;
A63:  s2.(len s2) = s2.(len s1+1) by FINSEQ_5:69
        .= s1.(len s1) by A8,FINSEQ_5:74
        .= (1).G by Def28;
      s2.1 = s1.1 by A21,FINSEQ_5:75
        .= (Omega).G by Def28;
      then reconsider s2 as CompositionSeries of G by A63,A24,Def28;
      now
        let j be Nat;
        assume j in dom s2;
        then
A65:    j in Seg len s2 by FINSEQ_1:def 3;
        then
A66:    1<=j by FINSEQ_1:1;
        j<i or j=i or j>i by XXREAL_0:1;
        then j+1<=i or j=i or j>=i+1 by NAT_1:13;
        then
A67:    j+1-1<=i-1 or j=i or j>=i+1 by XREAL_1:9;
        assume j+1 in dom s2;
        then
A69:    j+1 in Seg len s2 by FINSEQ_1:def 3;
        then
A70:    1<=j+1 by FINSEQ_1:1;
A71:    j+1<=len s2 by A69,FINSEQ_1:1;
        let H19,N19;
        assume
A72:    H19=s2.j;
A73:    j<=len s2 by A65,FINSEQ_1:1;
A74:    s1 is strictly_decreasing by A3;
        assume
A75:    N19=s2.(j+1);
        per cases by A67,XXREAL_0:1;
        suppose
A76:      j<=i-1;
          Seg len(s1|i) = Seg i by A11,A7,FINSEQ_1:59,XXREAL_0:2; then
S:        dom (s1|i) = Seg i by FINSEQ_1:def 3;
A78:      dom(s1|i) c= dom s1 by RELAT_1:60;
          -1+i<0+i by XREAL_1:6;
          then j<=i by A76,XXREAL_0:2;
          then
A79:      j in dom(s1|i) by A66,S;
          j+1<=i-1+1 by A76,XREAL_1:6;
          then
A80:      j+1 in dom(s1|i) by A70,S; then
A81:      s2.(j+1) = s1.(j+1) by FINSEQ_5:72;
          s2.j = s1.j by A79,FINSEQ_5:72;
          hence H19./.N19 is not trivial by A72,A75,A74,A78,A79,A80,A81;
        end;
        suppose
A82:      j=i; then
A83:      j in Seg i by A66;
          Seg len(s1|i) = Seg i by A11,A7,FINSEQ_1:59,XXREAL_0:2;
          then
A84:      j in dom(s1|i) by A83,FINSEQ_1:def 3;
A85:      s2.(j+1) = N2 by A82,A11,A7,FINSEQ_5:73,XXREAL_0:2;
          reconsider N2 as normal StableSubgroup of H1 by A19;
A87:      s2.j = s1.j by A84,FINSEQ_5:72;
          now
            assume H19./.N19 is trivial;
            then H1 = N2 by A72,A75,A82,A85,A87,Th76;
            hence contradiction by A16,A18,Th80;
          end;
          hence H19./.N19 is not trivial;
        end;
        suppose
A88:      j=i+1; then
A89:      H19 = N2 by A72,A11,A7,FINSEQ_5:73,XXREAL_0:2;
A91:      N19 = s1.(i+1) by A8,A75,A88,FINSEQ_5:74;
          now
            assume H19./.N19 is trivial;
            then the carrier of N1 = (nat_hom N1)"(the carrier of H) by A18,A89
,A91,Th76;
            hence contradiction by A17,Th81;
          end;
          hence H19./.N19 is not trivial;
        end;
        suppose
A92:      i+1<j;
          set j9=j-1;
A93:      0+1<=i+1 by XREAL_1:6;
          then 0+1<j by A92,XXREAL_0:2;
          then
A94:      0+1-1<j-1 by XREAL_1:9;
          then reconsider j9 as Element of NAT by INT_1:3;
A95:      j+1-1<=len s2-1 by A71,XREAL_1:9;
          i+1+1<=j by A92,NAT_1:13;
          then
A96:      i+1+1-1<=j-1 by XREAL_1:9;
          1<=j9+1 by A92,A93,XXREAL_0:2;
          then
A97:      j9+1 in dom s1 by A22,A95,FINSEQ_3:25;
          0+j9<1+j9 by XREAL_1:6;
          then
A98:      i+1 <= j9+1 by A96,XXREAL_0:2;
A99:      s2.(j+1) = s1.(j9+1) by A22,A98,A95,FINSEQ_5:74;
A100:     j-1<=len s2-1 by A73,XREAL_1:9;
          0+1<=j9 by A94,NAT_1:13;
          then
A101:     j9 in dom s1 by A22,A100,FINSEQ_3:25;
          s2.j = s2.(j9+1)
            .= s1.j9 by A22,A96,A100,FINSEQ_5:74;
          hence H19./.N19 is not trivial by A72,A75,A74,A101,A97,A99;
        end;
      end;
      then
A102: s2 is strictly_decreasing;
      (dom s2) \ {i+1} c= dom s2 & s1 = Del(s2,i+1) by A13,Lm43,XBOOLE_1:36;
      then s2 is_finer_than s1;
      hence contradiction by A3,A23,A102;
    end;
  end;
  now
    assume
A103: for i st i in dom the_series_of_quotients_of s1 holds (
    the_series_of_quotients_of s1).i is strict simple GroupWithOperators of O;
    assume
A104: not s1 is jordan_holder;
    per cases by A104;
    suppose
      s1 is not strictly_decreasing;
      then not for i st i in dom s1 & i+1 in dom s1 for H1,N1 st H1=s1.i & N1
      =s1.(i+1) holds H1./.N1 is not trivial;
      then consider i,H1,N1 such that
A105: i in dom s1 and
A106: i+1 in dom s1 and
A107: H1=s1.i & N1=s1.(i+1) and
A108: H1./.N1 is trivial;
A109: i+1 <= len s1 by A106,FINSEQ_3:25;
A110: 1 <= i by A105,FINSEQ_3:25;
      then 1+1 <= i+1 by XREAL_1:6;
      then 1+1 <= len s1 by A109,XXREAL_0:2;
      then
A111: len s1 > 1 by NAT_1:13;
      then len the_series_of_quotients_of s1 + 1 = len s1 by Def33;
      then len the_series_of_quotients_of s1 = len s1 - 1;
      then i+1-1 <= len the_series_of_quotients_of s1 by A109,XREAL_1:9;
      then i in Seg len the_series_of_quotients_of s1 by A110;
      then
A112: i in dom the_series_of_quotients_of s1 by FINSEQ_1:def 3;
      then (the_series_of_quotients_of s1).i=H1./.N1 by A107,A111,Def33;
      then H1./.N1 is strict simple GroupWithOperators of O by A103,A112;
      hence contradiction by A108,Def13;
    end;
    suppose
      ex s2 st s2<>s1 & s2 is strictly_decreasing & s2 is_finer_than s1;
      then consider s2 such that
A113: s2<>s1 and
A114: s2 is strictly_decreasing and
A115: s2 is_finer_than s1;
      consider i,j such that
A116: i in dom s1 and
A117: i in dom s2 and
A118: i+1 in dom s1 and
A119: i+1 in dom s2 and
A120: j in dom s2 & i+1<j and
A121: s1.i=s2.i and
A122: s1.(i+1)<>s2.(i+1) and
A123: s1.(i+1)=s2.j by A1,A113,A114,A115,Th100;
      reconsider H1=s1.i,H2=s1.(i+1),H=s2.(i+1) as Element of
      the_stable_subgroups_of G by A116,A118,A119,FINSEQ_2:11;
      reconsider H1,H2,H as strict StableSubgroup of G by Def11;
      reconsider H2 as strict normal StableSubgroup of H1 by A116,A118,Def28;
      reconsider H as strict normal StableSubgroup of H1 by A117,A119,A121
,Def28;
      reconsider H29=H2 as normal StableSubgroup of H by A119,A120,A123,Th40
,Th101;
      reconsider J = H./.H29 as strict normal StableSubgroup of H1./.H2 by Th44
;
A124: now
        assume J = (Omega).(H1./.H2);
        then
A125:   the carrier of H = union Cosets H2 by Th22;
        then
A126:   H = H1 by Lm4,Th22;
        then reconsider H1 as strict normal StableSubgroup of H;
        H1 = (Omega).H by A125,Lm4,Th22;
        then H./.H1 is trivial by Th57;
        hence contradiction by A114,A117,A119,A121,A126;
      end;
      reconsider H3 = the HGrWOpStr of H2 as strict normal StableSubgroup of H
      by A119,A120,A123,Th40,Th101;
      now
        assume J = (1).(H1./.H2);
        then union Cosets H3 = union {1_(H1./.H2)} by Def8;
        then the carrier of H = union {1_(H1./.H2)} by Th22;
        then the carrier of H = 1_(H1./.H2) by ZFMISC_1:25;
        then the carrier of H = carr H2 by Th43;
        hence contradiction by A122,Lm4;
      end;
      then
A127: H1./.H2 is not simple GroupWithOperators of O by A124,Def13;
      i+1 in Seg len s1 by A118,FINSEQ_1:def 3;
      then
A128: i+1 <= len s1 by FINSEQ_1:1;
      i in Seg len s1 by A116,FINSEQ_1:def 3;
      then
A129: 1 <= i by FINSEQ_1:1;
      then 1+1 <= i+1 by XREAL_1:6;
      then 1+1 <= len s1 by A128,XXREAL_0:2;
      then
A130: len s1 > 1 by NAT_1:13;
      then len the_series_of_quotients_of s1 + 1 = len s1 by Def33;
      then len the_series_of_quotients_of s1 = len s1 - 1;
      then i+1-1 <= len the_series_of_quotients_of s1 by A128,XREAL_1:9;
      then i in Seg len the_series_of_quotients_of s1 by A129;
      then
A131: i in dom the_series_of_quotients_of s1 by FINSEQ_1:def 3;
      then (the_series_of_quotients_of s1).i=H1./.H2 by A130,Def33;
      hence contradiction by A103,A127,A131;
    end;
  end;
  hence thesis by A2;
end;

theorem Th111:
  1<=i & i<=len s1-1 implies s1.i is strict StableSubgroup of G &
  s1.(i+1) is strict StableSubgroup of G
proof
  assume that
A1: 1<=i and
A2: i<=len s1-1;
A3: 0+i<=1+i by XREAL_1:6;
A4: i+1<=len s1-1+1 by A2,XREAL_1:6;
  then i<=len s1 by A3,XXREAL_0:2;
  then i in Seg len s1 by A1;
  then i in dom s1 by FINSEQ_1:def 3;
  then s1.i is Element of the_stable_subgroups_of G by FINSEQ_2:11;
  hence s1.i is strict StableSubgroup of G by Def11;
  1<=i+1 by A1,A3,XXREAL_0:2;
  then i+1 in Seg len s1 by A4;
  then i+1 in dom s1 by FINSEQ_1:def 3;
  then s1.(i+1) is Element of the_stable_subgroups_of G by FINSEQ_2:11;
  hence thesis by Def11;
end;

theorem Th112:
  1<=i & i<=len s1-1 & H1=s1.i & H2=s1.(i+1) implies H2 is normal
  StableSubgroup of H1
proof
  assume that
A1: 1<=i and
A2: i<=len s1-1;
A3: i+1<=len s1-1+1 by A2,XREAL_1:6;
A4: 0+i<=1+i by XREAL_1:6;
  then 1<=i+1 by A1,XXREAL_0:2;
  then i+1 in Seg len s1 by A3;
  then
A5: i+1 in dom s1 by FINSEQ_1:def 3;
  i<=len s1 by A4,A3,XXREAL_0:2;
  then i in Seg len s1 by A1;
  then
A6: i in dom s1 by FINSEQ_1:def 3;
  assume H1=s1.i & H2=s1.(i+1);
  hence thesis by A5,A6,Def28;
end;

theorem Th113:
  s1 is_equivalent_with s1
proof
  per cases;
  suppose
    s1 is empty;
    hence thesis;
  end;
  suppose
A1: s1 is not empty;
    set f1=the_series_of_quotients_of s1;
    now
      set p = id dom f1;
      reconsider p as Function of dom f1,dom f1;
      p is onto;
      then reconsider p as Permutation of dom f1;
      take p;
A2:   now
        let H1,H2 be GroupWithOperators of O;
        let i,j;
        assume
A3:     i in dom f1 & j=p".i;
A4:     p" = p by FUNCT_1:45;
        assume H1=f1.i & H2=f1.j;
        hence H1,H2 are_isomorphic by A3,A4,FUNCT_1:18;
      end;
      thus f1,f1 are_equivalent_under p,O by A2;
    end;
    hence thesis by A1,Th108;
  end;
end;

theorem Th114:
  (len s1<=1 or len s2<=1) & len s1<=len s2 implies s2 is_finer_than s1
proof
  assume
A1: len s1<=1 or len s2<=1;
  assume
A2: len s1<=len s2;
  then
A3: len s1 <=1 by A1,XXREAL_0:2;
  per cases;
  suppose
A4: len s1=1;
    then
A5: s1 = <* s1.1 *> by FINSEQ_1:40;
    now
      reconsider D=Seg len s2 as non empty set by A2,A4;
      set x={1};
      take x;
      set f=s2;
      set p=<*1*>;
      dom f = Seg len s2 & rng f c= the_stable_subgroups_of G by FINSEQ_1:def 3
;
      then reconsider f as Function of D, the_stable_subgroups_of G by
FUNCT_2:2;
A6:   1 in Seg len s2 by A2,A4;
      then 1 in dom s2 by FINSEQ_1:def 3;
      hence x c= dom s2 by ZFMISC_1:31;
      {1} c= D by A6,ZFMISC_1:31;
      then rng p c= D by FINSEQ_1:38;
      then reconsider p as FinSequence of D by FINSEQ_1:def 4;
      Sgm x = p & f * p = <* f.1 *> by FINSEQ_2:35,FINSEQ_3:44;
      then s2 * Sgm x = <* (Omega).G *> by Def28;
      hence s1 = s2 * Sgm x by A5,Def28;
    end;
    hence thesis;
  end;
  suppose
    len s1<>1;
    then len s1<0+1 by A3,XXREAL_0:1;
    then
A7: s1={} by NAT_1:13;
    now
      set x={};
      take x;
      thus x c= dom s2;
      thus s1 = s2 * Sgm x by A7,FINSEQ_3:43;
    end;
    hence thesis;
  end;
end;

theorem Th115:
  s1 is_equivalent_with s2 & s1 is jordan_holder implies s2 is jordan_holder
proof
  assume
A1: s1 is_equivalent_with s2;
  assume
A2: s1 is jordan_holder;
  per cases;
  suppose
A3: len s1<=0+1;
    per cases by A3,NAT_1:25;
    suppose
A4:   len s1=0;
      then len s2=0 by A1;
      then
A5:   s2 = {};
      s1={} by A4;
      hence thesis by A2,A5;
    end;
    suppose
A6:   len s1=1;
      then
A7:   s1.1=(1).G by Def28;
A8:   len s2=1 by A1,A6;
      s1 = <* s1.1 *> by A6,FINSEQ_1:40
        .= <* s2.1 *> by A7,A8,Def28
        .= s2 by A8,FINSEQ_1:40;
      hence thesis by A2;
    end;
  end;
  suppose
A9: len s1>1;
    set f2 = the_series_of_quotients_of s2;
    set f1 = the_series_of_quotients_of s1;
A10: s1 is not empty by A9;
A11: len s2>1 by A1,A9;
    then s2 is not empty;
    then consider
    p be Permutation of dom the_series_of_quotients_of s1 such that
A12: the_series_of_quotients_of s1,the_series_of_quotients_of s2
    are_equivalent_under p,O by A1,A10,Th108;
A13: len f1 = len f2 by A12;
    now
      let j;
      set i=p.j;
      set H1=f1.i;
      set H2=f2.j;
      assume
A14:  j in dom f2;
      then
A15:  f2.j in rng f2 by FUNCT_1:3;
A16:  dom f1 = Seg len f1 by FINSEQ_1:def 3
        .= dom f2 by A12,FINSEQ_1:def 3;
      then
A17:  p.j in dom f2 by A14,FUNCT_2:5;
      then reconsider i as Element of NAT;
      p.j in Seg len f2 by A17,FINSEQ_1:def 3;
      then
A18:  i in dom f1 by A13,FINSEQ_1:def 3;
      then f1.i in rng f1 by FUNCT_1:3;
      then reconsider H1,H2 as strict GroupWithOperators of O by A15,Th102;
      i in dom f1 & j=p".i by A14,A16,FUNCT_2:5,26;
      then
A19:  H1,H2 are_isomorphic by A12;
      H1 is strict simple GroupWithOperators of O by A2,A9,A18,Th110;
      hence f2.j is strict simple GroupWithOperators of O by A19,Th82;
    end;
    hence thesis by A11,Th110;
  end;
end;

Lm44: for k,l being Nat st k in Seg l & len s1>1 & len s2>1 & l=(len s1-1)*(
len s2-1)+1 holds k=(len s1-1)*(len s2-1)+1 or ex i,j st k=(i-1)*(len s2-1)+j &
1<=i & i<=len s1-1 & 1<=j & j<=len s2-1
proof
  let k,l be Nat;
  set l9 = len s1-1;
  set l99 = len s2-1;
  assume
A1: k in Seg l;
  then
A2: k<=l by FINSEQ_1:1;
  assume that
A3: len s1>1 and
A4: len s2>1 and
A5: l=(len s1-1)*(len s2-1)+1;
  assume not k = (len s1-1)*(len s2-1)+1;
  then
A6: k<l by A2,A5,XXREAL_0:1;
  len s2+1>1+1 by A4,XREAL_1:6;
  then len s2>=2 by NAT_1:13;
  then
A7: len s2-1>=2-1 by XREAL_1:9;
  len s1-1>1-1 by A3,XREAL_1:9;
  then reconsider l9 as Element of NAT by INT_1:3;
A8: len s2-1>1-1 by A4,XREAL_1:9;
  then reconsider l99 as Element of NAT by INT_1:3;
A9: k = (k div l99)*l99 + (k mod l99) by A8,NAT_D:2;
  per cases;
  suppose
A10: k mod l99=0;
    set i=k div l99;
    set j=l99;
    take i,j;
    thus k = (i-1)*(len s2-1)+j by A9,A10;
    i>0 by A1,A9,A10,FINSEQ_1:1;
    then i+1>0+1 by XREAL_1:6;
    hence 1<=i by NAT_1:13;
    i*l99<=(len s1-1)*l99 by A5,A6,A9,A10,INT_1:7;
    then i*l99/l99<=(len s1-1)*l99/l99 by XREAL_1:72;
    then i<=(len s1-1)*l99/l99 by A8,XCMPLX_1:89;
    hence i<=len s1-1 by A8,XCMPLX_1:89;
    thus thesis by A7;
  end;
  suppose
A11: k mod l99<>0;
    set i=k div l99+1;
    set j=k mod l99;
    take i,j;
    thus k = (i-1)*(len s2-1)+j by A8,NAT_D:2;
    0+1<=k div l99+1 by XREAL_1:6;
    hence 1<=i;
    k+1<=l by A6,INT_1:7;
    then
A12: k+1-1<=l-1 by XREAL_1:9;
    k mod l99 + l99*(k div l99)>=0+l99*(k div l99) by XREAL_1:6;
    then
A13: (k div l99)*l99<=k by A8,NAT_D:2;
    k<>l9*l99 by A11;
    then k<(len s1-1)*l99 by A5,A12,XXREAL_0:1;
    then (k div l99)*l99<(len s1-1)*l99 by A13,XXREAL_0:2;
    then (k div l99)*l99/l99<(len s1-1)*l99/l99 by A8,XREAL_1:74;
    then k div l99<(len s1-1)*l99/l99 by A8,XCMPLX_1:89;
    then k div l99<len s1-1 by A8,XCMPLX_1:89;
    hence i<=len s1-1 by INT_1:7;
    j+1>0+1 by A11,XREAL_1:6;
    hence 1<=j by NAT_1:13;
    thus thesis by A8,NAT_D:1;
  end;
end;

Lm45: for i1,j1,i2,j2 being Nat, s1,s2 st len s2>1 & (i1-1)*(len s2-1)+j1=(i2-
1)*(len s2-1)+j2 & 1<=i1 & 1<=j1 & j1<=len s2-1 & 1<=i2 & 1<=j2 & j2<=len s2-1
holds j1=j2 & i1=i2
proof
  let i1,j1,i2,j2 be Nat;
  let s1,s2;
  set l99 = len s2-1;
  set i19 = i1-1;
  set i29 = i2-1;
  assume len s2>1;
  then
A1: len s2-1>1-1 by XREAL_1:9;
  then reconsider l99 as Element of NAT by INT_1:3;
A2: l99/l99=1 by A1,XCMPLX_1:60;
  assume
A3: (i1-1)*(len s2-1)+j1=(i2-1)*(len s2-1)+j2;
  assume that
A4: 1<=i1 and
A5: 1<=j1 and
A6: j1<=len s2-1;
  i1-1>=1-1 by A4,XREAL_1:9;
  then reconsider i19 as Element of NAT by INT_1:3;
  assume that
A7: 1<=i2 and
A8: 1<=j2 and
A9: j2<=len s2-1;
  i2-1>=1-1 by A7,XREAL_1:9;
  then reconsider i29 as Element of NAT by INT_1:3;
A10: j1 mod l99 = (i19*l99+j1) mod l99 by NAT_D:21
    .= (i29*l99+j2) mod l99 by A3
    .= j2 mod l99 by NAT_D:21;
A11: j1=j2
  proof
    per cases;
    suppose
A12:  j1=l99;
      assume j2<>j1;
      then j2<l99 by A9,A12,XXREAL_0:1;
      then j2 = j1 mod l99 by A10,NAT_D:24;
      hence contradiction by A8,A12,NAT_D:25;
    end;
    suppose
      j1<>l99;
      then j1<l99 by A6,XXREAL_0:1;
      then
A13:  j1 = j2 mod l99 by A10,NAT_D:24;
      per cases;
      suppose
        j2=l99;
        hence thesis by A5,A13,NAT_D:25;
      end;
      suppose
        j2<>l99;
        then j2<l99 by A9,XXREAL_0:1;
        hence thesis by A13,NAT_D:24;
      end;
    end;
  end;
  hence j1=j2;
  i19*(l99/l99)=i29*l99/l99 by A3,A11,XCMPLX_1:74;
  then i19*1=i29*1 by A2,XCMPLX_1:74;
  hence thesis;
end;

Lm46: for k being Integer, i,j being Nat, s1,s2 st len s2>1 & k=(i-1)*(
len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 holds 1<=k & k<=(len s1-1
)*(len s2-1)
proof
  let k be Integer;
  let i,j be Nat;
  let s1,s2;
  set l9=len s1-1;
  set l99=len s2-1;
  assume len s2>1;
  then
A1: len s2-1>1-1 by XREAL_1:9;
  assume
A2: k=(i-1)*(len s2-1)+j;
  assume that
A3: 1<=i and
A4: i<=len s1-1;
  assume that
A5: 1<=j and
A6: j<=len s2-1;
  i-1<=l9-1 by A4,XREAL_1:9;
  then (i-1)*l99<=(l9-1)*l99 by A1,XREAL_1:64;
  then
A7: k<=l9*l99-1*l99+l99 by A2,A6,XREAL_1:7;
  1-1<=i-1 by A3,XREAL_1:9;
  then 0+1<=(i-1)*(len s2-1)+j by A5,A1,XREAL_1:7;
  hence thesis by A2,A7;
end;

begin :: The Schreier Refinement Theorem

definition
  let O,G,s1,s2;
  assume that
A1: len s1>1 and
A2: len s2>1;
  func the_schreier_series_of(s1,s2) -> CompositionSeries of G means
  :Def35:
for k,i,j being Nat, H1,H2,H3 being StableSubgroup of G holds (k=(i-1)*(len s2-
1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 & H1=s1.(i+1) & H2=s1.i & H3=s2.
j implies it.k = H1"\/"(H2/\H3)) & (k=(len s1-1)*(len s2-1) + 1 implies it.k =
  (1).G) & len it = (len s1-1)*(len s2-1) + 1;
  existence
  proof
    len s2-1>1-1 by A2,XREAL_1:9;
    then reconsider l99 = len s2-1 as Element of NAT by INT_1:3;
    len s2+1>1+1 by A2,XREAL_1:6;
    then len s2>=2 by NAT_1:13;
    then
A3: len s2-1>=2-1 by XREAL_1:9;
    len s1-1>1-1 by A1,XREAL_1:9;
    then reconsider l9 = len s1-1 as Element of NAT by INT_1:3;
    defpred P[set,object] means
for i,j being Nat, H1,H2,H3 being StableSubgroup
of G holds ($1=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 &
H1=s1.(i+1) & H2=s1.i & H3=s2.j implies $2 = H1"\/"(H2/\H3)) & ($1=(len s1-1)*(
    len s2-1) + 1 implies $2 = (1).G);
    len s2-1>1-1 by A2,XREAL_1:9;
    then
A4: l99/l99=1 by XCMPLX_1:60;
    len s1+1>1+1 by A1,XREAL_1:6;
    then len s1>=2 by NAT_1:13;
    then
A5: len s1-1>=2-1 by XREAL_1:9;
    then
A6: (len s1-1)*(len s2-1)+1>=0+1 by A3,XREAL_1:6;
    reconsider l=(len s1-1)*(len s2-1)+1 as Element of NAT by A5,A3,INT_1:3;
A7: 1 in Seg l by A6;
A8: for k being Nat st k=(len s1-1)*(len s2-1)+1 holds not ex i,j st k=(i
    -1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1
    proof
      let k be Nat;
      assume
A9:   k=(len s1-1)*(len s2-1)+1;
      assume ex i,j st k=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j
      <=len s2-1;
      then consider i,j such that
A10:  k=(i-1)*(len s2-1)+j and
A11:  1<=i and
A12:  i<=len s1-1 and
A13:  1<=j and
A14:  j<=len s2-1;
      set i9 = i-1;
      i-1>=1-1 by A11,XREAL_1:9;
      then reconsider i9 as Element of NAT by INT_1:3;
A15:  1 mod l99 = (l9*l99+1) mod l99 by NAT_D:21
        .= (i9*l99+j) mod l99 by A9,A10
        .= j mod l99 by NAT_D:21;
      j=1
      proof
        per cases;
        suppose
A16:      j=l99;
          assume j<>1;
          then 1<l99 by A13,A16,XXREAL_0:1;
          then 1 = j mod l99 by A15,NAT_D:24;
          hence contradiction by A16,NAT_D:25;
        end;
        suppose
          j<>l99;
          then j<l99 by A14,XXREAL_0:1;
          then
A17:      j mod l99 = j by NAT_D:24;
          per cases;
          suppose
            1=l99;
            hence thesis by A13,A14,XXREAL_0:1;
          end;
          suppose
A18:        1<>l99;
            1<=l99 by A13,A14,XXREAL_0:2;
            then 1<l99 by A18,XXREAL_0:1;
            hence thesis by A15,A17,NAT_D:24;
          end;
        end;
      end;
      then
A19:  l9*(l99/l99)=i9*l99/l99 by A9,A10,XCMPLX_1:74;
      l99/l99=1 by A13,A14,XCMPLX_1:60;
      then
A20:  l9*1=i9*1 by A19,XCMPLX_1:74;
      -1+i<0+i by XREAL_1:6;
      hence contradiction by A12,A20;
    end;
A21: for k being Nat st k in Seg l ex x being object st P[k,x]
    proof
      let k be Nat;
      assume
A22:  k in Seg l;
      per cases by A1,A2,A22,Lm44;
      suppose
A23:    ex i,j st k=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j &
        j<=len s2-1;
        then consider i,j such that
A24:    k=(i-1)*(len s2-1)+j and
A25:    1<=i and
A26:    i<=len s1-1 and
A27:    1<=j & j<=len s2-1;
        reconsider H1=s1.(i+1),H2=s1.i,H3=s2.j as StableSubgroup of G by A25
,A26,A27,Th111;
        take x=H1"\/"(H2/\H3);
        now
          let i1,j1 be Nat;
          let H1,H2,H3 be StableSubgroup of G;
          thus k=(i1-1)*(len s2-1)+j1 & 1<=i1 & i1<=len s1-1 & 1<=j1 & j1<=len
          s2-1 & H1=s1.(i1+1) & H2=s1.i1 & H3=s2.j1 implies x = H1"\/"(H2/\H3)
          proof
            assume that
A28:        k=(i1-1)*(len s2-1)+j1 and
A29:        1<=i1 and
            i1<=len s1-1 and
A30:        1<=j1 & j1<=len s2-1;
            assume
A31:        H1=s1.(i1+1) & H2=s1.i1 & H3=s2.j1;
            i=i1 by A2,A24,A25,A27,A28,A29,A30,Lm45;
            hence thesis by A24,A28,A31;
          end;
          assume k=(len s1-1)*(len s2-1) + 1;
          hence x = (1).G by A8,A23;
        end;
        hence thesis;
      end;
      suppose
A32:    k=(len s1-1)*(len s2-1)+1;
        take (1).G;
        thus thesis by A8,A32;
      end;
    end;
    consider f be FinSequence such that
A33: dom f = Seg l & for k being Nat st k in Seg l holds P[k,f.k] from
    FINSEQ_1:sch 1(A21);
    for k being Nat st k in dom f holds f.k in the_stable_subgroups_of G
    proof
      let k be Nat;
      assume
A34:  k in dom f;
      then
A35:  for i,j being Nat, H1,H2,H3 being StableSubgroup of G holds (k=(i-1
)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 & H1=s1.(i+1) & H2=s1.
      i & H3=s2.j implies f.k = H1"\/"(H2/\H3)) & (k=(len s1-1)*(len s2-1) + 1
      implies f.k = (1).G) by A33;
      per cases by A1,A2,A33,A34,Lm44;
      suppose
        ex i,j st k=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j &
        j<=len s2-1;
        then consider i,j such that
A36:    k=(i-1)*(len s2-1)+j and
A37:    1<=i & i<=len s1-1 & 1<=j & j<=len s2-1;
        reconsider H1=s1.(i+1),H2=s1.i,H3=s2.j as StableSubgroup of G by A37
,Th111;
        f.k = H1"\/"(H2/\H3) by A33,A34,A36,A37;
        hence thesis by Def11;
      end;
      suppose
        k=(len s1-1)*(len s2-1)+1;
        hence thesis by A35,Def11;
      end;
    end;
    then reconsider f as FinSequence of the_stable_subgroups_of G by
FINSEQ_2:12;
    l in Seg l by A6;
    then P[l,f.l] by A33;
    then
A38: f.(len f)=(1).G by A33,FINSEQ_1:def 3;
A39: for i,s1,H st 1<=i & i<=len s1-1 & H=s1.i holds s1.(i+1) is normal
    StableSubgroup of H
    proof
      let i,s1,H;
      assume that
A40:  1<=i and
A41:  i<=len s1-1;
A42:  0+i<=1+i by XREAL_1:6;
A43:  i+1<=len s1-1+1 by A41,XREAL_1:6;
      then i<=len s1 by A42,XXREAL_0:2;
      then i in Seg len s1 by A40;
      then
A44:  i in dom s1 by FINSEQ_1:def 3;
      reconsider H1=s1.i,H2=s1.(i+1) as StableSubgroup of G by A40,A41,Th111;
      assume
A45:  H=s1.i;
      1<=i+1 by A40,A42,XXREAL_0:2;
      then i+1 in Seg len s1 by A43;
      then i+1 in dom s1 by FINSEQ_1:def 3;
      then H2 is normal StableSubgroup of H1 by A44,Def28;
      hence thesis by A45;
    end;
A46: for k being Nat st k in dom f & k+1 in dom f for H1,H2 st H1=f.k &
    H2=f.(k+1) holds H2 is normal StableSubgroup of H1
    proof
      let k be Nat;
      assume
A47:  k in dom f;
      set k9=k+1;
      assume
A48:  k+1 in dom f;
      then k+1<=l by A33,FINSEQ_1:1;
      then k<>l by NAT_1:13;
      then consider i,j such that
A49:  k=(i-1)*(len s2-1)+j and
A50:  1<=i and
A51:  i<=len s1-1 and
A52:  1<=j and
A53:  j<=len s2-1 by A1,A2,A33,A47,Lm44;
      reconsider H19=s1.(i+1),H29=s1.i,H39=s2.j as strict StableSubgroup of G
      by A50,A51,A52,A53,Th111;
A54:  f.k = H19"\/"(H29/\H39) by A33,A47,A49,A50,A51,A52,A53;
      let H1,H2;
      assume
A55:  H1 = f.k;
A56:  H19 is normal StableSubgroup of H29 by A39,A50,A51;
      assume
A57:  H2 = f.(k+1);
      per cases;
      suppose
A58:    j<>len s2-1;
        reconsider j9=j+1 as Nat;
        j<len s2-1 by A53,A58,XXREAL_0:1;
        then
A59:    j9<=len s2-1 by INT_1:7;
        reconsider H399 = s2.j9 as strict StableSubgroup of G by A52,A53,Th111;
        0+j<=1+j by XREAL_1:6;
        then
A60:    1<=j9 by A52,XXREAL_0:2;
A61:    H399 is normal StableSubgroup of H39 by A39,A52,A53;
        k9=(i-1)*(len s2-1)+j9 by A49;
        then H2 = H19"\/"(H29/\H399) by A33,A48,A50,A51,A57,A59,A60;
        hence thesis by A55,A56,A54,A61,Th92;
      end;
      suppose
A62:    j=len s2-1;
        per cases;
        suppose
A63:      i<>len s1-1;
          set i9=i+1;
A64:      0+i9<=1+i9 by XREAL_1:6;
          set j9=1;
          H19 is StableSubgroup of H1 by A55,A54,Th35;
          then H19 is Subgroup of H1 by Def7;
          then
A65:      the carrier of H19 c= the carrier of H1 by GROUP_2:def 5;
          1+1<=i+1 by A50,XREAL_1:6;
          then
A66:      1<=i9 by XXREAL_0:2;
          i<l9 by A51,A63,XXREAL_0:1;
          then
A67:      i+1<=l9 by NAT_1:13;
          then
A68:      i9+1<=len s1-1+1 by XREAL_1:6;
          then i9<=len s1 by A64,XXREAL_0:2;
          then i9 in Seg len s1 by A66;
          then
A69:      i9 in dom s1 by FINSEQ_1:def 3;
          len s2-1>1-1 by A2,XREAL_1:9;
          then
A70:      l99>=0+1 by NAT_1:13;
          then reconsider H199=s1.(i9+1),H299=s1.i9,H399=s2.j9 as strict
          StableSubgroup of G by A67,A66,Th111;
          1<=i9+1 by A66,A64,XXREAL_0:2;
          then i9+1 in Seg len s1 by A68;
          then i9+1 in dom s1 by FINSEQ_1:def 3;
          then
A71:      H199 is normal StableSubgroup of H299 by A69,Def28;
          now
            let x be object;
            H299 is Subgroup of G by Def7;
            then
A72:        the carrier of H299 c= the carrier of G by GROUP_2:def 5;
            assume x in the carrier of H299;
            hence x in the carrier of (Omega).G by A72;
          end;
          then the carrier of H299 c= the carrier of (Omega).G;
          then
A73:      the carrier of H299 = (the carrier of H299) /\ (the carrier of
          (Omega).G) by XBOOLE_1:28;
A74:      H399 = (Omega).G by Def28;
          k9=(i9-1)*(len s2-1)+j9 by A49,A62;
          then H2 = H199"\/"(H299/\H399) by A33,A48,A57,A67,A66,A70;
          then H2 = H199"\/"H299 by A74,A73,Th18;
          then
A75:      H2 = H19 by A71,Th36;
          H29/\H39 is StableSubgroup of H29 by Lm33;
          then
A76:      H1 is StableSubgroup of H29 by A55,A56,A54,Th37;
          then
A77:      H1 is Subgroup of H29 by Def7;
          now
            let H9 be strict Subgroup of H1;
            assume
A78:        H9 = the multMagma of H2;
            now
              let a be Element of H1;
              reconsider a9=a as Element of H29 by A76,Th2;
              now
                reconsider H1s9=the multMagma of H19 as normal Subgroup of H29
                by A56,Lm6;
                let x be object;
                assume x in a * H9;
                then consider b be Element of H1 such that
A79:            x = a * b and
A80:            b in H9 by GROUP_2:103;
                set b9=b;
A81:            H1 is Subgroup of H29 by A76,Def7;
                then reconsider b9 as Element of H29 by GROUP_2:42;
                x = a9 * b9 by A79,A81,GROUP_2:43;
                then a9 * H1s9 c= H1s9 * a9 & x in a9 * H1s9 by A75,A78,A80,
GROUP_2:103,GROUP_3:118;
                then consider b99 be Element of H29 such that
A82:            x = b99 * a9 and
A83:            b99 in H1s9 by GROUP_2:104;
                b99 in the carrier of H19 by A83,STRUCT_0:def 5;
                then reconsider b99 as Element of H1 by A65;
                x = b99 * a by A77,A82,GROUP_2:43;
                hence x in H9 * a by A75,A78,A83,GROUP_2:104;
              end;
              hence a * H9 c= H9 * a;
            end;
            hence H9 is normal by GROUP_3:118;
          end;
          hence thesis by A55,A54,A75,Def10,Th35;
        end;
        suppose
          i=len s1-1;
          then H2 = (1).G by A33,A48,A49,A57,A62
            .= (1).H1 by Th15;
          hence thesis;
        end;
      end;
    end;
    len s1-1>1-1 & len s2-1>1-1 by A1,A2,XREAL_1:9;
    then (len s1-1)*(len s2-1)>0*(len s2-1) by XREAL_1:68;
    then 1<>l;
    then consider i,j such that
A84: 1=(i-1)*(len s2-1)+j and
A85: 1<=i and
A86: i<=len s1-1 and
A87: 1<=j and
A88: j<=len s2-1 by A1,A2,A7,Lm44;
    set i9 = i-1;
    i-1>=1-1 by A85,XREAL_1:9;
    then reconsider i9 as Element of NAT by INT_1:3;
    reconsider H1=s1.(i+1),H2=s1.i,H3=s2.j as StableSubgroup of G by A85,A86
,A87,A88,Th111;
    1 mod l99=(i9*l99+j) mod l99 by A84;
    then
A89: 1 mod l99=j mod l99 by NAT_D:21;
A90: j=1
    proof
      per cases;
      suppose
        l99=1;
        hence thesis by A87,A88,XXREAL_0:1;
      end;
      suppose
        l99<>1;
        then 1<l99 by A3,XXREAL_0:1;
        then
A91:    1=j mod l99 by A89,NAT_D:14;
        then j<>l99 by NAT_D:25;
        then l99>j by A88,XXREAL_0:1;
        hence thesis by A91,NAT_D:24;
      end;
    end;
    then
A92: H3=(Omega).G by Def28;
    i9*l99/l99=0/l99 by A84,A90;
    then i9*1=0 by A4,XCMPLX_1:74;
    then
A93: H2=(Omega).G by Def28;
    f.1 = H1"\/"(H2/\H3) by A33,A7,A84,A85,A86,A87,A88;
    then f.1 = H1"\/"(Omega).G by A93,A92,Th19;
    then f.1=(Omega).G by Th34;
    then reconsider f as CompositionSeries of G by A38,A46,Def28;
    take f;
    let k,i,j be Nat, H1,H2,H3 be StableSubgroup of G;
A94: for k,i,j being Nat st k=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1
    <=j & j<=len s2-1 holds k in Seg l
    proof
      let k,i,j be Nat;
      assume
A95:  k=(i-1)*(len s2-1)+j;
      assume that
A96:  1<=i and
A97:  i<=len s1-1;
      assume that
A98:  1<=j and
A99:  j<=len s2-1;
      i-1<=l9-1 by A97,XREAL_1:9;
      then (i-1)*l99<=(l9-1)*l99 by XREAL_1:64;
      then 0+l9*l99<=1+l9*l99 & k<=l9*l99-1*l99+l99 by A95,A99,XREAL_1:7;
      then
A100: k<=(len s1-1)*(len s2-1)+1 by XXREAL_0:2;
      1-1<=i-1 by A96,XREAL_1:9;
      then 0+1<=(i-1)*(len s2-1)+j by A3,A98,XREAL_1:7;
      hence thesis by A95,A100;
    end;
    now
      assume that
A101: k=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 and
A102: H1=s1.(i+1) & H2=s1.i & H3=s2.j;
      k in Seg l by A94,A101;
      hence f.k = H1"\/"(H2/\H3) by A33,A101,A102;
    end;
    hence k=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 & H1=
    s1.(i+1) & H2=s1.i & H3=s2.j implies f.k = H1"\/"(H2/\H3);
    now
      assume
A103: k=(len s1-1)*(len s2-1) + 1;
      then k in Seg l by A6;
      hence f.k = (1).G by A33,A103;
    end;
    hence thesis by A33,FINSEQ_1:def 3;
  end;
  uniqueness
  proof
    let f1,f2 be CompositionSeries of G;
    assume
A104: for k,i,j being Nat, H1,H2,H3 being StableSubgroup of G holds (k
=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 & H1=s1.(i+1) &
H2=s1.i & H3=s2.j implies f1.k = H1"\/"(H2/\H3)) & (k=(len s1-1)*(len s2-1) + 1
    implies f1.k = (1).G) & len f1 = (len s1-1)*(len s2-1) + 1;
    assume
A105: for k,i,j being Nat, H1,H2,H3 being StableSubgroup of G holds (k
=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 & H1=s1.(i+1) &
H2=s1.i & H3=s2.j implies f2.k = H1"\/"(H2/\H3)) & (k=(len s1-1)*(len s2-1) + 1
    implies f2.k = (1).G) & len f2 = (len s1-1)*(len s2-1) + 1;
A106: now
      set l=len f1;
      let k be Nat;
      assume k in dom f1;
      then
A107: k in Seg l by FINSEQ_1:def 3;
      per cases by A1,A2,A104,A107,Lm44;
      suppose
        ex i,j st k=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j &
        j<=len s2-1;
        then consider i,j such that
A108:   k=(i-1)*(len s2-1)+j and
A109:   1<=i & i<=len s1-1 & 1<=j & j<=len s2-1;
        reconsider H1=s1.(i+1),H2=s1.i,H3=s2.j as StableSubgroup of G by A109
,Th111;
        f1.k=H1"\/"(H2/\H3) by A104,A108,A109;
        hence f1.k = f2.k by A105,A108,A109;
      end;
      suppose
A110:   k=(len s1-1)*(len s2-1)+1;
        then f1.k=(1).G by A104;
        hence f1.k = f2.k by A105,A110;
      end;
    end;
    dom f1 = Seg len f2 by A104,A105,FINSEQ_1:def 3
      .= dom f2 by FINSEQ_1:def 3;
    hence thesis by A106,FINSEQ_1:13;
  end;
end;

theorem Th116:
  len s1>1 & len s2>1 implies the_schreier_series_of(s1,s2) is_finer_than s1
proof
  assume that
A1: len s1>1 and
A2: len s2>1;
  now
    set rR=rng s1;
    set R=s1;
    set l=(len s1-1)*(len s2-1) + 1;
    set X = Seg len s1;
    set g={[k,(k-1)*(len s2-1)+1] where k is Element of NAT:1<=k & k<=len s1};
    now
      let x be object;
      assume x in g;
      then consider k be Element of NAT such that
A3:   [k,(k-1)*(len s2-1)+1] = x and
      1<=k and
      k<=len s1;
      set z=(k-1)*(len s2-1)+1;
      set y=k;
      reconsider y,z as object;
      take y,z;
      thus x = [y,z] by A3;
    end;
    then reconsider g as Relation by RELAT_1:def 1;
A4: now
      let y be object;
      assume y in rng g;
      then consider x being object such that
A5:   [x,y] in g by XTUPLE_0:def 13;
      consider k be Element of NAT such that
A6:   [k,(k-1)*(len s2-1)+1] = [x,y] and
      1<=k and
      k<=len s1 by A5;
      (k-1)*(len s2-1)+1=y by A6,XTUPLE_0:1;
      hence y in REAL by XREAL_0:def 1;
    end;
A7: now
      let x,y1,y2 be object;
      assume [x,y1] in g;
      then consider k be Element of NAT such that
A8:   [k,(k-1)*(len s2-1)+1] = [x,y1] and
      1<=k and
      k<=len s1;
A9:   k=x by A8,XTUPLE_0:1;
      assume [x,y2] in g;
      then consider k9 be Element of NAT such that
A10:  [k9,(k9-1)*(len s2-1)+1] = [x,y2] and
      1<=k9 and
      k9<=len s1;
      k9=x by A10,XTUPLE_0:1;
      hence y1=y2 by A8,A10,A9,XTUPLE_0:1;
    end;
    now
      let x be object;
      assume x in dom g;
      then consider y being object such that
A11:  [x,y] in g by XTUPLE_0:def 12;
      consider k be Element of NAT such that
A12:  [k,(k-1)*(len s2-1)+1] = [x,y] and
      1<=k and
      k<=len s1 by A11;
      k=x by A12,XTUPLE_0:1;
      hence x in NAT;
    end;
    then
A13: dom g c= NAT;
    reconsider g as Function by A7,FUNCT_1:def 1;
A14: rng g c= REAL by A4;
    reconsider f=g as PartFunc of dom g, rng g by RELSET_1:4;
    dom g c= REAL by A13,NUMBERS:19;
    then reconsider f as PartFunc of REAL,REAL by A14,RELSET_1:7;
    set dR=dom s1;
    set t=the_schreier_series_of(s1,s2);
    set fX = f.:X;
    take fX;
    reconsider R as Relation of dR,rR by FUNCT_2:1;
A15: (id dR)*R = R by FUNCT_2:17;
    len s2+1>1+1 by A2,XREAL_1:6;
    then len s2>=2 by NAT_1:13;
    then
A16: len s2-1>=2-1 by XREAL_1:9;
    len s1+1>1+1 by A1,XREAL_1:6;
    then len s1>=2 by NAT_1:13;
    then len s1-1>=2-1 by XREAL_1:9;
    then reconsider l as Element of NAT by A16,INT_1:3;
A17: len the_schreier_series_of(s1,s2) = l by A1,A2,Def35;
    then
A18: dom the_schreier_series_of(s1,s2) = Seg l by FINSEQ_1:def 3;
    len s2+1>1+1 by A2,XREAL_1:6;
    then len s2>=2 by NAT_1:13;
    then
A19: len s2-1>=2-1 by XREAL_1:9;
    now
      let y be object;
      assume y in fX;
      then consider x being object such that
A20:  [x,y] in g and
      x in X by RELAT_1:def 13;
      consider k be Element of NAT such that
A21:  [k,(k-1)*(len s2-1)+1]=[x,y] and
A22:  1<=k and
A23:  k<=len s1 by A20;
      reconsider y9=y as Integer by A21,XTUPLE_0:1;
A24:  k-1>=1-1 by A22,XREAL_1:9;
      then
A25:  y9>0 by A19,A21,XTUPLE_0:1;
      k-1<=len s1-1 by A23,XREAL_1:9;
      then
A26:  (k-1)*(len s2-1)<=(len s1-1)*(len s2-1) by A19,XREAL_1:64;
      (k-1)*(len s2-1)+1>=0+1 by A19,A24,XREAL_1:6;
      then
A27:  y9>=1 by A21,XTUPLE_0:1;
      reconsider y9 as Element of NAT by A25,INT_1:3;
      (k-1)*(len s2-1)+1=y by A21,XTUPLE_0:1;
      then y9<=l by A26,XREAL_1:6;
      hence y in Seg l by A27;
    end;
    then
A28: fX c= Seg l;
    hence fX c= dom the_schreier_series_of(s1,s2) by A17,FINSEQ_1:def 3;
    now
      let x be object;
      assume
A29:  x in X;
      then reconsider k=x as Element of NAT;
      set y=(k-1)*(len s2-1)+1;
      1<=k & k<=len s1 by A29,FINSEQ_1:1;
      then [x,y] in f;
      hence x in dom f by XTUPLE_0:def 12;
    end;
    then
A30: X c= dom f;
    then
A31: dom s1 c= dom f by FINSEQ_1:def 3;
    now
      let x be object;
      assume x in dom f;
      then consider y being object such that
A32:  [x,y] in f by XTUPLE_0:def 12;
      consider k be Element of NAT such that
A33:  [k,(k-1)*(len s2-1)+1] = [x,y] & 1<=k & k<=len s1 by A32;
      k in Seg len s1 & k=x by A33,XTUPLE_0:1;
      hence x in dom s1 by FINSEQ_1:def 3;
    end;
    then dom f c= dom s1;
    then
A34: dom s1 = dom f by A31,XBOOLE_0:def 10;
    then X = dom f by FINSEQ_1:def 3;
    then
A35: rng f c= Seg l by A28,RELAT_1:113;
    then
A36: dom s1 = dom(t*f) by A18,A34,RELAT_1:27;
A37: now
      let x be object;
      assume
A38:  x in dom s1;
      then [x,f.x] in f by A31,FUNCT_1:def 2;
      then consider i be Element of NAT such that
A39:  [i,(i-1)*(len s2-1)+1] = [x,f.x] and
A40:  1<=i and
A41:  i<=len s1;
      set k=(i-1)*(len s2-1)+1;
      (i-1)*(len s2-1)+1=f.x by A39,XTUPLE_0:1;
      then k in rng f by A31,A38,FUNCT_1:3;
      then k in Seg l by A35;
      then reconsider k as Element of NAT;
A42:  x in dom(t*f) by A18,A34,A35,A38,RELAT_1:27;
      per cases;
      suppose
A43:    i=len s1;
        (t*f).x = t.(f.x) by A42,FUNCT_1:12
          .= t.k by A39,XTUPLE_0:1
          .= (1).G by A1,A2,A43,Def35
          .= s1.(len s1) by Def28;
        hence s1.x = (t*f).x by A39,A43,XTUPLE_0:1;
      end;
      suppose
        i<>len s1;
        then i<len s1 by A41,XXREAL_0:1;
        then
A44:    i+1<=len s1 by NAT_1:13;
        then
A45:    i+1-1<=len s1-1 by XREAL_1:9;
A46:    s2.1=(Omega).G by Def28;
        then reconsider
        H1=s1.(i+1),H2=s1.i,H3=s2.1 as strict StableSubgroup of G
        by A40,A45,Th111;
        now
          let x be object;
          H2 is Subgroup of G by Def7;
          then
A47:      the carrier of H2 c= the carrier of G by GROUP_2:def 5;
          assume x in the carrier of H2;
          hence x in the carrier of (Omega).G by A47;
        end;
        then the carrier of H2 c= the carrier of (Omega).G;
        then
A48:    the carrier of H2 = (the carrier of H2) /\ (the carrier of H3)
        by A46,XBOOLE_1:28;
        len s2-1>1-1 by A2,XREAL_1:9;
        then
A49:    len s2-1>=0+1 by INT_1:7;
        0+i<=1+i by XREAL_1:6;
        then 1<=i+1 by A40,XXREAL_0:2;
        then i+1 in Seg len s1 by A44;
        then
A50:    i+1 in dom s1 by FINSEQ_1:def 3;
        i in Seg len s1 by A40,A41;
        then i in dom s1 by FINSEQ_1:def 3;
        then
A51:    H1 is normal StableSubgroup of H2 by A50,Def28;
        (t*f).x = t.(f.x) by A42,FUNCT_1:12
          .= t.k by A39,XTUPLE_0:1
          .= H1"\/"(H2/\H3) by A1,A2,A40,A45,A49,Def35
          .= H1"\/"H2 by A48,Th18
          .= H2 by A51,Th36;
        hence s1.x = (t*f).x by A39,XTUPLE_0:1;
      end;
    end;
    now
      let r1,r2 be Real;
      assume r1 in X /\ dom f;
      then r1 in dom f by XBOOLE_0:def 4;
      then [r1,f.r1] in f by FUNCT_1:1;
      then consider k9 be Element of NAT such that
A52:  [k9,(k9-1)*(len s2-1)+1]=[r1,f.r1] and
      1<=k9 and
      k9<=len s1;
      assume r2 in X /\ dom f;
      then r2 in dom f by XBOOLE_0:def 4;
      then [r2,f.r2] in f by FUNCT_1:1;
      then consider k99 be Element of NAT such that
A53:  [k99,(k99-1)*(len s2-1)+1]=[r2,f.r2] and
      1<=k99 and
      k99<=len s1;
A54:  k99=r2 by A53,XTUPLE_0:1;
      assume
A55:  r1<r2;
      k9=r1 by A52,XTUPLE_0:1;
      then k9-1<k99-1 by A55,A54,XREAL_1:9;
      then
A56:  (k9-1)*(len s2-1)<(k99-1)*(len s2-1) by A19,XREAL_1:68;
A57:  (k99-1)*(len s2-1)+1=f.r2 by A53,XTUPLE_0:1;
      (k9-1)*(len s2-1)+1=f.r1 by A52,XTUPLE_0:1;
      hence f.r1 < f.r2 by A57,A56,XREAL_1:6;
    end;
    then
A58: f|X is increasing by RFUNCT_2:20;
    now
      let y be object;
      assume y in f.:X;
      then consider x being object such that
A59:  [x,y] in g and
      x in X by RELAT_1:def 13;
      consider k be Element of NAT such that
A60:  [k,(k-1)*(len s2-1)+1]=[x,y] and
A61:  1<=k and
      k<=len s1 by A59;
      reconsider y9=y as Integer by A60,XTUPLE_0:1;
      (k-1)*(len s2-1)+1=y & k-1>=1-1 by A60,A61,XREAL_1:9,XTUPLE_0:1;
      then y9 in NAT & not y in {0} by A19,INT_1:3,TARSKI:def 1;
      hence y in NAT \ {0} by XBOOLE_0:def 5;
    end;
    then f.:X c= NAT \ {0};
    then the_schreier_series_of(s1,s2) * Sgm fX = the_schreier_series_of(s1,
    s2) * (f * Sgm X) by A30,A58,Lm37
      .= (the_schreier_series_of(s1,s2) * f) * Sgm X by RELAT_1:36
      .= s1 * Sgm X by A36,A37,FUNCT_1:2
      .= s1 * idseq len s1 by FINSEQ_3:48
      .= s1 * id Seg len s1 by FINSEQ_2:def 1
      .= s1 * id dom s1 by FINSEQ_1:def 3;
    hence s1 = the_schreier_series_of(s1,s2) * Sgm fX by A15;
  end;
  hence thesis;
end;

theorem Th117:
  len s1>1 & len s2>1 implies the_schreier_series_of(s1,s2)
  is_equivalent_with the_schreier_series_of(s2,s1)
proof
  assume that
A1: len s1>1 and
A2: len s2>1;
  set s21 = the_schreier_series_of(s2,s1);
A3: len s1-1>1-1 & len s2-1>1-1 by A1,A2,XREAL_1:9;
  set s12 = the_schreier_series_of(s1,s2);
A4: len s12 = (len s1-1)*(len s2-1) + 1 by A1,A2,Def35;
A5: len s21 = (len s1-1)*(len s2-1) + 1 by A1,A2,Def35;
  then
A6: s21 is not empty by A3;
  (len s1-1)*(len s2-1)>0*(len s2-1) by A3,XREAL_1:68;
  then
A7: (len s1-1)*(len s2-1)+1>0+1 by XREAL_1:6;
A8: now
    set p = {[(j-1)*(len s1-1)+i,(i-1)*(len s2-1)+j] where i,j is Element of
    NAT: 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1};
    now
      let x be object;
      assume x in p;
      then consider i,j be Element of NAT such that
A9:   [(j-1)*(len s1-1)+i,(i-1)*(len s2-1)+j]=x and
      1<=i and
      i<=len s1-1 and
      1<=j and
      j<=len s2-1;
      set z=(i-1)*(len s2-1)+j;
      set y=(j-1)*(len s1-1)+i;
      reconsider y,z as object;
      take y,z;
      thus x = [y,z] by A9;
    end;
    then reconsider p as Relation by RELAT_1:def 1;
    set X = dom the_series_of_quotients_of s12;
    set f1=the_series_of_quotients_of s12;
    set f2=the_series_of_quotients_of s21;
    now
      let x,y1,y2 be object;
      assume [x,y1] in p;
      then consider i1,j1 be Element of NAT such that
A10:  [(j1-1)*(len s1-1)+i1,(i1-1)*(len s2-1)+j1]=[x,y1] and
A11:  1<=i1 & i1<=len s1-1 & 1<=j1 and
      j1<=len s2-1;
A12:  (j1-1)*(len s1-1)+i1=x by A10,XTUPLE_0:1;
      assume [x,y2] in p;
      then consider i2,j2 be Element of NAT such that
A13:  [(j2-1)*(len s1-1)+i2,(i2-1)*(len s2-1)+j2]=[x,y2] and
A14:  1<=i2 & i2<=len s1-1 & 1<=j2 and
      j2<=len s2-1;
A15:  (j2-1)*(len s1-1)+i2=x by A13,XTUPLE_0:1;
      then j1=j2 by A1,A11,A14,A12,Lm45;
      hence y1=y2 by A10,A13,A12,A15,XTUPLE_0:1;
    end;
    then reconsider p as Function by FUNCT_1:def 1;
A16: len s12>1 by A1,A2,A7,Def35;
    then
A17: len f1 + 1= len s12 by Def33;
A18: len s12 = (len s1-1)*(len s2-1)+1 by A1,A2,Def35;
    now
      set l9=(len s1-1)*(len s2-1);
      reconsider l9 as Element of NAT by A3,INT_1:3;
      let y be object;
      assume
A19:  y in X;
      then reconsider k=y as Element of NAT;
A20:  y in Seg len f1 by A19,FINSEQ_1:def 3;
      then
A21:  1<=k by FINSEQ_1:1;
A22:  k<=(len s1-1)*(len s2-1) by A17,A18,A20,FINSEQ_1:1;
      0+(len s1-1)*(len s2-1)<=1+(len s1-1)*(len s2-1) by XREAL_1:6;
      then k<=l9+1 by A22,XXREAL_0:2;
      then
A23:  k in Seg(l9+1) by A21;
      k <> l9+1 by A22,NAT_1:13;
      then consider i,j be Nat such that
A24:  k=(i-1)*(len s2-1)+j & 1<=i & i<=len s1-1 & 1<=j & j<=len s2-1
      by A1,A2,A23,Lm44;
      reconsider j,i as Element of NAT by INT_1:3;
      set x=(j-1)*(len s1-1)+i;
      reconsider x as set;
      [x,y] in p by A24;
      hence y in rng p by XTUPLE_0:def 13;
    end;
    then
A25: X c= rng p;
A26: X = Seg len f1 by FINSEQ_1:def 3;
    now
      set l9=(len s1-1)*(len s2-1);
      reconsider l9 as Element of NAT by A3,INT_1:3;
      let x be object;
      assume
A27:  x in X;
      then reconsider k=x as Element of NAT;
A28:  k<=(len s1-1)*(len s2-1) by A17,A18,A26,A27,FINSEQ_1:1;
      0+(len s1-1)*(len s2-1)<=1+(len s1-1)*(len s2-1) by XREAL_1:6;
      then
A29:  k<=l9+1 by A28,XXREAL_0:2;
      1<=k by A26,A27,FINSEQ_1:1;
      then
A30:  k in Seg(l9+1) by A29;
      k <> l9+1 by A28,NAT_1:13;
      then consider j,i be Nat such that
A31:  k=(j-1)*(len s1-1)+i & 1<=j & j<=len s2-1 & 1<=i & i<=len s1-1
      by A1,A2,A30,Lm44;
      reconsider j,i as Element of NAT by INT_1:3;
      set y=(i-1)*(len s2-1)+j;
      reconsider y as set;
      [x,y] in p by A31;
      hence x in dom p by XTUPLE_0:def 12;
    end;
    then
A32: X c= dom p;
    now
      let y be object;
      set k=y;
      assume y in rng p;
      then consider x being object such that
A33:  [x,y] in p by XTUPLE_0:def 13;
      consider i,j be Element of NAT such that
A34:  [(j-1)*(len s1-1)+i,(i-1)*(len s2-1)+j]=[x,y] and
A35:  1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 by A33;
A36:  k=(i-1)*(len s2-1)+j by A34,XTUPLE_0:1;
      reconsider k as Integer by A34,XTUPLE_0:1;
      1<=k by A2,A35,A36,Lm46;
      then reconsider k as Element of NAT by INT_1:3;
      1<=k & k<=len f1 by A2,A17,A18,A35,A36,Lm46;
      hence y in X by A26;
    end;
    then rng p c= X;
    then
A37: rng p = X by A25,XBOOLE_0:def 10;
    now
      let x be object;
      set k=x;
      assume x in dom p;
      then consider y being object such that
A38:  [x,y] in p by XTUPLE_0:def 12;
      consider i,j be Element of NAT such that
A39:  [(j-1)*(len s1-1)+i,(i-1)*(len s2-1)+j]=[x,y] and
A40:  1<=i & i<=len s1-1 & 1<=j & j<=len s2-1 by A38;
A41:  k=(j-1)*(len s1-1)+i by A39,XTUPLE_0:1;
      reconsider k as Integer by A39,XTUPLE_0:1;
      1<=k by A1,A40,A41,Lm46;
      then reconsider k as Element of NAT by INT_1:3;
      1<=k & k<=len f1 by A1,A17,A18,A40,A41,Lm46;
      hence x in X by A26;
    end;
    then dom p c= X;
    then
A42: dom p = X by A32,XBOOLE_0:def 10;
    then reconsider p as Function of X,X by A37,FUNCT_2:1;
A43: p is onto by A37;
    now
      let x1,x2 be object;
      assume that
A44:  x1 in X and
A45:  x2 in X;
      assume
A46:  p.x1 = p.x2;
      [x1,p.x1] in p by A32,A44,FUNCT_1:def 2;
      then consider i1,j1 be Element of NAT such that
A47:  [(j1-1)*(len s1-1)+i1,(i1-1)*(len s2-1)+j1]=[x1,p.x1] and
A48:  1<=i1 and
      i1<=len s1-1 and
A49:  1<=j1 & j1<=len s2-1;
      [x2,p.x2] in p by A32,A45,FUNCT_1:def 2;
      then consider i2,j2 be Element of NAT such that
A50:  [(j2-1)*(len s1-1)+i2,(i2-1)*(len s2-1)+j2]=[x2,p.x2] and
A51:  1<=i2 and
      i2<=len s1-1 and
A52:  1<=j2 & j2<=len s2-1;
A53:  (i2-1)*(len s2-1)+j2=p.x2 by A50,XTUPLE_0:1;
A54:  (i1-1)*(len s2-1)+j1=p.x1 by A47,XTUPLE_0:1;
      then i1=i2 by A2,A46,A48,A49,A51,A52,A53,Lm45;
      hence x1 = x2 by A46,A47,A50,A54,A53,XTUPLE_0:1;
    end;
    then p is one-to-one by FUNCT_2:56;
    then reconsider p as Permutation of X by A43;
    take p;
A55: len s21>1 by A1,A2,A7,Def35;
    then
A56: len f2 + 1 = len s21 by Def33;
    now
      len s2+1>1+1 by A2,XREAL_1:6;
      then len s2>=2 by NAT_1:13;
      then
A57:  len s2-1>=2-1 by XREAL_1:9;
      set l=(len s1-1)*(len s2-1)+1;
      let H1,H2 be GroupWithOperators of O;
      let k1,k2 be Nat;
      assume that
A58:  k1 in dom f1 and
A59:  k2=p".k1;
      len s1+1>1+1 by A1,XREAL_1:6;
      then len s1>=2 by NAT_1:13;
      then len s1-1>=2-1 by XREAL_1:9;
      then reconsider l as Element of NAT by A57,INT_1:3;
      assume that
A60:  H1=f1.k1 and
A61:  H2=f2.k2;
A62:  len s12 = (len s1-1)*(len s2-1)+1 by A1,A2,Def35;
      0+(len s1-1)*(len s2-1)<=1+(len s1-1)*(len s2-1) by XREAL_1:6;
      then
A63:  Seg len f1 c= Seg l by A17,A62,FINSEQ_1:5;
A64:  k1 in Seg len f1 by A58,FINSEQ_1:def 3;
      then k1 <= len f1 by FINSEQ_1:1;
      then k1<>(len s1-1)*(len s2-1)+1 by A17,A62,NAT_1:13;
      then consider i,j be Nat such that
A65:  k1=(i-1)*(len s2-1)+j and
A66:  1<=i and
A67:  i<=len s1-1 and
A68:  1<=j and
A69:  j<=len s2-1 by A1,A2,A64,A63,Lm44;
      reconsider H=s1.i,K=s2.j,H9=s1.(i+1),K9=s2.(j+1) as strict
      StableSubgroup of G by A66,A67,A68,A69,Th111;
A70:  p".k1 in rng(p") by A58,FUNCT_2:4;
      p.k2 = k1 by A25,A58,A59,FUNCT_1:35;
      then [k2,k1] in p by A42,A59,A70,FUNCT_1:1;
      then consider i9,j9 be Element of NAT such that
A71:  [k2,k1]=[(j9-1)*(len s1-1)+i9,(i9-1)*(len s2-1)+j9] and
A72:  1<=i9 and
      i9<=len s1-1 and
A73:  1<=j9 & j9<=len s2-1;
      set JK=K9"\/"(K/\H9);
A74:  (i-1)*(len s2-1)+j=(i9-1)*(len s2-1)+j9 by A65,A71,XTUPLE_0:1;
      then
A75:  i=i9 by A2,A66,A68,A69,A72,A73,Lm45;
A76:  now
        per cases;
        suppose
A77:      i=len s1-1;
          per cases;
          suppose
A78:        j<>len s2-1;
            set j9=j+1;
A79:        0+j9<=1+j9 by XREAL_1:6;
            set i9=1;
            set H3 = s1.i9;
            H9 = (1).G by A77,Def28;
            then
A80:        JK = K9"\/"(1).G by Th21
              .= K9 by Th33;
            set H2 = s2.j9;
            set H1 = s2.(j9+1);
            1+1<=j+1 by A68,XREAL_1:6;
            then
A81:        1<=j9 by XXREAL_0:2;
            j<len s2-1 by A69,A78,XXREAL_0:1;
            then
A82:        j+1<=len s2-1 by INT_1:7;
            then
A83:        j9+1<=len s2-1+1 by XREAL_1:6;
            then j9<=len s2 by A79,XXREAL_0:2;
            then j9 in Seg len s2 by A81;
            then
A84:        j9 in dom s2 by FINSEQ_1:def 3;
            len s1-1>1-1 by A1,XREAL_1:9;
            then
A85:        len s1-1>=0+1 by INT_1:7;
            then reconsider
            H1,H2,H3 as strict StableSubgroup of G by A82,A81,Th111;
A86:        H3 = (Omega).G by Def28;
            now
              let x be object;
              H2 is Subgroup of G by Def7;
              then
A87:          the carrier of H2 c= the carrier of G by GROUP_2:def 5;
              assume x in the carrier of H2;
              hence x in the carrier of (Omega).G by A87;
            end;
            then the carrier of H2 c= the carrier of (Omega).G;
            then
A88:        the carrier of H2 = (the carrier of H2) /\ (the carrier of
            (Omega).G) by XBOOLE_1:28;
            k2+1=(j9-1)*(len s1-1)+i9 by A71,A74,A75,A77,XTUPLE_0:1;
            then s21.(k2+1)=H1"\/"(H2/\H3) by A1,A2,A82,A81,A85,Def35;
            then
A89:        s21.(k2+1) = H1"\/"H2 by A86,A88,Th18;
            1<=j9+1 by A81,A79,XXREAL_0:2;
            then j9+1 in Seg len s2 by A83;
            then j9+1 in dom s2 by FINSEQ_1:def 3;
            then H1 is normal StableSubgroup of H2 by A84,Def28;
            hence s21.(k2+1)=JK by A89,A80,Th36;
          end;
          suppose
A90:        j=len s2-1;
            then
A91:        K9 = (1).G by Def28;
            H9 = (1).G by A77,Def28;
            then
A92:        JK = (1).G"\/"(1).G by A91,Th21
              .= (1).G by Th33;
            k2 = (len s1-1)*(len s2-1) by A71,A74,A75,A77,A90,XTUPLE_0:1;
            hence s21.(k2+1)=JK by A1,A2,A92,Def35;
          end;
        end;
        suppose
          i<>len s1-1;
          then i<len s1-1 by A67,XXREAL_0:1;
          then
A93:      i+1<=len s1-1 by INT_1:7;
          set i9=i+1;
          set k29=k2+1;
          1+1<=i+1 by A66,XREAL_1:6;
          then
A94:      1<=i+1 by XXREAL_0:2;
          k2+1=(j-1)*(len s1-1)+i+1 by A71,A74,A75,XTUPLE_0:1;
          then k29=(j-1)*(len s1-1)+i9;
          hence s21.(k2+1)=JK by A1,A2,A68,A69,A93,A94,Def35;
        end;
      end;
      rng(p") c= X;
      then rng(p") c= Seg len f1 by FINSEQ_1:def 3;
      then p".k1 in Seg len f1 by A70;
      then
A95:  k2 in dom f2 by A4,A5,A17,A56,A59,FINSEQ_1:def 3;
A96:  H9 is normal StableSubgroup of H & K9 is normal StableSubgroup of
      K by A66,A67,A68,A69,Th112;
      then reconsider JK as normal StableSubgroup of K9"\/"(K/\H) by Th92;
      k2=(j-1)*(len s1-1)+i by A71,A74,A75,XTUPLE_0:1;
      then s21.k2=K9"\/"(K/\H) by A1,A2,A66,A67,A68,A69,Def35;
      then
A97:  H2 = (K9"\/"(K/\H))./.JK by A55,A61,A95,A76,Def33;
      set JH=H9"\/"(H/\K9);
A98:  now
        per cases;
        suppose
A99:      j=len s2-1;
          per cases;
          suppose
A100:       i<>len s1-1;
            set j9=1;
            set H3 = s2.j9;
            set i9=i+1;
A101:       0+i9<=1+i9 by XREAL_1:6;
            set H2 = s1.i9;
            set H1 = s1.(i9+1);
            1+1<=i+1 by A66,XREAL_1:6;
            then
A102:       1<=i9 by XXREAL_0:2;
            i<len s1-1 by A67,A100,XXREAL_0:1;
            then
A103:       i+1<=len s1-1 by INT_1:7;
            then
A104:       i9+1<=len s1-1+1 by XREAL_1:6;
            then i9<=len s1 by A101,XXREAL_0:2;
            then i9 in Seg len s1 by A102;
            then
A105:       i9 in dom s1 by FINSEQ_1:def 3;
            len s2-1>1-1 by A2,XREAL_1:9;
            then
A106:       len s2-1>=0+1 by INT_1:7;
            then reconsider
            H1,H2,H3 as strict StableSubgroup of G by A103,A102,Th111;
A107:       H3 = (Omega).G by Def28;
            now
              let x be object;
              H2 is Subgroup of G by Def7;
              then
A108:         the carrier of H2 c= the carrier of G by GROUP_2:def 5;
              assume x in the carrier of H2;
              hence x in the carrier of (Omega).G by A108;
            end;
            then the carrier of H2 c= the carrier of (Omega).G;
            then
A109:       the carrier of H2 = (the carrier of H2) /\ (the carrier of
            (Omega).G) by XBOOLE_1:28;
            k1+1=(i9-1)*(len s2-1)+j9 by A65,A99;
            then s12.(k1+1)=H1"\/"(H2/\H3) by A1,A2,A103,A102,A106,Def35;
            then
A110:       s12.(k1+1) = H1"\/"H2 by A107,A109,Th18;
            1<=i9+1 by A102,A101,XXREAL_0:2;
            then i9+1 in Seg len s1 by A104;
            then i9+1 in dom s1 by FINSEQ_1:def 3;
            then
A111:       H1 is normal StableSubgroup of H2 by A105,Def28;
            JH = H9"\/"(H/\(1).G) by A99,Def28
              .= H9"\/"(1).G by Th21
              .= H9 by Th33;
            hence s12.(k1+1)=JH by A110,A111,Th36;
          end;
          suppose
A112:       i=len s1-1;
            then
A113:       k1 = (len s1-1)*(len s2-1) by A65,A99;
A114:       K9 = (1).G by A99,Def28;
            H9 = (1).G by A112,Def28;
            then JH = (1).G"\/"(1).G by A114,Th21
              .= (1).G by Th33;
            hence s12.(k1+1)=JH by A1,A2,A113,Def35;
          end;
        end;
        suppose
          j<>len s2-1;
          then j<len s2-1 by A69,XXREAL_0:1;
          then
A115:     j+1<=len s2-1 by INT_1:7;
          set j9=j+1;
          set k19=k1+1;
          1+1<=j+1 by A68,XREAL_1:6;
          then
A116:     1<=j+1 by XXREAL_0:2;
          k19=(i-1)*(len s2-1)+j9 by A65;
          hence s12.(k1+1)=JH by A1,A2,A66,A67,A115,A116,Def35;
        end;
      end;
      reconsider JH as normal StableSubgroup of H9"\/"(H/\K) by A96,Th92;
      s12.k1=H9"\/"(H/\K) by A1,A2,A65,A66,A67,A68,A69,Def35;
      then H1 = (H9"\/"(H/\K))./.JH by A16,A58,A60,A98,Def33;
      hence H1,H2 are_isomorphic by A96,A97,Th93;
    end;
    hence f1,f2 are_equivalent_under p,O by A4,A5,A17,A56;
  end;
  s12 is not empty by A3,A4;
  hence thesis by A6,A8,Th108;
end;

:: ALG I.4.7 Theorem 5

::$N Schreier Refinement Theorem
theorem Th118:
  ex s19,s29 st s19 is_finer_than s1 & s29 is_finer_than s2 & s19
  is_equivalent_with s29
proof
  per cases;
  suppose
A1: len s1>1 & len s2>1;
    set s29=the_schreier_series_of(s2,s1);
    set s19=the_schreier_series_of(s1,s2);
    take s19,s29;
    thus s19 is_finer_than s1 & s29 is_finer_than s2 by A1,Th116;
    thus thesis by A1,Th117;
  end;
  suppose
A2: len s1<=1 or len s2<=1;
    per cases;
    suppose
A3:   len s1<=len s2;
      set s29=s2;
      set s19=s2;
      take s19,s29;
      thus s19 is_finer_than s1 & s29 is_finer_than s2 by A2,A3,Th114;
      thus thesis by Th113;
    end;
    suppose
A4:   len s1>len s2;
      set s29=s1;
      set s19=s1;
      take s19,s29;
      thus s19 is_finer_than s1 & s29 is_finer_than s2 by A2,A4,Th114;
      thus thesis by Th113;
    end;
  end;
end;

begin :: The Jordan-H\"older Theorem
:: ALG I.4.7 Theorem 6

::$N Jordan-H\"older Theorem
theorem
  s1 is jordan_holder & s2 is jordan_holder implies s1 is_equivalent_with s2
proof
  assume
A1: s1 is jordan_holder;
  assume
A2: s2 is jordan_holder;
  per cases;
  suppose
A3: s1 is empty;
    now
      now
        set x={};
        take x;
        thus x c= dom s2;
        thus s1 = s2 * Sgm x by A3,FINSEQ_3:43;
      end;
      then
A4:   s2 is_finer_than s1;
      assume
A5:   s2 is not empty;
      s2 is strictly_decreasing by A2;
      hence contradiction by A1,A3,A5,A4;
    end;
    hence thesis by A3;
  end;
  suppose
A6: s1 is not empty;
    defpred P[Nat] means for s19,s29 st s19 is not empty & s29 is not empty &
len s19=len s1+$1 & s19 is_finer_than s1 & s29 is_finer_than s2 & ex p being
Permutation of dom the_series_of_quotients_of s19 st the_series_of_quotients_of
s19,the_series_of_quotients_of s29 are_equivalent_under p,O holds ex p being
Permutation of dom the_series_of_quotients_of s1 st the_series_of_quotients_of
    s1,the_series_of_quotients_of s2 are_equivalent_under p,O;
A7: now
      assume
A8:   s2 is empty;
      now
        set x={};
        take x;
        thus x c= dom s1;
        thus s2 = s1 * Sgm x by A8,FINSEQ_3:43;
      end;
      then
A9:   s1 is_finer_than s2;
      s1 is strictly_decreasing by A1;
      hence contradiction by A2,A6,A8,A9;
    end;
A10: for n st P[n] holds P[n+1]
    proof
      let n;
      assume
A11:  P[n];
      now
        let s19,s29;
        assume that
        s19 is not empty and
        s29 is not empty;
        assume
A12:    len s19 = len s1 + n+1;
        set f1=the_series_of_quotients_of s19;
        assume
A13:    s19 is_finer_than s1;
        n+1+len s1>0+len s1 by XREAL_1:6;
        then consider i such that
A14:    i in dom f1 and
A15:    for H st H=f1.i holds H is trivial by A1,A12,A13,Th109;
        reconsider s199=Del(s19,i) as FinSequence of the_stable_subgroups_of G
        by FINSEQ_3:105;
A16:    i in dom s19 by A14,A15,Th103;
A17:    i+1 in dom s19 & s19.i=s19.(i+1) by A14,A15,Th103;
        then reconsider s199 as CompositionSeries of G by A16,Th94;
A18:    the_series_of_quotients_of s199= Del(f1,i) by A16,A17,Th104;
        set f2=the_series_of_quotients_of s29;
        assume
A19:    s29 is_finer_than s2;
        given p be Permutation of dom f1 such that
A20:    f1,f2 are_equivalent_under p,O;
        set H1=f1.i;
A21:    f1.i in rng f1 by A14,FUNCT_1:3;
        set j = p".i;
        reconsider j as Nat;
        set H2=f2.j;
        reconsider s299=Del(s29,j) as FinSequence of the_stable_subgroups_of G
        by FINSEQ_3:105;
        rng(p") c= dom f1;
        then
A22:    rng(p") c= Seg len f1 by FINSEQ_1:def 3;
A23:    len f1 = len f2 by A20;
        (p").i in rng(p") by A14,FUNCT_2:4;
        then (p").i in Seg len f1 by A22;
        then
A24:    j in dom f2 by A23,FINSEQ_1:def 3;
        then f2.j in rng f2 by FUNCT_1:3;
        then reconsider H1,H2 as strict GroupWithOperators of O by A21,Th102;
A25:    H1 is trivial by A15;
        H1,H2 are_isomorphic by A20,A14;
        then
A26:    for H st H=f2.j holds H is trivial by A25,Th58;
        then
A27:    j in dom s29 & j+1 in dom s29 by A24,Th103;
A28:    s29.j=s29.(j+1) by A24,A26,Th103;
        then reconsider s299 as CompositionSeries of G by A27,Th94;
A29:    s299 is_finer_than s2 & s299 is not empty by A2,A7,A19,A27,A28,Th97
,Th99;
A30:    len s199 = len s1 + n by A12,A16,FINSEQ_3:109;
        the_series_of_quotients_of s299= Del(f2,j) by A27,A28,Th104;
        then
A31:    ex p be Permutation of dom the_series_of_quotients_of s199 st
        the_series_of_quotients_of s199,the_series_of_quotients_of s299
        are_equivalent_under p,O by A20,A14,A18,Th106;
        s199 is_finer_than s1 & s199 is not empty by A1,A6,A13,A16,A17,Th97
,Th99;
        hence thesis by A11,A30,A29,A31;
      end;
      hence thesis;
    end;
A32: P[0]
    proof
      let s19,s29;
      assume
A33:  s19 is not empty & s29 is not empty;
      assume
A34:  len s19 = len s1+0 & s19 is_finer_than s1;
      assume
A35:  s29 is_finer_than s2;
      given p be Permutation of dom the_series_of_quotients_of s19 such that
A36:  the_series_of_quotients_of s19,the_series_of_quotients_of s29
      are_equivalent_under p,O;
A37:  s19 is_equivalent_with s29 by A33,A36,Th108;
      s19=s1 by A34,Th96;
      then s29 is jordan_holder by A1,A37,Th115;
      then s29=s2 by A2,A35;
      then s1 is_equivalent_with s2 by A34,A37,Th96;
      hence thesis by A6,A7,Th108;
    end;
A38: for n holds P[n] from NAT_1:sch 2(A32,A10);
    consider s19,s29 such that
A39: s19 is_finer_than s1 and
A40: s29 is_finer_than s2 and
A41: s19 is_equivalent_with s29 by Th118;
A42: s19 is not empty by A6,A39;
A43: ex n st len s19 = len s1 + n by A39,Th95;
A44: s29 is not empty by A7,A40;
    then ex p9 being Permutation of dom the_series_of_quotients_of s19 st
    the_series_of_quotients_of s19,the_series_of_quotients_of s29
    are_equivalent_under p9,O by A41,A42,Th108;
    then ex p being Permutation of dom the_series_of_quotients_of s1 st
    the_series_of_quotients_of s1,the_series_of_quotients_of s2
    are_equivalent_under p,O by A39,A40,A42,A44,A38,A43;
    hence thesis by A6,A7,Th108;
  end;
end;

begin :: Appendix

theorem
  for P,R being Relation holds P = (rng P)|`R iff P~ = (R~)|(dom (P~)) by Lm35;

theorem
  for X being set, P,R being Relation holds P*(R|X) = (X|`P)*R by Lm36;

theorem
  for n being Nat, X being set, f being PartFunc of REAL, REAL st X c=
Seg n & X c= dom f & f|X is increasing & f.:X c= NAT \ {0} holds Sgm(f.:X) = f
  * Sgm X by Lm37;

theorem
  for y being set, i,n being Nat st y c= Seg(n+1) & i in Seg(n+1) & not
  i in y holds ex x st Sgm x = Sgm(Seg(n+1)\{i})" * Sgm y & x c= Seg n by Lm38;

theorem
  for D being non empty set, f being FinSequence of D, p being Element
  of D, n being Nat st n in dom f holds f = Del(Ins(f,n,p),n+1) by Lm43;

theorem
  for G,H being Group, F1 being FinSequence of the carrier of G, F2
  being FinSequence of the carrier of H, I being FinSequence of INT, f being
Homomorphism of G,H st (for k being Nat st k in dom F1 holds F2.k = f.(F1.k)) &
  len F1 = len I & len F2 = len I holds f.(Product(F1 |^ I)) = Product(F2 |^ I)
  by Lm23;