The Mizar article:

Abelian Groups, Fields and Vector Spaces

by
Eugeniusz Kusak,
Wojciech Leonczuk, and
Michal Muzalewski

Received November 23, 1989

Copyright (c) 1989 Association of Mizar Users

MML identifier: VECTSP_1
[ MML identifier index ]


environ

 vocabulary RLVECT_1, BINOP_1, ARYTM_1, FUNCT_1, LATTICES, RELAT_1, ARYTM_3,
      VECTSP_1, ALGSTR_2;
 notation XBOOLE_0, ZFMISC_1, SUBSET_1, NUMBERS, FUNCT_1, FUNCT_2, BINOP_1,
      REAL_1, STRUCT_0, RLVECT_1;
 constructors BINOP_1, REAL_1, RLVECT_1, MEMBERED, XBOOLE_0;
 clusters STRUCT_0, RLVECT_1, RELSET_1, MEMBERED, ZFMISC_1, XBOOLE_0;
 requirements NUMERALS, SUBSET, ARITHM;
 definitions RLVECT_1, STRUCT_0;
 theorems BINOP_1, FUNCT_2, RLVECT_1, XCMPLX_0, XCMPLX_1;
 schemes FUNCT_2, BINOP_1;

begin
::
::                         1. GROUP STRUCTURE
::

 reserve GS for non empty LoopStr;

 defpred Lm1[Element of REAL,set] means $2 = -$1;
Lm1: for x being Element of REAL ex y being Element of REAL st Lm1[x,y];

definition
 canceled 3;

 deffunc O(Element of REAL, Element of REAL) = $1+$2;
 func addreal -> BinOp of REAL means
 :Def4: for x,y be Element of REAL holds it.(x,y) = x+y;
   existence
    proof
      thus ex o being BinOp of REAL st
       for a,b being Element of REAL holds o.(a,b) = O(a,b) from BinOpLambda;
    end;
   uniqueness
    proof let o1,o2 be BinOp of REAL;
     assume A1: for x,y being Element of REAL holds o1.(x,y) = x+y;
     assume A2: for x,y being Element of REAL holds o2.(x,y) = x+y;
        now let x,y be Element of REAL;
          o1.(x,y) = x+y & o2.(x,y) = x+y by A1,A2;
       hence o1.(x,y) = o2.(x,y);
      end;
     hence thesis by BINOP_1:2;
    end;
 func compreal -> UnOp of REAL means
    for x being Element of REAL holds it.x = -x;
   existence
    proof
     thus ex f being UnOp of REAL st
      for x being Element of REAL holds Lm1[x,f.x] from FuncExD(Lm1);
    end;
   uniqueness
   proof let o3,o4 be UnOp of REAL;
    assume A3: for x being Element of REAL holds o3.x = -x;
    assume A4: for x being Element of REAL holds o4.x = -x;
        now let x be Element of REAL;
         o3.x = -x & o4.x = -x by A3,A4;
       hence o3.x = o4.x;
      end;
    hence thesis by FUNCT_2:113;
   end;
end;

