Article VECTMETR, MML version 4.99.1005

:: VECTMETR:attrnot 1 => VECTMETR:attr 1
definition
  let a1 be non empty MetrStruct;
  attr a1 is convex means
    for b1, b2 being Element of the carrier of a1
    for b3 being Element of REAL
          st 0 <= b3 & b3 <= 1
       holds ex b4 being Element of the carrier of a1 st
          dist(b1,b4) = b3 * dist(b1,b2) &
           dist(b4,b2) = (1 - b3) * dist(b1,b2);
end;

:: VECTMETR:dfs 1
definiens
  let a1 be non empty MetrStruct;
To prove
     a1 is convex
it is sufficient to prove
  thus for b1, b2 being Element of the carrier of a1
    for b3 being Element of REAL
          st 0 <= b3 & b3 <= 1
       holds ex b4 being Element of the carrier of a1 st
          dist(b1,b4) = b3 * dist(b1,b2) &
           dist(b4,b2) = (1 - b3) * dist(b1,b2);

:: VECTMETR:def 1
theorem
for b1 being non empty MetrStruct holds
      b1 is convex
   iff
      for b2, b3 being Element of the carrier of b1
      for b4 being Element of REAL
            st 0 <= b4 & b4 <= 1
         holds ex b5 being Element of the carrier of b1 st
            dist(b2,b5) = b4 * dist(b2,b3) &
             dist(b5,b3) = (1 - b4) * dist(b2,b3);

:: VECTMETR:attrnot 2 => VECTMETR:attr 2
definition
  let a1 be non empty MetrStruct;
  attr a1 is internal means
    for b1, b2 being Element of the carrier of a1
    for b3, b4 being Element of REAL
          st 0 < b3 & 0 < b4
       holds ex b5 being FinSequence of the carrier of a1 st
          b5 /. 1 = b1 &
           b5 /. len b5 = b2 &
           (for b6 being Element of NAT
                 st 1 <= b6 & b6 <= (len b5) - 1
              holds dist(b5 /. b6,b5 /. (b6 + 1)) < b3) &
           (for b6 being FinSequence of REAL
                 st len b6 = (len b5) - 1 &
                    (for b7 being Element of NAT
                          st 1 <= b7 & b7 <= len b6
                       holds b6 /. b7 = dist(b5 /. b7,b5 /. (b7 + 1)))
              holds abs ((dist(b1,b2)) - Sum b6) < b4);
end;

:: VECTMETR:dfs 2
definiens
  let a1 be non empty MetrStruct;
To prove
     a1 is internal
it is sufficient to prove
  thus for b1, b2 being Element of the carrier of a1
    for b3, b4 being Element of REAL
          st 0 < b3 & 0 < b4
       holds ex b5 being FinSequence of the carrier of a1 st
          b5 /. 1 = b1 &
           b5 /. len b5 = b2 &
           (for b6 being Element of NAT
                 st 1 <= b6 & b6 <= (len b5) - 1
              holds dist(b5 /. b6,b5 /. (b6 + 1)) < b3) &
           (for b6 being FinSequence of REAL
                 st len b6 = (len b5) - 1 &
                    (for b7 being Element of NAT
                          st 1 <= b7 & b7 <= len b6
                       holds b6 /. b7 = dist(b5 /. b7,b5 /. (b7 + 1)))
              holds abs ((dist(b1,b2)) - Sum b6) < b4);

:: VECTMETR:def 2
theorem
for b1 being non empty MetrStruct holds
      b1 is internal
   iff
      for b2, b3 being Element of the carrier of b1
      for b4, b5 being Element of REAL
            st 0 < b4 & 0 < b5
         holds ex b6 being FinSequence of the carrier of b1 st
            b6 /. 1 = b2 &
             b6 /. len b6 = b3 &
             (for b7 being Element of NAT
                   st 1 <= b7 & b7 <= (len b6) - 1
                holds dist(b6 /. b7,b6 /. (b7 + 1)) < b4) &
             (for b7 being FinSequence of REAL
                   st len b7 = (len b6) - 1 &
                      (for b8 being Element of NAT
                            st 1 <= b8 & b8 <= len b7
                         holds b7 /. b8 = dist(b6 /. b8,b6 /. (b8 + 1)))
                holds abs ((dist(b2,b3)) - Sum b7) < b5);

:: VECTMETR:th 1
theorem
for b1 being non empty Reflexive discerning symmetric triangle MetrStruct
   st b1 is convex
