Article GROUP_2, MML version 4.99.1005

:: GROUP_2:th 3
theorem
for b1 being non empty 1-sorted
for b2 being Element of bool the carrier of b1
      st b1 is finite
   holds b2 is finite;

:: GROUP_2:funcnot 1 => GROUP_2:func 1
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Element of bool the carrier of a1;
  func A2 " -> Element of bool the carrier of a1 equals
    {b1 " where b1 is Element of the carrier of a1: b1 in a2};
end;

:: GROUP_2:def 1
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1 holds
   b2 " = {b3 " where b3 is Element of the carrier of b1: b3 in b2};

:: GROUP_2:th 5
theorem
for b1 being set
for b2 being non empty Group-like associative multMagma
for b3 being Element of bool the carrier of b2 holds
      b1 in b3 "
   iff
      ex b4 being Element of the carrier of b2 st
         b1 = b4 " & b4 in b3;

:: GROUP_2:th 6
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1 holds
   {b2} " = {b2 "};

:: GROUP_2:th 7
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1 holds
{b2,b3} " = {b2 ",b3 "};

:: GROUP_2:th 8
theorem
for b1 being non empty Group-like associative multMagma holds
   ({} the carrier of b1) " = {};

:: GROUP_2:th 9
theorem
for b1 being non empty Group-like associative multMagma holds
   ([#] the carrier of b1) " = the carrier of b1;

:: GROUP_2:th 10
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1 holds
      b2 <> {}
   iff
      b2 " <> {};

:: GROUP_2:funcnot 2 => GROUP_2:func 2
definition
  let a1 be non empty multMagma;
  let a2, a3 be Element of bool the carrier of a1;
  func A2 * A3 -> Element of bool the carrier of a1 equals
    {b1 * b2 where b1 is Element of the carrier of a1, b2 is Element of the carrier of a1: b1 in a2 & b2 in a3};
end;

:: GROUP_2:def 2
theorem
for b1 being non empty multMagma
for b2, b3 being Element of bool the carrier of b1 holds
b2 * b3 = {b4 * b5 where b4 is Element of the carrier of b1, b5 is Element of the carrier of b1: b4 in b2 & b5 in b3};

:: GROUP_2:th 12
theorem
for b1 being set
for b2 being non empty multMagma
for b3, b4 being Element of bool the carrier of b2 holds
   b1 in b3 * b4
iff
   ex b5, b6 being Element of the carrier of b2 st
      b1 = b5 * b6 & b5 in b3 & b6 in b4;

:: GROUP_2:th 13
theorem
for b1 being non empty multMagma
for b2, b3 being Element of bool the carrier of b1 holds
   b2 <> {} & b3 <> {}
iff
   b2 * b3 <> {};

:: GROUP_2:th 14
theorem
for b1 being non empty multMagma
for b2, b3, b4 being Element of bool the carrier of b1
      st b1 is associative
   holds (b2 * b3) * b4 = b2 * (b3 * b4);

:: GROUP_2:th 15
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of bool the carrier of b1 holds
(b2 * b3) " = b3 " * (b2 ");

:: GROUP_2:th 16
theorem
for b1 being non empty multMagma
for b2, b3, b4 being Element of bool the carrier of b1 holds
b2 * (b3 \/ b4) = (b2 * b3) \/ (b2 * b4);

:: GROUP_2:th 17
theorem
for b1 being non empty multMagma
for b2, b3, b4 being Element of bool the carrier of b1 holds
(b2 \/ b3) * b4 = (b2 * b4) \/ (b3 * b4);

:: GROUP_2:th 18
theorem
for b1 being non empty multMagma
for b2, b3, b4 being Element of bool the carrier of b1 holds
b2 * (b3 /\ b4) c= (b2 * b3) /\ (b2 * b4);

:: GROUP_2:th 19
theorem
for b1 being non empty multMagma
for b2, b3, b4 being Element of bool the carrier of b1 holds
(b2 /\ b3) * b4 c= (b2 * b4) /\ (b3 * b4);

:: GROUP_2:th 20
theorem
for b1 being non empty multMagma
for b2 being Element of bool the carrier of b1 holds
   ({} the carrier of b1) * b2 = {} & b2 * {} the carrier of b1 = {};

:: GROUP_2:th 21
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1
      st b2 <> {}
   holds ([#] the carrier of b1) * b2 = the carrier of b1 & b2 * [#] the carrier of b1 = the carrier of b1;

:: GROUP_2:th 22
theorem
for b1 being non empty multMagma
for b2, b3 being Element of the carrier of b1 holds
{b2} * {b3} = {b2 * b3};

:: GROUP_2:th 23
theorem
for b1 being non empty multMagma
for b2, b3, b4 being Element of the carrier of b1 holds
{b2} * {b3,b4} = {b2 * b3,b2 * b4};

:: GROUP_2:th 24
theorem
for b1 being non empty multMagma
for b2, b3, b4 being Element of the carrier of b1 holds
{b2,b3} * {b4} = {b2 * b4,b3 * b4};

:: GROUP_2:th 25
theorem
for b1 being non empty multMagma
for b2, b3, b4, b5 being Element of the carrier of b1 holds
{b2,b3} * {b4,b5} = {b2 * b4,b2 * b5,b3 * b4,b3 * b5};

:: GROUP_2:th 26
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1
      st (for b3, b4 being Element of the carrier of b1
               st b3 in b2 & b4 in b2
            holds b3 * b4 in b2) &
         (for b3 being Element of the carrier of b1
               st b3 in b2
            holds b3 " in b2)
   holds b2 * b2 = b2;

:: GROUP_2:th 27
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1
      st for b3 being Element of the carrier of b1
              st b3 in b2
           holds b3 " in b2
   holds b2 " = b2;

:: GROUP_2:th 28
theorem
for b1 being non empty multMagma
for b2, b3 being Element of bool the carrier of b1
      st for b4, b5 being Element of the carrier of b1
              st b4 in b2 & b5 in b3
           holds b4 * b5 = b5 * b4
   holds b2 * b3 = b3 * b2;

:: GROUP_2:th 29
theorem
for b1 being non empty multMagma
for b2, b3 being Element of bool the carrier of b1
      st b1 is non empty Group-like associative commutative multMagma
   holds b2 * b3 = b3 * b2;

:: GROUP_2:th 30
theorem
for b1 being non empty Group-like associative commutative multMagma
for b2, b3 being Element of bool the carrier of b1 holds
(b2 * b3) " = b2 " * (b3 ");

:: GROUP_2:funcnot 3 => GROUP_2:func 3
definition
  let a1 be non empty multMagma;
  let a2 be Element of the carrier of a1;
  let a3 be Element of bool the carrier of a1;
  func A2 * A3 -> Element of bool the carrier of a1 equals
    {a2} * a3;
end;

:: GROUP_2:def 3
theorem
for b1 being non empty multMagma
for b2 being Element of the carrier of b1
for b3 being Element of bool the carrier of b1 holds
   b2 * b3 = {b2} * b3;

:: GROUP_2:funcnot 4 => GROUP_2:func 4
definition
  let a1 be non empty multMagma;
  let a2 be Element of the carrier of a1;
  let a3 be Element of bool the carrier of a1;
  func A3 * A2 -> Element of bool the carrier of a1 equals
    a3 * {a2};
end;

:: GROUP_2:def 4
theorem
for b1 being non empty multMagma
for b2 being Element of the carrier of b1
for b3 being Element of bool the carrier of b1 holds
   b3 * b2 = b3 * {b2};

:: GROUP_2:th 33
theorem
for b1 being set
for b2 being non empty multMagma
for b3 being Element of bool the carrier of b2
for b4 being Element of the carrier of b2 holds
      b1 in b4 * b3
   iff
      ex b5 being Element of the carrier of b2 st
         b1 = b4 * b5 & b5 in b3;

:: GROUP_2:th 34
theorem
for b1 being set
for b2 being non empty multMagma
for b3 being Element of bool the carrier of b2
for b4 being Element of the carrier of b2 holds
      b1 in b3 * b4
   iff
      ex b5 being Element of the carrier of b2 st
         b1 = b5 * b4 & b5 in b3;

:: GROUP_2:th 35
theorem
for b1 being non empty multMagma
for b2, b3 being Element of bool the carrier of b1
for b4 being Element of the carrier of b1
      st b1 is associative
   holds (b4 * b2) * b3 = b4 * (b2 * b3);

:: GROUP_2:th 36
theorem
for b1 being non empty multMagma
for b2, b3 being Element of bool the carrier of b1
for b4 being Element of the carrier of b1
      st b1 is associative
   holds (b2 * b4) * b3 = b2 * (b4 * b3);

:: GROUP_2:th 37
theorem
for b1 being non empty multMagma
for b2, b3 being Element of bool the carrier of b1
for b4 being Element of the carrier of b1
      st b1 is associative
   holds (b2 * b3) * b4 = b2 * (b3 * b4);

:: GROUP_2:th 38
theorem
for b1 being non empty multMagma
for b2 being Element of bool the carrier of b1
for b3, b4 being Element of the carrier of b1
      st b1 is associative
   holds (b3 * b4) * b2 = b3 * (b4 * b2);

:: GROUP_2:th 39
theorem
for b1 being non empty multMagma
for b2 being Element of bool the carrier of b1
for b3, b4 being Element of the carrier of b1
      st b1 is associative
   holds (b3 * b2) * b4 = b3 * (b2 * b4);

:: GROUP_2:th 40
theorem
for b1 being non empty multMagma
for b2 being Element of bool the carrier of b1
for b3, b4 being Element of the carrier of b1
      st b1 is associative
   holds (b2 * b3) * b4 = b2 * (b3 * b4);

:: GROUP_2:th 41
theorem
for b1 being non empty multMagma
for b2 being Element of the carrier of b1 holds
   ({} the carrier of b1) * b2 = {} & b2 * {} the carrier of b1 = {};

:: GROUP_2:th 42
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1 holds
   ([#] the carrier of b1) * b2 = the carrier of b1 & b2 * [#] the carrier of b1 = the carrier of b1;

:: GROUP_2:th 43
theorem
for b1 being non empty Group-like multMagma
for b2 being Element of bool the carrier of b1 holds
   (1_ b1) * b2 = b2 & b2 * 1_ b1 = b2;

:: GROUP_2:th 44
theorem
for b1 being non empty Group-like multMagma
for b2 being Element of the carrier of b1
for b3 being Element of bool the carrier of b1
      st b1 is non empty Group-like associative commutative multMagma
   holds b2 * b3 = b3 * b2;

:: GROUP_2:modenot 1 => GROUP_2:mode 1
definition
  let a1 be non empty Group-like multMagma;
  mode Subgroup of A1 -> non empty Group-like multMagma means
    the carrier of it c= the carrier of a1 & the multF of it = (the multF of a1) || the carrier of it;
end;

:: GROUP_2:dfs 5
definiens
  let a1, a2 be non empty Group-like multMagma;
To prove
     a2 is Subgroup of a1
it is sufficient to prove
  thus the carrier of a2 c= the carrier of a1 &
     the multF of a2 = (the multF of a1) || the carrier of a2;

:: GROUP_2:def 5
theorem
for b1, b2 being non empty Group-like multMagma holds
   b2 is Subgroup of b1
iff
   the carrier of b2 c= the carrier of b1 &
    the multF of b2 = (the multF of b1) || the carrier of b2;

:: GROUP_2:th 48
theorem
for b1 being non empty Group-like multMagma
for b2 being Subgroup of b1
      st b1 is finite
   holds b2 is finite;

:: GROUP_2:th 49
theorem
for b1 being set
for b2 being non empty Group-like multMagma
for b3 being Subgroup of b2
      st b1 in b3
   holds b1 in b2;

:: GROUP_2:th 50
theorem
for b1 being non empty Group-like multMagma
for b2 being Subgroup of b1
for b3 being Element of the carrier of b2 holds
   b3 in b1;

:: GROUP_2:th 51
theorem
for b1 being non empty Group-like multMagma
for b2 being Subgroup of b1
for b3 being Element of the carrier of b2 holds
   b3 is Element of the carrier of b1;

:: GROUP_2:th 52
theorem
for b1 being non empty Group-like multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1
for b5, b6 being Element of the carrier of b4
      st b5 = b2 & b6 = b3
   holds b5 * b6 = b2 * b3;

:: GROUP_2:condreg 1
registration
  let a1 be non empty Group-like associative multMagma;
  cluster -> associative (Subgroup of a1);
end;

:: GROUP_2:th 53
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   1_ b2 = 1_ b1;

:: GROUP_2:th 54
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
1_ b2 = 1_ b3;

:: GROUP_2:th 55
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   1_ b1 in b2;

:: GROUP_2:th 56
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
1_ b2 in b3;

:: GROUP_2:th 57
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1
for b4 being Element of the carrier of b3
      st b4 = b2
   holds b4 " = b2 ";

:: GROUP_2:th 58
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   inverse_op b2 = (inverse_op b1) | the carrier of b2;

:: GROUP_2:th 59
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1
      st b2 in b4 & b3 in b4
   holds b2 * b3 in b4;

:: GROUP_2:th 60
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1
      st b2 in b3
   holds b2 " in b3;

:: GROUP_2:exreg 1
registration
  let a1 be non empty Group-like associative multMagma;
  cluster non empty strict unital Group-like associative Subgroup of a1;
end;

:: GROUP_2:th 61
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1
      st b2 <> {} &
         (for b3, b4 being Element of the carrier of b1
               st b3 in b2 & b4 in b2
            holds b3 * b4 in b2) &
         (for b3 being Element of the carrier of b1
               st b3 in b2
            holds b3 " in b2)
   holds ex b3 being strict Subgroup of b1 st
      the carrier of b3 = b2;

:: GROUP_2:th 62
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
      st b1 is non empty Group-like associative commutative multMagma
   holds b2 is commutative;

:: GROUP_2:condreg 2
registration
  let a1 be non empty Group-like associative commutative multMagma;
  cluster -> commutative (Subgroup of a1);
end;

:: GROUP_2:th 63
theorem
for b1 being non empty Group-like associative multMagma holds
   b1 is Subgroup of b1;

:: GROUP_2:th 64
theorem
for b1, b2 being non empty Group-like associative multMagma
      st b1 is Subgroup of b2 & b2 is Subgroup of b1
   holds multMagma(#the carrier of b1,the multF of b1#) = multMagma(#the carrier of b2,the multF of b2#);

:: GROUP_2:th 65
theorem
for b1, b2, b3 being non empty Group-like associative multMagma
      st b1 is Subgroup of b2 & b2 is Subgroup of b3
   holds b1 is Subgroup of b3;

:: GROUP_2:th 66
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1
      st the carrier of b2 c= the carrier of b3
   holds b2 is Subgroup of b3;

:: GROUP_2:th 67
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1
      st for b4 being Element of the carrier of b1
              st b4 in b2
           holds b4 in b3
   holds b2 is Subgroup of b3;

:: GROUP_2:th 68
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1
      st the carrier of b2 = the carrier of b3
   holds multMagma(#the carrier of b2,the multF of b2#) = multMagma(#the carrier of b3,the multF of b3#);

:: GROUP_2:th 69
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1
      st for b4 being Element of the carrier of b1 holds
              b4 in b2
           iff
              b4 in b3
   holds multMagma(#the carrier of b2,the multF of b2#) = multMagma(#the carrier of b3,the multF of b3#);

:: GROUP_2:prednot 1 => GROUP_2:pred 1
definition
  let a1 be non empty Group-like associative multMagma;
  let a2, a3 be strict Subgroup of a1;
  redefine pred A2 = A3 means
    for b1 being Element of the carrier of a1 holds
          b1 in a2
       iff
          b1 in a3;
  symmetry;
::  for a1 being non empty Group-like associative multMagma
::  for a2, a3 being strict Subgroup of a1
::        st a2 = a3
::     holds a3 = a2;
  reflexivity;
::  for a1 being non empty Group-like associative multMagma
::  for a2 being strict Subgroup of a1 holds
::     a2 = a2;
end;

:: GROUP_2:dfs 6
definiens
  let a1 be non empty Group-like associative multMagma;
  let a2, a3 be strict Subgroup of a1;
To prove
     a2 = a3
it is sufficient to prove
  thus for b1 being Element of the carrier of a1 holds
          b1 in a2
       iff
          b1 in a3;

:: GROUP_2:def 6
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being strict Subgroup of b1 holds
   b2 = b3
iff
   for b4 being Element of the carrier of b1 holds
         b4 in b2
      iff
         b4 in b3;

:: GROUP_2:th 70
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
      st the carrier of b1 c= the carrier of b2
   holds multMagma(#the carrier of b2,the multF of b2#) = multMagma(#the carrier of b1,the multF of b1#);

:: GROUP_2:th 71
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
      st for b3 being Element of the carrier of b1 holds
           b3 in b2
   holds multMagma(#the carrier of b2,the multF of b2#) = multMagma(#the carrier of b1,the multF of b1#);

:: GROUP_2:funcnot 5 => GROUP_2:func 5
definition
  let a1 be non empty Group-like associative multMagma;
  func (1). A1 -> strict Subgroup of a1 means
    the carrier of it = {1_ a1};
end;

:: GROUP_2:def 7
theorem
for b1 being non empty Group-like associative multMagma
for b2 being strict Subgroup of b1 holds
      b2 = (1). b1
   iff
      the carrier of b2 = {1_ b1};

:: GROUP_2:funcnot 6 => GROUP_2:func 6
definition
  let a1 be non empty Group-like associative multMagma;
  func (Omega). A1 -> strict Subgroup of a1 equals
    multMagma(#the carrier of a1,the multF of a1#);
end;

:: GROUP_2:def 8
theorem
for b1 being non empty Group-like associative multMagma holds
   (Omega). b1 = multMagma(#the carrier of b1,the multF of b1#);

:: GROUP_2:th 75
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   (1). b2 = (1). b1;

:: GROUP_2:th 76
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
(1). b2 = (1). b3;

:: GROUP_2:th 77
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   (1). b1 is Subgroup of b2;

:: GROUP_2:th 78
theorem
for b1 being non empty strict Group-like associative multMagma
for b2 being Subgroup of b1 holds
   b2 is Subgroup of (Omega). b1;

:: GROUP_2:th 79
theorem
for b1 being non empty strict Group-like associative multMagma holds
   b1 is Subgroup of (Omega). b1;

:: GROUP_2:th 80
theorem
for b1 being non empty Group-like associative multMagma holds
   (1). b1 is finite;

:: GROUP_2:funcreg 1
registration
  let a1 be non empty Group-like associative multMagma;
  cluster (1). a1 -> finite strict;
end;

:: GROUP_2:exreg 2
registration
  let a1 be non empty Group-like associative multMagma;
  cluster non empty finite strict unital Group-like associative Subgroup of a1;
end;

:: GROUP_2:exreg 3
registration
  cluster non empty finite strict unital Group-like associative multMagma;
end;

:: GROUP_2:condreg 3
registration
  let a1 be non empty finite Group-like associative multMagma;
  cluster -> finite (Subgroup of a1);
end;

:: GROUP_2:th 81
theorem
for b1 being non empty Group-like associative multMagma holds
   ord (1). b1 = 1;

:: GROUP_2:th 82
theorem
for b1 being non empty Group-like associative multMagma
for b2 being finite strict Subgroup of b1
      st ord b2 = 1
   holds b2 = (1). b1;

:: GROUP_2:th 83
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   Ord b2 c= Ord b1;

:: GROUP_2:th 84
theorem
for b1 being non empty finite Group-like associative multMagma
for b2 being Subgroup of b1 holds
   ord b2 <= ord b1;

:: GROUP_2:th 85
theorem
for b1 being non empty finite Group-like associative multMagma
for b2 being Subgroup of b1
      st ord b1 = ord b2
   holds multMagma(#the carrier of b2,the multF of b2#) = multMagma(#the carrier of b1,the multF of b1#);

:: GROUP_2:funcnot 7 => GROUP_2:func 7
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  func carr A2 -> Element of bool the carrier of a1 equals
    the carrier of a2;
end;

:: GROUP_2:def 9
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   carr b2 = the carrier of b2;

:: GROUP_2:th 89
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1
      st b2 in carr b4 & b3 in carr b4
   holds b2 * b3 in carr b4;

:: GROUP_2:th 90
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1
      st b2 in carr b3
   holds b2 " in carr b3;

:: GROUP_2:th 91
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   (carr b2) * carr b2 = carr b2;

:: GROUP_2:th 92
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   (carr b2) " = carr b2;

:: GROUP_2:th 93
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
((carr b2) * carr b3 = (carr b3) * carr b2 implies ex b4 being strict Subgroup of b1 st
    the carrier of b4 = (carr b2) * carr b3) &
 (for b4 being Subgroup of b1 holds
    the carrier of b4 <> (carr b2) * carr b3 or (carr b2) * carr b3 = (carr b3) * carr b2);

:: GROUP_2:th 94
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1
      st b1 is non empty Group-like associative commutative multMagma
   holds ex b4 being strict Subgroup of b1 st
      the carrier of b4 = (carr b2) * carr b3;

:: GROUP_2:funcnot 8 => GROUP_2:func 8
definition
  let a1 be non empty Group-like associative multMagma;
  let a2, a3 be Subgroup of a1;
  func A2 /\ A3 -> strict Subgroup of a1 means
    the carrier of it = (carr a2) /\ carr a3;
end;

:: GROUP_2:def 10
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1
for b4 being strict Subgroup of b1 holds
      b4 = b2 /\ b3
   iff
      the carrier of b4 = (carr b2) /\ carr b3;

:: GROUP_2:th 97
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
(for b4 being Subgroup of b1
       st b4 = b2 /\ b3
    holds the carrier of b4 = (the carrier of b2) /\ the carrier of b3) &
 (for b4 being strict Subgroup of b1
       st the carrier of b4 = (the carrier of b2) /\ the carrier of b3
    holds b4 = b2 /\ b3);

:: GROUP_2:th 98
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
carr (b2 /\ b3) = (carr b2) /\ carr b3;

:: GROUP_2:th 99
theorem
for b1 being set
for b2 being non empty Group-like associative multMagma
for b3, b4 being Subgroup of b2 holds
   b1 in b3 /\ b4
iff
   b1 in b3 & b1 in b4;

:: GROUP_2:th 100
theorem
for b1 being non empty Group-like associative multMagma
for b2 being strict Subgroup of b1 holds
   b2 /\ b2 = b2;

:: GROUP_2:th 101
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
b2 /\ b3 = b3 /\ b2;

:: GROUP_2:funcnot 9 => GROUP_2:func 9
definition
  let a1 be non empty Group-like associative multMagma;
  let a2, a3 be Subgroup of a1;
  redefine func a2 /\ a3 -> strict Subgroup of a1;
  commutativity;
::  for a1 being non empty Group-like associative multMagma
::  for a2, a3 being Subgroup of a1 holds
::  a2 /\ a3 = a3 /\ a2;
end;

:: GROUP_2:th 102
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3, b4 being Subgroup of b1 holds
(b2 /\ b3) /\ b4 = b2 /\ (b3 /\ b4);

:: GROUP_2:th 103
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   ((1). b1) /\ b2 = (1). b1 & b2 /\ (1). b1 = (1). b1;

:: GROUP_2:th 104
theorem
for b1 being non empty strict Group-like associative multMagma
for b2 being strict Subgroup of b1 holds
   b2 /\ (Omega). b1 = b2 & ((Omega). b1) /\ b2 = b2;

:: GROUP_2:th 105
theorem
for b1 being non empty strict Group-like associative multMagma holds
   ((Omega). b1) /\ (Omega). b1 = b1;

:: GROUP_2:th 106
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
b2 /\ b3 is Subgroup of b2 & b2 /\ b3 is Subgroup of b3;

:: GROUP_2:th 107
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
   b3 is Subgroup of b2
iff
   multMagma(#the carrier of b3 /\ b2,the multF of b3 /\ b2#) = multMagma(#the carrier of b3,the multF of b3#);

:: GROUP_2:th 108
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3, b4 being Subgroup of b1
      st b2 is Subgroup of b3
   holds b2 /\ b4 is Subgroup of b3;

:: GROUP_2:th 109
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3, b4 being Subgroup of b1
      st b2 is Subgroup of b3 & b2 is Subgroup of b4
   holds b2 is Subgroup of b3 /\ b4;

:: GROUP_2:th 110
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3, b4 being Subgroup of b1
      st b2 is Subgroup of b3
   holds b2 /\ b4 is Subgroup of b3 /\ b4;

:: GROUP_2:th 111
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1
      st (b2 is finite or b3 is finite)
   holds b2 /\ b3 is finite;

:: GROUP_2:funcnot 10 => GROUP_2:func 10
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  let a3 be Element of bool the carrier of a1;
  func A3 * A2 -> Element of bool the carrier of a1 equals
    a3 * carr a2;
end;

:: GROUP_2:def 11
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being Element of bool the carrier of b1 holds
   b3 * b2 = b3 * carr b2;

:: GROUP_2:funcnot 11 => GROUP_2:func 11
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  let a3 be Element of bool the carrier of a1;
  func A2 * A3 -> Element of bool the carrier of a1 equals
    (carr a2) * a3;
end;

:: GROUP_2:def 12
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being Element of bool the carrier of b1 holds
   b2 * b3 = (carr b2) * b3;

:: GROUP_2:th 114
theorem
for b1 being set
for b2 being non empty Group-like associative multMagma
for b3 being Element of bool the carrier of b2
for b4 being Subgroup of b2 holds
      b1 in b3 * b4
   iff
      ex b5, b6 being Element of the carrier of b2 st
         b1 = b5 * b6 & b5 in b3 & b6 in b4;

:: GROUP_2:th 115
theorem
for b1 being set
for b2 being non empty Group-like associative multMagma
for b3 being Element of bool the carrier of b2
for b4 being Subgroup of b2 holds
      b1 in b4 * b3
   iff
      ex b5, b6 being Element of the carrier of b2 st
         b1 = b5 * b6 & b5 in b4 & b6 in b3;

:: GROUP_2:th 116
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of bool the carrier of b1
for b4 being Subgroup of b1 holds
   (b2 * b3) * b4 = b2 * (b3 * b4);

:: GROUP_2:th 117
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of bool the carrier of b1
for b4 being Subgroup of b1 holds
   (b2 * b4) * b3 = b2 * (b4 * b3);

:: GROUP_2:th 118
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of bool the carrier of b1
for b4 being Subgroup of b1 holds
   (b4 * b2) * b3 = b4 * (b2 * b3);

:: GROUP_2:th 119
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1
for b3, b4 being Subgroup of b1 holds
(b2 * b3) * b4 = b2 * (b3 * carr b4);

:: GROUP_2:th 120
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1
for b3, b4 being Subgroup of b1 holds
(b3 * b2) * b4 = b3 * (b2 * b4);

:: GROUP_2:th 121
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1
for b3, b4 being Subgroup of b1 holds
(b3 * carr b4) * b2 = b3 * (b4 * b2);

:: GROUP_2:th 122
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1
for b3 being Subgroup of b1
      st b1 is non empty Group-like associative commutative multMagma
   holds b2 * b3 = b3 * b2;

:: GROUP_2:funcnot 12 => GROUP_2:func 12
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  let a3 be Element of the carrier of a1;
  func A3 * A2 -> Element of bool the carrier of a1 equals
    a3 * carr a2;
end;

:: GROUP_2:def 13
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being Element of the carrier of b1 holds
   b3 * b2 = b3 * carr b2;

:: GROUP_2:funcnot 13 => GROUP_2:func 13
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  let a3 be Element of the carrier of a1;
  func A2 * A3 -> Element of bool the carrier of a1 equals
    (carr a2) * a3;
end;

:: GROUP_2:def 14
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being Element of the carrier of b1 holds
   b2 * b3 = (carr b2) * b3;

:: GROUP_2:th 125
theorem
for b1 being set
for b2 being non empty Group-like associative multMagma
for b3 being Element of the carrier of b2
for b4 being Subgroup of b2 holds
      b1 in b3 * b4
   iff
      ex b5 being Element of the carrier of b2 st
         b1 = b3 * b5 & b5 in b4;

:: GROUP_2:th 126
theorem
for b1 being set
for b2 being non empty Group-like associative multMagma
for b3 being Element of the carrier of b2
for b4 being Subgroup of b2 holds
      b1 in b4 * b3
   iff
      ex b5 being Element of the carrier of b2 st
         b1 = b5 * b3 & b5 in b4;

:: GROUP_2:th 127
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
   (b2 * b3) * b4 = b2 * (b3 * b4);

:: GROUP_2:th 128
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
   (b2 * b4) * b3 = b2 * (b4 * b3);

:: GROUP_2:th 129
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
   (b4 * b2) * b3 = b4 * (b2 * b3);

:: GROUP_2:th 130
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
   b2 in b2 * b3 & b2 in b3 * b2;

:: GROUP_2:th 132
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   (1_ b1) * b2 = carr b2 & b2 * 1_ b1 = carr b2;

:: GROUP_2:th 133
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1 holds
   ((1). b1) * b2 = {b2} & b2 * (1). b1 = {b2};

:: GROUP_2:th 134
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1 holds
   b2 * (Omega). b1 = the carrier of b1 & ((Omega). b1) * b2 = the carrier of b1;

:: GROUP_2:th 135
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1
      st b1 is non empty Group-like associative commutative multMagma
   holds b2 * b3 = b3 * b2;

:: GROUP_2:th 136
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
      b2 in b3
   iff
      b2 * b3 = carr b3;

:: GROUP_2:th 137
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
      b2 * b4 = b3 * b4
   iff
      b3 " * b2 in b4;

:: GROUP_2:th 138
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
      b2 * b4 = b3 * b4
   iff
      b2 * b4 meets b3 * b4;

:: GROUP_2:th 139
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
   (b2 * b3) * b4 c= (b2 * b4) * (b3 * b4);

:: GROUP_2:th 140
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
   carr b3 c= (b2 * b3) * (b2 " * b3) &
    carr b3 c= (b2 " * b3) * (b2 * b3);

:: GROUP_2:th 141
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
   (b2 |^ 2) * b3 c= (b2 * b3) * (b2 * b3);

:: GROUP_2:th 142
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
      b2 in b3
   iff
      b3 * b2 = carr b3;

:: GROUP_2:th 143
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
      b4 * b2 = b4 * b3
   iff
      b3 * (b2 ") in b4;

:: GROUP_2:th 144
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
      b4 * b2 = b4 * b3
   iff
      b4 * b2 meets b4 * b3;

:: GROUP_2:th 145
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
   (b4 * b2) * b3 c= (b4 * b2) * (b4 * b3);

:: GROUP_2:th 146
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
   carr b3 c= (b3 * b2) * (b3 * (b2 ")) &
    carr b3 c= (b3 * (b2 ")) * (b3 * b2);

:: GROUP_2:th 147
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
   b3 * (b2 |^ 2) c= (b3 * b2) * (b3 * b2);

:: GROUP_2:th 148
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3, b4 being Subgroup of b1 holds
b2 * (b3 /\ b4) = (b2 * b3) /\ (b2 * b4);

:: GROUP_2:th 149
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3, b4 being Subgroup of b1 holds
(b3 /\ b4) * b2 = (b3 * b2) /\ (b4 * b2);

:: GROUP_2:th 150
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
   ex b4 being strict Subgroup of b1 st
      the carrier of b4 = (b2 * b3) * (b2 ");

:: GROUP_2:th 151
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
   b2 * b4,b3 * b4 are_equipotent;

:: GROUP_2:th 152
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
   b2 * b4,b4 * b3 are_equipotent;

:: GROUP_2:th 153
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of the carrier of b1
for b4 being Subgroup of b1 holds
   b4 * b2,b4 * b3 are_equipotent;

:: GROUP_2:th 154
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
   carr b3,b2 * b3 are_equipotent & carr b3,b3 * b2 are_equipotent;

:: GROUP_2:th 155
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Subgroup of b1 holds
   Ord b3 = Card (b2 * b3) & Ord b3 = Card (b3 * b2);

:: GROUP_2:th 156
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being finite Subgroup of b1 holds
   ex b4, b5 being finite set st
      b4 = b2 * b3 & b5 = b3 * b2 & ord b3 = card b4 & ord b3 = card b5;

:: GROUP_2:funcnot 14 => GROUP_2:func 14
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  func Left_Cosets A2 -> Element of bool bool the carrier of a1 means
    for b1 being Element of bool the carrier of a1 holds
          b1 in it
       iff
          ex b2 being Element of the carrier of a1 st
             b1 = b2 * a2;
end;

:: GROUP_2:def 15
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being Element of bool bool the carrier of b1 holds
      b3 = Left_Cosets b2
   iff
      for b4 being Element of bool the carrier of b1 holds
            b4 in b3
         iff
            ex b5 being Element of the carrier of b1 st
               b4 = b5 * b2;

:: GROUP_2:funcnot 15 => GROUP_2:func 15
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  func Right_Cosets A2 -> Element of bool bool the carrier of a1 means
    for b1 being Element of bool the carrier of a1 holds
          b1 in it
       iff
          ex b2 being Element of the carrier of a1 st
             b1 = a2 * b2;
end;

:: GROUP_2:def 16
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being Element of bool bool the carrier of b1 holds
      b3 = Right_Cosets b2
   iff
      for b4 being Element of bool the carrier of b1 holds
            b4 in b3
         iff
            ex b5 being Element of the carrier of b1 st
               b4 = b2 * b5;

:: GROUP_2:th 164
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
      st b1 is finite
   holds Right_Cosets b2 is finite & Left_Cosets b2 is finite;

:: GROUP_2:th 165
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   carr b2 in Left_Cosets b2 & carr b2 in Right_Cosets b2;

:: GROUP_2:th 166
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   Left_Cosets b2,Right_Cosets b2 are_equipotent;

:: GROUP_2:th 167
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   union Left_Cosets b2 = the carrier of b1 & union Right_Cosets b2 = the carrier of b1;

:: GROUP_2:th 168
theorem
for b1 being non empty Group-like associative multMagma holds
   Left_Cosets (1). b1 = {{b2} where b2 is Element of the carrier of b1: TRUE};

:: GROUP_2:th 169
theorem
for b1 being non empty Group-like associative multMagma holds
   Right_Cosets (1). b1 = {{b2} where b2 is Element of the carrier of b1: TRUE};

:: GROUP_2:th 170
theorem
for b1 being non empty Group-like associative multMagma
for b2 being strict Subgroup of b1
      st Left_Cosets b2 = {{b3} where b3 is Element of the carrier of b1: TRUE}
   holds b2 = (1). b1;

:: GROUP_2:th 171
theorem
for b1 being non empty Group-like associative multMagma
for b2 being strict Subgroup of b1
      st Right_Cosets b2 = {{b3} where b3 is Element of the carrier of b1: TRUE}
   holds b2 = (1). b1;

:: GROUP_2:th 172
theorem
for b1 being non empty Group-like associative multMagma holds
   Left_Cosets (Omega). b1 = {the carrier of b1} &
    Right_Cosets (Omega). b1 = {the carrier of b1};

:: GROUP_2:th 173
theorem
for b1 being non empty strict Group-like associative multMagma
for b2 being strict Subgroup of b1
      st Left_Cosets b2 = {the carrier of b1}
   holds b2 = b1;

:: GROUP_2:th 174
theorem
for b1 being non empty strict Group-like associative multMagma
for b2 being strict Subgroup of b1
      st Right_Cosets b2 = {the carrier of b1}
   holds b2 = b1;

:: GROUP_2:funcnot 16 => GROUP_2:func 16
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  func Index A2 -> cardinal set equals
    Card Left_Cosets a2;
end;

:: GROUP_2:def 17
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   Index b2 = Card Left_Cosets b2;

:: GROUP_2:th 175
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
   Index b2 = Card Left_Cosets b2 & Index b2 = Card Right_Cosets b2;

:: GROUP_2:funcnot 17 => GROUP_2:func 17
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  assume Left_Cosets a2 is finite;
  func index A2 -> Element of NAT means
    ex b1 being finite set st
       b1 = Left_Cosets a2 & it = card b1;
end;

:: GROUP_2:def 18
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
   st Left_Cosets b2 is finite
for b3 being Element of NAT holds
      b3 = index b2
   iff
      ex b4 being finite set st
         b4 = Left_Cosets b2 & b3 = card b4;

:: GROUP_2:th 176
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
      st Left_Cosets b2 is finite
   holds (ex b3 being finite set st
       b3 = Left_Cosets b2 & index b2 = card b3) &
    (ex b3 being finite set st
       b3 = Right_Cosets b2 & index b2 = card b3);

:: GROUP_2:th 177
theorem
for b1 being non empty finite Group-like associative multMagma
for b2 being Subgroup of b1 holds
   ord b1 = (ord b2) * index b2;

:: GROUP_2:th 178
theorem
for b1 being non empty finite Group-like associative multMagma
for b2 being Subgroup of b1 holds
   ord b2 divides ord b1;

:: GROUP_2:th 179
theorem
for b1 being non empty finite Group-like associative multMagma
for b2, b3 being Subgroup of b1
for b4 being Subgroup of b3
      st b2 = b4
   holds index b2 = (index b4) * index b3;

:: GROUP_2:th 180
theorem
for b1 being non empty Group-like associative multMagma holds
   index (Omega). b1 = 1;

:: GROUP_2:th 181
theorem
for b1 being non empty strict Group-like associative multMagma
for b2 being strict Subgroup of b1
      st Left_Cosets b2 is finite & index b2 = 1
   holds b2 = b1;

:: GROUP_2:th 182
theorem
for b1 being non empty Group-like associative multMagma holds
   Index (1). b1 = Ord b1;

:: GROUP_2:th 183
theorem
for b1 being non empty finite Group-like associative multMagma holds
   index (1). b1 = ord b1;

:: GROUP_2:th 184
theorem
for b1 being non empty finite Group-like associative multMagma
for b2 being strict Subgroup of b1
      st index b2 = ord b1
   holds b2 = (1). b1;

:: GROUP_2:th 185
theorem
for b1 being non empty Group-like associative multMagma
for b2 being strict Subgroup of b1
      st Left_Cosets b2 is finite & Index b2 = Ord b1
   holds b1 is finite & b2 = (1). b1;

:: GROUP_2:th 186
theorem
for b1 being Element of NAT
for b2 being finite set
      st for b3 being set
              st b3 in b2
           holds ex b4 being finite set st
              b4 = b3 &
               card b4 = b1 &
               (for b5 being set
                     st b5 in b2 & b3 <> b5
                  holds b3,b5 are_equipotent & b3 misses b5)
   holds ex b3 being finite set st
      b3 = union b2 & card b3 = b1 * card b2;