definition
 func G_Real -> strict LoopStr equals
 :Def6:  LoopStr (# REAL,addreal,0 #);
  coherence;
end;

definition
 cluster G_Real -> non empty;
 coherence
  proof
    thus the carrier of G_Real is non empty by Def6;
  end;
end;

definition
 cluster G_Real -> Abelian add-associative right_zeroed right_complementable;
 coherence
  proof
   hereby
    let x,y be Element of G_Real;
     reconsider x'=x ,y'=y as Element of REAL by Def6;
    thus x+y = (the add of G_Real).(x,y) by RLVECT_1:5
               .= y'+x' by Def4,Def6
               .= addreal.(y',x') by Def4
               .= y+x by Def6,RLVECT_1:5;
   end;
   hereby
    let x,y,z be Element of G_Real;
     reconsider x'=x ,y'=y , z'=z as Element of REAL by Def6;
    thus (x+y)+z = (the add of G_Real).(x+y,z) by RLVECT_1:5
               .= (the add of G_Real).((the add of G_Real).(x,y),z)
                  by RLVECT_1:5
               .= addreal.((x'+y'),z') by Def4,Def6
               .= (x'+y')+z' by Def4
               .= x'+(y'+z') by XCMPLX_1:1
               .= addreal.(x',(y'+z')) by Def4
               .= addreal.(x',addreal.(y',z')) by Def4
               .= (the add of G_Real).(x,y+z) by Def6,RLVECT_1:5
               .= x+(y+z) by RLVECT_1:5;
   end;
   hereby
    let x be Element of G_Real;
     reconsider x'=x as Element of REAL by Def6;
    thus x+0.G_Real = (the add of G_Real).(x,0.G_Real) by RLVECT_1:5
         .= (the add of G_Real).(x,(the Zero of G_Real)) by RLVECT_1:def 2
         .= x'+0 by Def4,Def6
         .= x;
   end;
   let x be Element of G_Real;
   reconsider x'=x as Element of REAL by Def6;
   reconsider y = -x' as Element of G_Real by Def6;
   take y;
   thus x+ y = (the add of G_Real).(x,y) by RLVECT_1:5
              .= x'+ -x' by Def4,Def6
              .= 0 by XCMPLX_0:def 6
              .= 0.G_Real by Def6,RLVECT_1:def 2;
  end;
end;

canceled 5;

theorem
   for x,y,z being Element of G_Real holds
            x+y = y+x &
            (x+y)+z = x+(y+z) &
            x+(0.G_Real) = x &
            x+(-x) = 0.G_Real by RLVECT_1:def 6,def 7,def 10;

definition
 cluster strict add-associative right_zeroed right_complementable
   Abelian (non empty LoopStr);
  existence proof take G_Real; thus thesis; end;
end;

definition
 mode AbGroup is add-associative right_zeroed right_complementable
   Abelian (non empty LoopStr);
end;

theorem (for x,y,z being Element of GS holds
             x+y = y+x &
             (x+y)+z = x+(y+z) &
             x+(0.GS) = x &
             ex x' being Element of GS st x+x' = 0.GS)
     iff GS is AbGroup by RLVECT_1:def 5,def 6,def 7,def 8;

::
::                         4. FIELD STRUCTURE
::

definition
  struct(1-sorted) HGrStr (# carrier -> set,
                                mult -> BinOp of the carrier #);
end;

definition
 cluster non empty strict HGrStr;
  existence
   proof
     consider A being non empty set, m being BinOp of A;
    take HGrStr(#A,m#);
    thus the carrier of HGrStr(#A,m#) is non empty;
    thus thesis;
   end;
end;

definition
 struct(HGrStr) multLoopStr (# carrier -> set,
                        mult -> BinOp of the carrier,
                        unity -> Element of the carrier #);
end;

definition
 cluster non empty strict multLoopStr;
  existence
   proof
     consider A being non empty set, m being BinOp of A, u being Element of A;
    take multLoopStr(#A,m,u#);
    thus the carrier of multLoopStr(#A,m,u#) is non empty;
    thus thesis;
   end;
end;

definition let FS be multLoopStr;
 canceled 2;

 func 1_ FS -> Element of FS equals
 :Def9:     the unity of FS;
  coherence;
end;

definition
 struct(multLoopStr,ZeroStr) multLoopStr_0 (# carrier -> set,
                        mult -> BinOp of the carrier,
                        unity -> Element of the carrier,
                        Zero -> Element of the carrier #);
end;

definition
 cluster non empty strict multLoopStr_0;
 existence
  proof
    consider A being non empty set,
             m being BinOp of A, u,Z being Element of A;
   take multLoopStr_0(#A,m,u,Z#);
   thus the carrier of multLoopStr_0(#A,m,u,Z#) is non empty;
   thus thesis;
  end;
end;

definition
 struct(LoopStr,multLoopStr_0) doubleLoopStr (# carrier -> set,
                         add, mult -> BinOp of the carrier,
                         unity, Zero -> Element of the carrier #);
end;

definition
 cluster non empty strict doubleLoopStr;
 existence
  proof
    consider A being non empty set,
             m,a being BinOp of A, u,Z being Element of A;
   take doubleLoopStr(#A,m,a,u,Z#);
   thus the carrier of doubleLoopStr(#A,m,a,u,Z#) is non empty;
   thus thesis;
  end;
end;

definition let FS be non empty HGrStr;
   let x,y be Element of FS;
 func x*y -> Element of FS equals
 :Def10:      (the mult of FS).(x,y);
  coherence;
end;

definition let IT be non empty doubleLoopStr;
 attr IT is right-distributive means :Def11:
   for a, b, c being Element of IT holds a*(b+c) = a*b + a*c;
 attr IT is left-distributive means :Def12:
   for a, b, c being Element of IT holds (b+c)*a = b*a + c*a;
end;

 Lm2: for o1, o2 being BinOp of REAL st
   (for x,y being Element of REAL holds o1.(x,y) = x*y) &
     (for x,y being Element of REAL holds o2.(x,y) = x*y)
     holds o1 = o2
   proof let o1, o2 be BinOp of REAL;
    assume A1: for x,y being Element of REAL
              holds o1.(x,y) = x*y;
    assume A2: for x,y being Element of REAL
              holds o2.(x,y) = x*y;
       now let x,y be Element of REAL;
        o1.(x,y) = x*y & o2.(x,y) = x*y by A1,A2;
      hence o1.(x,y) = o2.(x,y);
     end;
    hence thesis by BINOP_1:2;
    end;

definition let IT be non empty multLoopStr;
 attr IT is right_unital means :Def13:
  for x being Element of IT holds x * (1_ IT) = x;
end;

definition
  deffunc O(Element of REAL, Element of REAL) = $1*$2;
 func multreal -> BinOp of REAL means
 :Def14:for x,y be Element of REAL holds it.(x,y) = x*y;
   existence
    proof
      thus ex o being BinOp of REAL st
       for a,b being Element of REAL holds o.(a,b) = O(a,b)
      from BinOpLambda;
    end;
   uniqueness by Lm2;
end;

definition
 func F_Real -> strict doubleLoopStr equals
 :Def15: doubleLoopStr (# REAL,addreal,multreal,1,0 #);
  correctness;
end;

definition let IT be non empty HGrStr;
 attr IT is associative means
 :Def16: for x,y,z being Element of IT holds
          (x*y)*z = x*(y*z);
 attr IT is commutative means
 :Def17: for x,y being Element of IT holds x*y = y*x;
end;

definition let IT be non empty doubleLoopStr;
 attr IT is distributive means
 :Def18: for x,y,z being Element of IT holds
           x*(y+z) = x*y+x*z & (y+z)*x = y*x+z*x;
end;

definition let IT be non empty multLoopStr;
 attr IT is left_unital means
 :Def19: for x being Element of IT holds (1_ IT) * x = x;
end;

definition let IT be non empty multLoopStr_0;
 attr IT is Field-like means
 :Def20: for x being Element of IT st x <> 0.IT
     ex y be Element of IT st x*y = 1_ IT;
end;

definition let IT be multLoopStr_0;
 attr IT is degenerated means
 :Def21:  0.IT = 1_ IT;
end;

definition
 cluster F_Real -> non empty;
 coherence
  proof
    thus the carrier of F_Real is non empty by Def15;
  end;
end;

definition
 cluster F_Real -> add-associative right_zeroed right_complementable Abelian
   commutative associative left_unital right_unital distributive Field-like
   non degenerated;
 coherence
  proof
A1:  0.F_Real = 0 by Def15,RLVECT_1:def 2;
A2:  1_ F_Real = 1 by Def9,Def15;
   hereby let x,y,z be Element of F_Real;
     reconsider x'=x ,y'=y , z'=z as Element of REAL by Def15;
    thus (x+y)+z = (the add of F_Real).(x+y,z) by RLVECT_1:5
               .= (the add of F_Real).((the add of F_Real).(x,y),z)
                  by RLVECT_1:5
               .= addreal.((x'+y'),z') by Def4,Def15
               .= (x'+y')+z' by Def4
               .= x'+(y'+z') by XCMPLX_1:1
               .= addreal.(x',(y'+z')) by Def4
               .= addreal.(x',addreal.(y',z')) by Def4
               .= (the add of F_Real).(x,y+z) by Def15,RLVECT_1:5
               .= x+(y+z) by RLVECT_1:5;
   end;
   hereby let x be Element of F_Real;
     reconsider x'=x as Element of REAL by Def15;
   thus x+0.F_Real = (the add of F_Real).(x,0.F_Real) by RLVECT_1:5
        .= (the add of F_Real).(x,(the Zero of F_Real)) by RLVECT_1:def 2
               .= x'+0 by Def4,Def15
               .= x;
   end;
   hereby let x be Element of F_Real;
     reconsider x'=x as Element of REAL by Def15;
     reconsider y=-x' as Element of F_Real by Def15;
     take y' = y;
    thus x+ y' = addreal.(x',y') by Def15,RLVECT_1:5
               .= x'+ -x' by Def4
               .= 0 by XCMPLX_0:def 6
               .= 0.F_Real by Def15,RLVECT_1:def 2;
   end;
   hereby let x,y be Element of F_Real;
     reconsider x'=x ,y'=y as Element of REAL by Def15;
    thus x+y = (the add of F_Real).(x,y) by RLVECT_1:5
             .= y'+x' by Def4,Def15
             .= addreal.(y',x') by Def4
             .= y+x by Def15,RLVECT_1:5;
   end;
   hereby let x,y be Element of F_Real;
     reconsider x'=x ,y'=y as Element of REAL by Def15;
    thus x*y = (the mult of F_Real).(x,y) by Def10
               .= y'*x' by Def14,Def15
               .= multreal.(y',x') by Def14
               .= y*x by Def10,Def15;
   end;
   hereby let x,y,z be Element of F_Real;
     reconsider x'=x ,y'=y , z'=z as Element of REAL by Def15;
    thus (x*y)*z = (the mult of F_Real).(x*y,z) by Def10
               .= (the mult of F_Real).((the mult of F_Real).(x,y),z)
                  by Def10
               .= multreal.((x'*y'),z') by Def14,Def15
               .= (x'*y')*z' by Def14
               .= x'*(y'*z') by XCMPLX_1:4
               .= multreal.(x',(y'*z')) by Def14
               .= multreal.(x',multreal.(y',z')) by Def14
               .= (the mult of F_Real).(x,y*z) by Def10,Def15
               .= x*(y*z) by Def10;
   end;
   hereby let x be Element of F_Real;
     reconsider x'=x as Element of REAL by Def15;
    thus (1_ F_Real)*x = (the mult of F_Real).((1_ F_Real),x) by Def10
               .= (the mult of F_Real).((the unity of F_Real),x) by Def9
               .= 1*x' by Def14,Def15
               .= x;
   end;
   hereby let x be Element of F_Real;
     reconsider x'=x as Element of REAL by Def15;
    thus x*(1_ F_Real) = (the mult of F_Real).(x,(1_ F_Real)) by Def10
               .= (the mult of F_Real).(x,(the unity of F_Real)) by Def9
               .= 1*x' by Def14,Def15
               .= x;
   end;
   hereby let x,y,z be Element of F_Real;
     reconsider x'=x ,y'=y , z'=z as Element of REAL by Def15;
    thus x*(y+z) = (the mult of F_Real).(x,(y+z)) by Def10
               .= (the mult of F_Real).(x,(the add of F_Real).(y,z))
                  by RLVECT_1:5
               .= multreal.(x',(y'+z')) by Def4,Def15
               .= x'*(y'+z') by Def14
               .= x'*y'+x'*z' by XCMPLX_1:8
               .= addreal.(x'*y',x'*z') by Def4
               .= addreal.(multreal.(x',y'),x'*z') by Def14
               .= addreal.(multreal.(x',y'),multreal.(x',z'))
                  by Def14
               .= (the add of F_Real).((x*y),(the mult of F_Real).(x,z))
                  by Def10,Def15
               .= (the add of F_Real).((x*y),(x*z)) by Def10
               .= x*y+x*z by RLVECT_1:5;
    thus (y+z)*x = (the mult of F_Real).(y+z,x) by Def10
               .= (the mult of F_Real).((the add of F_Real).(y,z),x)
                  by RLVECT_1:5
               .= multreal.((y'+z'),x') by Def4,Def15
               .= (y'+z')*x' by Def14
               .= y'*x'+z'*x' by XCMPLX_1:8
               .= addreal.(y'*x',z'*x') by Def4
               .= addreal.(multreal.(y',x'),z'*x') by Def14
               .= addreal.(multreal.(y',x'),multreal.(z',x'))
                  by Def14
               .= (the add of F_Real).((y*x),(the mult of F_Real).(z,x))
                  by Def10,Def15
               .= (the add of F_Real).((y*x),(z*x)) by Def10
               .= y*x+z*x by RLVECT_1:5;
   end;
   hereby let x be Element of F_Real;
     reconsider x'=x as Element of REAL by Def15;
    assume x<>0.F_Real;
    then A3: x'*(x')" =1 by A1,XCMPLX_0:def 7;
    reconsider y = (x')" as Element of F_Real by Def15;
    take y;
    thus x*y = (the mult of F_Real).(x,y) by Def10
            .= 1_ F_Real by A2,A3,Def14,Def15;
   end;
   thus 0.F_Real <> 1_ F_Real by A2,Def15,RLVECT_1:def 2;
  end;
end;

Lm3: for L being non empty doubleLoopStr st
   L is distributive holds L is right-distributive left-distributive
proof
   let L be non empty doubleLoopStr;
   assume A1:L is distributive;
   then (for a,b,c being Element of L holds a*(b+c) = a*b + a*c
)
      by Def18;
   hence L is right-distributive by Def11;
     (for a,b,c being Element of L holds (b+c)*a = b*a + c*a)
      by A1,Def18; hence thesis by Def12;
end;

definition
  cluster distributive -> left-distributive right-distributive
    (non empty doubleLoopStr);
  coherence by Lm3;
  cluster left-distributive right-distributive -> distributive
    (non empty doubleLoopStr);
  coherence
  proof
    let D be non empty doubleLoopStr;
    assume (for a,b,c being Element of D
            holds (b+c)*a = b*a + c*a) &
           for a,b,c being Element of D
            holds a*(b+c) = a*b+ a*c;
    hence for x,y,z be Element of D holds
       x*(y+z) = x*y+x*z & (y+z)*x = y*x+z*x;
  end;
end;

definition
 cluster add-associative right_zeroed right_complementable Abelian
   commutative associative left_unital right_unital distributive Field-like
   non degenerated strict (non empty doubleLoopStr);
  existence proof take F_Real; thus thesis; end;
end;

definition
 cluster commutative associative (non empty HGrStr);
  existence proof take F_Real; thus thesis; end;
end;

definition
 mode Field is add-associative right_zeroed right_complementable
    Abelian commutative associative left_unital distributive
      Field-like non degenerated (non empty doubleLoopStr);
end;

canceled 13;

theorem
     for x,y,z being Element of F_Real holds
            x+y = y+x &
            (x+y)+z = x+(y+z) &
            x+(0.F_Real) = x &
            x+(-x) = 0.F_Real &
            x*y = y*x &
            (x*y)*z = x*(y*z) &
            (1_ F_Real)*x = x &
            (x <> 0.F_Real implies ex y be Element of F_Real st
             x*y = 1_ F_Real) &
            x*(y+z) = x*y+x*z & (y+z)*x = y*x+z*x
       by Def16,Def17,Def18,Def19,Def20,RLVECT_1:def 6,def 7,def 10;

theorem
   for FS being non empty doubleLoopStr holds
  (for x,y,z being Element of FS holds
      (x <> 0.FS implies ex y be Element of FS
      st x*y = 1_ FS)
       & x*(y+z) = x*y+x*z & (y+z)*x = y*x+z*x ) iff
      FS is distributive Field-like (non empty doubleLoopStr)
       by Def18,Def20;

::
::                        6. AXIOMS OF FIELD
::

definition let FS be commutative (non empty HGrStr);
 let x,y be Element of FS;
 redefine func x*y;
 commutativity by Def17;
end;

canceled 10;

theorem Th33:
 for F being associative commutative left_unital distributive
         Field-like (non empty doubleLoopStr),
     x,y,z being Element of F
  holds (x <> 0.F & x*y = x*z) implies y = z
 proof let F be associative commutative left_unital distributive
       Field-like (non empty doubleLoopStr),
     x,y,z be Element of F;
  assume A1: x<>0.F;
  assume A2: x*y = x*z;
   consider x1 being Element of F such that
   A3:  x*x1 = 1_ F by A1,Def20;
      x1*x*y = x1*(x*y) & x1*(x*z) = x1*x*z by Def16;
    then x*x1*y = z by A2,A3,Def19;
   hence thesis by A3,Def19;
  end;

definition let F be associative commutative left_unital distributive
    Field-like (non empty doubleLoopStr),
   x be Element of F;
 assume A1: x <> 0.F;
 func x" -> Element of F means
 :Def22:  x*it = 1_ F;
  existence by A1,Def20;
  uniqueness by A1,Th33;
end;

definition let F be associative commutative left_unital distributive
    Field-like (non empty doubleLoopStr),
   x,y be Element of F;
 func x/y ->Element of F equals
    x*y";
  coherence;
end;

canceled 2;

theorem Th36:
 for F being add-associative right_zeroed right_complementable
             right-distributive (non empty doubleLoopStr),
     x being Element of F
  holds x*(0.F) = 0.F
 proof
  let F be add-associative right_zeroed right_complementable
           right-distributive (non empty doubleLoopStr);
  let x be Element of F;
    x*(0.F)+(0.F) = x*((0.F)+(0.F))+(0.F) by RLVECT_1:10
               .= x*((0.F)+(0.F)) by RLVECT_1:10
               .= x*(0.F)+x*(0.F) by Def11;
  hence x*(0.F) = 0.F by RLVECT_1:21;
 end;

canceled 2;

theorem Th39:
 for F being add-associative right_zeroed right_complementable
             left-distributive (non empty doubleLoopStr),
     x being Element of F
  holds (0.F)*x = 0.F
 proof
  let F be add-associative right_zeroed right_complementable
           left-distributive (non empty doubleLoopStr);
  let x be Element of F;
     (0.F)*x+(0.F) = ((0.F)+(0.F))*x+(0.F) by RLVECT_1:10
               .= ((0.F)+(0.F))*x by RLVECT_1:10
               .= (0.F)*x+(0.F)*x by Def12;
  hence 0.F = (0.F)*x by RLVECT_1:21;
 end;

theorem Th40:
 for F be add-associative right_zeroed right_complementable
          right-distributive (non empty doubleLoopStr),
     x,y being Element of F
  holds x*(-y) = -x*y
proof
  let F be add-associative right_zeroed right_complementable
           right-distributive (non empty doubleLoopStr),
     x,y be Element of F;
   x*y +x*(-y) = x*(y+(-y)) by Def11
            .= x*(0.F) by RLVECT_1:def 10
            .= 0.F by Th36;
 hence x*(-y) = -x*y by RLVECT_1:def 10;
end;

theorem Th41:
 for F be add-associative right_zeroed right_complementable
          left-distributive (non empty doubleLoopStr),
     x,y being Element of F
  holds (-x)*y = -x*y
proof
  let F be add-associative right_zeroed right_complementable
           left-distributive (non empty doubleLoopStr),
     x,y be Element of F;
   x*y +(-x)*y = (x+(-x))*y by Def12
            .= (0.F)*y by RLVECT_1:def 10
            .= 0.F by Th39;
 hence (-x)*y = -x*y by RLVECT_1:def 10;
end;

theorem Th42:
 for F be add-associative right_zeroed right_complementable
          distributive (non empty doubleLoopStr),
     x,y being Element of F
  holds (-x)*(-y) = x*y
proof
  let F be add-associative right_zeroed right_complementable
           distributive (non empty doubleLoopStr),
     x,y be Element of F;
 thus (-x)*(-y) = -x*(-y) by Th41
          .= --x*y by Th40
          .= x*y by RLVECT_1:30;
end;

theorem
   for F be add-associative right_zeroed right_complementable
          right-distributive (non empty doubleLoopStr),
     x,y,z being Element of F holds
 x*(y-z) = x*y - x*z
proof
let F be add-associative right_zeroed right_complementable
          right-distributive (non empty doubleLoopStr),
     x,y,z be Element of F;
   x*(y-z) = x*(y+(-z)) by RLVECT_1:def 11
          .= x*y+x*(-z) by Def11
          .= x*y+(-x*z) by Th40
          .= x*y - x*z by RLVECT_1:def 11;
 hence thesis;
end;

theorem Th44:
 for F being add-associative right_zeroed right_complementable
             associative commutative left_unital Field-like
             distributive (non empty doubleLoopStr),
     x,y being Element of F holds
 x*y=0.F iff x=0.F or y=0.F
proof
 let F be add-associative right_zeroed right_complementable
          associative commutative left_unital Field-like distributive
          (non empty doubleLoopStr),
     x,y be Element of F;
   x*y=0.F implies x=0.F or y=0.F
 proof
  assume A1: x*y = 0.F;
  assume A2: x<>0.F;
     x"*(0.F) = x"*x*y by A1,Def16
     .= (1_ F)*y by A2,Def22
     .= y by Def19;
  hence thesis by Th39;
 end;
 hence thesis by Th39;
end;

theorem
  for K being add-associative right_zeroed right_complementable
            left-distributive (non empty doubleLoopStr)
for a,b,c be Element of K holds (a-b)*c =a*c -b*c
 proof
  let K be add-associative right_zeroed right_complementable
             left-distributive (non empty doubleLoopStr);
  let y,z,x be Element of K;
  thus (y-z)*x = (y+-z )*x by RLVECT_1:def 11
   .= y*x+(-z)*x by Def12
   .= y*x+-z*x by Th41
   .= y*x -z*x by RLVECT_1:def 11;
 end;

::
::                      8. VECTOR SPACE STRUCTURE
::

definition let F be 1-sorted;
 struct(LoopStr) VectSpStr over F (#
                   carrier -> set,
                    add -> BinOp of the carrier,
                    Zero -> Element of the carrier,
                   lmult -> Function of [:the carrier of F,the carrier:],
                                      the carrier #);
end;

definition let F be 1-sorted;
 cluster non empty strict VectSpStr over F;
  existence
   proof
     consider A being non empty set,
              a being BinOp of A,
              Z being Element of A,
              l being Function of [:the carrier of F,A:], A;
    take VectSpStr(#A,a,Z,l#);
    thus the carrier of VectSpStr(#A,a,Z,l#) is non empty;
    thus thesis;
   end;
end;

definition let F be 1-sorted;
  let A be non empty set,
      a be BinOp of A, Z be Element of A,
      l be Function of [:the carrier of F,A:], A;
 cluster VectSpStr(#A,a,Z,l#) -> non empty;
  coherence
   proof
    thus the carrier of VectSpStr(#A,a,Z,l#) is non empty;
   end;
end;

definition let F be 1-sorted;
 mode Scalar of F is Element of F;
end;

definition let F be 1-sorted;
           let VS be VectSpStr over F;
 mode Scalar of VS is Scalar of F;
 mode Vector of VS is Element of VS;
end;

definition let F be non empty 1-sorted, V be non empty VectSpStr over F;
  let x be Element of F;
  let v be Element of V;
 func x*v -> Element of V equals
 :Def24: (the lmult of V).(x,v);
  coherence;
end;

definition let F be non empty LoopStr;
 func comp F -> UnOp of the carrier of F means
    for x being Element of F holds it.x = -x;
existence
 proof
  deffunc F(Element of F) = -$1;
   thus ex f being UnOp of the carrier of F st
    for x being Element of F holds f.x = F(x) from LambdaD;
 end;
uniqueness
  proof
    let f, g be UnOp of the carrier of F such that
A1:  for x being Element of F holds f.x = -x and
A2:  for x being Element of F holds g.x = -x;
      now let x be set;
      assume x in the carrier of F;
      then reconsider y = x as Element of F;
     thus f.x = -y by A1
        .= g.x by A2;
    end;
    hence thesis by FUNCT_2:18;
  end;
end;

Lm4:
 now let F be add-associative right_zeroed right_complementable Abelian
   associative left_unital distributive (non empty doubleLoopStr);
  let MLT be
   Function of [:the carrier of F,the carrier of F:],the carrier of F;
  set GF = VectSpStr
  (# the carrier of F,the add of F,the Zero of F,MLT #);
      for x,y,z being Element of GF holds
            x+y = y+x &
            (x+y)+z = x+(y+z) &
            x+(0.GF) = x &
            ex x' being Element of GF st x+x' = 0.GF
      proof
       let x,y,z be Element of GF;
       reconsider x'=x,y'=y,z'=z as Element of F;
        A1: (the Zero of GF) = 0.F by RLVECT_1:def 2;
       thus x+y = (the add of GF).(x,y) by RLVECT_1:5
                  .= y'+x' by RLVECT_1:5
                  .= (the add of F).(y',x') by RLVECT_1:5
                  .= y+x by RLVECT_1:5;
       thus (x+y)+z = (the add of GF).(x+y,z) by RLVECT_1:5
                  .= (the add of GF).((the add of GF).(x,y),z)
                     by RLVECT_1:5
                  .= (the add of F).((x'+y'),z') by RLVECT_1:5
                  .= (x'+y')+z' by RLVECT_1:5
                  .= x'+(y'+z') by RLVECT_1:def 6
                  .= (the add of F).(x',(y'+z')) by RLVECT_1:5
                  .= (the add of F).(x',(the add of F).(y',z'))
                     by RLVECT_1:5
                  .= (the add of GF).(x,y+z) by RLVECT_1:5
                  .= x+(y+z) by RLVECT_1:5;
       thus x+0.GF = (the add of GF).(x,0.GF) by RLVECT_1:5
                  .= (the add of GF).(x,(the Zero of GF))
                     by RLVECT_1:def 2
                  .= x'+(0.F) by A1,RLVECT_1:5
                  .= x by RLVECT_1:10;
       consider t being Element of F such that
A2:     x' + t = 0.F by RLVECT_1:def 8;
       reconsider t' = t as Element of GF;
       take t';
       thus x + t' = (the add of GF).(x,t') by RLVECT_1:5
                 .= x'+ t by RLVECT_1:5
                 .= 0.GF by A1,A2,RLVECT_1:def 2;
      end;
  hence GF is AbGroup by RLVECT_1:def 5,def 6,def 7,def 8;
 end;

Lm5:
 now let F be add-associative right_zeroed right_complementable
   associative left_unital distributive (non empty doubleLoopStr);
  let MLT be
    Function of [:the carrier of F,the carrier of F:],the carrier of F
 such that
A1: MLT = the mult of F;
  set LS = VectSpStr (# the carrier of F,the add of F,the Zero of F,
    MLT #);
   let x,y be Element of F;
   let v,w be Element of LS;
   reconsider v' = v , w' = w as Element of F;
   A2: (the lmult of LS).(x,w) = x*w by Def24;
   A3: (the lmult of LS).(y,v) = y*v by Def24;
  thus x*(v+w) = (the lmult of LS).(x,(v+w)) by Def24
          .= MLT.(x,(the add of F).(v',w')) by RLVECT_1:5
          .= MLT.(x,v'+w') by RLVECT_1:5
          .= x*(v'+w') by A1,Def10
          .= x*v'+x*w' by Def18
          .= (the add of F).(x*v',x*w') by RLVECT_1:5
          .= (the add of F).(MLT.(x,v'),x*w') by A1,Def10
          .= (the add of F).
             ((the lmult of LS).(x,v),(the lmult of LS).(x,w)) by A1,Def10
          .= (the add of F).(x*v,x*w) by A2,Def24
          .= x*v+x*w by RLVECT_1:5;
  thus (x+y)*v = (the lmult of LS).((x+y),v) by Def24
          .= (x+y)*v' by A1,Def10
          .= x*v'+y*v' by Def18
          .= (the add of F).(x*v',y*v') by RLVECT_1:5
          .= (the add of F).(MLT.(x,v'),y*v') by A1,Def10
          .= (the add of F).
             ((the lmult of LS).(x,v),(the lmult of LS).(y,v)) by A1,Def10
          .= (the add of F).(x*v,y*v) by A3,Def24
          .= x*v+y*v by RLVECT_1:5;
  thus (x*y)*v = (the lmult of LS).((x*y),v) by Def24
          .= (x*y)*v' by A1,Def10
          .= x*(y*v') by Def16
          .= MLT.(x,y*v') by A1,Def10
          .= (the lmult of LS).(x,(the lmult of LS).(y,v)) by A1,Def10
          .= (the lmult of LS).(x,(y*v)) by Def24
          .= x*(y*v) by Def24;
  thus (1_ F)*v = MLT.(1_ F,v') by Def24
          .= (1_ F)*v' by A1,Def10
          .= v by Def19;
 end;

definition let F be non empty doubleLoopStr;
 let IT be non empty VectSpStr over F;
 attr IT is VectSp-like means
:Def26: for x,y being Element of F
         for v,w being Element of IT holds
               x*(v+w) = x*v+x*w &
               (x+y)*v = x*v+y*v &
               (x*y)*v = x*(y*v) &
               (1_ F)*v = v;
end;

definition let F be add-associative right_zeroed right_complementable Abelian
   associative left_unital distributive (non empty doubleLoopStr);
 cluster VectSp-like add-associative right_zeroed right_complementable Abelian
   strict (non empty VectSpStr over F);
  existence
  proof
    take V = VectSpStr (# the carrier of F,the add of F,
                         the Zero of F,the mult of F#);
    thus for x,y being Element of F
    for v,w being Element of V holds
     x*(v+w) = x*v+x*w &
     (x+y)*v = x*v+y*v &
     (x*y)*v = x*(y*v) &
     (1_ F)*v = v by Lm5;
   thus thesis by Lm4;
  end;
end;

definition let F be add-associative right_zeroed right_complementable Abelian
   associative left_unital distributive (non empty doubleLoopStr);
 mode VectSp of F is VectSp-like
  add-associative right_zeroed right_complementable Abelian
   (non empty VectSpStr over F);
end;

 reserve F for Field,
         x for Element of F,
         V for VectSp-like add-associative right_zeroed right_complementable
           (non empty VectSpStr over F),
         v for Element of V;

canceled 13;

theorem Th59:
 for F being add-associative right_zeroed right_complementable
    Abelian associative left_unital distributive (non empty doubleLoopStr),
     x being Element of F
 for V being add-associative right_zeroed
             right_complementable VectSp-like (non empty VectSpStr over F),
     v being Element of V
 holds (0.F)*v = 0.V & (-1_ F)*v = -v & x*(0.V) = 0.V
proof
 let F be add-associative right_zeroed right_complementable
    Abelian associative left_unital distributive (non empty doubleLoopStr);
 let x be Element of F;
 let V be add-associative right_zeroed
          right_complementable VectSp-like (non empty VectSpStr over F),
     v be Element of V;
   v+(0.F)*v = (1_ F)*v + (0.F)*v by Def26
       .= ((1_ F)+(0.F))*v by Def26
       .= (1_ F)*v by RLVECT_1:10
       .= v by Def26
       .= v+0.V by RLVECT_1:10;
 hence A1: (0.F)*v = 0.V by RLVECT_1:21;
   (-(1_ F))*v+v = (-(1_ F))*v + (1_ F)*v by Def26
       .= ((1_ F)+(-(1_ F)))*v by Def26
       .= 0.V by A1,RLVECT_1:def 10;
  then (-(1_ F))*v + (v+(-v)) = 0.V + -v by RLVECT_1:def 6;
  then 0.V + -v = (-(1_ F))*v + 0.V by RLVECT_1:16
            .= (-(1_ F))*v by RLVECT_1:10;
 hence (-1_ F)*v = -v by RLVECT_1:10;
   x*(0.V) = (x*(0.F))*v by A1,Def26
       .= 0.V by A1,Th36;
 hence thesis;
end;

theorem
   x*v = 0.V iff x = 0.F or v = 0.V
proof
   x*v = 0.V implies x = 0.F or v = 0.V
 proof
  assume A1: x*v = 0.V;
  assume A2: x<>(0.F);
     x"*x*v = x"*(0.V) by A1,Def26
              .= 0.V by Th59;
   then 0.V = (1_ F)*v by A2,Def22;
  hence thesis by Def26;
 end;
hence thesis by Th59;
end;

::
::                          13. APPENDIX
::

canceled 2;

theorem
   for V being add-associative right_zeroed
              right_complementable (non empty LoopStr),
     v,w being Element of V holds
   v+w=0.V iff -v=w
proof let V be add-associative right_zeroed
                    right_complementable (non empty LoopStr),
   v,w be Element of V;
    v+w=0.V implies -v=w
   proof
    assume
A1:   v+w=0.V;
    thus w = 0.V + w by RLVECT_1:10
          .= -v + v + w by RLVECT_1:16
          .= -v + 0.V by A1,RLVECT_1:def 6
          .= -v by RLVECT_1:10;
   end;
  hence thesis by RLVECT_1:16;
 end;

Lm6:
for V being add-associative right_zeroed
                     right_complementable (non empty LoopStr),
    v,w being Element of V
holds -(w+-v)=v-w
 proof let V be add-associative right_zeroed
                  right_complementable (non empty LoopStr),
    v,w be Element of V;
      -(w+-v)=-(-v)-w by RLVECT_1:44;
    hence thesis by RLVECT_1:30;
 end;

Lm7:
for V being add-associative right_zeroed
                     right_complementable (non empty LoopStr),
  v,w being Element of V holds -(-v-w)=w+v
 proof let V be add-associative right_zeroed
                      right_complementable (non empty LoopStr),
    v,w be Element of V;
    -(-v-w)=w+-(-v) by RLVECT_1:47;
  hence thesis by RLVECT_1:30;
 end;

theorem
   for V being add-associative right_zeroed
                    right_complementable (non empty LoopStr),
    u,v,w being Element of V holds
  -(v+w)=-w-v & -(w+-v)=v-w & -(v-w)=w+-v & -(-v-w)=w+v &
      u-(w+v)=u-v-w by Lm6,Lm7,RLVECT_1:41,44,47;

theorem
   for V being add-associative right_zeroed
                     right_complementable (non empty LoopStr),
     v being Element of V holds
  0.V-v=-v & v-0.V=v by RLVECT_1:26,27;

theorem Th66:
 for F being add-associative right_zeroed
                   right_complementable (non empty LoopStr),
     x,y being Element of F holds
  (x+(-y)=0.F iff x=y) & (x-y=0.F iff x=y)
 proof let F be add-associative right_zeroed
                right_complementable (non empty LoopStr),
    x,y be Element of F;
      x+(-y)=0.F iff x=y
     proof
         x+(-y)=0.F implies x=y
       proof
        assume x+(-y)=0.F;
        then x+((-y)+y)=0.F+y by RLVECT_1:def 6;
        then x+0.F=0.F+y by RLVECT_1:16;
        then x=0.F+y by RLVECT_1:10;
        hence thesis by RLVECT_1:10;
       end;
      hence thesis by RLVECT_1:16;
     end;
   hence thesis by RLVECT_1:def 11;
 end;

theorem
   x<>0.F implies x"*(x*v)=v
 proof
  assume A1: x<>0.F;
    x"*(x*v)=(x"*x)*v by Def26
         .=1_ F*v by A1,Def22
         .=v by Def26;
  hence thesis;
 end;

theorem Th68:
 for F be add-associative right_zeroed right_complementable Abelian
          associative left_unital distributive (non empty doubleLoopStr),
     V be VectSp-like add-associative right_zeroed right_complementable
        (non empty VectSpStr over F),
     x being Element of F,
     v,w being Element of V holds
  -x*v=(-x)*v & w-x*v=w+(-x)*v
 proof
  let F be add-associative right_zeroed right_complementable Abelian
          associative left_unital distributive (non empty doubleLoopStr),
     V be VectSp-like add-associative right_zeroed right_complementable
       (non empty VectSpStr over F),
     x be Element of F,
     v,w be Element of V;
       -x*v=(-1_ F)*(x*v) by Th59
        .=((-1_ F)*x)*v by Def26
        .=(-(1_ F*x))*v by Th41;
    hence -x*v=(-x)*v by Def19;
    hence thesis by RLVECT_1:def 11;
 end;

definition
  cluster commutative left_unital -> right_unital (non empty multLoopStr);
  coherence
  proof let F be non empty multLoopStr;
   assume
A1:  F is commutative left_unital;
   let x be Scalar of F;
     for F be commutative (non empty HGrStr),
    x,y being Element of F holds x*y = y*x;
    then x*(1_ F) = (1_ F)*x by A1;
   hence x*(1_ F) = x by A1,Def19;
  end;
end;

theorem Th69:
 for F be add-associative right_zeroed right_complementable Abelian
         associative left_unital right_unital distributive
         (non empty doubleLoopStr),
     V be VectSp-like add-associative right_zeroed right_complementable
        (non empty VectSpStr over F),
     x being Element of F,
     v being Element of V holds
  x*(-v)=-x*v
  proof
  let F be add-associative right_zeroed right_complementable Abelian
         associative left_unital right_unital distributive
         (non empty doubleLoopStr),
     V be VectSp-like add-associative right_zeroed right_complementable
        (non empty VectSpStr over F),
     x be Element of F,
     v be Element of V;
     x*(-v)=x*((-1_ F)*v) by Th59
        .=(x*(-1_ F))*v by Def26
        .=(-(x*1_ F))*v by Th40
        .=(-x)*v by Def13;
   hence thesis by Th68;
  end;

theorem
   for F be add-associative right_zeroed right_complementable Abelian
         associative left_unital right_unital distributive
         (non empty doubleLoopStr),
     V be VectSp-like add-associative right_zeroed right_complementable
        (non empty VectSpStr over F),
     x being Element of F,
     v,w being Element of V holds
  x*(v-w)=x*v-x*w
  proof
  let F be add-associative right_zeroed right_complementable Abelian
       associative left_unital right_unital distributive
       (non empty doubleLoopStr),
     V be VectSp-like add-associative right_zeroed right_complementable
        (non empty VectSpStr over F),
     x be Element of F,
     v,w be Element of V;
     x*(v-w)=x*(v+(-w)) by RLVECT_1:def 11
         .=x*v+x*(-w) by Def26
         .=x*v+(-x*w) by Th69;
   hence thesis by RLVECT_1:def 11;
  end;

canceled 2;

theorem
   for F being add-associative right_zeroed right_complementable
             commutative associative left_unital non degenerated
             Field-like distributive (non empty doubleLoopStr),
     x being Element of F holds
 x <> 0.F implies (x")" = x
  proof
 let F be add-associative right_zeroed right_complementable commutative
             associative left_unital non degenerated
             Field-like distributive (non empty doubleLoopStr),
     x be Element of F;
   A1: x <> 0.F implies x" <> 0.F
    proof
     assume A2: x <> 0.F;
     assume not thesis;
     then 1_ F = x*0.F by A2,Def22;
     then 1_ F = 0.F by Th39;
     hence contradiction by Def21;
    end;
   assume A3: x <> 0.F;
   then x"*(x")" = 1_ F by A1,Def22;
   then (x*x")*(x")" = x*1_ F by Def16;
   then 1_ F*(x")" = x*1_ F by A3,Def22;
   then (x")" = 1_ F*x by Def19;
   hence thesis by Def19;
  end;

theorem
   for F being Field,
     x being Element of F holds
 x <> 0.F implies x" <> 0.F & -x" <> 0.F
  proof
 let F be Field,
     x be Element of F;
   assume A1: x <> 0.F; assume A2: not thesis;
   A3: now assume x" = 0.F;
    then 1_ F = x*0.F by A1,Def22;
    then 1_ F = 0.F by Th39;
    hence contradiction by Def21;
   end;
     now assume -x" = 0.F;
    then 1_ F*x" = (-1_ F)*0.F by Th42;
    then 1_ F*x" = 0.F by Th39;
    then x*x" = x*0.F by Def19;
    then 1_ F = x*0.F by A1,Def22;
    then 1_ F = 0.F by Th39;
    hence contradiction by Def21;
   end;
  hence contradiction by A2,A3;
 end;

canceled 3;

theorem
Th78: 1_ F_Real + 1_ F_Real <> 0.F_Real
 proof
  consider R being Field such that A1: R=F_Real;
  A2: 1_ R=1 by A1,Def9,Def15;
     1_ R+1_ R=1+1
   proof
    reconsider t=1 as Element of REAL;
    reconsider t as Element of R by A1,Def15;
       1_ R+1_ R=(the add of R).(t,t) by A2,RLVECT_1:5;
    hence thesis by A1,Def4,Def15;
   end;
  hence thesis by A1,Def15,RLVECT_1:def 2;
 end;

definition
 let IT be non empty LoopStr;
 canceled;

 attr IT is Fanoian means
:Def28: for a being Element of IT st a + a = 0.IT
   holds a = 0.IT;
end;

definition
 cluster Fanoian (non empty LoopStr);
 existence
  proof
   take F = F_Real;
   let a be Element of F such that
A1: a + a = 0.F;
      a = 1_ F * a by Def19;
    then a + a = (1_ F + 1_ F) * a by Def18;
   hence a = 0.F by A1,Th44,Th78;
  end;
end;

definition let F be add-associative right_zeroed right_complementable
             commutative associative left_unital Field-like
             non degenerated distributive (non empty doubleLoopStr);
 redefine attr F is Fanoian means
:Def29:  1_ F+1_ F<>0.F;
 compatibility
  proof
      0.F <> 1_ F by Def21;
   hence F is Fanoian implies 1_ F+1_ F<>0.F by Def28;
   assume
A1: 1_ F+1_ F<>0.F;
   let a be Element of F such that
A2: a + a = 0.F;
      a = 1_ F * a by Def19;
    then a + a = (1_ F + 1_ F) * a by Def18;
   hence a = 0.F by A1,A2,Th44;
  end;
end;

definition
 cluster strict Fanoian Field;
  existence
   proof
      F_Real is Fanoian by Def29,Th78;
    hence thesis;
   end;
end;

canceled 2;

theorem Th81:
 for F being add-associative right_zeroed
                 right_complementable (non empty LoopStr),
     a, b being Element of F holds
  -(a-b) = b-a
 proof let F be add-associative right_zeroed
                    right_complementable (non empty LoopStr),
   a,b be Element of F;
  thus -(a-b) = b+-a by RLVECT_1:47 .= b-a by RLVECT_1:def 11;
 end;

canceled 2;

theorem
   for F being add-associative right_zeroed
                   right_complementable (non empty LoopStr),
     a,b being Element of F holds
 a - b = 0.F implies a = b by Th66;

canceled;

theorem Th86:
 for F being add-associative right_zeroed
                      right_complementable (non empty LoopStr),
     a being Element of F holds
  -a = 0.F implies a = 0.F
 proof let F be add-associative right_zeroed
                       right_complementable (non empty LoopStr),
   a be Element of F;
    --a = a by RLVECT_1:30; hence thesis by RLVECT_1:25;
 end;

theorem
   for F being add-associative right_zeroed
                     right_complementable (non empty LoopStr),
     a, b being Element of F holds
   a - b = 0.F implies b - a = 0.F
 proof let F be add-associative right_zeroed
                      right_complementable (non empty LoopStr),
    a,b be Element of F;
    a - b = -(b - a) by Th81; hence thesis by Th86;
 end;

theorem
   for a, b, c being Element of F holds
 (a <> 0.F & a*c - b = 0.F implies c = b*a") &
       (a <> 0.F & b - c*a = 0.F implies c = b*a")
 proof
  let a, b, c be Element of F;
  thus
A1:  a <> 0.F & a*c - b = 0.F implies c = b*a"
  proof
   assume A2: a <> 0.F;
   assume a*c - b = 0.F;
   then a"*(a*c) = b*a" by RLVECT_1:35;
   then (a"*a)*c = b*a" & a"*a = 1_ F & c*(1_ F) =(1_ F)*c by A2,Def16,Def22;
   hence c = b*a" by Def19;
  end;
  assume A3: a <> 0.F;
  assume b - c*a = 0.F;
then A4:  -(b - c*a) = 0.F by RLVECT_1:25;
    a*c - b = c*a + (- b) by RLVECT_1:def 11
    .= 0.F by A4,RLVECT_1:47;
  hence thesis by A1,A3;
 end;

theorem
   for F being add-associative right_zeroed
                          right_complementable (non empty LoopStr),
     a, b being Element of F holds
  a + b = -(-b + -a)
 proof let F be add-associative right_zeroed
                         right_complementable (non empty LoopStr),
   a,b be Element of F;
  thus a + b = --(a + b) by RLVECT_1:30 .= -(-b + -a) by RLVECT_1:45;
 end;

theorem
   for F being add-associative right_zeroed
                     right_complementable (non empty LoopStr),
     a, b, c being Element of F holds
  (b+a)-(c+a) = b-c
 proof let F be add-associative right_zeroed
                     right_complementable (non empty LoopStr),
    a,b,c be Element of F;
    thus (b+a)-(c+a) = (b+a)+-(c+a) by RLVECT_1:def 11
                    .= (b+a)+(-a+-c) by RLVECT_1:45
                    .= ((b+a)+-a)+-c by RLVECT_1:def 6
                    .= (b+(a+-a))+-c by RLVECT_1:def 6
                    .= (b+0.F)+-c by RLVECT_1:16
                    .= b+-c by RLVECT_1:10
                    .= b-c by RLVECT_1:def 11;
 end;

theorem
    for F being Abelian add-associative (non empty LoopStr)
  for a,b,c be Element of F holds a+b-c = a-c+b
 proof let F be Abelian add-associative (non empty LoopStr);
  let a,b,c be Element of F;
  thus a+b-c = a+b+-c by RLVECT_1:def 11
   .=a+-c+b by RLVECT_1:def 6
   .=a-c+b by RLVECT_1:def 11;
 end;

theorem
    for G being add-associative right_zeroed right_complementable
                        (non empty LoopStr),
      v,w being Element of G holds
  -(-v+w) = -w+v
proof
  let G be add-associative right_zeroed right_complementable
                        (non empty LoopStr),
      v,w be Element of G;
  thus -(-v+w) = -w + --v by RLVECT_1:45
              .= -w + v by RLVECT_1:30;
end;

theorem
    for G being Abelian add-associative right_zeroed right_complementable
                        (non empty LoopStr),
      u,v,w being Element of G holds
   u - v - w = u - w - v
proof
  let G be Abelian add-associative right_zeroed right_complementable
                        (non empty LoopStr),
      u,v,w be Element of G;
  thus u - v - w = u + -v - w by RLVECT_1:def 11
                .= u + -v + -w by RLVECT_1:def 11
                .= u + -w + -v by RLVECT_1:def 6
                .= u - w + -v by RLVECT_1:def 11
                .= u - w - v by RLVECT_1:def 11;
 end;



Back to top