Article GROUP_4, MML version 4.99.1005

:: GROUP_4:funcnot 1 => GROUP_4:func 1
definition
  let a1 be non empty set;
  let a2 be FinSequence of a1;
  let a3 be set;
  redefine func a2 - a3 -> FinSequence of a1;
end;

:: GROUP_4:sch 1
scheme GROUP_4:sch 1
{F1 -> non empty Group-like associative multMagma}:
ex b1 being strict Subgroup of F1() st
   the carrier of b1 = meet {b2 where b2 is Element of bool the carrier of F1(): ex b3 being strict Subgroup of F1() st
      b2 = the carrier of b3 & P1[b3]}
provided
   ex b1 being strict Subgroup of F1() st
      P1[b1];


:: GROUP_4:sch 2
scheme GROUP_4:sch 2
{F1 -> non empty Group-like associative multMagma}:
ex b1 being set st
   b1 c= Subgroups F1() &
    (for b2 being strict Subgroup of F1() holds
          b2 in b1
       iff
          P1[b2])


:: GROUP_4:funcnot 2 => GROUP_4:func 2
definition
  let a1 be integer set;
  func @ A1 -> Element of INT equals
    a1;
end;

:: GROUP_4:def 2
theorem
for b1 being integer set holds
   @ b1 = b1;

:: GROUP_4:th 3
theorem
for b1 being Element of NAT
for b2 being non empty Group-like associative multMagma
for b3 being Element of the carrier of b2
for b4 being Subgroup of b2
for b5 being Element of the carrier of b4
      st b3 = b5
   holds b3 |^ b1 = b5 |^ b1;

:: GROUP_4:th 4
theorem
for b1 being integer 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
for b5 being Element of the carrier of b4
      st b3 = b5
   holds b3 |^ b1 = b5 |^ b1;

:: GROUP_4:th 5
theorem
for b1 being Element of NAT
for b2 being non empty Group-like associative multMagma
for b3 being Element of the carrier of b2
for b4 being Subgroup of b2
      st b3 in b4
   holds b3 |^ b1 in b4;

:: GROUP_4:th 6
theorem
for b1 being integer 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
      st b3 in b4
   holds b3 |^ b1 in b4;

:: GROUP_4:funcnot 3 => GROUP_4:func 3
definition
  let a1 be non empty multMagma;
  let a2 be FinSequence of the carrier of a1;
  func Product A2 -> Element of the carrier of a1 equals
    (the multF of a1) "**" a2;
end;

:: GROUP_4:def 3
theorem
for b1 being non empty multMagma
for b2 being FinSequence of the carrier of b1 holds
   Product b2 = (the multF of b1) "**" b2;

:: GROUP_4:th 8
theorem
for b1 being non empty unital associative multMagma
for b2, b3 being FinSequence of the carrier of b1 holds
Product (b2 ^ b3) = (Product b2) * Product b3;

:: GROUP_4:th 9
theorem
for b1 being non empty unital multMagma
for b2 being FinSequence of the carrier of b1
for b3 being Element of the carrier of b1 holds
   Product (b2 ^ <*b3*>) = (Product b2) * b3;

:: GROUP_4:th 10
theorem
for b1 being non empty unital associative multMagma
for b2 being FinSequence of the carrier of b1
for b3 being Element of the carrier of b1 holds
   Product (<*b3*> ^ b2) = b3 * Product b2;

:: GROUP_4:th 11
theorem
for b1 being non empty unital multMagma holds
   Product <*> the carrier of b1 = 1_ b1;

:: GROUP_4:th 12
theorem
for b1 being non empty multMagma
for b2 being Element of the carrier of b1 holds
   Product <*b2*> = b2;

:: GROUP_4:th 13
theorem
for b1 being non empty multMagma
for b2, b3 being Element of the carrier of b1 holds
Product <*b2,b3*> = b2 * b3;

:: GROUP_4:th 14
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3, b4 being Element of the carrier of b1 holds
Product <*b2,b3,b4*> = (b2 * b3) * b4 &
 Product <*b2,b3,b4*> = b2 * (b3 * b4);

:: GROUP_4:th 15
theorem
for b1 being Element of NAT
for b2 being non empty Group-like associative multMagma
for b3 being Element of the carrier of b2 holds
   Product (b1 |-> b3) = b3 |^ b1;

:: GROUP_4:th 16
theorem
for b1 being non empty Group-like associative multMagma
for b2 being FinSequence of the carrier of b1 holds
   Product (b2 - {1_ b1}) = Product b2;

