Article MOD_2, MML version 4.99.1005

:: MOD_2:funcnot 1 => MOD_2:func 1
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  func TrivialLMod A1 -> non empty right_complementable strict VectSp-like Abelian add-associative right_zeroed VectSpStr over a1 equals
    VectSpStr(#1,op2,op0,pr2(the carrier of a1,1)#);
end;

:: MOD_2:def 2
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr holds
   TrivialLMod b1 = VectSpStr(#1,op2,op0,pr2(the carrier of b1,1)#);

:: MOD_2:th 1
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being Element of the carrier of TrivialLMod b1 holds
   b2 = 0. TrivialLMod b1;

:: MOD_2:attrnot 1 => MOD_2:attr 1
definition
  let a1 be non empty doubleLoopStr;
  let a2, a3 be non empty VectSpStr over a1;
  let a4 be Function-like quasi_total Relation of the carrier of a2,the carrier of a3;
  attr a4 is linear means
    (for b1, b2 being Element of the carrier of a2 holds
     a4 . (b1 + b2) = (a4 . b1) + (a4 . b2)) &
     (for b1 being Element of the carrier of a1
     for b2 being Element of the carrier of a2 holds
        a4 . (b1 * b2) = b1 * (a4 . b2));
end;

:: MOD_2:dfs 2
definiens
  let a1 be non empty doubleLoopStr;
  let a2, a3 be non empty VectSpStr over a1;
  let a4 be Function-like quasi_total Relation of the carrier of a2,the carrier of a3;
To prove
     a4 is linear
it is sufficient to prove
  thus (for b1, b2 being Element of the carrier of a2 holds
     a4 . (b1 + b2) = (a4 . b1) + (a4 . b2)) &
     (for b1 being Element of the carrier of a1
     for b2 being Element of the carrier of a2 holds
        a4 . (b1 * b2) = b1 * (a4 . b2));

:: MOD_2:def 5
theorem
for b1 being non empty doubleLoopStr
for b2, b3 being non empty VectSpStr over b1
for b4 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3 holds
      b4 is linear(b1, b2, b3)
   iff
      (for b5, b6 being Element of the carrier of b2 holds
       b4 . (b5 + b6) = (b4 . b5) + (b4 . b6)) &
       (for b5 being Element of the carrier of b1
       for b6 being Element of the carrier of b2 holds
          b4 . (b5 * b6) = b5 * (b4 . b6));

:: MOD_2:th 4
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being non empty VectSpStr over b1
for b4 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
      st b4 is linear(b1, b2, b3)
   holds b4 is additive(b2, b3);

:: MOD_2:th 6
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3, b4 being non empty VectSpStr over b1
for b5 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
for b6 being Function-like quasi_total Relation of the carrier of b3,the carrier of b4
      st b5 is linear(b1, b2, b3) & b6 is linear(b1, b3, b4)
   holds b6 * b5 is linear(b1, b2, b4);

:: MOD_2:th 8
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1 holds
ZeroMap(b2,b3) is linear(b1, b2, b3);

:: MOD_2:structnot 1 => MOD_2:struct 1
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  struct() LModMorphismStr(#
    Dom -> non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over A1,
    Cod -> non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over A1,
    Fun -> Function-like quasi_total Relation of the carrier of the Dom of it,the carrier of the Cod of it
  #);
end;

:: MOD_2:attrnot 2 => MOD_2:attr 2
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be LModMorphismStr over a1;
  attr a2 is strict;
end;

:: MOD_2:exreg 1
registration
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  cluster strict LModMorphismStr over a1;
end;

:: MOD_2:aggrnot 1 => MOD_2:aggr 1
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3 be non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
  let a4 be Function-like quasi_total Relation of the carrier of a2,the carrier of a3;
  aggr LModMorphismStr(#a2,a3,a4#) -> strict LModMorphismStr over a1;
end;

:: MOD_2:selnot 1 => MOD_2:sel 1
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be LModMorphismStr over a1;
  sel the Dom of a2 -> non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
end;

:: MOD_2:selnot 2 => MOD_2:sel 2
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be LModMorphismStr over a1;
  sel the Cod of a2 -> non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
end;

:: MOD_2:selnot 3 => MOD_2:sel 3
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be LModMorphismStr over a1;
  sel the Fun of a2 -> Function-like quasi_total Relation of the carrier of the Dom of a2,the carrier of the Cod of a2;
end;

:: MOD_2:funcnot 2 => MOD_2:func 2
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be LModMorphismStr over a1;
  func dom A2 -> non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1 equals
    the Dom of a2;
end;

:: MOD_2:def 6
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being LModMorphismStr over b1 holds
   dom b2 = the Dom of b2;

:: MOD_2:funcnot 3 => MOD_2:func 3
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be LModMorphismStr over a1;
  func cod A2 -> non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1 equals
    the Cod of a2;
end;

:: MOD_2:def 7
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being LModMorphismStr over b1 holds
   cod b2 = the Cod of b2;

:: MOD_2:funcnot 4 => MOD_2:func 4
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be LModMorphismStr over a1;
  func fun A2 -> Function-like quasi_total Relation of the carrier of dom a2,the carrier of cod a2 equals
    the Fun of a2;
end;

:: MOD_2:def 8
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being LModMorphismStr over b1 holds
   fun b2 = the Fun of b2;

:: MOD_2:th 9
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b4 being LModMorphismStr over b1
for b5 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
      st b4 = LModMorphismStr(#b2,b3,b5#)
   holds dom b4 = b2 & cod b4 = b3 & fun b4 = b5;

:: MOD_2:funcnot 5 => MOD_2:func 5
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3 be non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
  func ZERO(A2,A3) -> strict LModMorphismStr over a1 equals
    LModMorphismStr(#a2,a3,ZeroMap(a2,a3)#);
end;

:: MOD_2:def 9
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1 holds
ZERO(b2,b3) = LModMorphismStr(#b2,b3,ZeroMap(b2,b3)#);

:: MOD_2:attrnot 3 => MOD_2:attr 3
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be LModMorphismStr over a1;
  attr a2 is LModMorphism-like means
    fun a2 is linear(a1, dom a2, cod a2);
end;

:: MOD_2:dfs 7
definiens
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be LModMorphismStr over a1;
To prove
     a2 is LModMorphism-like
it is sufficient to prove
  thus fun a2 is linear(a1, dom a2, cod a2);

:: MOD_2:def 10
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being LModMorphismStr over b1 holds
      b2 is LModMorphism-like(b1)
   iff
      fun b2 is linear(b1, dom b2, cod b2);

:: MOD_2:exreg 2
registration
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  cluster strict LModMorphism-like LModMorphismStr over a1;
end;

:: MOD_2:modenot 1
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  mode LModMorphism of a1 is LModMorphism-like LModMorphismStr over a1;
end;

:: MOD_2:th 10
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being LModMorphism-like LModMorphismStr over b1 holds
   the Fun of b2 is linear(b1, the Dom of b2, the Cod of b2);

:: MOD_2:funcreg 1
registration
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3 be non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
  cluster ZERO(a2,a3) -> strict LModMorphism-like;
end;

:: MOD_2:modenot 2 => MOD_2:mode 1
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3 be non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
  mode Morphism of A2,A3 -> LModMorphism-like LModMorphismStr over a1 means
    dom it = a2 & cod it = a3;
end;

:: MOD_2:dfs 8
definiens
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3 be non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
  let a4 be LModMorphism-like LModMorphismStr over a1;
To prove
     a4 is Morphism of a2,a3
it is sufficient to prove
  thus dom a4 = a2 & cod a4 = a3;

:: MOD_2:def 11
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b4 being LModMorphism-like LModMorphismStr over b1 holds
      b4 is Morphism of b2,b3
   iff
      dom b4 = b2 & cod b4 = b3;

:: MOD_2:exreg 3
registration
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3 be non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
  cluster strict LModMorphism-like Morphism of a2,a3;
end;

:: MOD_2:th 11
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b4 being LModMorphismStr over b1
      st dom b4 = b2 & cod b4 = b3 & fun b4 is linear(b1, dom b4, cod b4)
   holds b4 is Morphism of b2,b3;

:: MOD_2:th 12
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b4 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
      st b4 is linear(b1, b2, b3)
   holds LModMorphismStr(#b2,b3,b4#) is strict Morphism of b2,b3;

:: MOD_2:th 13
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1 holds
   id b2 is linear(b1, b2, b2);

:: MOD_2:funcnot 6 => MOD_2:func 6
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2 be non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
  func ID A2 -> strict Morphism of a2,a2 equals
    LModMorphismStr(#a2,a2,id a2#);
end;

:: MOD_2:def 12
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1 holds
   ID b2 = LModMorphismStr(#b2,b2,id b2#);

:: MOD_2:funcnot 7 => MOD_2:func 7
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3 be non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
  redefine func ZERO(a2,a3) -> strict Morphism of a2,a3;
end;

:: MOD_2:th 14
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b4 being Morphism of b2,b3 holds
   ex b5 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3 st
      LModMorphismStr(#the Dom of b4,the Cod of b4,the Fun of b4#) = LModMorphismStr(#b2,b3,b5#) &
       b5 is linear(b1, b2, b3);

:: MOD_2:th 15
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b4 being strict Morphism of b2,b3 holds
   ex b5 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3 st
      b4 = LModMorphismStr(#b2,b3,b5#);

:: MOD_2:th 16
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being LModMorphism-like LModMorphismStr over b1 holds
   ex b3, b4 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1 st
      b2 is Morphism of b3,b4;

:: MOD_2:th 17
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being strict LModMorphism-like LModMorphismStr over b1 holds
   ex b3, b4 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1 st
      ex b5 being Function-like quasi_total Relation of the carrier of b3,the carrier of b4 st
         b2 is strict Morphism of b3,b4 & b2 = LModMorphismStr(#b3,b4,b5#) & b5 is linear(b1, b3, b4);

:: MOD_2:th 18
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being LModMorphism-like LModMorphismStr over b1
      st dom b2 = cod b3
   holds ex b4, b5, b6 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1 st
      b2 is Morphism of b5,b6 & b3 is Morphism of b4,b5;

:: MOD_2:funcnot 8 => MOD_2:func 8
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3 be LModMorphism-like LModMorphismStr over a1;
  assume dom a2 = cod a3;
  func A2 * A3 -> strict LModMorphism-like LModMorphismStr over a1 means
    for b1, b2, b3 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1
    for b4 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
    for b5 being Function-like quasi_total Relation of the carrier of b1,the carrier of b2
          st LModMorphismStr(#the Dom of a2,the Cod of a2,the Fun of a2#) = LModMorphismStr(#b2,b3,b4#) &
             LModMorphismStr(#the Dom of a3,the Cod of a3,the Fun of a3#) = LModMorphismStr(#b1,b2,b5#)
       holds it = LModMorphismStr(#b1,b3,b4 * b5#);
end;

:: MOD_2:def 13
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being LModMorphism-like LModMorphismStr over b1
   st dom b2 = cod b3
for b4 being strict LModMorphism-like LModMorphismStr over b1 holds
      b4 = b2 * b3
   iff
      for b5, b6, b7 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
      for b8 being Function-like quasi_total Relation of the carrier of b6,the carrier of b7
      for b9 being Function-like quasi_total Relation of the carrier of b5,the carrier of b6
            st LModMorphismStr(#the Dom of b2,the Cod of b2,the Fun of b2#) = LModMorphismStr(#b6,b7,b8#) &
               LModMorphismStr(#the Dom of b3,the Cod of b3,the Fun of b3#) = LModMorphismStr(#b5,b6,b9#)
         holds b4 = LModMorphismStr(#b5,b7,b8 * b9#);

:: MOD_2:th 20
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3, b4 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b5 being Morphism of b2,b3
for b6 being Morphism of b4,b2 holds
   b5 * b6 is strict Morphism of b4,b3;

:: MOD_2:funcnot 9 => MOD_2:func 9
definition
  let a1 be non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;
  let a2, a3, a4 be non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over a1;
  let a5 be Morphism of a3,a4;
  let a6 be Morphism of a2,a3;
  func A5 *' A6 -> strict Morphism of a2,a4 equals
    a5 * a6;
end;

:: MOD_2:def 14
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3, b4 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b5 being Morphism of b3,b4
for b6 being Morphism of b2,b3 holds
   b5 *' b6 = b5 * b6;

:: MOD_2:th 21
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3, b4 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b5 being Morphism of b2,b3
for b6 being Morphism of b4,b2
for b7 being Function-like quasi_total Relation of the carrier of b2,the carrier of b3
for b8 being Function-like quasi_total Relation of the carrier of b4,the carrier of b2
      st b5 = LModMorphismStr(#b2,b3,b7#) & b6 = LModMorphismStr(#b4,b2,b8#)
   holds b5 *' b6 = LModMorphismStr(#b4,b3,b7 * b8#) & b5 * b6 = LModMorphismStr(#b4,b3,b7 * b8#);

:: MOD_2:th 22
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being strict LModMorphism-like LModMorphismStr over b1
      st dom b3 = cod b2
   holds ex b4, b5, b6 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1 st
      ex b7 being Function-like quasi_total Relation of the carrier of b4,the carrier of b5 st
         ex b8 being Function-like quasi_total Relation of the carrier of b5,the carrier of b6 st
            b2 = LModMorphismStr(#b4,b5,b7#) & b3 = LModMorphismStr(#b5,b6,b8#) & b3 * b2 = LModMorphismStr(#b4,b6,b8 * b7#);

:: MOD_2:th 23
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3 being strict LModMorphism-like LModMorphismStr over b1
      st dom b3 = cod b2
   holds dom (b3 * b2) = dom b2 & cod (b3 * b2) = cod b3;

:: MOD_2:th 24
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3, b4, b5 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1
for b6 being strict Morphism of b2,b3
for b7 being strict Morphism of b3,b4
for b8 being strict Morphism of b4,b5 holds
   b8 * (b7 * b6) = (b8 * b7) * b6;

:: MOD_2:th 25
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2, b3, b4 being strict LModMorphism-like LModMorphismStr over b1
      st dom b4 = cod b3 & dom b3 = cod b2
   holds b4 * (b3 * b2) = (b4 * b3) * b2;

:: MOD_2:th 26
theorem
for b1 being non empty right_complementable associative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr
for b2 being non empty right_complementable VectSp-like Abelian add-associative right_zeroed VectSpStr over b1 holds
   dom ID b2 = b2 &
    cod ID b2 = b2 &
    (for b3 being strict LModMorphism-like LModMorphismStr over b1
          st cod b3 = b2
       holds (ID b2) * b3 = b3) &
    (for b3 being strict LModMorphism-like LModMorphismStr over b1
          st dom b3 = b2
       holds b3 * ID b2 = b3);

:: MOD_2:th 28
theorem
for b1 being non empty universal set
for b2, b3, b4 being Element of b1 holds
{b2,b3,b4} is Element of b1;

:: MOD_2:th 29
theorem
for b1 being non empty universal set
for b2 being Element of b1 holds
   succ b2 is Element of b1;

:: MOD_2:th 30
theorem
for b1 being non empty universal set holds
   0 is Element of b1 & 1 is Element of b1 & 2 is Element of b1;

:: MOD_2:funcnot 10 => MOD_2:func 10
definition
  let a1 be Element of {0,1,2};
  func - A1 -> Element of {0,1,2} equals
    0
    if a1 = 0,
2
    if a1 = 1
    otherwise   case a1 = 2;
    thus 1;
  end;
;
end;

:: MOD_2:def 15
theorem
for b1 being Element of {0,1,2} holds
   (b1 = 0 implies - b1 = 0) & (b1 = 1 implies - b1 = 2) & (b1 = 2 implies - b1 = 1);

:: MOD_2:funcnot 11 => MOD_2:func 11
definition
  let a1, a2 be Element of {0,1,2};
  func A1 + A2 -> Element of {0,1,2} equals
    a2
    if a1 = 0,
a1
    if a2 = 0,
2
    if a1 = 1 & a2 = 1,
0
    if a1 = 1 & a2 = 2,
0
    if a1 = 2 & a2 = 1
    otherwise   case a1 = 2 & a2 = 2;
    thus 1;
  end;
;
end;

:: MOD_2:def 16
theorem
for b1, b2 being Element of {0,1,2} holds
(b1 = 0 implies b1 + b2 = b2) &
 (b2 = 0 implies b1 + b2 = b1) &
 (b1 = 1 & b2 = 1 implies b1 + b2 = 2) &
 (b1 = 1 & b2 = 2 implies b1 + b2 = 0) &
 (b1 = 2 & b2 = 1 implies b1 + b2 = 0) &
 (b1 = 2 & b2 = 2 implies b1 + b2 = 1);

:: MOD_2:funcnot 12 => MOD_2:func 12
definition
  let a1, a2 be Element of {0,1,2};
  func A1 * A2 -> Element of {0,1,2} equals
    0
    if a2 = 0,
0
    if a1 = 0,
a1
    if a2 = 1,
a2
    if a1 = 1
    otherwise   case a1 = 2 & a2 = 2;
    thus 1;
  end;
;
end;

:: MOD_2:def 17
theorem
for b1, b2 being Element of {0,1,2} holds
(b2 = 0 implies b1 * b2 = 0) &
 (b1 = 0 implies b1 * b2 = 0) &
 (b2 = 1 implies b1 * b2 = b1) &
 (b1 = 1 implies b1 * b2 = b2) &
 (b1 = 2 & b2 = 2 implies b1 * b2 = 1);

:: MOD_2:funcnot 13 => MOD_2:func 13
definition
  func add3 -> Function-like quasi_total Relation of [:{0,1,2},{0,1,2}:],{0,1,2} means
    for b1, b2 being Element of {0,1,2} holds
    it .(b1,b2) = b1 + b2;
end;

:: MOD_2:def 18
theorem
for b1 being Function-like quasi_total Relation of [:{0,1,2},{0,1,2}:],{0,1,2} holds
      b1 = add3
   iff
      for b2, b3 being Element of {0,1,2} holds
      b1 .(b2,b3) = b2 + b3;

:: MOD_2:funcnot 14 => MOD_2:func 14
definition
  func mult3 -> Function-like quasi_total Relation of [:{0,1,2},{0,1,2}:],{0,1,2} means
    for b1, b2 being Element of {0,1,2} holds
    it .(b1,b2) = b1 * b2;
end;

:: MOD_2:def 19
theorem
for b1 being Function-like quasi_total Relation of [:{0,1,2},{0,1,2}:],{0,1,2} holds
      b1 = mult3
   iff
      for b2, b3 being Element of {0,1,2} holds
      b1 .(b2,b3) = b2 * b3;

:: MOD_2:funcnot 15 => MOD_2:func 15
definition
  func compl3 -> Function-like quasi_total Relation of {0,1,2},{0,1,2} means
    for b1 being Element of {0,1,2} holds
       it . b1 = - b1;
end;

:: MOD_2:def 20
theorem
for b1 being Function-like quasi_total Relation of {0,1,2},{0,1,2} holds
      b1 = compl3
   iff
      for b2 being Element of {0,1,2} holds
         b1 . b2 = - b2;

:: MOD_2:funcnot 16 => MOD_2:func 16
definition
  func unit3 -> Element of {0,1,2} equals
    1;
end;

:: MOD_2:def 21
theorem
unit3 = 1;

:: MOD_2:funcnot 17 => MOD_2:func 17
definition
  func zero3 -> Element of {0,1,2} equals
    0;
end;

:: MOD_2:def 22
theorem
zero3 = 0;

:: MOD_2:funcnot 18 => MOD_2:func 18
definition
  func Z3 -> strict doubleLoopStr equals
    doubleLoopStr(#{0,1,2},add3,mult3,unit3,zero3#);
end;

:: MOD_2:def 23
theorem
Z3 = doubleLoopStr(#{0,1,2},add3,mult3,unit3,zero3#);

:: MOD_2:funcreg 2
registration
  cluster Z3 -> non empty strict;
end;

:: MOD_2:funcreg 3
registration
  cluster Z3 -> strict well-unital;
end;

:: MOD_2:th 32
theorem
0. Z3 = 0 &
 1. Z3 = 1 &
 0. Z3 is Element of {0,1,2} &
 1. Z3 is Element of {0,1,2} &
 the addF of Z3 = add3 &
 the multF of Z3 = mult3;

:: MOD_2:funcreg 4
registration
  cluster Z3 -> right_complementable strict add-associative right_zeroed;
end;

:: MOD_2:th 33
theorem
for b1, b2 being Element of the carrier of Z3
for b3, b4 being Element of {0,1,2}
      st b3 = b1 & b4 = b2
   holds b1 + b2 = b3 + b4 & b1 * b2 = b3 * b4 & - b1 = - b3;

:: MOD_2:th 34
theorem
for b1, b2, b3 being Element of the carrier of Z3
for b4, b5, b6 being Element of {0,1,2}
      st b4 = b1 & b5 = b2 & b6 = b3
   holds (b1 + b2) + b3 = (b4 + b5) + b6 &
    b1 + (b2 + b3) = b4 + (b5 + b6) &
    (b1 * b2) * b3 = (b4 * b5) * b6 &
    b1 * (b2 * b3) = b4 * (b5 * b6);

:: MOD_2:th 35
theorem
for b1, b2, b3, b4, b5 being Element of {0,1,2}
      st b4 = 0 & b5 = 1
   holds b1 + b2 = b2 + b1 &
    (b1 + b2) + b3 = b1 + (b2 + b3) &
    b1 + b4 = b1 &
    b1 + - b1 = b4 &
    b1 * b2 = b2 * b1 &
    (b1 * b2) * b3 = b1 * (b2 * b3) &
    b5 * b1 = b1 &
    (b1 <> b4 implies ex b6 being Element of {0,1,2} st
       b1 * b6 = b5) &
    b4 <> b5 &
    b1 * (b2 + b3) = (b1 * b2) + (b1 * b3);

:: MOD_2:th 36
theorem
for b1 being non empty doubleLoopStr
      st for b2, b3, b4 being Element of the carrier of b1 holds
        b2 + b3 = b3 + b2 &
         (b2 + b3) + b4 = b2 + (b3 + b4) &
         b2 + 0. b1 = b2 &
         b2 + - b2 = 0. b1 &
         b2 * b3 = b3 * b2 &
         (b2 * b3) * b4 = b2 * (b3 * b4) &
         (1. b1) * b2 = b2 &
         b2 * 1. b1 = b2 &
         (b2 <> 0. b1 implies ex b5 being Element of the carrier of b1 st
            b2 * b5 = 1. b1) &
         0. b1 <> 1. b1 &
         b2 * (b3 + b4) = (b2 * b3) + (b2 * b4)
   holds b1 is non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Abelian add-associative right_zeroed doubleLoopStr;

:: MOD_2:th 37
theorem
Z3 is non empty non degenerated right_complementable almost_left_invertible associative commutative well-unital distributive Fanoian Abelian add-associative right_zeroed doubleLoopStr;

:: MOD_2:funcreg 5
registration
  cluster Z3 -> right_complementable almost_left_invertible strict associative commutative well-unital distributive Fanoian Abelian add-associative right_zeroed;
end;

:: MOD_2:th 38
theorem
for b1, b2 being non empty set
for b3 being non empty universal set
for b4 being Function-like quasi_total Relation of b1,b2
      st b1 in b3 & b2 in b3
   holds b4 in b3;

:: MOD_2:th 40
theorem
for b1 being non empty universal set holds
   the carrier of Z3 in b1 & the addF of Z3 in b1 & comp Z3 in b1 & 0. Z3 in b1 & the multF of Z3 in b1 & 1. Z3 in b1;