Article CFUNCDOM, MML version 4.99.1005

:: CFUNCDOM:funcnot 1 => CFUNCDOM:func 1
definition
  let a1 be non empty set;
  func ComplexFuncAdd A1 -> Function-like quasi_total Relation of [:Funcs(a1,COMPLEX),Funcs(a1,COMPLEX):],Funcs(a1,COMPLEX) means
    for b1, b2 being Element of Funcs(a1,COMPLEX) holds
    it .(b1,b2) = addcomplex .:(b1,b2);
end;

:: CFUNCDOM:def 1
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:Funcs(b1,COMPLEX),Funcs(b1,COMPLEX):],Funcs(b1,COMPLEX) holds
      b2 = ComplexFuncAdd b1
   iff
      for b3, b4 being Element of Funcs(b1,COMPLEX) holds
      b2 .(b3,b4) = addcomplex .:(b3,b4);

:: CFUNCDOM:funcnot 2 => CFUNCDOM:func 2
definition
  let a1 be non empty set;
  func ComplexFuncMult A1 -> Function-like quasi_total Relation of [:Funcs(a1,COMPLEX),Funcs(a1,COMPLEX):],Funcs(a1,COMPLEX) means
    for b1, b2 being Element of Funcs(a1,COMPLEX) holds
    it .(b1,b2) = multcomplex .:(b1,b2);
end;

:: CFUNCDOM:def 2
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:Funcs(b1,COMPLEX),Funcs(b1,COMPLEX):],Funcs(b1,COMPLEX) holds
      b2 = ComplexFuncMult b1
   iff
      for b3, b4 being Element of Funcs(b1,COMPLEX) holds
      b2 .(b3,b4) = multcomplex .:(b3,b4);

:: CFUNCDOM:funcnot 3 => CFUNCDOM:func 3
definition
  let a1 be non empty set;
  func ComplexFuncExtMult A1 -> Function-like quasi_total Relation of [:COMPLEX,Funcs(a1,COMPLEX):],Funcs(a1,COMPLEX) means
    for b1 being Element of COMPLEX
    for b2 being Element of Funcs(a1,COMPLEX)
    for b3 being Element of a1 holds
       (it . [b1,b2]) . b3 = b1 * (b2 . b3);
end;

:: CFUNCDOM:def 3
theorem
for b1 being non empty set
for b2 being Function-like quasi_total Relation of [:COMPLEX,Funcs(b1,COMPLEX):],Funcs(b1,COMPLEX) holds
      b2 = ComplexFuncExtMult b1
   iff
      for b3 being Element of COMPLEX
      for b4 being Element of Funcs(b1,COMPLEX)
      for b5 being Element of b1 holds
         (b2 . [b3,b4]) . b5 = b3 * (b4 . b5);

:: CFUNCDOM:funcnot 4 => CFUNCDOM:func 4
definition
  let a1 be non empty set;
  func ComplexFuncZero A1 -> Element of Funcs(a1,COMPLEX) equals
    a1 --> 0;
end;

:: CFUNCDOM:def 4
theorem
for b1 being non empty set holds
   ComplexFuncZero b1 = b1 --> 0;

:: CFUNCDOM:funcnot 5 => CFUNCDOM:func 5
definition
  let a1 be non empty set;
  func ComplexFuncUnit A1 -> Element of Funcs(a1,COMPLEX) equals
    a1 --> 1r;
end;

:: CFUNCDOM:def 5
theorem
for b1 being non empty set holds
   ComplexFuncUnit b1 = b1 --> 1r;

:: CFUNCDOM:th 1
theorem
for b1 being non empty set
for b2, b3, b4 being Element of Funcs(b1,COMPLEX) holds
   b2 = (ComplexFuncAdd b1) .(b3,b4)
iff
   for b5 being Element of b1 holds
      b2 . b5 = (b3 . b5) + (b4 . b5);

:: CFUNCDOM:th 2
theorem
for b1 being non empty set
for b2, b3, b4 being Element of Funcs(b1,COMPLEX) holds
   b2 = (ComplexFuncMult b1) .(b3,b4)
iff
   for b5 being Element of b1 holds
      b2 . b5 = (b3 . b5) * (b4 . b5);

:: CFUNCDOM:th 5
theorem
for b1 being non empty set holds
   ComplexFuncZero b1 <> ComplexFuncUnit b1;