:: GROUP_4:th 17
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being FinSequence of the carrier of b1
      st len b2 = len b3 &
         (for b4 being Element of NAT
               st b4 in dom b2
            holds b3 . (((len b2) - b4) + 1) = (b2 /. b4) ")
   holds Product b2 = (Product b3) ";

:: GROUP_4:th 18
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being FinSequence of the carrier of b1
   st b1 is non empty Group-like associative commutative multMagma
for b4 being Function-like quasi_total bijective Relation of dom b2,dom b2
      st b3 = b2 * b4
   holds Product b2 = Product b3;

:: GROUP_4:th 19
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being FinSequence of the carrier of b1
      st b1 is non empty Group-like associative commutative multMagma &
         b2 is one-to-one &
         b3 is one-to-one &
         proj2 b2 = proj2 b3
   holds Product b2 = Product b3;

:: GROUP_4:th 20
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3, b4 being FinSequence of the carrier of b1
      st b1 is non empty Group-like associative commutative multMagma &
         len b2 = len b3 &
         len b2 = len b4 &
         (for b5 being Element of NAT
               st b5 in dom b2
            holds b2 . b5 = (b3 /. b5) * (b4 /. b5))
   holds Product b2 = (Product b3) * Product b4;

:: GROUP_4:th 21
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being FinSequence of the carrier of b1
      st proj2 b3 c= carr b2
   holds Product b3 in b2;

:: GROUP_4:funcnot 4 => GROUP_4:func 4
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be FinSequence of INT;
  let a3 be FinSequence of the carrier of a1;
  func A3 |^ A2 -> FinSequence of the carrier of a1 means
    len it = len a3 &
     (for b1 being Element of NAT
           st b1 in dom a3
        holds it . b1 = (a3 /. b1) |^ @ (a2 /. b1));
end;

:: GROUP_4:def 4
theorem
for b1 being non empty Group-like associative multMagma
for b2 being FinSequence of INT
for b3, b4 being FinSequence of the carrier of b1 holds
   b4 = b3 |^ b2
iff
   len b4 = len b3 &
    (for b5 being Element of NAT
          st b5 in dom b3
       holds b4 . b5 = (b3 /. b5) |^ @ (b2 /. b5));

:: GROUP_4:th 25
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being FinSequence of the carrier of b1
for b4, b5 being FinSequence of INT
      st len b2 = len b4 & len b3 = len b5
   holds (b2 ^ b3) |^ (b4 ^ b5) = (b2 |^ b4) ^ (b3 |^ b5);

:: GROUP_4:th 26
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being FinSequence of the carrier of b1
for b4 being FinSequence of INT
      st proj2 b3 c= carr b2
   holds Product (b3 |^ b4) in b2;

:: GROUP_4:th 27
theorem
for b1 being non empty Group-like associative multMagma holds
   (<*> the carrier of b1) |^ <*> INT = {};

:: GROUP_4:th 28
theorem
for b1 being integer set
for b2 being non empty Group-like associative multMagma
for b3 being Element of the carrier of b2 holds
   <*b3*> |^ <*@ b1*> = <*b3 |^ b1*>;

:: GROUP_4:th 29
theorem
for b1, b2 being integer set
for b3 being non empty Group-like associative multMagma
for b4, b5 being Element of the carrier of b3 holds
<*b4,b5*> |^ <*@ b1,@ b2*> = <*b4 |^ b1,b5 |^ b2*>;

:: GROUP_4:th 30
theorem
for b1, b2, b3 being integer set
for b4 being non empty Group-like associative multMagma
for b5, b6, b7 being Element of the carrier of b4 holds
<*b5,b6,b7*> |^ <*@ b1,@ b2,@ b3*> = <*b5 |^ b1,b6 |^ b2,b7 |^ b3*>;

:: GROUP_4:th 31
theorem
for b1 being non empty Group-like associative multMagma
for b2 being FinSequence of the carrier of b1 holds
   b2 |^ ((len b2) |-> @ 1) = b2;

:: GROUP_4:th 32
theorem
for b1 being non empty Group-like associative multMagma
for b2 being FinSequence of the carrier of b1 holds
   b2 |^ ((len b2) |-> @ 0) = (len b2) |-> 1_ b1;

:: GROUP_4:th 33
theorem
for b1 being Element of NAT
for b2 being non empty Group-like associative multMagma
for b3 being FinSequence of INT
      st len b3 = b1
   holds (b1 |-> 1_ b2) |^ b3 = b1 |-> 1_ b2;

:: GROUP_4:funcnot 5 => GROUP_4:func 5
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Element of bool the carrier of a1;
  func gr A2 -> strict Subgroup of a1 means
    a2 c= the carrier of it &
     (for b1 being strict Subgroup of a1
           st a2 c= the carrier of b1
        holds it is Subgroup of b1);
end;

:: GROUP_4:def 5
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1
for b3 being strict Subgroup of b1 holds
      b3 = gr b2
   iff
      b2 c= the carrier of b3 &
       (for b4 being strict Subgroup of b1
             st b2 c= the carrier of b4
          holds b3 is Subgroup of b4);

:: GROUP_4:th 37
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Element of bool the carrier of b1 holds
      b2 in gr b3
   iff
      ex b4 being FinSequence of the carrier of b1 st
         ex b5 being FinSequence of INT st
            len b4 = len b5 & proj2 b4 c= b3 & Product (b4 |^ b5) = b2;

:: GROUP_4:th 38
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being Element of bool the carrier of b1
      st b2 in b3
   holds b2 in gr b3;

:: GROUP_4:th 39
theorem
for b1 being non empty Group-like associative multMagma holds
   gr {} the carrier of b1 = (1). b1;

:: GROUP_4:th 40
theorem
for b1 being non empty Group-like associative multMagma
for b2 being strict Subgroup of b1 holds
   gr carr b2 = b2;

:: GROUP_4:th 41
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of bool the carrier of b1
      st b2 c= b3
   holds gr b2 is Subgroup of gr b3;

:: GROUP_4:th 42
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Element of bool the carrier of b1 holds
gr (b2 /\ b3) is Subgroup of (gr b2) /\ gr b3;

:: GROUP_4:th 43
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1 holds
   the carrier of gr b2 = meet {b3 where b3 is Element of bool the carrier of b1: ex b4 being strict Subgroup of b1 st
      b3 = the carrier of b4 & b2 c= carr b4};

:: GROUP_4:th 44
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of bool the carrier of b1 holds
   gr b2 = gr (b2 \ {1_ b1});

:: GROUP_4:attrnot 1 => GROUP_4:attr 1
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Element of the carrier of a1;
  attr a2 is generating means
    ex b1 being Element of bool the carrier of a1 st
       gr b1 = multMagma(#the carrier of a1,the multF of a1#) &
        gr (b1 \ {a2}) <> multMagma(#the carrier of a1,the multF of a1#);
end;

:: GROUP_4:dfs 5
definiens
  let a1 be non empty Group-like associative multMagma;
  let a2 be Element of the carrier of a1;
To prove
     a2 is generating
it is sufficient to prove
  thus ex b1 being Element of bool the carrier of a1 st
       gr b1 = multMagma(#the carrier of a1,the multF of a1#) &
        gr (b1 \ {a2}) <> multMagma(#the carrier of a1,the multF of a1#);

:: GROUP_4:def 6
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1 holds
      b2 is generating(b1)
   iff
      ex b3 being Element of bool the carrier of b1 st
         gr b3 = multMagma(#the carrier of b1,the multF of b1#) &
          gr (b3 \ {b2}) <> multMagma(#the carrier of b1,the multF of b1#);

:: GROUP_4:th 46
theorem
for b1 being non empty Group-like associative multMagma holds
   1_ b1 is not generating(b1);

:: GROUP_4:attrnot 2 => GROUP_4:attr 2
definition
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
  attr a2 is maximal means
    multMagma(#the carrier of a2,the multF of a2#) <> multMagma(#the carrier of a1,the multF of a1#) &
     (for b1 being strict Subgroup of a1
           st multMagma(#the carrier of a2,the multF of a2#) <> b1 & a2 is Subgroup of b1
        holds b1 = multMagma(#the carrier of a1,the multF of a1#));
end;

:: GROUP_4:dfs 6
definiens
  let a1 be non empty Group-like associative multMagma;
  let a2 be Subgroup of a1;
To prove
     a2 is maximal
it is sufficient to prove
  thus multMagma(#the carrier of a2,the multF of a2#) <> multMagma(#the carrier of a1,the multF of a1#) &
     (for b1 being strict Subgroup of a1
           st multMagma(#the carrier of a2,the multF of a2#) <> b1 & a2 is Subgroup of b1
        holds b1 = multMagma(#the carrier of a1,the multF of a1#));

:: GROUP_4:def 7
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1 holds
      b2 is maximal(b1)
   iff
      multMagma(#the carrier of b2,the multF of b2#) <> multMagma(#the carrier of b1,the multF of b1#) &
       (for b3 being strict Subgroup of b1
             st multMagma(#the carrier of b2,the multF of b2#) <> b3 & b2 is Subgroup of b3
          holds b3 = multMagma(#the carrier of b1,the multF of b1#));

:: GROUP_4:th 48
theorem
for b1 being non empty strict Group-like associative multMagma
for b2 being strict Subgroup of b1
for b3 being Element of the carrier of b1
      st b2 is maximal(b1) & not b3 in b2
   holds gr ((carr b2) \/ {b3}) = b1;

:: GROUP_4:funcnot 6 => GROUP_4:func 6
definition
  let a1 be non empty Group-like associative multMagma;
  func Phi A1 -> strict Subgroup of a1 means
    the carrier of it = meet {b1 where b1 is Element of bool the carrier of a1: ex b2 being strict Subgroup of a1 st
       b1 = the carrier of b2 & b2 is maximal(a1)}
    if ex b1 being strict Subgroup of a1 st
       b1 is maximal(a1)
    otherwise it = multMagma(#the carrier of a1,the multF of a1#);
end;

:: GROUP_4:def 8
theorem
for b1 being non empty Group-like associative multMagma
for b2 being strict Subgroup of b1 holds
   (for b3 being strict Subgroup of b1 holds
       b3 is not maximal(b1) or    (b2 = Phi b1
    iff
       the carrier of b2 = meet {b3 where b3 is Element of bool the carrier of b1: ex b4 being strict Subgroup of b1 st
          b3 = the carrier of b4 & b4 is maximal(b1)})) &
    (for b3 being strict Subgroup of b1 holds
       b3 is not maximal(b1) implies    (b2 = Phi b1
    iff
       b2 = multMagma(#the carrier of b1,the multF of b1#)));

:: GROUP_4:th 52
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
for b3 being non empty Group-like associative multMagma
      st ex b4 being strict Subgroup of b3 st
           b4 is maximal(b3)
   holds    b2 in Phi b3
   iff
      for b4 being strict Subgroup of b3
            st b4 is maximal(b3)
         holds b2 in b4;

:: GROUP_4:th 53
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Element of the carrier of b1
      st for b3 being strict Subgroup of b1 holds
           b3 is not maximal(b1)
   holds b2 in Phi b1;

:: GROUP_4:th 54
theorem
for b1 being non empty Group-like associative multMagma
for b2 being strict Subgroup of b1
      st b2 is maximal(b1)
   holds Phi b1 is Subgroup of b2;

:: GROUP_4:th 55
theorem
for b1 being non empty strict Group-like associative multMagma holds
   the carrier of Phi b1 = {b2 where b2 is Element of the carrier of b1: b2 is not generating(b1)};

:: GROUP_4:th 56
theorem
for b1 being non empty strict Group-like associative multMagma
for b2 being Element of the carrier of b1 holds
      b2 in Phi b1
   iff
      b2 is not generating(b1);

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

:: GROUP_4:def 9
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
b2 * b3 = (carr b2) * carr b3;

:: GROUP_4:th 57
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
b2 * b3 = (carr b2) * carr b3 & b2 * b3 = b2 * carr b3 & b2 * b3 = (carr b2) * b3;

:: GROUP_4:th 59
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_4:th 60
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 * b4);

:: GROUP_4:th 61
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 * (b4 * b2);

:: GROUP_4:th 62
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 * b4);

:: GROUP_4:th 63
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 * b4) * b2 = b3 * (b4 * b2);

:: GROUP_4:funcnot 8 => GROUP_4: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 equals
    gr ((carr a2) \/ carr a3);
end;

:: GROUP_4:def 10
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
b2 "\/" b3 = gr ((carr b2) \/ carr b3);

:: GROUP_4:th 67
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 in b3 "\/" b4
iff
   ex b5 being FinSequence of the carrier of b1 st
      ex b6 being FinSequence of INT st
         len b5 = len b6 & proj2 b5 c= (carr b3) \/ carr b4 & b2 = Product (b5 |^ b6);

:: GROUP_4:th 68
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
b2 "\/" b3 = gr (b2 * b3);

:: GROUP_4:th 69
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1
      st b2 * b3 = b3 * b2
   holds the carrier of b2 "\/" b3 = b2 * b3;

:: GROUP_4:th 70
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 the carrier of b2 "\/" b3 = b2 * b3;

:: GROUP_4:th 71
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being strict normal Subgroup of b1 holds
the carrier of b2 "\/" b3 = b2 * b3;

:: GROUP_4:th 72
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being strict normal Subgroup of b1 holds
b2 "\/" b3 is normal Subgroup of b1;

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

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

:: GROUP_4:th 75
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_4:th 76
theorem
for b1 being non empty Group-like associative multMagma
for b2 being strict Subgroup of b1 holds
   ((1). b1) "\/" b2 = b2 & b2 "\/" (1). b1 = b2;

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

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

:: GROUP_4:th 79
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being strict Subgroup of b1 holds
      b2 is Subgroup of b3
   iff
      b2 "\/" b3 = b3;

:: GROUP_4:th 80
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 is Subgroup of b3 "\/" b4;

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

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

:: GROUP_4:th 83
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being Subgroup of b1 holds
b2 /\ b3 is Subgroup of b2 "\/" b3;

:: GROUP_4:th 84
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being strict Subgroup of b1 holds
   (b2 /\ b3) "\/" b3 = b3;

:: GROUP_4:th 85
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Subgroup of b1
for b3 being strict Subgroup of b1 holds
   b3 /\ (b3 "\/" b2) = b3;

:: GROUP_4:th 86
theorem
for b1 being non empty Group-like associative multMagma
for b2, b3 being strict Subgroup of b1 holds
   b2 "\/" b3 = b3
iff
   b2 /\ b3 = b2;

:: GROUP_4:funcnot 9 => GROUP_4:func 9
definition
  let a1 be non empty Group-like associative multMagma;
  func SubJoin A1 -> Function-like quasi_total Relation of [:Subgroups a1,Subgroups a1:],Subgroups a1 means
    for b1, b2 being Element of Subgroups a1
    for b3, b4 being Subgroup of a1
          st b1 = b3 & b2 = b4
       holds it .(b1,b2) = b3 "\/" b4;
end;

:: GROUP_4:def 11
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Function-like quasi_total Relation of [:Subgroups b1,Subgroups b1:],Subgroups b1 holds
      b2 = SubJoin b1
   iff
      for b3, b4 being Element of Subgroups b1
      for b5, b6 being Subgroup of b1
            st b3 = b5 & b4 = b6
         holds b2 .(b3,b4) = b5 "\/" b6;

:: GROUP_4:funcnot 10 => GROUP_4:func 10
definition
  let a1 be non empty Group-like associative multMagma;
  func SubMeet A1 -> Function-like quasi_total Relation of [:Subgroups a1,Subgroups a1:],Subgroups a1 means
    for b1, b2 being Element of Subgroups a1
    for b3, b4 being Subgroup of a1
          st b1 = b3 & b2 = b4
       holds it .(b1,b2) = b3 /\ b4;
end;

:: GROUP_4:def 12
theorem
for b1 being non empty Group-like associative multMagma
for b2 being Function-like quasi_total Relation of [:Subgroups b1,Subgroups b1:],Subgroups b1 holds
      b2 = SubMeet b1
   iff
      for b3, b4 being Element of Subgroups b1
      for b5, b6 being Subgroup of b1
            st b3 = b5 & b4 = b6
         holds b2 .(b3,b4) = b5 /\ b6;

:: GROUP_4:funcnot 11 => GROUP_4:func 11
definition
  let a1 be non empty Group-like associative multMagma;
  func lattice A1 -> non empty strict Lattice-like LattStr equals
    LattStr(#Subgroups a1,SubJoin a1,SubMeet a1#);
end;

:: GROUP_4:def 13
theorem
for b1 being non empty Group-like associative multMagma holds
   lattice b1 = LattStr(#Subgroups b1,SubJoin b1,SubMeet b1#);

:: GROUP_4:th 92
theorem
for b1 being non empty Group-like associative multMagma holds
   the carrier of lattice b1 = Subgroups b1;

:: GROUP_4:th 93
theorem
for b1 being non empty Group-like associative multMagma holds
   the L_join of lattice b1 = SubJoin b1;

:: GROUP_4:th 94
theorem
for b1 being non empty Group-like associative multMagma holds
   the L_meet of lattice b1 = SubMeet b1;

:: GROUP_4:funcreg 1
registration
  let a1 be non empty Group-like associative multMagma;
  cluster lattice a1 -> non empty strict Lattice-like lower-bounded upper-bounded;
end;

:: GROUP_4:th 98
theorem
for b1 being non empty Group-like associative multMagma holds
   Bottom lattice b1 = (1). b1;

:: GROUP_4:th 99
theorem
for b1 being non empty Group-like associative multMagma holds
   Top lattice b1 = (Omega). b1;