for b2, b3 being Element of the carrier of b1
for b4 being Element of REAL
      st 0 < b4
   holds ex b5 being FinSequence of the carrier of b1 st
      b5 /. 1 = b2 &
       b5 /. len b5 = b3 &
       (for b6 being Element of NAT
             st 1 <= b6 & b6 <= (len b5) - 1
          holds dist(b5 /. b6,b5 /. (b6 + 1)) < b4) &
       (for b6 being FinSequence of REAL
             st len b6 = (len b5) - 1 &
                (for b7 being Element of NAT
                      st 1 <= b7 & b7 <= len b6
                   holds b6 /. b7 = dist(b5 /. b7,b5 /. (b7 + 1)))
          holds dist(b2,b3) = Sum b6);

:: VECTMETR:condreg 1
registration
  cluster non empty Reflexive discerning symmetric triangle convex -> internal (MetrStruct);
end;

:: VECTMETR:exreg 1
registration
  cluster non empty Reflexive discerning symmetric triangle convex MetrStruct;
end;

:: VECTMETR:modenot 1
definition
  mode Geometry is non empty Reflexive discerning symmetric triangle internal MetrStruct;
end;

:: VECTMETR:attrnot 3 => VECTMETR:attr 3
definition
  let a1 be non empty MetrStruct;
  let a2 be Function-like quasi_total Relation of the carrier of a1,the carrier of a1;
  attr a2 is isometric means
    proj2 a2 = the carrier of a1 &
     (for b1, b2 being Element of the carrier of a1 holds
     dist(b1,b2) = dist(a2 . b1,a2 . b2));
end;

:: VECTMETR:dfs 3
definiens
  let a1 be non empty MetrStruct;
  let a2 be Function-like quasi_total Relation of the carrier of a1,the carrier of a1;
To prove
     a2 is isometric
it is sufficient to prove
  thus proj2 a2 = the carrier of a1 &
     (for b1, b2 being Element of the carrier of a1 holds
     dist(b1,b2) = dist(a2 . b1,a2 . b2));

:: VECTMETR:def 3
theorem
for b1 being non empty MetrStruct
for b2 being Function-like quasi_total Relation of the carrier of b1,the carrier of b1 holds
      b2 is isometric(b1)
   iff
      proj2 b2 = the carrier of b1 &
       (for b3, b4 being Element of the carrier of b1 holds
       dist(b3,b4) = dist(b2 . b3,b2 . b4));

:: VECTMETR:funcnot 1 => VECTMETR:func 1
definition
  let a1 be non empty MetrStruct;
  func ISOM A1 -> set means
    for b1 being set holds
          b1 in it
       iff
          ex b2 being Function-like quasi_total Relation of the carrier of a1,the carrier of a1 st
             b2 = b1 & b2 is isometric(a1);
end;

:: VECTMETR:def 4
theorem
for b1 being non empty MetrStruct
for b2 being set holds
      b2 = ISOM b1
   iff
      for b3 being set holds
            b3 in b2
         iff
            ex b4 being Function-like quasi_total Relation of the carrier of b1,the carrier of b1 st
               b4 = b3 & b4 is isometric(b1);

:: VECTMETR:funcnot 2 => VECTMETR:func 2
definition
  let a1 be non empty MetrStruct;
  redefine func ISOM a1 -> Element of bool Funcs(the carrier of a1,the carrier of a1);
end;

:: VECTMETR:th 2
theorem
for b1 being non empty Reflexive discerning MetrStruct
for b2 being Function-like quasi_total Relation of the carrier of b1,the carrier of b1
      st b2 is isometric(b1)
   holds b2 is one-to-one;

:: VECTMETR:condreg 2
registration
  let a1 be non empty Reflexive discerning MetrStruct;
  cluster Function-like quasi_total isometric -> one-to-one (Relation of the carrier of a1,the carrier of a1);
end;

:: VECTMETR:exreg 2
registration
  let a1 be non empty MetrStruct;
  cluster Relation-like Function-like non empty quasi_total total isometric Relation of the carrier of a1,the carrier of a1;
end;

:: VECTMETR:th 3
theorem
for b1 being non empty Reflexive discerning MetrStruct
for b2 being Function-like quasi_total isometric Relation of the carrier of b1,the carrier of b1 holds
   b2 /" is isometric(b1);

:: VECTMETR:th 4
theorem
for b1 being non empty MetrStruct
for b2, b3 being Function-like quasi_total isometric Relation of the carrier of b1,the carrier of b1 holds
b2 * b3 is isometric(b1);

:: VECTMETR:th 5
theorem
for b1 being non empty MetrStruct holds
   id b1 is isometric(b1);

:: VECTMETR:funcreg 1
registration
  let a1 be non empty MetrStruct;
  cluster ISOM a1 -> non empty;
end;