:: CFUNCDOM:th 6
theorem
for b1 being non empty set
for b2, b3 being Element of Funcs(b1,COMPLEX)
for b4 being Element of COMPLEX holds
      b2 = (ComplexFuncExtMult b1) . [b4,b3]
   iff
      for b5 being Element of b1 holds
         b2 . b5 = b4 * (b3 . b5);

:: CFUNCDOM:th 7
theorem
for b1 being non empty set
for b2, b3 being Element of Funcs(b1,COMPLEX) holds
(ComplexFuncAdd b1) .(b2,b3) = (ComplexFuncAdd b1) .(b3,b2);

:: CFUNCDOM:th 8
theorem
for b1 being non empty set
for b2, b3, b4 being Element of Funcs(b1,COMPLEX) holds
(ComplexFuncAdd b1) .(b2,(ComplexFuncAdd b1) .(b3,b4)) = (ComplexFuncAdd b1) .((ComplexFuncAdd b1) .(b2,b3),b4);

:: CFUNCDOM:th 9
theorem
for b1 being non empty set
for b2, b3 being Element of Funcs(b1,COMPLEX) holds
(ComplexFuncMult b1) .(b2,b3) = (ComplexFuncMult b1) .(b3,b2);

:: CFUNCDOM:th 10
theorem
for b1 being non empty set
for b2, b3, b4 being Element of Funcs(b1,COMPLEX) holds
(ComplexFuncMult b1) .(b2,(ComplexFuncMult b1) .(b3,b4)) = (ComplexFuncMult b1) .((ComplexFuncMult b1) .(b2,b3),b4);

:: CFUNCDOM:th 11
theorem
for b1 being non empty set
for b2 being Element of Funcs(b1,COMPLEX) holds
   (ComplexFuncMult b1) .(ComplexFuncUnit b1,b2) = b2;

:: CFUNCDOM:th 12
theorem
for b1 being non empty set
for b2 being Element of Funcs(b1,COMPLEX) holds
   (ComplexFuncAdd b1) .(ComplexFuncZero b1,b2) = b2;

:: CFUNCDOM:th 13
theorem
for b1 being non empty set
for b2 being Element of Funcs(b1,COMPLEX) holds
   (ComplexFuncAdd b1) .(b2,(ComplexFuncExtMult b1) . [- 1r,b2]) = ComplexFuncZero b1;

:: CFUNCDOM:th 14
theorem
for b1 being non empty set
for b2 being Element of Funcs(b1,COMPLEX) holds
   (ComplexFuncExtMult b1) . [1r,b2] = b2;

:: CFUNCDOM:th 15
theorem
for b1 being non empty set
for b2 being Element of Funcs(b1,COMPLEX)
for b3, b4 being Element of COMPLEX holds
(ComplexFuncExtMult b1) . [b3,(ComplexFuncExtMult b1) . [b4,b2]] = (ComplexFuncExtMult b1) . [b3 * b4,b2];

:: CFUNCDOM:th 16
theorem
for b1 being non empty set
for b2 being Element of Funcs(b1,COMPLEX)
for b3, b4 being Element of COMPLEX holds
(ComplexFuncAdd b1) .((ComplexFuncExtMult b1) . [b3,b2],(ComplexFuncExtMult b1) . [b4,b2]) = (ComplexFuncExtMult b1) . [b3 + b4,b2];

:: CFUNCDOM:th 17
theorem
for b1 being non empty set
for b2, b3, b4 being Element of Funcs(b1,COMPLEX) holds
(ComplexFuncMult b1) .(b2,(ComplexFuncAdd b1) .(b3,b4)) = (ComplexFuncAdd b1) .((ComplexFuncMult b1) .(b2,b3),(ComplexFuncMult b1) .(b2,b4));

:: CFUNCDOM:th 18
theorem
for b1 being non empty set
for b2, b3 being Element of Funcs(b1,COMPLEX)
for b4 being Element of COMPLEX holds
   (ComplexFuncMult b1) .((ComplexFuncExtMult b1) . [b4,b2],b3) = (ComplexFuncExtMult b1) . [b4,(ComplexFuncMult b1) .(b2,b3)];

:: CFUNCDOM:th 19
theorem
for b1 being set
for b2 being non empty set holds
   ex b3, b4 being Element of Funcs(b2,COMPLEX) st
      (for b5 being set
             st b5 in b2
          holds (b5 = b1 implies b3 . b5 = 1r) & (b5 = b1 or b3 . b5 = 0)) &
       (for b5 being set
             st b5 in b2
          holds (b5 = b1 implies b4 . b5 = 0) & (b5 = b1 or b4 . b5 = 1r));