:: VECTMETR:structnot 1 => VECTMETR:struct 1
definition
  struct(RLSStructMetrStruct) RLSMetrStruct(#
    carrier -> set,
    distance -> Function-like quasi_total Relation of [:the carrier of it,the carrier of it:],REAL,
    ZeroF -> Element of 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 [:REAL,the carrier of it:],the carrier of it
  #);
end;

:: VECTMETR:attrnot 4 => VECTMETR:attr 4
definition
  let a1 be RLSMetrStruct;
  attr a1 is strict;
end;

:: VECTMETR:exreg 3
registration
  cluster strict RLSMetrStruct;
end;

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

:: VECTMETR:exreg 4
registration
  cluster non empty strict RLSMetrStruct;
end;

:: VECTMETR:funcreg 2
registration
  let a1 be non empty set;
  let a2 be Function-like quasi_total Relation of [:a1,a1:],REAL;
  let a3 be Element of a1;
  let a4 be Function-like quasi_total Relation of [:a1,a1:],a1;
  let a5 be Function-like quasi_total Relation of [:REAL,a1:],a1;
  cluster RLSMetrStruct(#a1,a2,a3,a4,a5#) -> non empty strict;
end;

:: VECTMETR:attrnot 5 => VECTMETR:attr 5
definition
  let a1 be non empty RLSMetrStruct;
  attr a1 is homogeneous means
    for b1 being Element of REAL
    for b2, b3 being Element of the carrier of a1 holds
    dist(b1 * b2,b1 * b3) = (abs b1) * dist(b2,b3);
end;

:: VECTMETR:dfs 5
definiens
  let a1 be non empty RLSMetrStruct;
To prove
     a1 is homogeneous
it is sufficient to prove
  thus for b1 being Element of REAL
    for b2, b3 being Element of the carrier of a1 holds
    dist(b1 * b2,b1 * b3) = (abs b1) * dist(b2,b3);

:: VECTMETR:def 5
theorem
for b1 being non empty RLSMetrStruct holds
      b1 is homogeneous
   iff
      for b2 being Element of REAL
      for b3, b4 being Element of the carrier of b1 holds
      dist(b2 * b3,b2 * b4) = (abs b2) * dist(b3,b4);

:: VECTMETR:attrnot 6 => VECTMETR:attr 6
definition
  let a1 be non empty RLSMetrStruct;
  attr a1 is translatible means
    for b1, b2, b3 being Element of the carrier of a1 holds
    dist(b3,b2) = dist(b3 + b1,b2 + b1);
end;

:: VECTMETR:dfs 6
definiens
  let a1 be non empty RLSMetrStruct;
To prove
     a1 is translatible
it is sufficient to prove
  thus for b1, b2, b3 being Element of the carrier of a1 holds
    dist(b3,b2) = dist(b3 + b1,b2 + b1);

:: VECTMETR:def 6
theorem
for b1 being non empty RLSMetrStruct holds
      b1 is translatible
   iff
      for b2, b3, b4 being Element of the carrier of b1 holds
      dist(b4,b3) = dist(b4 + b2,b3 + b2);

:: VECTMETR:funcnot 3 => VECTMETR:func 3
definition
  let a1 be non empty RLSMetrStruct;
  let a2 be Element of the carrier of a1;
  func Norm A2 -> Element of REAL equals
    dist(0. a1,a2);
end;

:: VECTMETR:def 7
theorem
for b1 being non empty RLSMetrStruct
for b2 being Element of the carrier of b1 holds
   Norm b2 = dist(0. b1,b2);

:: VECTMETR:exreg 5
registration
  cluster non empty right_complementable Abelian add-associative right_zeroed RealLinearSpace-like Reflexive discerning symmetric triangle strict homogeneous translatible RLSMetrStruct;
end;

:: VECTMETR:modenot 2
definition
  mode RealLinearMetrSpace is non empty right_complementable Abelian add-associative right_zeroed RealLinearSpace-like Reflexive discerning symmetric triangle homogeneous translatible RLSMetrStruct;
end;

:: VECTMETR:th 6
theorem
for b1 being non empty right_complementable Abelian add-associative right_zeroed RealLinearSpace-like homogeneous RLSMetrStruct
for b2 being Element of REAL
for b3 being Element of the carrier of b1 holds
   Norm (b2 * b3) = (abs b2) * Norm b3;

:: VECTMETR:th 7
theorem
for b1 being non empty right_complementable Abelian add-associative right_zeroed triangle translatible RLSMetrStruct
for b2, b3 being Element of the carrier of b1 holds
Norm (b2 + b3) <= (Norm b2) + Norm b3;

:: VECTMETR:th 8
theorem
for b1 being non empty right_complementable add-associative right_zeroed translatible RLSMetrStruct
for b2, b3 being Element of the carrier of b1 holds
dist(b2,b3) = Norm (b3 - b2);

:: VECTMETR:funcnot 4 => VECTMETR:func 4
definition
  let a1 be Element of NAT;
  func RLMSpace A1 -> non empty right_complementable Abelian add-associative right_zeroed RealLinearSpace-like Reflexive discerning symmetric triangle strict homogeneous translatible RLSMetrStruct means
    the carrier of it = REAL a1 &
     the distance of it = Pitag_dist a1 &
     0. it = 0* a1 &
     (for b1, b2 being Element of REAL a1 holds
     (the addF of it) .(b1,b2) = b1 + b2) &
     (for b1 being Element of REAL a1
     for b2 being Element of REAL holds
        (the Mult of it) .(b2,b1) = b2 * b1);
end;

:: VECTMETR:def 8
theorem
for b1 being Element of NAT
for b2 being non empty right_complementable Abelian add-associative right_zeroed RealLinearSpace-like Reflexive discerning symmetric triangle strict homogeneous translatible RLSMetrStruct holds
      b2 = RLMSpace b1
   iff
      the carrier of b2 = REAL b1 &
       the distance of b2 = Pitag_dist b1 &
       0. b2 = 0* b1 &
       (for b3, b4 being Element of REAL b1 holds
       (the addF of b2) .(b3,b4) = b3 + b4) &
       (for b3 being Element of REAL b1
       for b4 being Element of REAL holds
          (the Mult of b2) .(b4,b3) = b4 * b3);

:: VECTMETR:th 9
theorem
for b1 being Element of NAT
for b2 being Function-like quasi_total isometric Relation of the carrier of RLMSpace b1,the carrier of RLMSpace b1 holds
   proj2 b2 = REAL b1;

:: VECTMETR:funcnot 5 => VECTMETR:func 5
definition
  let a1 be Element of NAT;
  func IsomGroup A1 -> strict multMagma means
    the carrier of it = ISOM RLMSpace a1 &
     (for b1, b2 being Relation-like Function-like set
           st b1 in ISOM RLMSpace a1 & b2 in ISOM RLMSpace a1
        holds (the multF of it) .(b1,b2) = b2 * b1);
end;

:: VECTMETR:def 9
theorem
for b1 being Element of NAT
for b2 being strict multMagma holds
      b2 = IsomGroup b1
   iff
      the carrier of b2 = ISOM RLMSpace b1 &
       (for b3, b4 being Relation-like Function-like set
             st b3 in ISOM RLMSpace b1 & b4 in ISOM RLMSpace b1
          holds (the multF of b2) .(b3,b4) = b4 * b3);

:: VECTMETR:funcreg 3
registration
  let a1 be Element of NAT;
  cluster IsomGroup a1 -> non empty strict;
end;

:: VECTMETR:funcreg 4
registration
  let a1 be Element of NAT;
  cluster IsomGroup a1 -> strict Group-like associative;
end;

:: VECTMETR:th 10
theorem
for b1 being Element of NAT holds
   1_ IsomGroup b1 = id RLMSpace b1;

:: VECTMETR:th 11
theorem
for b1 being Element of NAT
for b2 being Element of the carrier of IsomGroup b1
for b3 being Function-like quasi_total Relation of the carrier of RLMSpace b1,the carrier of RLMSpace b1
      st b2 = b3
   holds b2 " = b3 /";

:: VECTMETR:funcnot 6 => VECTMETR:func 6
definition
  let a1 be Element of NAT;
  let a2 be Subgroup of IsomGroup a1;
  func SubIsomGroupRel A2 -> Relation of the carrier of RLMSpace a1,the carrier of RLMSpace a1 means
    for b1, b2 being Element of the carrier of RLMSpace a1 holds
       [b1,b2] in it
    iff
       ex b3 being Relation-like Function-like set st
          b3 in the carrier of a2 & b3 . b1 = b2;
end;

:: VECTMETR:def 10
theorem
for b1 being Element of NAT
for b2 being Subgroup of IsomGroup b1
for b3 being Relation of the carrier of RLMSpace b1,the carrier of RLMSpace b1 holds
      b3 = SubIsomGroupRel b2
   iff
      for b4, b5 being Element of the carrier of RLMSpace b1 holds
         [b4,b5] in b3
      iff
         ex b6 being Relation-like Function-like set st
            b6 in the carrier of b2 & b6 . b4 = b5;

:: VECTMETR:funcreg 5
registration
  let a1 be Element of NAT;
  let a2 be Subgroup of IsomGroup a1;
  cluster SubIsomGroupRel a2 -> symmetric transitive total;
end;