:: CFUNCDOM:th 20
theorem
for b1, b2 being set
for b3 being non empty set
for b4, b5 being Element of Funcs(b3,COMPLEX)
   st b1 in b3 &
      b2 in b3 &
      b1 <> b2 &
      (for b6 being set
            st b6 in b3
         holds (b6 = b1 implies b4 . b6 = 1r) & (b6 = b1 or b4 . b6 = 0)) &
      (for b6 being set
            st b6 in b3
         holds (b6 = b1 implies b5 . b6 = 0) & (b6 = b1 or b5 . b6 = 1r))
for b6, b7 being Element of COMPLEX
      st (ComplexFuncAdd b3) .((ComplexFuncExtMult b3) . [b6,b4],(ComplexFuncExtMult b3) . [b7,b5]) = ComplexFuncZero b3
   holds b6 = 0c & b7 = 0c;

:: CFUNCDOM:th 21
theorem
for b1, b2 being set
for b3 being non empty set
      st b1 in b3 & b2 in b3 & b1 <> b2
   holds ex b4, b5 being Element of Funcs(b3,COMPLEX) st
      for b6, b7 being Element of COMPLEX
            st (ComplexFuncAdd b3) .((ComplexFuncExtMult b3) . [b6,b4],(ComplexFuncExtMult b3) . [b7,b5]) = ComplexFuncZero b3
         holds b6 = 0 & b7 = 0;

:: CFUNCDOM:th 22
theorem
for b1, b2 being set
for b3 being non empty set
for b4, b5 being Element of Funcs(b3,COMPLEX)
   st b3 = {b1,b2} &
      b1 <> b2 &
      (for b6 being set
            st b6 in b3
         holds (b6 = b1 implies b4 . b6 = 1r) & (b6 = b1 or b4 . b6 = 0)) &
      (for b6 being set
            st b6 in b3
         holds (b6 = b1 implies b5 . b6 = 0) & (b6 = b1 or b5 . b6 = 1r))
for b6 being Element of Funcs(b3,COMPLEX) holds
   ex b7, b8 being Element of COMPLEX st
      b6 = (ComplexFuncAdd b3) .((ComplexFuncExtMult b3) . [b7,b4],(ComplexFuncExtMult b3) . [b8,b5]);

:: CFUNCDOM:th 23
theorem
for b1, b2 being set
for b3 being non empty set
      st b3 = {b1,b2} & b1 <> b2
   holds ex b4, b5 being Element of Funcs(b3,COMPLEX) st
      for b6 being Element of Funcs(b3,COMPLEX) holds
         ex b7, b8 being Element of COMPLEX st
            b6 = (ComplexFuncAdd b3) .((ComplexFuncExtMult b3) . [b7,b4],(ComplexFuncExtMult b3) . [b8,b5]);

:: CFUNCDOM:th 24
theorem
for b1, b2 being set
for b3 being non empty set
      st b3 = {b1,b2} & b1 <> b2
   holds ex b4, b5 being Element of Funcs(b3,COMPLEX) st
      (for b6, b7 being Element of COMPLEX
             st (ComplexFuncAdd b3) .((ComplexFuncExtMult b3) . [b6,b4],(ComplexFuncExtMult b3) . [b7,b5]) = ComplexFuncZero b3
          holds b6 = 0 & b7 = 0) &
       (for b6 being Element of Funcs(b3,COMPLEX) holds
          ex b7, b8 being Element of COMPLEX st
             b6 = (ComplexFuncAdd b3) .((ComplexFuncExtMult b3) . [b7,b4],(ComplexFuncExtMult b3) . [b8,b5]));

:: CFUNCDOM:th 25
theorem
for b1 being non empty set holds
   CLSStruct(#Funcs(b1,COMPLEX),ComplexFuncZero b1,ComplexFuncAdd b1,ComplexFuncExtMult b1#) is non empty right_complementable Abelian add-associative right_zeroed ComplexLinearSpace-like CLSStruct;

:: CFUNCDOM:funcnot 6 => CFUNCDOM:func 6
definition
  let a1 be non empty set;
  func ComplexVectSpace A1 -> non empty right_complementable Abelian add-associative right_zeroed strict ComplexLinearSpace-like CLSStruct equals
    CLSStruct(#Funcs(a1,COMPLEX),ComplexFuncZero a1,ComplexFuncAdd a1,ComplexFuncExtMult a1#);
end;

:: CFUNCDOM:def 6
theorem
for b1 being non empty set holds
   ComplexVectSpace b1 = CLSStruct(#Funcs(b1,COMPLEX),ComplexFuncZero b1,ComplexFuncAdd b1,ComplexFuncExtMult b1#);

:: CFUNCDOM:th 26
theorem
ex b1 being non empty right_complementable Abelian add-associative right_zeroed strict ComplexLinearSpace-like CLSStruct st
   ex b2, b3 being Element of the carrier of b1 st
      (for b4, b5 being Element of COMPLEX
             st (b4 * b2) + (b5 * b3) = 0. b1
          holds b4 = 0 & b5 = 0) &
       (for b4 being Element of the carrier of b1 holds
          ex b5, b6 being Element of COMPLEX st
             b4 = (b5 * b2) + (b6 * b3));

:: CFUNCDOM:funcnot 7 => CFUNCDOM:func 7
definition
  let a1 be non empty set;
  func CRing A1 -> strict doubleLoopStr equals
    doubleLoopStr(#Funcs(a1,COMPLEX),ComplexFuncAdd a1,ComplexFuncMult a1,ComplexFuncUnit a1,ComplexFuncZero a1#);
end;

:: CFUNCDOM:def 7
theorem
for b1 being non empty set holds
   CRing b1 = doubleLoopStr(#Funcs(b1,COMPLEX),ComplexFuncAdd b1,ComplexFuncMult b1,ComplexFuncUnit b1,ComplexFuncZero b1#);

:: CFUNCDOM:funcreg 1
registration
  let a1 be non empty set;
  cluster CRing a1 -> non empty strict;
end;

:: CFUNCDOM:funcreg 2
registration
  let a1 be non empty set;
  cluster CRing a1 -> strict unital;
end;

:: CFUNCDOM:th 27
theorem
for b1 being non empty set
for b2, b3, b4 being Element of the carrier of CRing b1 holds
b2 + b3 = b3 + b2 &
 (b2 + b3) + b4 = b2 + (b3 + b4) &
 b2 + 0. CRing b1 = b2 &
 b2 is right_complementable(CRing b1) &
 b2 * b3 = b3 * b2 &
 (b2 * b3) * b4 = b2 * (b3 * b4) &
 b2 * 1. CRing b1 = b2 &
 (1. CRing b1) * b2 = b2 &
 b2 * (b3 + b4) = (b2 * b3) + (b2 * b4) &
 (b3 + b4) * b2 = (b3 * b2) + (b4 * b2);

:: CFUNCDOM:th 28
theorem
for b1 being non empty set holds
   CRing b1 is non empty right_complementable Abelian add-associative right_zeroed associative commutative well-unital distributive doubleLoopStr;

:: CFUNCDOM:structnot 1 => CFUNCDOM:struct 1
definition
  struct(doubleLoopStrCLSStruct) ComplexAlgebraStr(#
    carrier -> set,
    multF -> Function-like quasi_total Relation of [:the carrier of it,the carrier of it:],the carrier of it,
    addF -> Function-like quasi_total Relation of [:the carrier of it,the carrier of it:],the carrier of it,
    Mult -> Function-like quasi_total Relation of [:COMPLEX,the carrier of it:],the carrier of it,
    OneF -> Element of the carrier of it,
    ZeroF -> Element of the carrier of it
  #);
end;

:: CFUNCDOM:attrnot 1 => CFUNCDOM:attr 1
definition
  let a1 be ComplexAlgebraStr;
  attr a1 is strict;
end;

:: CFUNCDOM:exreg 1
registration
  cluster strict ComplexAlgebraStr;
end;

:: CFUNCDOM:aggrnot 1 => CFUNCDOM:aggr 1
definition
  let a1 be set;
  let a2, a3 be Function-like quasi_total Relation of [:a1,a1:],a1;
  let a4 be Function-like quasi_total Relation of [:COMPLEX,a1:],a1;
  let a5, a6 be Element of a1;
  aggr ComplexAlgebraStr(#a1,a2,a3,a4,a5,a6#) -> strict ComplexAlgebraStr;
end;

:: CFUNCDOM:exreg 2
registration
  cluster non empty ComplexAlgebraStr;
end;

:: CFUNCDOM:funcnot 8 => CFUNCDOM:func 8
definition
  let a1 be non empty set;
  func CAlgebra A1 -> strict ComplexAlgebraStr equals
    ComplexAlgebraStr(#Funcs(a1,COMPLEX),ComplexFuncMult a1,ComplexFuncAdd a1,ComplexFuncExtMult a1,ComplexFuncUnit a1,ComplexFuncZero a1#);
end;

:: CFUNCDOM:def 8
theorem
for b1 being non empty set holds
   CAlgebra b1 = ComplexAlgebraStr(#Funcs(b1,COMPLEX),ComplexFuncMult b1,ComplexFuncAdd b1,ComplexFuncExtMult b1,ComplexFuncUnit b1,ComplexFuncZero b1#);

:: CFUNCDOM:funcreg 3
registration
  let a1 be non empty set;
  cluster CAlgebra a1 -> non empty strict;
end;

:: CFUNCDOM:funcreg 4
registration
  let a1 be non empty set;
  cluster CAlgebra a1 -> unital strict;
end;

:: CFUNCDOM:th 29
theorem
for b1 being non empty set
for b2, b3, b4 being Element of the carrier of CAlgebra b1
for b5, b6 being Element of COMPLEX holds
b2 + b3 = b3 + b2 &
 (b2 + b3) + b4 = b2 + (b3 + b4) &
 b2 + 0. CAlgebra b1 = b2 &
 b2 is right_complementable(CAlgebra b1) &
 b2 * b3 = b3 * b2 &
 (b2 * b3) * b4 = b2 * (b3 * b4) &
 b2 * 1. CAlgebra b1 = b2 &
 b2 * (b3 + b4) = (b2 * b3) + (b2 * b4) &
 b5 * (b2 * b3) = (b5 * b2) * b3 &
 b5 * (b2 + b3) = (b5 * b2) + (b5 * b3) &
 (b5 + b6) * b2 = (b5 * b2) + (b6 * b2) &
 (b5 * b6) * b2 = b5 * (b6 * b2);

:: CFUNCDOM:attrnot 2 => CFUNCDOM:attr 2
definition
  let a1 be non empty ComplexAlgebraStr;
  attr a1 is ComplexAlgebra-like means
    for b1, b2, b3 being Element of the carrier of a1
    for b4, b5 being Element of COMPLEX holds
    b4 * (b1 * b2) = (b4 * b1) * b2 &
     b4 * (b1 + b2) = (b4 * b1) + (b4 * b2) &
     (b4 + b5) * b1 = (b4 * b1) + (b5 * b1) &
     (b4 * b5) * b1 = b4 * (b5 * b1);
end;

:: CFUNCDOM:dfs 9
definiens
  let a1 be non empty ComplexAlgebraStr;
To prove
     a1 is ComplexAlgebra-like
it is sufficient to prove
  thus for b1, b2, b3 being Element of the carrier of a1
    for b4, b5 being Element of COMPLEX holds
    b4 * (b1 * b2) = (b4 * b1) * b2 &
     b4 * (b1 + b2) = (b4 * b1) + (b4 * b2) &
     (b4 + b5) * b1 = (b4 * b1) + (b5 * b1) &
     (b4 * b5) * b1 = b4 * (b5 * b1);

:: CFUNCDOM:def 9
theorem
for b1 being non empty ComplexAlgebraStr holds
      b1 is ComplexAlgebra-like
   iff
      for b2, b3, b4 being Element of the carrier of b1
      for b5, b6 being Element of COMPLEX holds
      b5 * (b2 * b3) = (b5 * b2) * b3 &
       b5 * (b2 + b3) = (b5 * b2) + (b5 * b3) &
       (b5 + b6) * b2 = (b5 * b2) + (b6 * b2) &
       (b5 * b6) * b2 = b5 * (b6 * b2);

:: CFUNCDOM:exreg 3
registration
  cluster non empty right_complementable Abelian add-associative right_zeroed associative commutative right-distributive right_unital strict ComplexAlgebra-like ComplexAlgebraStr;
end;

:: CFUNCDOM:modenot 1
definition
  mode ComplexAlgebra is non empty right_complementable Abelian add-associative right_zeroed associative commutative right-distributive right_unital ComplexAlgebra-like ComplexAlgebraStr;
end;

:: CFUNCDOM:th 30
theorem
for b1 being non empty set holds
   CAlgebra b1 is non empty right_complementable Abelian add-associative right_zeroed associative commutative right-distributive right_unital ComplexAlgebra-like ComplexAlgebraStr;

:: CFUNCDOM:th 31
theorem
for b1 being non empty set holds
   1. CRing b1 = ComplexFuncUnit b1;

:: CFUNCDOM:th 32
theorem
for b1 being non empty set holds
   1. CAlgebra b1 = ComplexFuncUnit b1;