metric_3.miz



    begin

    reserve X,Y,Z,W for non empty MetrSpace;

    scheme :: METRIC_3:sch1

    LambdaMCART { X,Y,Z() -> non empty set , F( object, object, object, object) -> Element of Z() } :

ex f be Function of [: [:X(), Y():], [:X(), Y():]:], Z() st for x1,y1 be Element of X() holds for x2,y2 be Element of Y() holds for x,y be Element of [:X(), Y():] st x = [x1, x2] & y = [y1, y2] holds (f . (x,y)) = F(x1,y1,x2,y2);

      deffunc G( Element of [:X(), Y():], Element of [:X(), Y():]) = F(`1,`1,`2,`2);

      consider f be Function of [: [:X(), Y():], [:X(), Y():]:], Z() such that

       A1: for x,y be Element of [:X(), Y():] holds (f . (x,y)) = G(x,y) from BINOP_1:sch 4;

      take f;

      let x1,y1 be Element of X(), x2,y2 be Element of Y(), x,y be Element of [:X(), Y():] such that

       A2: x = [x1, x2] and

       A3: y = [y1, y2];

      

       A4: y1 = (y `1 ) & y2 = (y `2 ) by A3;

      x1 = (x `1 ) & x2 = (x `2 ) by A2;

      hence thesis by A1, A4;

    end;

    definition

      let X, Y;

      :: METRIC_3:def1

      func dist_cart2 (X,Y) -> Function of [: [:the carrier of X, the carrier of Y:], [:the carrier of X, the carrier of Y:]:], REAL means

      : Def1: for x1,y1 be Element of X, x2,y2 be Element of Y, x,y be Element of [:the carrier of X, the carrier of Y:] st x = [x1, x2] & y = [y1, y2] holds (it . (x,y)) = (( dist (x1,y1)) + ( dist (x2,y2)));

      existence

      proof

        deffunc G( Element of X, Element of X, Element of Y, Element of Y) = ( In ((( dist ($1,$2)) + ( dist ($3,$4))), REAL ));

        consider F be Function of [: [:the carrier of X, the carrier of Y:], [:the carrier of X, the carrier of Y:]:], REAL such that

         A1: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x,y be Element of [:the carrier of X, the carrier of Y:] st x = [x1, x2] & y = [y1, y2] holds (F . (x,y)) = G(x1,y1,x2,y2) from LambdaMCART;

        take F;

        let x1,y1 be Element of X, x2,y2 be Element of Y, x,y be Element of [:the carrier of X, the carrier of Y:];

        assume x = [x1, x2] & y = [y1, y2];

        then (F . (x,y)) = G(x1,y1,x2,y2) by A1;

        hence thesis;

      end;

      uniqueness

      proof

        let f1,f2 be Function of [: [:the carrier of X, the carrier of Y:], [:the carrier of X, the carrier of Y:]:], REAL ;

        assume that

         A2: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x,y be Element of [:the carrier of X, the carrier of Y:] st x = [x1, x2] & y = [y1, y2] holds (f1 . (x,y)) = (( dist (x1,y1)) + ( dist (x2,y2))) and

         A3: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x,y be Element of [:the carrier of X, the carrier of Y:] st x = [x1, x2] & y = [y1, y2] holds (f2 . (x,y)) = (( dist (x1,y1)) + ( dist (x2,y2)));

        for x,y be Element of [:the carrier of X, the carrier of Y:] holds (f1 . (x,y)) = (f2 . (x,y))

        proof

          let x,y be Element of [:the carrier of X, the carrier of Y:];

          consider x1 be Element of X, x2 be Element of Y such that

           A4: x = [x1, x2] by DOMAIN_1: 1;

          consider y1 be Element of X, y2 be Element of Y such that

           A5: y = [y1, y2] by DOMAIN_1: 1;

          

          thus (f1 . (x,y)) = (( dist (x1,y1)) + ( dist (x2,y2))) by A2, A4, A5

          .= (f2 . (x,y)) by A3, A4, A5;

        end;

        hence thesis by BINOP_1: 2;

      end;

    end

    theorem :: METRIC_3:1

    

     Th1: for x,y be Element of [:the carrier of X, the carrier of Y:] holds (( dist_cart2 (X,Y)) . (x,y)) = 0 iff x = y

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y:];

      reconsider x1 = (x `1 ), y1 = (y `1 ) as Element of X;

      reconsider x2 = (x `2 ), y2 = (y `2 ) as Element of Y;

      

       A1: x = [x1, x2] & y = [y1, y2];

      thus (( dist_cart2 (X,Y)) . (x,y)) = 0 implies x = y

      proof

        set d1 = ( dist (x1,y1)), d2 = ( dist (x2,y2));

        assume (( dist_cart2 (X,Y)) . (x,y)) = 0 ;

        then

         A2: (d1 + d2) = 0 by A1, Def1;

        

         A3: 0 <= d1 & 0 <= d2 by METRIC_1: 5;

        then d1 = 0 by A2, XREAL_1: 27;

        then

         A4: x1 = y1 by METRIC_1: 2;

        d2 = 0 by A2, A3, XREAL_1: 27;

        hence thesis by A1, A4, METRIC_1: 2;

      end;

      assume

       A5: x = y;

      then

       A6: ( dist (x2,y2)) = 0 by METRIC_1: 1;

      (( dist_cart2 (X,Y)) . (x,y)) = (( dist (x1,y1)) + ( dist (x2,y2))) by A1, Def1

      .= 0 by A5, A6, METRIC_1: 1;

      hence thesis;

    end;

    theorem :: METRIC_3:2

    

     Th2: for x,y be Element of [:the carrier of X, the carrier of Y:] holds (( dist_cart2 (X,Y)) . (x,y)) = (( dist_cart2 (X,Y)) . (y,x))

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y:];

      reconsider x1 = (x `1 ), y1 = (y `1 ) as Element of X;

      reconsider x2 = (x `2 ), y2 = (y `2 ) as Element of Y;

      

       A1: x = [x1, x2] & y = [y1, y2];

      

      then (( dist_cart2 (X,Y)) . (x,y)) = (( dist (y1,x1)) + ( dist (x2,y2))) by Def1

      .= (( dist_cart2 (X,Y)) . (y,x)) by A1, Def1;

      hence thesis;

    end;

    theorem :: METRIC_3:3

    

     Th3: for x,y,z be Element of [:the carrier of X, the carrier of Y:] holds (( dist_cart2 (X,Y)) . (x,z)) <= ((( dist_cart2 (X,Y)) . (x,y)) + (( dist_cart2 (X,Y)) . (y,z)))

    proof

      let x,y,z be Element of [:the carrier of X, the carrier of Y:];

      reconsider x1 = (x `1 ), y1 = (y `1 ), z1 = (z `1 ) as Element of X;

      reconsider x2 = (x `2 ), y2 = (y `2 ), z2 = (z `2 ) as Element of Y;

      

       A1: y = [y1, y2];

      set d6 = ( dist (y2,z2));

      set d5 = ( dist (x2,y2));

      set d4 = ( dist (x2,z2));

      set d3 = ( dist (y1,z1));

      set d2 = ( dist (x1,y1));

      set d1 = ( dist (x1,z1));

      

       A2: z = [z1, z2];

      

       A3: x = [x1, x2];

      then

       A4: (( dist_cart2 (X,Y)) . (x,z)) = (d1 + d4) by A2, Def1;

      

       A5: d1 <= (d2 + d3) & d4 <= (d5 + d6) by METRIC_1: 4;

      ((d2 + d3) + (d5 + d6)) = ((d2 + d5) + (d3 + d6))

      .= ((( dist_cart2 (X,Y)) . (x,y)) + (d3 + d6)) by A3, A1, Def1

      .= ((( dist_cart2 (X,Y)) . (x,y)) + (( dist_cart2 (X,Y)) . (y,z))) by A1, A2, Def1;

      hence thesis by A5, A4, XREAL_1: 7;

    end;

    definition

      let X, Y;

      let x,y be Element of [:the carrier of X, the carrier of Y:];

      :: METRIC_3:def2

      func dist2 (x,y) -> Real equals (( dist_cart2 (X,Y)) . (x,y));

      coherence ;

    end

    registration

      let A be non empty set, r be Function of [:A, A:], REAL ;

      cluster MetrStruct (# A, r #) -> non empty;

      coherence ;

    end

    definition

      let X, Y;

      :: METRIC_3:def3

      func MetrSpaceCart2 (X,Y) -> strict non empty MetrSpace equals MetrStruct (# [:the carrier of X, the carrier of Y:], ( dist_cart2 (X,Y)) #);

      coherence

      proof

        set M = MetrStruct (# [:the carrier of X, the carrier of Y:], ( dist_cart2 (X,Y)) #);

        now

          let x,y,z be Element of M;

          

           A1: ( dist (x,y)) = (( dist_cart2 (X,Y)) . (x,y)) by METRIC_1:def 1;

          hence ( dist (x,y)) = 0 iff x = y by Th1;

          ( dist (y,x)) = (( dist_cart2 (X,Y)) . (y,x)) by METRIC_1:def 1;

          hence ( dist (x,y)) = ( dist (y,x)) by A1, Th2;

          ( dist (x,z)) = (( dist_cart2 (X,Y)) . (x,z)) & ( dist (y,z)) = (( dist_cart2 (X,Y)) . (y,z)) by METRIC_1:def 1;

          hence ( dist (x,z)) <= (( dist (x,y)) + ( dist (y,z))) by A1, Th3;

        end;

        hence thesis by METRIC_1: 6;

      end;

    end

    scheme :: METRIC_3:sch2

    LambdaMCART1 { X,Y,Z,T() -> non empty set , F( object, object, object, object, object, object) -> Element of T() } :

ex f be Function of [: [:X(), Y(), Z():], [:X(), Y(), Z():]:], T() st for x1,y1 be Element of X() holds for x2,y2 be Element of Y() holds for x3,y3 be Element of Z() holds for x,y be Element of [:X(), Y(), Z():] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (f . (x,y)) = F(x1,y1,x2,y2,x3,y3);

      deffunc G( Element of [:X(), Y(), Z():], Element of [:X(), Y(), Z():]) = F(`1_3,`1_3,`2_3,`2_3,`3_3,`3_3);

      consider f be Function of [: [:X(), Y(), Z():], [:X(), Y(), Z():]:], T() such that

       A1: for x,y be Element of [:X(), Y(), Z():] holds (f . (x,y)) = G(x,y) from BINOP_1:sch 4;

      take f;

      let x1,y1 be Element of X(), x2,y2 be Element of Y(), x3,y3 be Element of Z(), x,y be Element of [:X(), Y(), Z():] such that

       A2: x = [x1, x2, x3] and

       A3: y = [y1, y2, y3];

      

       A5: y1 = (y `1_3 ) & y2 = (y `2_3 ) by A3;

      

       A7: x3 = (x `3_3 ) by A2;

      

       A8: y3 = (y `3_3 ) by A3;

      x1 = (x `1_3 ) & x2 = (x `2_3 ) by A2;

      hence thesis by A1, A5, A7, A8;

    end;

    definition

      let X, Y, Z;

      :: METRIC_3:def4

      func dist_cart3 (X,Y,Z) -> Function of [: [:the carrier of X, the carrier of Y, the carrier of Z:], [:the carrier of X, the carrier of Y, the carrier of Z:]:], REAL means

      : Def4: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (it . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + ( dist (x3,y3)));

      existence

      proof

        deffunc G( Element of X, Element of X, Element of Y, Element of Y, Element of Z, Element of Z) = ( In (((( dist ($1,$2)) + ( dist ($3,$4))) + ( dist ($5,$6))), REAL ));

        consider F be Function of [: [:the carrier of X, the carrier of Y, the carrier of Z:], [:the carrier of X, the carrier of Y, the carrier of Z:]:], REAL such that

         A1: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (F . (x,y)) = G(x1,y1,x2,y2,x3,y3) from LambdaMCART1;

        take F;

        let x1,y1 be Element of X, x2,y2 be Element of Y, x3,y3 be Element of Z, x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

        assume x = [x1, x2, x3] & y = [y1, y2, y3];

        then (F . (x,y)) = G(x1,y1,x2,y2,x3,y3) by A1;

        hence thesis;

      end;

      uniqueness

      proof

        let f1,f2 be Function of [: [:the carrier of X, the carrier of Y, the carrier of Z:], [:the carrier of X, the carrier of Y, the carrier of Z:]:], REAL ;

        assume that

         A2: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (f1 . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + ( dist (x3,y3))) and

         A3: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (f2 . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + ( dist (x3,y3)));

        for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] holds (f1 . (x,y)) = (f2 . (x,y))

        proof

          let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

          consider x1 be Element of X, x2 be Element of Y, x3 be Element of Z such that

           A4: x = [x1, x2, x3] by DOMAIN_1: 3;

          consider y1 be Element of X, y2 be Element of Y, y3 be Element of Z such that

           A5: y = [y1, y2, y3] by DOMAIN_1: 3;

          

          thus (f1 . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + ( dist (x3,y3))) by A2, A4, A5

          .= (f2 . (x,y)) by A3, A4, A5;

        end;

        hence thesis by BINOP_1: 2;

      end;

    end

    theorem :: METRIC_3:4

    

     Th4: for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] holds (( dist_cart3 (X,Y,Z)) . (x,y)) = 0 iff x = y

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

      reconsider x1 = (x `1_3 ), y1 = (y `1_3 ) as Element of X;

      reconsider x2 = (x `2_3 ), y2 = (y `2_3 ) as Element of Y;

      reconsider x3 = (x `3_3 ), y3 = (y `3_3 ) as Element of Z;

      

       A1: x = [x1, x2, x3] & y = [y1, y2, y3];

      thus (( dist_cart3 (X,Y,Z)) . (x,y)) = 0 implies x = y

      proof

        set d3 = ( dist (x3,y3));

        set d2 = ( dist (x2,y2));

        set d1 = ( dist (x1,y1));

        set d4 = (d1 + d2);

        assume (( dist_cart3 (X,Y,Z)) . (x,y)) = 0 ;

        then

         A2: (d4 + d3) = 0 by A1, Def4;

        

         A3: 0 <= d1 & 0 <= d2 by METRIC_1: 5;

        then

         A4: 0 <= d3 & ( 0 + 0 ) <= (d1 + d2) by METRIC_1: 5, XREAL_1: 7;

        then

         A5: d4 = 0 by A2, XREAL_1: 27;

        then d1 = 0 by A3, XREAL_1: 27;

        then

         A6: x1 = y1 by METRIC_1: 2;

        d3 = 0 by A2, A4, XREAL_1: 27;

        then

         A7: x3 = y3 by METRIC_1: 2;

        d2 = 0 by A3, A5, XREAL_1: 27;

        hence thesis by A1, A7, A6, METRIC_1: 2;

      end;

      assume

       A8: x = y;

      then

       A9: ( dist (x1,y1)) = 0 & ( dist (x2,y2)) = 0 by METRIC_1: 1;

      (( dist_cart3 (X,Y,Z)) . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + ( dist (x3,y3))) by A1, Def4

      .= 0 by A8, A9, METRIC_1: 1;

      hence thesis;

    end;

    theorem :: METRIC_3:5

    

     Th5: for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] holds (( dist_cart3 (X,Y,Z)) . (x,y)) = (( dist_cart3 (X,Y,Z)) . (y,x))

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

      reconsider x1 = (x `1_3 ), y1 = (y `1_3 ) as Element of X;

      reconsider x2 = (x `2_3 ), y2 = (y `2_3 ) as Element of Y;

      reconsider x3 = (x `3_3 ), y3 = (y `3_3 ) as Element of Z;

      

       A1: x = [x1, x2, x3] & y = [y1, y2, y3];

      

      then (( dist_cart3 (X,Y,Z)) . (x,y)) = ((( dist (y1,x1)) + ( dist (y2,x2))) + ( dist (y3,x3))) by Def4

      .= (( dist_cart3 (X,Y,Z)) . (y,x)) by A1, Def4;

      hence thesis;

    end;

    theorem :: METRIC_3:6

    

     Th6: for x,y,z be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] holds (( dist_cart3 (X,Y,Z)) . (x,z)) <= ((( dist_cart3 (X,Y,Z)) . (x,y)) + (( dist_cart3 (X,Y,Z)) . (y,z)))

    proof

      let x,y,z be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

      reconsider x1 = (x `1_3 ), y1 = (y `1_3 ), z1 = (z `1_3 ) as Element of X;

      reconsider x2 = (x `2_3 ), y2 = (y `2_3 ), z2 = (z `2_3 ) as Element of Y;

      reconsider x3 = (x `3_3 ), y3 = (y `3_3 ), z3 = (z `3_3 ) as Element of Z;

      

       A1: x = [x1, x2, x3];

      set d4 = ( dist (x2,z2)), d5 = ( dist (x2,y2)), d6 = ( dist (y2,z2));

      

       A2: z = [z1, z2, z3];

      set d7 = ( dist (x3,z3)), d8 = ( dist (x3,y3)), d9 = ( dist (y3,z3));

      set d1 = ( dist (x1,z1)), d2 = ( dist (x1,y1)), d3 = ( dist (y1,z1));

      

       A3: y = [y1, y2, y3];

      set d10 = (d1 + d4);

      d1 <= (d2 + d3) & d4 <= (d5 + d6) by METRIC_1: 4;

      then

       A4: d10 <= ((d2 + d3) + (d5 + d6)) by XREAL_1: 7;

      d7 <= (d8 + d9) by METRIC_1: 4;

      then

       A5: (d10 + d7) <= (((d2 + d3) + (d5 + d6)) + (d8 + d9)) by A4, XREAL_1: 7;

      (((d2 + d3) + (d5 + d6)) + (d8 + d9)) = (((d2 + d5) + d8) + ((d3 + d6) + d9))

      .= ((( dist_cart3 (X,Y,Z)) . (x,y)) + ((d3 + d6) + d9)) by A1, A3, Def4

      .= ((( dist_cart3 (X,Y,Z)) . (x,y)) + (( dist_cart3 (X,Y,Z)) . (y,z))) by A3, A2, Def4;

      hence thesis by A1, A2, A5, Def4;

    end;

    definition

      let X, Y, Z;

      :: METRIC_3:def5

      func MetrSpaceCart3 (X,Y,Z) -> strict non empty MetrSpace equals MetrStruct (# [:the carrier of X, the carrier of Y, the carrier of Z:], ( dist_cart3 (X,Y,Z)) #);

      coherence

      proof

        set M = MetrStruct (# [:the carrier of X, the carrier of Y, the carrier of Z:], ( dist_cart3 (X,Y,Z)) #);

        now

          let x,y,z be Element of M;

          

           A1: ( dist (x,y)) = (( dist_cart3 (X,Y,Z)) . (x,y)) by METRIC_1:def 1;

          hence ( dist (x,y)) = 0 iff x = y by Th4;

          ( dist (y,x)) = (( dist_cart3 (X,Y,Z)) . (y,x)) by METRIC_1:def 1;

          hence ( dist (x,y)) = ( dist (y,x)) by A1, Th5;

          ( dist (x,z)) = (( dist_cart3 (X,Y,Z)) . (x,z)) & ( dist (y,z)) = (( dist_cart3 (X,Y,Z)) . (y,z)) by METRIC_1:def 1;

          hence ( dist (x,z)) <= (( dist (x,y)) + ( dist (y,z))) by A1, Th6;

        end;

        hence thesis by METRIC_1: 6;

      end;

    end

    definition

      let X, Y, Z;

      let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

      :: METRIC_3:def6

      func dist3 (x,y) -> Real equals (( dist_cart3 (X,Y,Z)) . (x,y));

      coherence ;

    end

    scheme :: METRIC_3:sch3

    LambdaMCART2 { X,Y,Z,W,T() -> non empty set , F( object, object, object, object, object, object, object, object) -> Element of T() } :

ex f be Function of [: [:X(), Y(), Z(), W():], [:X(), Y(), Z(), W():]:], T() st for x1,y1 be Element of X() holds for x2,y2 be Element of Y() holds for x3,y3 be Element of Z() holds for x4,y4 be Element of W() holds for x,y be Element of [:X(), Y(), Z(), W():] st x = [x1, x2, x3, x4] & y = [y1, y2, y3, y4] holds (f . (x,y)) = F(x1,y1,x2,y2,x3,y3,x4,y4);

      deffunc G( Element of [:X(), Y(), Z(), W():], Element of [:X(), Y(), Z(), W():]) = F(`1_4,`1_4,`2_4,`2_4,`3_4,`3_4,`4_4,`4_4);

      consider f be Function of [: [:X(), Y(), Z(), W():], [:X(), Y(), Z(), W():]:], T() such that

       A1: for x,y be Element of [:X(), Y(), Z(), W():] holds (f . (x,y)) = G(x,y) from BINOP_1:sch 4;

      take f;

      let x1,y1 be Element of X(), x2,y2 be Element of Y(), x3,y3 be Element of Z(), x4,y4 be Element of W(), x,y be Element of [:X(), Y(), Z(), W():] such that

       A2: x = [x1, x2, x3, x4] and

       A3: y = [y1, y2, y3, y4];

      

       A5: y1 = (y `1_4 ) & y2 = (y `2_4 ) by A3;

      

       A7: x3 = (x `3_4 ) & x4 = (x `4_4 ) by A2;

      

       A8: y3 = (y `3_4 ) & y4 = (y `4_4 ) by A3;

      x1 = (x `1_4 ) & x2 = (x `2_4 ) by A2;

      hence thesis by A1, A5, A7, A8;

    end;

    definition

      let X, Y, Z, W;

      :: METRIC_3:def7

      func dist_cart4 (X,Y,Z,W) -> Function of [: [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:], [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:]:], REAL means

      : Def7: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x4,y4 be Element of W holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:] st x = [x1, x2, x3, x4] & y = [y1, y2, y3, y4] holds (it . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + (( dist (x3,y3)) + ( dist (x4,y4))));

      existence

      proof

        deffunc G( Element of X, Element of X, Element of Y, Element of Y, Element of Z, Element of Z, Element of W, Element of W) = ( In (((( dist ($1,$2)) + ( dist ($3,$4))) + (( dist ($5,$6)) + ( dist ($7,$8)))), REAL ));

        consider F be Function of [: [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:], [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:]:], REAL such that

         A1: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x4,y4 be Element of W holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:] st x = [x1, x2, x3, x4] & y = [y1, y2, y3, y4] holds (F . (x,y)) = G(x1,y1,x2,y2,x3,y3,x4,y4) from LambdaMCART2;

        take F;

        let x1,y1 be Element of X, x2,y2 be Element of Y, x3,y3 be Element of Z, x4,y4 be Element of W, x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:];

        assume x = [x1, x2, x3, x4] & y = [y1, y2, y3, y4];

        then (F . (x,y)) = G(x1,y1,x2,y2,x3,y3,x4,y4) by A1;

        hence thesis;

      end;

      uniqueness

      proof

        let f1,f2 be Function of [: [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:], [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:]:], REAL ;

        assume that

         A2: for x1,y1 be Element of X, x2,y2 be Element of Y, x3,y3 be Element of Z, x4,y4 be Element of W, x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:] st x = [x1, x2, x3, x4] & y = [y1, y2, y3, y4] holds (f1 . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + (( dist (x3,y3)) + ( dist (x4,y4)))) and

         A3: for x1,y1 be Element of X, x2,y2 be Element of Y, x3,y3 be Element of Z, x4,y4 be Element of W holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:] st x = [x1, x2, x3, x4] & y = [y1, y2, y3, y4] holds (f2 . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + (( dist (x3,y3)) + ( dist (x4,y4))));

        for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:] holds (f1 . (x,y)) = (f2 . (x,y))

        proof

          let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:];

          consider x1 be Element of X, x2 be Element of Y, x3 be Element of Z, x4 be Element of W such that

           A4: x = [x1, x2, x3, x4] by DOMAIN_1: 10;

          consider y1 be Element of X, y2 be Element of Y, y3 be Element of Z, y4 be Element of W such that

           A5: y = [y1, y2, y3, y4] by DOMAIN_1: 10;

          

          thus (f1 . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + (( dist (x3,y3)) + ( dist (x4,y4)))) by A2, A4, A5

          .= (f2 . (x,y)) by A3, A4, A5;

        end;

        hence thesis by BINOP_1: 2;

      end;

    end

    theorem :: METRIC_3:7

    

     Th7: for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:] holds (( dist_cart4 (X,Y,Z,W)) . (x,y)) = 0 iff x = y

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:];

      reconsider x1 = (x `1_4 ), y1 = (y `1_4 ) as Element of X;

      reconsider x2 = (x `2_4 ), y2 = (y `2_4 ) as Element of Y;

      reconsider x3 = (x `3_4 ), y3 = (y `3_4 ) as Element of Z;

      reconsider x4 = (x `4_4 ), y4 = (y `4_4 ) as Element of W;

      

       A1: x = [x1, x2, x3, x4] & y = [y1, y2, y3, y4];

      thus (( dist_cart4 (X,Y,Z,W)) . (x,y)) = 0 implies x = y

      proof

        set d1 = ( dist (x1,y1)), d2 = ( dist (x2,y2)), d3 = ( dist (x3,y3));

        set d5 = ( dist (x4,y4)), d4 = (d1 + d2), d6 = (d3 + d5);

        

         A2: 0 <= d3 & 0 <= d5 by METRIC_1: 5;

        then

         A3: ( 0 + 0 ) <= (d3 + d5) by XREAL_1: 7;

        assume (( dist_cart4 (X,Y,Z,W)) . (x,y)) = 0 ;

        then

         A4: (d4 + d6) = 0 by A1, Def7;

        

         A5: 0 <= d1 & 0 <= d2 by METRIC_1: 5;

        then

         A6: ( 0 + 0 ) <= (d1 + d2) by XREAL_1: 7;

        then

         A7: d4 = 0 by A4, A3, XREAL_1: 27;

        then d2 = 0 by A5, XREAL_1: 27;

        then

         A8: x2 = y2 by METRIC_1: 2;

        

         A9: d6 = 0 by A4, A6, A3, XREAL_1: 27;

        then d3 = 0 by A2, XREAL_1: 27;

        then

         A10: x3 = y3 by METRIC_1: 2;

        d5 = 0 by A2, A9, XREAL_1: 27;

        then

         A11: x4 = y4 by METRIC_1: 2;

        d1 = 0 by A5, A7, XREAL_1: 27;

        hence thesis by A1, A8, A10, A11, METRIC_1: 2;

      end;

      assume

       A12: x = y;

      then

       A13: ( dist (x2,y2)) = 0 & ( dist (x3,y3)) = 0 by METRIC_1: 1;

      

       A14: ( dist (x4,y4)) = 0 by A12, METRIC_1: 1;

      (( dist_cart4 (X,Y,Z,W)) . (x,y)) = ((( dist (x1,y1)) + ( dist (x2,y2))) + (( dist (x3,y3)) + ( dist (x4,y4)))) by A1, Def7

      .= 0 by A12, A13, A14, METRIC_1: 1;

      hence thesis;

    end;

    theorem :: METRIC_3:8

    

     Th8: for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:] holds (( dist_cart4 (X,Y,Z,W)) . (x,y)) = (( dist_cart4 (X,Y,Z,W)) . (y,x))

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:];

      reconsider x1 = (x `1_4 ), y1 = (y `1_4 ) as Element of X;

      reconsider x2 = (x `2_4 ), y2 = (y `2_4 ) as Element of Y;

      reconsider x3 = (x `3_4 ), y3 = (y `3_4 ) as Element of Z;

      reconsider x4 = (x `4_4 ), y4 = (y `4_4 ) as Element of W;

      

       A1: x = [x1, x2, x3, x4] & y = [y1, y2, y3, y4];

      

      then (( dist_cart4 (X,Y,Z,W)) . (x,y)) = ((( dist (y1,x1)) + ( dist (y2,x2))) + (( dist (y3,x3)) + ( dist (x4,y4)))) by Def7

      .= (( dist_cart4 (X,Y,Z,W)) . (y,x)) by A1, Def7;

      hence thesis;

    end;

    theorem :: METRIC_3:9

    

     Th9: for x,y,z be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:] holds (( dist_cart4 (X,Y,Z,W)) . (x,z)) <= ((( dist_cart4 (X,Y,Z,W)) . (x,y)) + (( dist_cart4 (X,Y,Z,W)) . (y,z)))

    proof

      let x,y,z be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:];

      reconsider x1 = (x `1_4 ), y1 = (y `1_4 ), z1 = (z `1_4 ) as Element of X;

      reconsider x2 = (x `2_4 ), y2 = (y `2_4 ), z2 = (z `2_4 ) as Element of Y;

      reconsider x3 = (x `3_4 ), y3 = (y `3_4 ), z3 = (z `3_4 ) as Element of Z;

      reconsider x4 = (x `4_4 ), y4 = (y `4_4 ), z4 = (z `4_4 ) as Element of W;

      

       A1: x = [x1, x2, x3, x4];

      set d7 = ( dist (x3,z3)), d8 = ( dist (x3,y3)), d9 = ( dist (y3,z3));

      set d1 = ( dist (x1,z1)), d2 = ( dist (x1,y1)), d3 = ( dist (y1,z1));

      

       A2: y = [y1, y2, y3, y4];

      set d10 = ( dist (x4,z4)), d11 = ( dist (x4,y4)), d12 = ( dist (y4,z4));

      set d4 = ( dist (x2,z2)), d5 = ( dist (x2,y2)), d6 = ( dist (y2,z2));

      

       A3: z = [z1, z2, z3, z4];

      set d16 = (d7 + d10);

      set d14 = (d1 + d4);

      set d17 = ((d8 + d9) + (d11 + d12)), d15 = ((d2 + d3) + (d5 + d6));

      d7 <= (d8 + d9) & d10 <= (d11 + d12) by METRIC_1: 4;

      then

       A4: d16 <= d17 by XREAL_1: 7;

      d1 <= (d2 + d3) & d4 <= (d5 + d6) by METRIC_1: 4;

      then d14 <= d15 by XREAL_1: 7;

      then

       A5: (d14 + d16) <= (d15 + d17) by A4, XREAL_1: 7;

      (d15 + d17) = (((d2 + d5) + (d8 + d11)) + ((d3 + d6) + (d9 + d12)))

      .= ((( dist_cart4 (X,Y,Z,W)) . (x,y)) + ((d3 + d6) + (d9 + d12))) by A1, A2, Def7

      .= ((( dist_cart4 (X,Y,Z,W)) . (x,y)) + (( dist_cart4 (X,Y,Z,W)) . (y,z))) by A2, A3, Def7;

      hence thesis by A1, A3, A5, Def7;

    end;

    definition

      let X, Y, Z, W;

      :: METRIC_3:def8

      func MetrSpaceCart4 (X,Y,Z,W) -> strict non empty MetrSpace equals MetrStruct (# [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:], ( dist_cart4 (X,Y,Z,W)) #);

      coherence

      proof

        set M = MetrStruct (# [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:], ( dist_cart4 (X,Y,Z,W)) #);

        now

          let x,y,z be Element of M;

          reconsider x9 = x, y9 = y, z9 = z as Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:];

          

           A1: ( dist (x,y)) = (( dist_cart4 (X,Y,Z,W)) . (x9,y9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = 0 iff x = y by Th7;

          ( dist (y,x)) = (( dist_cart4 (X,Y,Z,W)) . (y9,x9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = ( dist (y,x)) by A1, Th8;

          ( dist (x,z)) = (( dist_cart4 (X,Y,Z,W)) . (x9,z9)) & ( dist (y,z)) = (( dist_cart4 (X,Y,Z,W)) . (y9,z9)) by METRIC_1:def 1;

          hence ( dist (x,z)) <= (( dist (x,y)) + ( dist (y,z))) by A1, Th9;

        end;

        hence thesis by METRIC_1: 6;

      end;

    end

    definition

      let X, Y, Z, W;

      let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z, the carrier of W:];

      :: METRIC_3:def9

      func dist4 (x,y) -> Real equals (( dist_cart4 (X,Y,Z,W)) . (x,y));

      coherence ;

    end

    begin

    reserve X,Y for non empty MetrSpace;

    definition

      let X, Y;

      :: METRIC_3:def10

      func dist_cart2S (X,Y) -> Function of [: [:the carrier of X, the carrier of Y:], [:the carrier of X, the carrier of Y:]:], REAL means

      : Def10: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x,y be Element of [:the carrier of X, the carrier of Y:] st x = [x1, x2] & y = [y1, y2] holds (it . (x,y)) = ( sqrt ((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 )));

      existence

      proof

        deffunc G( Element of X, Element of X, Element of Y, Element of Y) = ( In (( sqrt ((( dist ($1,$2)) ^2 ) + (( dist ($3,$4)) ^2 ))), REAL ));

        consider F be Function of [: [:the carrier of X, the carrier of Y:], [:the carrier of X, the carrier of Y:]:], REAL such that

         A1: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x,y be Element of [:the carrier of X, the carrier of Y:] st x = [x1, x2] & y = [y1, y2] holds (F . (x,y)) = G(x1,y1,x2,y2) from LambdaMCART;

        take F;

        let x1,y1 be Element of X, x2,y2 be Element of Y, x,y be Element of [:the carrier of X, the carrier of Y:];

        assume x = [x1, x2] & y = [y1, y2];

        then (F . (x,y)) = G(x1,y1,x2,y2) by A1;

        hence thesis;

      end;

      uniqueness

      proof

        let f1,f2 be Function of [: [:the carrier of X, the carrier of Y:], [:the carrier of X, the carrier of Y:]:], REAL ;

        assume that

         A2: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x,y be Element of [:the carrier of X, the carrier of Y:] st x = [x1, x2] & y = [y1, y2] holds (f1 . (x,y)) = ( sqrt ((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 ))) and

         A3: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x,y be Element of [:the carrier of X, the carrier of Y:] st x = [x1, x2] & y = [y1, y2] holds (f2 . (x,y)) = ( sqrt ((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 )));

        for x,y be Element of [:the carrier of X, the carrier of Y:] holds (f1 . (x,y)) = (f2 . (x,y))

        proof

          let x,y be Element of [:the carrier of X, the carrier of Y:];

          consider x1 be Element of X, x2 be Element of Y such that

           A4: x = [x1, x2] by DOMAIN_1: 1;

          consider y1 be Element of X, y2 be Element of Y such that

           A5: y = [y1, y2] by DOMAIN_1: 1;

          

          thus (f1 . (x,y)) = ( sqrt ((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 ))) by A2, A4, A5

          .= (f2 . (x,y)) by A3, A4, A5;

        end;

        hence thesis by BINOP_1: 2;

      end;

    end

    

     Lm1: for a,b be Real st 0 <= a & 0 <= b holds ( sqrt (a + b)) = 0 iff a = 0 & b = 0 by SQUARE_1: 31;

    theorem :: METRIC_3:10

    

     Th10: for x,y be Element of [:the carrier of X, the carrier of Y:] holds (( dist_cart2S (X,Y)) . (x,y)) = 0 iff x = y

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y:];

      reconsider x1 = (x `1 ), y1 = (y `1 ) as Element of X;

      reconsider x2 = (x `2 ), y2 = (y `2 ) as Element of Y;

      

       A1: x = [x1, x2] & y = [y1, y2];

      thus (( dist_cart2S (X,Y)) . (x,y)) = 0 implies x = y

      proof

        set d2 = ( dist (x2,y2));

        set d1 = ( dist (x1,y1));

        assume (( dist_cart2S (X,Y)) . (x,y)) = 0 ;

        then

         A2: ( sqrt ((d1 ^2 ) + (d2 ^2 ))) = 0 by A1, Def10;

        

         A3: 0 <= (d1 ^2 ) & 0 <= (d2 ^2 ) by XREAL_1: 63;

        then d1 = 0 by A2, Lm1;

        then

         A4: x1 = y1 by METRIC_1: 2;

        d2 = 0 by A2, A3, Lm1;

        hence thesis by A1, A4, METRIC_1: 2;

      end;

      assume x = y;

      then

       A5: (( dist (x1,y1)) ^2 ) = ( 0 ^2 ) & (( dist (x2,y2)) ^2 ) = ( 0 ^2 ) by METRIC_1: 1;

      (( dist_cart2S (X,Y)) . (x,y)) = ( sqrt ((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 ))) by A1, Def10

      .= 0 by A5, Lm1;

      hence thesis;

    end;

    theorem :: METRIC_3:11

    

     Th11: for x,y be Element of [:the carrier of X, the carrier of Y:] holds (( dist_cart2S (X,Y)) . (x,y)) = (( dist_cart2S (X,Y)) . (y,x))

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y:];

      reconsider x1 = (x `1 ), y1 = (y `1 ) as Element of X;

      reconsider x2 = (x `2 ), y2 = (y `2 ) as Element of Y;

      

       A1: x = [x1, x2] & y = [y1, y2];

      

      then (( dist_cart2S (X,Y)) . (x,y)) = ( sqrt ((( dist (y1,x1)) ^2 ) + (( dist (x2,y2)) ^2 ))) by Def10

      .= (( dist_cart2S (X,Y)) . (y,x)) by A1, Def10;

      hence thesis;

    end;

    theorem :: METRIC_3:12

    

     Th12: for a,b,c,d be Real st 0 <= a & 0 <= b & 0 <= c & 0 <= d holds ( sqrt (((a + c) ^2 ) + ((b + d) ^2 ))) <= (( sqrt ((a ^2 ) + (b ^2 ))) + ( sqrt ((c ^2 ) + (d ^2 ))))

    proof

      let a,b,c,d be Real;

      assume 0 <= a & 0 <= b & 0 <= c & 0 <= d;

      then 0 <= (a * c) & 0 <= (d * b) by XREAL_1: 127;

      then

       A1: ( 0 + 0 ) <= ((a * c) + (d * b)) by XREAL_1: 7;

       0 <= (d ^2 ) & 0 <= (c ^2 ) by XREAL_1: 63;

      then

       A2: ( 0 + 0 ) <= ((c ^2 ) + (d ^2 )) by XREAL_1: 7;

      then

       A3: 0 <= ( sqrt ((c ^2 ) + (d ^2 ))) by SQUARE_1:def 2;

       0 <= (((a * d) - (c * b)) ^2 ) by XREAL_1: 63;

      then 0 <= ((((a ^2 ) * (d ^2 )) + ((c ^2 ) * (b ^2 ))) - ((2 * (a * d)) * (c * b)));

      then ( 0 + ((2 * (a * d)) * (c * b))) <= (((a ^2 ) * (d ^2 )) + ((c ^2 ) * (b ^2 ))) by XREAL_1: 19;

      then (((b ^2 ) * (d ^2 )) + ((2 * (a * d)) * (c * b))) <= ((((a ^2 ) * (d ^2 )) + ((c ^2 ) * (b ^2 ))) + ((b ^2 ) * (d ^2 ))) by XREAL_1: 6;

      then

       A4: (((a ^2 ) * (c ^2 )) + (((b ^2 ) * (d ^2 )) + ((2 * (a * d)) * (c * b)))) <= (((a ^2 ) * (c ^2 )) + (((b ^2 ) * (d ^2 )) + (((a ^2 ) * (d ^2 )) + ((c ^2 ) * (b ^2 ))))) by XREAL_1: 6;

       0 <= (a ^2 ) & 0 <= (b ^2 ) by XREAL_1: 63;

      then

       A5: ( 0 + 0 ) <= ((a ^2 ) + (b ^2 )) by XREAL_1: 7;

      then 0 <= ( sqrt ((a ^2 ) + (b ^2 ))) by SQUARE_1:def 2;

      then

       A6: ( 0 + 0 ) <= (( sqrt ((a ^2 ) + (b ^2 ))) + ( sqrt ((c ^2 ) + (d ^2 )))) by A3, XREAL_1: 7;

       0 <= (((a * c) + (d * b)) ^2 ) by XREAL_1: 63;

      then ( sqrt (((a * c) + (d * b)) ^2 )) <= ( sqrt (((a ^2 ) + (b ^2 )) * ((c ^2 ) + (d ^2 )))) by A4, SQUARE_1: 26;

      then (2 * ( sqrt (((a * c) + (d * b)) ^2 ))) <= (2 * ( sqrt (((a ^2 ) + (b ^2 )) * ((c ^2 ) + (d ^2 ))))) by XREAL_1: 64;

      then (2 * ( sqrt (((a * c) + (d * b)) ^2 ))) <= (2 * (( sqrt ((a ^2 ) + (b ^2 ))) * ( sqrt ((c ^2 ) + (d ^2 ))))) by A5, A2, SQUARE_1: 29;

      then (2 * ((a * c) + (d * b))) <= (2 * (( sqrt ((a ^2 ) + (b ^2 ))) * ( sqrt ((d ^2 ) + (c ^2 ))))) by A1, SQUARE_1: 22;

      then ((b ^2 ) + (2 * ((a * c) + (d * b)))) <= ((2 * (( sqrt ((a ^2 ) + (b ^2 ))) * ( sqrt ((d ^2 ) + (c ^2 ))))) + (b ^2 )) by XREAL_1: 6;

      then ((d ^2 ) + ((b ^2 ) + (2 * ((a * c) + (d * b))))) <= ((d ^2 ) + ((b ^2 ) + (2 * (( sqrt ((a ^2 ) + (b ^2 ))) * ( sqrt ((d ^2 ) + (c ^2 ))))))) by XREAL_1: 6;

      then ((c ^2 ) + ((d ^2 ) + ((b ^2 ) + (2 * ((a * c) + (d * b)))))) <= (((d ^2 ) + ((b ^2 ) + (2 * (( sqrt ((a ^2 ) + (b ^2 ))) * ( sqrt ((d ^2 ) + (c ^2 ))))))) + (c ^2 )) by XREAL_1: 6;

      then ((a ^2 ) + ((c ^2 ) + ((d ^2 ) + (((b ^2 ) + (2 * (d * b))) + (2 * (a * c)))))) <= ((a ^2 ) + ((c ^2 ) + ((d ^2 ) + ((b ^2 ) + (2 * (( sqrt ((a ^2 ) + (b ^2 ))) * ( sqrt ((d ^2 ) + (c ^2 ))))))))) by XREAL_1: 6;

      then (((a + c) ^2 ) + ((d + b) ^2 )) <= ((((a ^2 ) + (b ^2 )) + (2 * (( sqrt ((a ^2 ) + (b ^2 ))) * ( sqrt ((c ^2 ) + (d ^2 )))))) + ((c ^2 ) + (d ^2 )));

      then (((a + c) ^2 ) + ((d + b) ^2 )) <= (((( sqrt ((a ^2 ) + (b ^2 ))) ^2 ) + (2 * (( sqrt ((a ^2 ) + (b ^2 ))) * ( sqrt ((c ^2 ) + (d ^2 )))))) + ((c ^2 ) + (d ^2 ))) by A5, SQUARE_1:def 2;

      then

       A7: (((a + c) ^2 ) + ((d + b) ^2 )) <= (((( sqrt ((a ^2 ) + (b ^2 ))) ^2 ) + ((2 * ( sqrt ((a ^2 ) + (b ^2 )))) * ( sqrt ((c ^2 ) + (d ^2 ))))) + (( sqrt ((c ^2 ) + (d ^2 ))) ^2 )) by A2, SQUARE_1:def 2;

       0 <= ((a + c) ^2 ) & 0 <= ((d + b) ^2 ) by XREAL_1: 63;

      then ( 0 + 0 ) <= (((a + c) ^2 ) + ((d + b) ^2 )) by XREAL_1: 7;

      then ( sqrt (((a + c) ^2 ) + ((d + b) ^2 ))) <= ( sqrt ((( sqrt ((a ^2 ) + (b ^2 ))) + ( sqrt ((c ^2 ) + (d ^2 )))) ^2 )) by A7, SQUARE_1: 26;

      hence thesis by A6, SQUARE_1: 22;

    end;

    theorem :: METRIC_3:13

    

     Th13: for x,y,z be Element of [:the carrier of X, the carrier of Y:] holds (( dist_cart2S (X,Y)) . (x,z)) <= ((( dist_cart2S (X,Y)) . (x,y)) + (( dist_cart2S (X,Y)) . (y,z)))

    proof

      let x,y,z be Element of [:the carrier of X, the carrier of Y:];

      reconsider x1 = (x `1 ), y1 = (y `1 ), z1 = (z `1 ) as Element of X;

      reconsider x2 = (x `2 ), y2 = (y `2 ), z2 = (z `2 ) as Element of Y;

      

       A1: x = [x1, x2];

      set d5 = ( dist (x2,y2));

      set d3 = ( dist (y1,z1));

      set d1 = ( dist (x1,z1));

      

       A2: y = [y1, y2];

      set d6 = ( dist (y2,z2));

      set d4 = ( dist (x2,z2));

      set d2 = ( dist (x1,y1));

      

       A3: z = [z1, z2];

       0 <= (d1 ^2 ) & 0 <= (d4 ^2 ) by XREAL_1: 63;

      then

       A4: ( 0 + 0 ) <= ((d1 ^2 ) + (d4 ^2 )) by XREAL_1: 7;

      d4 <= (d5 + d6) & 0 <= d4 by METRIC_1: 4, METRIC_1: 5;

      then

       A5: (d4 ^2 ) <= ((d5 + d6) ^2 ) by SQUARE_1: 15;

      d1 <= (d2 + d3) & 0 <= d1 by METRIC_1: 4, METRIC_1: 5;

      then (d1 ^2 ) <= ((d2 + d3) ^2 ) by SQUARE_1: 15;

      then ((d1 ^2 ) + (d4 ^2 )) <= (((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) by A5, XREAL_1: 7;

      then

       A6: ( sqrt ((d1 ^2 ) + (d4 ^2 ))) <= ( sqrt (((d2 + d3) ^2 ) + ((d5 + d6) ^2 ))) by A4, SQUARE_1: 26;

      

       A7: 0 <= d5 & 0 <= d6 by METRIC_1: 5;

       0 <= d2 & 0 <= d3 by METRIC_1: 5;

      then ( sqrt (((d2 + d3) ^2 ) + ((d5 + d6) ^2 ))) <= (( sqrt ((d2 ^2 ) + (d5 ^2 ))) + ( sqrt ((d3 ^2 ) + (d6 ^2 )))) by A7, Th12;

      then ( sqrt ((d1 ^2 ) + (d4 ^2 ))) <= (( sqrt ((d2 ^2 ) + (d5 ^2 ))) + ( sqrt ((d3 ^2 ) + (d6 ^2 )))) by A6, XXREAL_0: 2;

      then (( dist_cart2S (X,Y)) . (x,z)) <= (( sqrt ((d2 ^2 ) + (d5 ^2 ))) + ( sqrt ((d3 ^2 ) + (d6 ^2 )))) by A1, A3, Def10;

      then (( dist_cart2S (X,Y)) . (x,z)) <= ((( dist_cart2S (X,Y)) . (x,y)) + ( sqrt ((d3 ^2 ) + (d6 ^2 )))) by A1, A2, Def10;

      hence thesis by A2, A3, Def10;

    end;

    definition

      let X, Y;

      let x,y be Element of [:the carrier of X, the carrier of Y:];

      :: METRIC_3:def11

      func dist2S (x,y) -> Real equals (( dist_cart2S (X,Y)) . (x,y));

      coherence ;

    end

    definition

      let X, Y;

      :: METRIC_3:def12

      func MetrSpaceCart2S (X,Y) -> strict non empty MetrSpace equals MetrStruct (# [:the carrier of X, the carrier of Y:], ( dist_cart2S (X,Y)) #);

      coherence

      proof

        now

          let x,y,z be Element of MetrStruct (# [:the carrier of X, the carrier of Y:], ( dist_cart2S (X,Y)) #);

          reconsider x9 = x, y9 = y, z9 = z as Element of [:the carrier of X, the carrier of Y:];

          

           A1: ( dist (x,y)) = (( dist_cart2S (X,Y)) . (x9,y9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = 0 iff x = y by Th10;

          ( dist (y,x)) = (( dist_cart2S (X,Y)) . (y9,x9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = ( dist (y,x)) by A1, Th11;

          ( dist (x,z)) = (( dist_cart2S (X,Y)) . (x9,z9)) & ( dist (y,z)) = (( dist_cart2S (X,Y)) . (y9,z9)) by METRIC_1:def 1;

          hence ( dist (x,z)) <= (( dist (x,y)) + ( dist (y,z))) by A1, Th13;

        end;

        hence thesis by METRIC_1: 6;

      end;

    end

    begin

    reserve Z for non empty MetrSpace;

    definition

      let X, Y, Z;

      :: METRIC_3:def13

      func dist_cart3S (X,Y,Z) -> Function of [: [:the carrier of X, the carrier of Y, the carrier of Z:], [:the carrier of X, the carrier of Y, the carrier of Z:]:], REAL means

      : Def13: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (it . (x,y)) = ( sqrt (((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 )) + (( dist (x3,y3)) ^2 )));

      existence

      proof

        deffunc G( Element of X, Element of X, Element of Y, Element of Y, Element of Z, Element of Z) = ( In (( sqrt (((( dist ($1,$2)) ^2 ) + (( dist ($3,$4)) ^2 )) + (( dist ($5,$6)) ^2 ))), REAL ));

        consider F be Function of [: [:the carrier of X, the carrier of Y, the carrier of Z:], [:the carrier of X, the carrier of Y, the carrier of Z:]:], REAL such that

         A1: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (F . (x,y)) = G(x1,y1,x2,y2,x3,y3) from LambdaMCART1;

        take F;

        let x1,y1 be Element of X, x2,y2 be Element of Y, x3,y3 be Element of Z, x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

        assume x = [x1, x2, x3] & y = [y1, y2, y3];

        then (F . (x,y)) = G(x1,y1,x2,y2,x3,y3) by A1;

        hence thesis;

      end;

      uniqueness

      proof

        let f1,f2 be Function of [: [:the carrier of X, the carrier of Y, the carrier of Z:], [:the carrier of X, the carrier of Y, the carrier of Z:]:], REAL ;

        assume that

         A2: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (f1 . (x,y)) = ( sqrt (((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 )) + (( dist (x3,y3)) ^2 ))) and

         A3: for x1,y1 be Element of X holds for x2,y2 be Element of Y holds for x3,y3 be Element of Z holds for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (f2 . (x,y)) = ( sqrt (((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 )) + (( dist (x3,y3)) ^2 )));

        for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] holds (f1 . (x,y)) = (f2 . (x,y))

        proof

          let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

          consider x1 be Element of X, x2 be Element of Y, x3 be Element of Z such that

           A4: x = [x1, x2, x3] by DOMAIN_1: 3;

          consider y1 be Element of X, y2 be Element of Y, y3 be Element of Z such that

           A5: y = [y1, y2, y3] by DOMAIN_1: 3;

          

          thus (f1 . (x,y)) = ( sqrt (((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 )) + (( dist (x3,y3)) ^2 ))) by A2, A4, A5

          .= (f2 . (x,y)) by A3, A4, A5;

        end;

        hence thesis by BINOP_1: 2;

      end;

    end

    theorem :: METRIC_3:14

    

     Th14: for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] holds (( dist_cart3S (X,Y,Z)) . (x,y)) = 0 iff x = y

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

      reconsider x1 = (x `1_3 ), y1 = (y `1_3 ) as Element of X;

      reconsider x2 = (x `2_3 ), y2 = (y `2_3 ) as Element of Y;

      reconsider x3 = (x `3_3 ), y3 = (y `3_3 ) as Element of Z;

      

       A1: x = [x1, x2, x3] & y = [y1, y2, y3];

      thus (( dist_cart3S (X,Y,Z)) . (x,y)) = 0 implies x = y

      proof

        set d3 = ( dist (x3,y3));

        set d2 = ( dist (x2,y2));

        set d1 = ( dist (x1,y1));

        

         A2: 0 <= (d2 ^2 ) & 0 <= (d3 ^2 ) by XREAL_1: 63;

        assume (( dist_cart3S (X,Y,Z)) . (x,y)) = 0 ;

        then ( sqrt (((d1 ^2 ) + (d2 ^2 )) + (d3 ^2 ))) = 0 by A1, Def13;

        then

         A3: ( sqrt ((d1 ^2 ) + ((d2 ^2 ) + (d3 ^2 )))) = 0 ;

         0 <= (d2 ^2 ) & 0 <= (d3 ^2 ) by XREAL_1: 63;

        then

         A4: 0 <= (d1 ^2 ) & ( 0 + 0 ) <= ((d2 ^2 ) + (d3 ^2 )) by XREAL_1: 7, XREAL_1: 63;

        then d1 = 0 by A3, Lm1;

        then

         A5: x1 = y1 by METRIC_1: 2;

        

         A6: ((d2 ^2 ) + (d3 ^2 )) = 0 by A3, A4, Lm1;

        then d2 = 0 by A2, XREAL_1: 27;

        then

         A7: x2 = y2 by METRIC_1: 2;

        d3 = 0 by A6, A2, XREAL_1: 27;

        hence thesis by A1, A5, A7, METRIC_1: 2;

      end;

      assume

       A8: x = y;

      then

       A9: (( dist (x1,y1)) ^2 ) = ( 0 ^2 ) & (( dist (x2,y2)) ^2 ) = ( 0 ^2 ) by METRIC_1: 1;

      (( dist_cart3S (X,Y,Z)) . (x,y)) = ( sqrt (((( dist (x1,y1)) ^2 ) + (( dist (x2,y2)) ^2 )) + (( dist (x3,y3)) ^2 ))) by A1, Def13

      .= ( 0 ^2 ) by A8, A9, METRIC_1: 1, SQUARE_1: 17;

      hence thesis;

    end;

    theorem :: METRIC_3:15

    

     Th15: for x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] holds (( dist_cart3S (X,Y,Z)) . (x,y)) = (( dist_cart3S (X,Y,Z)) . (y,x))

    proof

      let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

      reconsider x1 = (x `1_3 ), y1 = (y `1_3 ) as Element of X;

      reconsider x2 = (x `2_3 ), y2 = (y `2_3 ) as Element of Y;

      reconsider x3 = (x `3_3 ), y3 = (y `3_3 ) as Element of Z;

      

       A1: x = [x1, x2, x3] & y = [y1, y2, y3];

      

      then (( dist_cart3S (X,Y,Z)) . (x,y)) = ( sqrt (((( dist (y1,x1)) ^2 ) + (( dist (y2,x2)) ^2 )) + (( dist (y3,x3)) ^2 ))) by Def13

      .= (( dist_cart3S (X,Y,Z)) . (y,x)) by A1, Def13;

      hence thesis;

    end;

    theorem :: METRIC_3:16

    

     Th16: for a,b,c,d,e,f be Real holds ((((2 * (a * d)) * (c * b)) + ((2 * (a * f)) * (e * c))) + ((2 * (b * f)) * (e * d))) <= (((((((a * d) ^2 ) + ((c * b) ^2 )) + ((a * f) ^2 )) + ((e * c) ^2 )) + ((b * f) ^2 )) + ((e * d) ^2 ))

    proof

      let a,b,c,d,e,f be Real;

       0 <= (((a * f) - (e * c)) ^2 ) & 0 <= (((b * f) - (e * d)) ^2 ) by XREAL_1: 63;

      then 0 <= (((a * d) - (c * b)) ^2 ) & ( 0 + 0 ) <= ((((a * f) - (e * c)) ^2 ) + (((b * f) - (e * d)) ^2 )) by XREAL_1: 7, XREAL_1: 63;

      then ( 0 + 0 ) <= ((((a * d) - (c * b)) ^2 ) + ((((a * f) - (e * c)) ^2 ) + (((b * f) - (e * d)) ^2 ))) by XREAL_1: 7;

      then 0 <= ((((((a * d) ^2 ) + ((c * b) ^2 )) + (((a * f) - (e * c)) ^2 )) + (((b * f) - (e * d)) ^2 )) - ((2 * (a * d)) * (c * b)));

      then ( 0 + ((2 * (a * d)) * (c * b))) <= (((((a * d) ^2 ) + ((c * b) ^2 )) + (((a * f) - (e * c)) ^2 )) + (((b * f) - (e * d)) ^2 )) by XREAL_1: 19;

      then ((2 * (a * d)) * (c * b)) <= (((((((a * d) ^2 ) + ((c * b) ^2 )) + ((a * f) ^2 )) + ((e * c) ^2 )) + (((b * f) - (e * d)) ^2 )) - ((2 * (a * f)) * (e * c)));

      then (((2 * (a * d)) * (c * b)) + ((2 * (a * f)) * (e * c))) <= ((((((((a * d) ^2 ) + ((c * b) ^2 )) + ((a * f) ^2 )) + ((e * c) ^2 )) + ((b * f) ^2 )) + ((e * d) ^2 )) - ((2 * (b * f)) * (e * d))) by XREAL_1: 19;

      hence thesis by XREAL_1: 19;

    end;

    theorem :: METRIC_3:17

    

     Th17: for a,b,c,d,e,f be Real holds ((((a * c) + (b * d)) + (e * f)) ^2 ) <= ((((a ^2 ) + (b ^2 )) + (e ^2 )) * (((c ^2 ) + (d ^2 )) + (f ^2 )))

    proof

      let a,b,c,d,e,f be Real;

      ((((2 * (a * d)) * (c * b)) + ((2 * (a * f)) * (e * c))) + ((2 * (b * f)) * (e * d))) <= (((((((a * d) ^2 ) + ((c * b) ^2 )) + ((a * f) ^2 )) + ((e * c) ^2 )) + ((b * f) ^2 )) + ((e * d) ^2 )) by Th16;

      then (((e * f) ^2 ) + ((((2 * (a * b)) * (c * d)) + ((2 * (a * c)) * (e * f))) + ((2 * (b * d)) * (e * f)))) <= ((((((((a * d) ^2 ) + ((c * b) ^2 )) + ((a * f) ^2 )) + ((e * c) ^2 )) + ((b * f) ^2 )) + ((e * d) ^2 )) + ((e * f) ^2 )) by XREAL_1: 6;

      then (((b * d) ^2 ) + (((e * f) ^2 ) + ((((2 * (a * b)) * (c * d)) + ((2 * (a * c)) * (e * f))) + ((2 * (b * d)) * (e * f))))) <= (((((((((a * d) ^2 ) + ((c * b) ^2 )) + ((a * f) ^2 )) + ((e * c) ^2 )) + ((b * f) ^2 )) + ((e * d) ^2 )) + ((e * f) ^2 )) + ((b * d) ^2 )) by XREAL_1: 6;

      then (((a * c) ^2 ) + (((b * d) ^2 ) + (((e * f) ^2 ) + ((((2 * (a * b)) * (c * d)) + ((2 * (a * c)) * (e * f))) + ((2 * (b * d)) * (e * f)))))) <= ((((((((((a * d) ^2 ) + ((c * b) ^2 )) + ((a * f) ^2 )) + ((e * c) ^2 )) + ((b * f) ^2 )) + ((e * d) ^2 )) + ((e * f) ^2 )) + ((b * d) ^2 )) + ((a * c) ^2 )) by XREAL_1: 6;

      hence thesis;

    end;

    

     Lm2: for a,b,c,d,e,f be Real st 0 <= a & 0 <= b & 0 <= c & 0 <= d & 0 <= e & 0 <= f holds ( sqrt ((((a + c) ^2 ) + ((b + d) ^2 )) + ((e + f) ^2 ))) <= (( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 ))) + ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))))

    proof

      let a,b,c,d,e,f be Real;

      assume that

       A1: 0 <= a and

       A2: 0 <= b and

       A3: 0 <= c and

       A4: 0 <= d & 0 <= e & 0 <= f;

       0 <= (b * d) & 0 <= (e * f) by A2, A4, XREAL_1: 127;

      then

       A5: ( 0 + 0 ) <= ((b * d) + (e * f)) by XREAL_1: 7;

       0 <= (c ^2 ) & 0 <= (d ^2 ) by XREAL_1: 63;

      then

       A6: ( 0 + 0 ) <= ((c ^2 ) + (d ^2 )) by XREAL_1: 7;

       0 <= (f ^2 ) by XREAL_1: 63;

      then

       A7: ( 0 + 0 ) <= (((c ^2 ) + (d ^2 )) + (f ^2 )) by A6, XREAL_1: 7;

      then

       A8: 0 <= ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))) by SQUARE_1:def 2;

       0 <= ((((a * c) + (b * d)) + (e * f)) ^2 ) by XREAL_1: 63;

      then

       A9: ( sqrt ((((a * c) + (b * d)) + (e * f)) ^2 )) <= ( sqrt ((((a ^2 ) + (b ^2 )) + (e ^2 )) * (((c ^2 ) + (d ^2 )) + (f ^2 )))) by Th17, SQUARE_1: 26;

       0 <= (a ^2 ) & 0 <= (b ^2 ) by XREAL_1: 63;

      then

       A10: ( 0 + 0 ) <= ((a ^2 ) + (b ^2 )) by XREAL_1: 7;

       0 <= (e ^2 ) by XREAL_1: 63;

      then

       A11: ( 0 + 0 ) <= (((a ^2 ) + (b ^2 )) + (e ^2 )) by A10, XREAL_1: 7;

       0 <= (a * c) by A1, A3, XREAL_1: 127;

      then ( 0 + 0 ) <= ((a * c) + ((b * d) + (e * f))) by A5, XREAL_1: 7;

      then (((a * c) + (b * d)) + (e * f)) <= ( sqrt ((((a ^2 ) + (b ^2 )) + (e ^2 )) * (((c ^2 ) + (d ^2 )) + (f ^2 )))) by A9, SQUARE_1: 22;

      then (((a * c) + (b * d)) + (e * f)) <= (( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 ))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 )))) by A11, A7, SQUARE_1: 29;

      then (2 * (((a * c) + (b * d)) + (e * f))) <= (2 * (( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 ))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))))) by XREAL_1: 64;

      then (((2 * ((a * c) + (b * d))) + (2 * (e * f))) + (e ^2 )) <= (((2 * ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 )))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 )))) + (e ^2 )) by XREAL_1: 6;

      then (((2 * ((a * c) + (b * d))) + ((e ^2 ) + (2 * (e * f)))) + (f ^2 )) <= ((((2 * ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 )))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 )))) + (e ^2 )) + (f ^2 )) by XREAL_1: 6;

      then ((((2 * (a * c)) + (2 * (b * d))) + ((e + f) ^2 )) + (b ^2 )) <= ((((e ^2 ) + ((2 * ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 )))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))))) + (f ^2 )) + (b ^2 )) by XREAL_1: 6;

      then ((((2 * (a * c)) + ((b ^2 ) + (2 * (b * d)))) + ((e + f) ^2 )) + (d ^2 )) <= (((b ^2 ) + (((e ^2 ) + ((2 * ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 )))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))))) + (f ^2 ))) + (d ^2 )) by XREAL_1: 6;

      then ((a ^2 ) + ((2 * (a * c)) + (((b + d) ^2 ) + ((e + f) ^2 )))) <= (((b ^2 ) + (((e ^2 ) + ((2 * ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 )))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))))) + ((d ^2 ) + (f ^2 )))) + (a ^2 )) by XREAL_1: 6;

      then ((((a ^2 ) + (2 * (a * c))) + (((b + d) ^2 ) + ((e + f) ^2 ))) + (c ^2 )) <= ((((((a ^2 ) + (b ^2 )) + (e ^2 )) + ((2 * ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 )))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))))) + ((d ^2 ) + (f ^2 ))) + (c ^2 )) by XREAL_1: 6;

      then ((((a + c) ^2 ) + ((b + d) ^2 )) + ((e + f) ^2 )) <= (((((a ^2 ) + (b ^2 )) + (e ^2 )) + ((2 * ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 )))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))))) + ((c ^2 ) + ((d ^2 ) + (f ^2 ))));

      then ((((a + c) ^2 ) + ((b + d) ^2 )) + ((e + f) ^2 )) <= (((( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 ))) ^2 ) + ((2 * ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 )))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))))) + (((c ^2 ) + (d ^2 )) + (f ^2 ))) by A11, SQUARE_1:def 2;

      then

       A12: ((((a + c) ^2 ) + ((b + d) ^2 )) + ((e + f) ^2 )) <= (((( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 ))) ^2 ) + ((2 * ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 )))) * ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))))) + (( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 ))) ^2 )) by A7, SQUARE_1:def 2;

       0 <= ((a + c) ^2 ) & 0 <= ((b + d) ^2 ) by XREAL_1: 63;

      then

       A13: ( 0 + 0 ) <= (((a + c) ^2 ) + ((b + d) ^2 )) by XREAL_1: 7;

       0 <= ((e + f) ^2 ) by XREAL_1: 63;

      then ( 0 + 0 ) <= ((((a + c) ^2 ) + ((b + d) ^2 )) + ((e + f) ^2 )) by A13, XREAL_1: 7;

      then

       A14: ( sqrt ((((a + c) ^2 ) + ((b + d) ^2 )) + ((e + f) ^2 ))) <= ( sqrt ((( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 ))) + ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 )))) ^2 )) by A12, SQUARE_1: 26;

       0 <= ( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 ))) by A11, SQUARE_1:def 2;

      then ( 0 + 0 ) <= (( sqrt (((a ^2 ) + (b ^2 )) + (e ^2 ))) + ( sqrt (((c ^2 ) + (d ^2 )) + (f ^2 )))) by A8, XREAL_1: 7;

      hence thesis by A14, SQUARE_1: 22;

    end;

    theorem :: METRIC_3:18

    

     Th18: for x,y,z be Element of [:the carrier of X, the carrier of Y, the carrier of Z:] holds (( dist_cart3S (X,Y,Z)) . (x,z)) <= ((( dist_cart3S (X,Y,Z)) . (x,y)) + (( dist_cart3S (X,Y,Z)) . (y,z)))

    proof

      let x,y,z be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

      reconsider x1 = (x `1_3 ), y1 = (y `1_3 ), z1 = (z `1_3 ) as Element of X;

      reconsider x2 = (x `2_3 ), y2 = (y `2_3 ), z2 = (z `2_3 ) as Element of Y;

      reconsider x3 = (x `3_3 ), y3 = (y `3_3 ), z3 = (z `3_3 ) as Element of Z;

      

       A1: x = [x1, x2, x3];

      set d7 = ( dist (x3,z3)), d8 = ( dist (x3,y3)), d9 = ( dist (y3,z3));

      set d1 = ( dist (x1,z1)), d2 = ( dist (x1,y1)), d3 = ( dist (y1,z1));

      

       A2: y = [y1, y2, y3];

      d7 <= (d8 + d9) & 0 <= d7 by METRIC_1: 4, METRIC_1: 5;

      then

       A3: (d7 ^2 ) <= ((d8 + d9) ^2 ) by SQUARE_1: 15;

      

       A4: 0 <= d8 & 0 <= d9 by METRIC_1: 5;

      set d4 = ( dist (x2,z2)), d5 = ( dist (x2,y2)), d6 = ( dist (y2,z2));

      

       A5: z = [z1, z2, z3];

      d4 <= (d5 + d6) & 0 <= d4 by METRIC_1: 4, METRIC_1: 5;

      then

       A6: (d4 ^2 ) <= ((d5 + d6) ^2 ) by SQUARE_1: 15;

      

       A7: 0 <= d5 & 0 <= d6 by METRIC_1: 5;

       0 <= (d1 ^2 ) & 0 <= (d4 ^2 ) by XREAL_1: 63;

      then

       A8: ( 0 + 0 ) <= ((d1 ^2 ) + (d4 ^2 )) by XREAL_1: 7;

      d1 <= (d2 + d3) & 0 <= d1 by METRIC_1: 4, METRIC_1: 5;

      then (d1 ^2 ) <= ((d2 + d3) ^2 ) by SQUARE_1: 15;

      then ((d1 ^2 ) + (d4 ^2 )) <= (((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) by A6, XREAL_1: 7;

      then

       A9: (((d1 ^2 ) + (d4 ^2 )) + (d7 ^2 )) <= ((((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) + ((d8 + d9) ^2 )) by A3, XREAL_1: 7;

       0 <= (d7 ^2 ) by XREAL_1: 63;

      then ( 0 + 0 ) <= (((d1 ^2 ) + (d4 ^2 )) + (d7 ^2 )) by A8, XREAL_1: 7;

      then

       A10: ( sqrt (((d1 ^2 ) + (d4 ^2 )) + (d7 ^2 ))) <= ( sqrt ((((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) + ((d8 + d9) ^2 ))) by A9, SQUARE_1: 26;

       0 <= d2 & 0 <= d3 by METRIC_1: 5;

      then ( sqrt ((((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) + ((d8 + d9) ^2 ))) <= (( sqrt (((d2 ^2 ) + (d5 ^2 )) + (d8 ^2 ))) + ( sqrt (((d3 ^2 ) + (d6 ^2 )) + (d9 ^2 )))) by A7, A4, Lm2;

      then ( sqrt (((d1 ^2 ) + (d4 ^2 )) + (d7 ^2 ))) <= (( sqrt (((d2 ^2 ) + (d5 ^2 )) + (d8 ^2 ))) + ( sqrt (((d3 ^2 ) + (d6 ^2 )) + (d9 ^2 )))) by A10, XXREAL_0: 2;

      then (( dist_cart3S (X,Y,Z)) . (x,z)) <= (( sqrt (((d2 ^2 ) + (d5 ^2 )) + (d8 ^2 ))) + ( sqrt (((d3 ^2 ) + (d6 ^2 )) + (d9 ^2 )))) by A1, A5, Def13;

      then (( dist_cart3S (X,Y,Z)) . (x,z)) <= ((( dist_cart3S (X,Y,Z)) . (x,y)) + ( sqrt (((d3 ^2 ) + (d6 ^2 )) + (d9 ^2 )))) by A1, A2, Def13;

      hence thesis by A2, A5, Def13;

    end;

    definition

      let X, Y, Z;

      let x,y be Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

      :: METRIC_3:def14

      func dist3S (x,y) -> Real equals (( dist_cart3S (X,Y,Z)) . (x,y));

      coherence ;

    end

    definition

      let X, Y, Z;

      :: METRIC_3:def15

      func MetrSpaceCart3S (X,Y,Z) -> strict non empty MetrSpace equals MetrStruct (# [:the carrier of X, the carrier of Y, the carrier of Z:], ( dist_cart3S (X,Y,Z)) #);

      coherence

      proof

        now

          let x,y,z be Element of MetrStruct (# [:the carrier of X, the carrier of Y, the carrier of Z:], ( dist_cart3S (X,Y,Z)) #);

          reconsider x9 = x, y9 = y, z9 = z as Element of [:the carrier of X, the carrier of Y, the carrier of Z:];

          

           A1: ( dist (x,y)) = (( dist_cart3S (X,Y,Z)) . (x9,y9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = 0 iff x = y by Th14;

          ( dist (y,x)) = (( dist_cart3S (X,Y,Z)) . (y9,x9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = ( dist (y,x)) by A1, Th15;

          ( dist (x,z)) = (( dist_cart3S (X,Y,Z)) . (x9,z9)) & ( dist (y,z)) = (( dist_cart3S (X,Y,Z)) . (y9,z9)) by METRIC_1:def 1;

          hence ( dist (x,z)) <= (( dist (x,y)) + ( dist (y,z))) by A1, Th18;

        end;

        hence thesis by METRIC_1: 6;

      end;

    end

    definition

      :: METRIC_3:def16

      func taxi_dist2 -> Function of [: [: REAL , REAL :], [: REAL , REAL :]:], REAL means

      : Def16: for x1,y1,x2,y2 be Element of REAL holds for x,y be Element of [: REAL , REAL :] st x = [x1, x2] & y = [y1, y2] holds (it . (x,y)) = (( real_dist . (x1,y1)) + ( real_dist . (x2,y2)));

      existence

      proof

        deffunc G( Element of REAL , Element of REAL , Element of REAL , Element of REAL ) = (( real_dist . ($1,$2)) + ( real_dist . ($3,$4)));

        consider F be Function of [: [: REAL , REAL :], [: REAL , REAL :]:], REAL such that

         A1: for x1,y1,x2,y2 be Element of REAL holds for x,y be Element of [: REAL , REAL :] st x = [x1, x2] & y = [y1, y2] holds (F . (x,y)) = G(x1,y1,x2,y2) from LambdaMCART;

        take F;

        let x1,y1,x2,y2 be Element of REAL , x,y be Element of [: REAL , REAL :];

        assume x = [x1, x2] & y = [y1, y2];

        hence thesis by A1;

      end;

      uniqueness

      proof

        let f1,f2 be Function of [: [: REAL , REAL :], [: REAL , REAL :]:], REAL ;

        assume that

         A2: for x1,y1,x2,y2 be Element of REAL holds for x,y be Element of [: REAL , REAL :] st x = [x1, x2] & y = [y1, y2] holds (f1 . (x,y)) = (( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) and

         A3: for x1,y1,x2,y2 be Element of REAL holds for x,y be Element of [: REAL , REAL :] st x = [x1, x2] & y = [y1, y2] holds (f2 . (x,y)) = (( real_dist . (x1,y1)) + ( real_dist . (x2,y2)));

        for x,y be Element of [: REAL , REAL :] holds (f1 . (x,y)) = (f2 . (x,y))

        proof

          let x,y be Element of [: REAL , REAL :];

          consider x1,x2 be Element of REAL such that

           A4: x = [x1, x2] by DOMAIN_1: 1;

          consider y1,y2 be Element of REAL such that

           A5: y = [y1, y2] by DOMAIN_1: 1;

          

          thus (f1 . (x,y)) = (( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) by A2, A4, A5

          .= (f2 . (x,y)) by A3, A4, A5;

        end;

        hence thesis by BINOP_1: 2;

      end;

    end

    theorem :: METRIC_3:19

    

     Th19: for x,y be Element of [: REAL , REAL :] holds ( taxi_dist2 . (x,y)) = 0 iff x = y

    proof

      let x,y be Element of [: REAL , REAL :];

      reconsider x1 = (x `1 ), x2 = (x `2 ), y1 = (y `1 ), y2 = (y `2 ) as Element of REAL ;

      

       A1: x = [x1, x2] & y = [y1, y2];

      thus ( taxi_dist2 . (x,y)) = 0 implies x = y

      proof

        set d2 = ( real_dist . (x2,y2));

        set d1 = ( real_dist . (x1,y1));

        d1 = |.(x1 - y1).| by METRIC_1:def 12;

        then

         A2: 0 <= d1 by COMPLEX1: 46;

        d2 = |.(x2 - y2).| by METRIC_1:def 12;

        then

         A3: 0 <= d2 by COMPLEX1: 46;

        assume ( taxi_dist2 . (x,y)) = 0 ;

        then

         A4: (d1 + d2) = 0 by A1, Def16;

        then d1 = 0 by A2, A3, XREAL_1: 27;

        then

         A5: x1 = y1 by METRIC_1: 8;

        d2 = 0 by A4, A2, A3, XREAL_1: 27;

        hence thesis by A1, A5, METRIC_1: 8;

      end;

      assume

       A6: x = y;

      then

       A7: ( real_dist . (x2,y2)) = 0 by METRIC_1: 8;

      ( taxi_dist2 . (x,y)) = (( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) by A1, Def16

      .= 0 by A6, A7, METRIC_1: 8;

      hence thesis;

    end;

    theorem :: METRIC_3:20

    

     Th20: for x,y be Element of [: REAL , REAL :] holds ( taxi_dist2 . (x,y)) = ( taxi_dist2 . (y,x))

    proof

      let x,y be Element of [: REAL , REAL :];

      reconsider x1 = (x `1 ), x2 = (x `2 ), y1 = (y `1 ), y2 = (y `2 ) as Element of REAL ;

      

       A1: x = [x1, x2] & y = [y1, y2];

      

      then ( taxi_dist2 . (x,y)) = (( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) by Def16

      .= (( real_dist . (y1,x1)) + ( real_dist . (x2,y2))) by METRIC_1: 9

      .= (( real_dist . (y1,x1)) + ( real_dist . (y2,x2))) by METRIC_1: 9

      .= ( taxi_dist2 . (y,x)) by A1, Def16;

      hence thesis;

    end;

    theorem :: METRIC_3:21

    

     Th21: for x,y,z be Element of [: REAL , REAL :] holds ( taxi_dist2 . (x,z)) <= (( taxi_dist2 . (x,y)) + ( taxi_dist2 . (y,z)))

    proof

      let x,y,z be Element of [: REAL , REAL :];

      reconsider x1 = (x `1 ), x2 = (x `2 ), y1 = (y `1 ), y2 = (y `2 ), z1 = (z `1 ), z2 = (z `2 ) as Element of REAL ;

      

       A1: y = [y1, y2];

      set d5 = ( real_dist . (x2,y2)), d6 = ( real_dist . (y2,z2));

      set d3 = ( real_dist . (y1,z1)), d4 = ( real_dist . (x2,z2));

      set d1 = ( real_dist . (x1,z1)), d2 = ( real_dist . (x1,y1));

      

       A2: z = [z1, z2];

      

       A3: x = [x1, x2];

      then

       A4: ( taxi_dist2 . (x,z)) = (d1 + d4) by A2, Def16;

      

       A5: d1 <= (d2 + d3) & d4 <= (d5 + d6) by METRIC_1: 10;

      ((d2 + d3) + (d5 + d6)) = ((d2 + d5) + (d3 + d6))

      .= (( taxi_dist2 . (x,y)) + (d3 + d6)) by A3, A1, Def16

      .= (( taxi_dist2 . (x,y)) + ( taxi_dist2 . (y,z))) by A1, A2, Def16;

      hence thesis by A5, A4, XREAL_1: 7;

    end;

    definition

      :: METRIC_3:def17

      func RealSpaceCart2 -> strict non empty MetrSpace equals MetrStruct (# [: REAL , REAL :], taxi_dist2 #);

      coherence

      proof

        now

          let x,y,z be Element of MetrStruct (# [: REAL , REAL :], taxi_dist2 #);

          reconsider x9 = x, y9 = y, z9 = z as Element of [: REAL , REAL :];

          

           A1: ( dist (x,y)) = ( taxi_dist2 . (x9,y9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = 0 iff x = y by Th19;

          ( dist (y,x)) = ( taxi_dist2 . (y9,x9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = ( dist (y,x)) by A1, Th20;

          ( dist (x,z)) = ( taxi_dist2 . (x9,z9)) & ( dist (y,z)) = ( taxi_dist2 . (y9,z9)) by METRIC_1:def 1;

          hence ( dist (x,z)) <= (( dist (x,y)) + ( dist (y,z))) by A1, Th21;

        end;

        hence thesis by METRIC_1: 6;

      end;

    end

    definition

      :: METRIC_3:def18

      func Eukl_dist2 -> Function of [: [: REAL , REAL :], [: REAL , REAL :]:], REAL means

      : Def18: for x1,y1,x2,y2 be Element of REAL holds for x,y be Element of [: REAL , REAL :] st x = [x1, x2] & y = [y1, y2] holds (it . (x,y)) = ( sqrt ((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 )));

      existence

      proof

        deffunc G( Element of REAL , Element of REAL , Element of REAL , Element of REAL ) = ( In (( sqrt ((( real_dist . ($1,$2)) ^2 ) + (( real_dist . ($3,$4)) ^2 ))), REAL ));

        consider F be Function of [: [: REAL , REAL :], [: REAL , REAL :]:], REAL such that

         A1: for x1,y1,x2,y2 be Element of REAL holds for x,y be Element of [: REAL , REAL :] st x = [x1, x2] & y = [y1, y2] holds (F . (x,y)) = G(x1,y1,x2,y2) from LambdaMCART;

        take F;

        let x1,y1,x2,y2 be Element of REAL , x,y be Element of [: REAL , REAL :];

        assume x = [x1, x2] & y = [y1, y2];

        then (F . (x,y)) = G(x1,y1,x2,y2) by A1;

        hence thesis;

      end;

      uniqueness

      proof

        let f1,f2 be Function of [: [: REAL , REAL :], [: REAL , REAL :]:], REAL ;

        assume that

         A2: for x1,y1,x2,y2 be Element of REAL holds for x,y be Element of [: REAL , REAL :] st x = [x1, x2] & y = [y1, y2] holds (f1 . (x,y)) = ( sqrt ((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 ))) and

         A3: for x1,y1,x2,y2 be Element of REAL holds for x,y be Element of [: REAL , REAL :] st x = [x1, x2] & y = [y1, y2] holds (f2 . (x,y)) = ( sqrt ((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 )));

        for x,y be Element of [: REAL , REAL :] holds (f1 . (x,y)) = (f2 . (x,y))

        proof

          let x,y be Element of [: REAL , REAL :];

          consider x1,x2 be Element of REAL such that

           A4: x = [x1, x2] by DOMAIN_1: 1;

          consider y1,y2 be Element of REAL such that

           A5: y = [y1, y2] by DOMAIN_1: 1;

          

          thus (f1 . (x,y)) = ( sqrt ((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 ))) by A2, A4, A5

          .= (f2 . (x,y)) by A3, A4, A5;

        end;

        hence thesis by BINOP_1: 2;

      end;

    end

    theorem :: METRIC_3:22

    

     Th22: for x,y be Element of [: REAL , REAL :] holds ( Eukl_dist2 . (x,y)) = 0 iff x = y

    proof

      let x,y be Element of [: REAL , REAL :];

      reconsider x1 = (x `1 ), x2 = (x `2 ), y1 = (y `1 ), y2 = (y `2 ) as Element of REAL ;

      

       A1: x = [x1, x2] & y = [y1, y2];

      thus ( Eukl_dist2 . (x,y)) = 0 implies x = y

      proof

        set d2 = ( real_dist . (x2,y2));

        set d1 = ( real_dist . (x1,y1));

        assume ( Eukl_dist2 . (x,y)) = 0 ;

        then

         A2: ( sqrt ((d1 ^2 ) + (d2 ^2 ))) = 0 by A1, Def18;

        

         A3: 0 <= (d1 ^2 ) & 0 <= (d2 ^2 ) by XREAL_1: 63;

        then d1 = 0 by A2, Lm1;

        then

         A4: x1 = y1 by METRIC_1: 8;

        d2 = 0 by A2, A3, Lm1;

        hence thesis by A1, A4, METRIC_1: 8;

      end;

      assume x = y;

      then

       A5: (( real_dist . (x1,y1)) ^2 ) = ( 0 ^2 ) & (( real_dist . (x2,y2)) ^2 ) = ( 0 ^2 ) by METRIC_1: 8;

      ( Eukl_dist2 . (x,y)) = ( sqrt ((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 ))) by A1, Def18

      .= 0 by A5, Lm1;

      hence thesis;

    end;

    theorem :: METRIC_3:23

    

     Th23: for x,y be Element of [: REAL , REAL :] holds ( Eukl_dist2 . (x,y)) = ( Eukl_dist2 . (y,x))

    proof

      let x,y be Element of [: REAL , REAL :];

      reconsider x1 = (x `1 ), x2 = (x `2 ), y1 = (y `1 ), y2 = (y `2 ) as Element of REAL ;

      

       A1: x = [x1, x2] & y = [y1, y2];

      

      then ( Eukl_dist2 . (x,y)) = ( sqrt ((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 ))) by Def18

      .= ( sqrt ((( real_dist . (y1,x1)) ^2 ) + (( real_dist . (x2,y2)) ^2 ))) by METRIC_1: 9

      .= ( sqrt ((( real_dist . (y1,x1)) ^2 ) + (( real_dist . (y2,x2)) ^2 ))) by METRIC_1: 9

      .= ( Eukl_dist2 . (y,x)) by A1, Def18;

      hence thesis;

    end;

    theorem :: METRIC_3:24

    

     Th24: for x,y,z be Element of [: REAL , REAL :] holds ( Eukl_dist2 . (x,z)) <= (( Eukl_dist2 . (x,y)) + ( Eukl_dist2 . (y,z)))

    proof

      let x,y,z be Element of [: REAL , REAL :];

      reconsider x1 = (x `1 ), x2 = (x `2 ), y1 = (y `1 ), y2 = (y `2 ), z1 = (z `1 ), z2 = (z `2 ) as Element of REAL ;

      

       A1: x = [x1, x2];

      set d5 = ( real_dist . (x2,y2));

      set d3 = ( real_dist . (y1,z1));

      set d1 = ( real_dist . (x1,z1));

      

       A2: y = [y1, y2];

      set d6 = ( real_dist . (y2,z2));

      set d4 = ( real_dist . (x2,z2));

      set d2 = ( real_dist . (x1,y1));

      

       A3: z = [z1, z2];

      d4 = |.(x2 - z2).| by METRIC_1:def 12;

      then 0 <= d4 by COMPLEX1: 46;

      then

       A4: (d4 ^2 ) <= ((d5 + d6) ^2 ) by METRIC_1: 10, SQUARE_1: 15;

       0 <= (d1 ^2 ) & 0 <= (d4 ^2 ) by XREAL_1: 63;

      then

       A5: ( 0 + 0 ) <= ((d1 ^2 ) + (d4 ^2 )) by XREAL_1: 7;

      d1 = |.(x1 - z1).| by METRIC_1:def 12;

      then 0 <= d1 by COMPLEX1: 46;

      then (d1 ^2 ) <= ((d2 + d3) ^2 ) by METRIC_1: 10, SQUARE_1: 15;

      then ((d1 ^2 ) + (d4 ^2 )) <= (((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) by A4, XREAL_1: 7;

      then

       A6: ( sqrt ((d1 ^2 ) + (d4 ^2 ))) <= ( sqrt (((d2 + d3) ^2 ) + ((d5 + d6) ^2 ))) by A5, SQUARE_1: 26;

      d6 = |.(y2 - z2).| by METRIC_1:def 12;

      then

       A7: 0 <= d6 by COMPLEX1: 46;

      d5 = |.(x2 - y2).| by METRIC_1:def 12;

      then

       A8: 0 <= d5 by COMPLEX1: 46;

      d3 = |.(y1 - z1).| by METRIC_1:def 12;

      then

       A9: 0 <= d3 by COMPLEX1: 46;

      d2 = |.(x1 - y1).| by METRIC_1:def 12;

      then 0 <= d2 by COMPLEX1: 46;

      then ( sqrt (((d2 + d3) ^2 ) + ((d5 + d6) ^2 ))) <= (( sqrt ((d2 ^2 ) + (d5 ^2 ))) + ( sqrt ((d3 ^2 ) + (d6 ^2 )))) by A9, A8, A7, Th12;

      then ( sqrt ((d1 ^2 ) + (d4 ^2 ))) <= (( sqrt ((d2 ^2 ) + (d5 ^2 ))) + ( sqrt ((d3 ^2 ) + (d6 ^2 )))) by A6, XXREAL_0: 2;

      then ( Eukl_dist2 . (x,z)) <= (( sqrt ((d2 ^2 ) + (d5 ^2 ))) + ( sqrt ((d3 ^2 ) + (d6 ^2 )))) by A1, A3, Def18;

      then ( Eukl_dist2 . (x,z)) <= (( Eukl_dist2 . (x,y)) + ( sqrt ((d3 ^2 ) + (d6 ^2 )))) by A1, A2, Def18;

      hence thesis by A2, A3, Def18;

    end;

    definition

      :: METRIC_3:def19

      func EuklSpace2 -> strict non empty MetrSpace equals MetrStruct (# [: REAL , REAL :], Eukl_dist2 #);

      coherence

      proof

        now

          let x,y,z be Element of MetrStruct (# [: REAL , REAL :], Eukl_dist2 #);

          reconsider x9 = x, y9 = y, z9 = z as Element of [: REAL , REAL :];

          

           A1: ( dist (x,y)) = ( Eukl_dist2 . (x9,y9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = 0 iff x = y by Th22;

          ( dist (y,x)) = ( Eukl_dist2 . (y9,x9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = ( dist (y,x)) by A1, Th23;

          ( dist (x,z)) = ( Eukl_dist2 . (x9,z9)) & ( dist (y,z)) = ( Eukl_dist2 . (y9,z9)) by METRIC_1:def 1;

          hence ( dist (x,z)) <= (( dist (x,y)) + ( dist (y,z))) by A1, Th24;

        end;

        hence thesis by METRIC_1: 6;

      end;

    end

    definition

      :: METRIC_3:def20

      func taxi_dist3 -> Function of [: [: REAL , REAL , REAL :], [: REAL , REAL , REAL :]:], REAL means

      : Def20: for x1,y1,x2,y2,x3,y3 be Element of REAL holds for x,y be Element of [: REAL , REAL , REAL :] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (it . (x,y)) = ((( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) + ( real_dist . (x3,y3)));

      existence

      proof

        deffunc G( Element of REAL , Element of REAL , Element of REAL , Element of REAL , Element of REAL , Element of REAL ) = ((( real_dist . ($1,$2)) + ( real_dist . ($3,$4))) + ( real_dist . ($5,$6)));

        consider F be Function of [: [: REAL , REAL , REAL :], [: REAL , REAL , REAL :]:], REAL such that

         A1: for x1,y1,x2,y2,x3,y3 be Element of REAL holds for x,y be Element of [: REAL , REAL , REAL :] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (F . (x,y)) = G(x1,y1,x2,y2,x3,y3) from LambdaMCART1;

        take F;

        let x1,y1,x2,y2,x3,y3 be Element of REAL , x,y be Element of [: REAL , REAL , REAL :];

        assume x = [x1, x2, x3] & y = [y1, y2, y3];

        hence thesis by A1;

      end;

      uniqueness

      proof

        let f1,f2 be Function of [: [: REAL , REAL , REAL :], [: REAL , REAL , REAL :]:], REAL ;

        assume that

         A2: for x1,y1,x2,y2,x3,y3 be Element of REAL holds for x,y be Element of [: REAL , REAL , REAL :] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (f1 . (x,y)) = ((( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) + ( real_dist . (x3,y3))) and

         A3: for x1,y1,x2,y2,x3,y3 be Element of REAL holds for x,y be Element of [: REAL , REAL , REAL :] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (f2 . (x,y)) = ((( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) + ( real_dist . (x3,y3)));

        for x,y be Element of [: REAL , REAL , REAL :] holds (f1 . (x,y)) = (f2 . (x,y))

        proof

          let x,y be Element of [: REAL , REAL , REAL :];

          consider x1,x2,x3 be Element of REAL such that

           A4: x = [x1, x2, x3] by DOMAIN_1: 3;

          consider y1,y2,y3 be Element of REAL such that

           A5: y = [y1, y2, y3] by DOMAIN_1: 3;

          

          thus (f1 . (x,y)) = ((( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) + ( real_dist . (x3,y3))) by A2, A4, A5

          .= (f2 . (x,y)) by A3, A4, A5;

        end;

        hence thesis by BINOP_1: 2;

      end;

    end

    theorem :: METRIC_3:25

    

     Th25: for x,y be Element of [: REAL , REAL , REAL :] holds ( taxi_dist3 . (x,y)) = 0 iff x = y

    proof

      let x,y be Element of [: REAL , REAL , REAL :];

      reconsider x1 = (x `1_3 ), x2 = (x `2_3 ), x3 = (x `3_3 ), y1 = (y `1_3 ), y2 = (y `2_3 ), y3 = (y `3_3 ) as Element of REAL ;

      

       A1: x = [x1, x2, x3] & y = [y1, y2, y3];

      thus ( taxi_dist3 . (x,y)) = 0 implies x = y

      proof

        set d3 = ( real_dist . (x3,y3));

        set d2 = ( real_dist . (x2,y2));

        set d1 = ( real_dist . (x1,y1));

        set d4 = (d1 + d2);

        d3 = |.(x3 - y3).| by METRIC_1:def 12;

        then

         A2: 0 <= d3 by COMPLEX1: 46;

        d1 = |.(x1 - y1).| by METRIC_1:def 12;

        then

         A3: 0 <= d1 by COMPLEX1: 46;

        assume ( taxi_dist3 . (x,y)) = 0 ;

        then

         A4: (d4 + d3) = 0 by A1, Def20;

        d2 = |.(x2 - y2).| by METRIC_1:def 12;

        then

         A5: 0 <= d2 by COMPLEX1: 46;

        then

         A6: ( 0 + 0 ) <= (d1 + d2) by A3, XREAL_1: 7;

        then

         A7: d4 = 0 by A4, A2, XREAL_1: 27;

        then d1 = 0 by A5, A3, XREAL_1: 27;

        then

         A8: x1 = y1 by METRIC_1: 8;

        d3 = 0 by A4, A2, A6, XREAL_1: 27;

        then

         A9: x3 = y3 by METRIC_1: 8;

        d2 = 0 by A5, A3, A7, XREAL_1: 27;

        hence thesis by A1, A9, A8, METRIC_1: 8;

      end;

      assume

       A10: x = y;

      then

       A11: ( real_dist . (x1,y1)) = 0 & ( real_dist . (x2,y2)) = 0 by METRIC_1: 8;

      ( taxi_dist3 . (x,y)) = ((( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) + ( real_dist . (x3,y3))) by A1, Def20

      .= 0 by A10, A11, METRIC_1: 8;

      hence thesis;

    end;

    theorem :: METRIC_3:26

    

     Th26: for x,y be Element of [: REAL , REAL , REAL :] holds ( taxi_dist3 . (x,y)) = ( taxi_dist3 . (y,x))

    proof

      let x,y be Element of [: REAL , REAL , REAL :];

      reconsider x1 = (x `1_3 ), x2 = (x `2_3 ), x3 = (x `3_3 ), y1 = (y `1_3 ), y2 = (y `2_3 ), y3 = (y `3_3 ) as Element of REAL ;

      

       A1: x = [x1, x2, x3] & y = [y1, y2, y3];

      

      then ( taxi_dist3 . (x,y)) = ((( real_dist . (x1,y1)) + ( real_dist . (x2,y2))) + ( real_dist . (x3,y3))) by Def20

      .= ((( real_dist . (y1,x1)) + ( real_dist . (x2,y2))) + ( real_dist . (x3,y3))) by METRIC_1: 9

      .= ((( real_dist . (y1,x1)) + ( real_dist . (y2,x2))) + ( real_dist . (x3,y3))) by METRIC_1: 9

      .= ((( real_dist . (y1,x1)) + ( real_dist . (y2,x2))) + ( real_dist . (y3,x3))) by METRIC_1: 9

      .= ( taxi_dist3 . (y,x)) by A1, Def20;

      hence thesis;

    end;

    theorem :: METRIC_3:27

    

     Th27: for x,y,z be Element of [: REAL , REAL , REAL :] holds ( taxi_dist3 . (x,z)) <= (( taxi_dist3 . (x,y)) + ( taxi_dist3 . (y,z)))

    proof

      let x,y,z be Element of [: REAL , REAL , REAL :];

      reconsider x1 = (x `1_3 ), x2 = (x `2_3 ), x3 = (x `3_3 ), y1 = (y `1_3 ), y2 = (y `2_3 ), y3 = (y `3_3 ), z1 = (z `1_3 ), z2 = (z `2_3 ), z3 = (z `3_3 ) as Element of REAL ;

      

       A1: x = [x1, x2, x3];

      set d7 = ( real_dist . (x3,z3)), d8 = ( real_dist . (x3,y3));

      set d3 = ( real_dist . (y1,z1)), d4 = ( real_dist . (x2,z2));

      

       A2: z = [z1, z2, z3];

      set d9 = ( real_dist . (y3,z3));

      set d5 = ( real_dist . (x2,y2)), d6 = ( real_dist . (y2,z2));

      set d1 = ( real_dist . (x1,z1)), d2 = ( real_dist . (x1,y1));

      

       A3: y = [y1, y2, y3];

      set d10 = (d1 + d4);

      d1 <= (d2 + d3) & d4 <= (d5 + d6) by METRIC_1: 10;

      then

       A4: d10 <= ((d2 + d3) + (d5 + d6)) by XREAL_1: 7;

      d7 <= (d8 + d9) by METRIC_1: 10;

      then

       A5: (d10 + d7) <= (((d2 + d3) + (d5 + d6)) + (d8 + d9)) by A4, XREAL_1: 7;

      (((d2 + d3) + (d5 + d6)) + (d8 + d9)) = (((d2 + d5) + d8) + ((d3 + d6) + d9))

      .= (( taxi_dist3 . (x,y)) + ((d3 + d6) + d9)) by A1, A3, Def20

      .= (( taxi_dist3 . (x,y)) + ( taxi_dist3 . (y,z))) by A3, A2, Def20;

      hence thesis by A1, A2, A5, Def20;

    end;

    definition

      :: METRIC_3:def21

      func RealSpaceCart3 -> strict non empty MetrSpace equals MetrStruct (# [: REAL , REAL , REAL :], taxi_dist3 #);

      coherence

      proof

        now

          let x,y,z be Element of MetrStruct (# [: REAL , REAL , REAL :], taxi_dist3 #);

          reconsider x9 = x, y9 = y, z9 = z as Element of [: REAL , REAL , REAL :];

          

           A1: ( dist (x,y)) = ( taxi_dist3 . (x9,y9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = 0 iff x = y by Th25;

          ( dist (y,x)) = ( taxi_dist3 . (y9,x9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = ( dist (y,x)) by A1, Th26;

          ( dist (x,z)) = ( taxi_dist3 . (x9,z9)) & ( dist (y,z)) = ( taxi_dist3 . (y9,z9)) by METRIC_1:def 1;

          hence ( dist (x,z)) <= (( dist (x,y)) + ( dist (y,z))) by A1, Th27;

        end;

        hence thesis by METRIC_1: 6;

      end;

    end

    definition

      :: METRIC_3:def22

      func Eukl_dist3 -> Function of [: [: REAL , REAL , REAL :], [: REAL , REAL , REAL :]:], REAL means

      : Def22: for x1,y1,x2,y2,x3,y3 be Element of REAL holds for x,y be Element of [: REAL , REAL , REAL :] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (it . (x,y)) = ( sqrt (((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 )) + (( real_dist . (x3,y3)) ^2 )));

      existence

      proof

        deffunc G( Element of REAL , Element of REAL , Element of REAL , Element of REAL , Element of REAL , Element of REAL ) = ( In (( sqrt (((( real_dist . ($1,$2)) ^2 ) + (( real_dist . ($3,$4)) ^2 )) + (( real_dist . ($5,$6)) ^2 ))), REAL ));

        consider F be Function of [: [: REAL , REAL , REAL :], [: REAL , REAL , REAL :]:], REAL such that

         A1: for x1,y1,x2,y2,x3,y3 be Element of REAL holds for x,y be Element of [: REAL , REAL , REAL :] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (F . (x,y)) = G(x1,y1,x2,y2,x3,y3) from LambdaMCART1;

        take F;

        let x1,y1,x2,y2,x3,y3 be Element of REAL , x,y be Element of [: REAL , REAL , REAL :];

        assume x = [x1, x2, x3] & y = [y1, y2, y3];

        then (F . (x,y)) = G(x1,y1,x2,y2,x3,y3) by A1;

        hence thesis;

      end;

      uniqueness

      proof

        let f1,f2 be Function of [: [: REAL , REAL , REAL :], [: REAL , REAL , REAL :]:], REAL ;

        assume that

         A2: for x1,y1,x2,y2,x3,y3 be Element of REAL holds for x,y be Element of [: REAL , REAL , REAL :] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (f1 . (x,y)) = ( sqrt (((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 )) + (( real_dist . (x3,y3)) ^2 ))) and

         A3: for x1,y1,x2,y2,x3,y3 be Element of REAL holds for x,y be Element of [: REAL , REAL , REAL :] st x = [x1, x2, x3] & y = [y1, y2, y3] holds (f2 . (x,y)) = ( sqrt (((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 )) + (( real_dist . (x3,y3)) ^2 )));

        for x,y be Element of [: REAL , REAL , REAL :] holds (f1 . (x,y)) = (f2 . (x,y))

        proof

          let x,y be Element of [: REAL , REAL , REAL :];

          consider x1,x2,x3 be Element of REAL such that

           A4: x = [x1, x2, x3] by DOMAIN_1: 3;

          consider y1,y2,y3 be Element of REAL such that

           A5: y = [y1, y2, y3] by DOMAIN_1: 3;

          

          thus (f1 . (x,y)) = ( sqrt (((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 )) + (( real_dist . (x3,y3)) ^2 ))) by A2, A4, A5

          .= (f2 . (x,y)) by A3, A4, A5;

        end;

        hence thesis by BINOP_1: 2;

      end;

    end

    theorem :: METRIC_3:28

    

     Th28: for x,y be Element of [: REAL , REAL , REAL :] holds ( Eukl_dist3 . (x,y)) = 0 iff x = y

    proof

      let x,y be Element of [: REAL , REAL , REAL :];

      reconsider x1 = (x `1_3 ), x2 = (x `2_3 ), x3 = (x `3_3 ), y1 = (y `1_3 ), y2 = (y `2_3 ), y3 = (y `3_3 ) as Element of REAL ;

      

       A1: x = [x1, x2, x3] & y = [y1, y2, y3];

      thus ( Eukl_dist3 . (x,y)) = 0 implies x = y

      proof

        set d3 = ( real_dist . (x3,y3));

        set d2 = ( real_dist . (x2,y2));

        set d1 = ( real_dist . (x1,y1));

        

         A2: 0 <= (d2 ^2 ) & 0 <= (d3 ^2 ) by XREAL_1: 63;

        assume ( Eukl_dist3 . (x,y)) = 0 ;

        then ( sqrt (((d1 ^2 ) + (d2 ^2 )) + (d3 ^2 ))) = 0 by A1, Def22;

        then

         A3: ( sqrt ((d1 ^2 ) + ((d2 ^2 ) + (d3 ^2 )))) = 0 ;

         0 <= (d2 ^2 ) & 0 <= (d3 ^2 ) by XREAL_1: 63;

        then

         A4: 0 <= (d1 ^2 ) & ( 0 + 0 ) <= ((d2 ^2 ) + (d3 ^2 )) by XREAL_1: 7, XREAL_1: 63;

        then d1 = 0 by A3, Lm1;

        then

         A5: x1 = y1 by METRIC_1: 8;

        

         A6: ((d2 ^2 ) + (d3 ^2 )) = 0 by A3, A4, Lm1;

        then d2 = 0 by A2, XREAL_1: 27;

        then

         A7: x2 = y2 by METRIC_1: 8;

        d3 = 0 by A6, A2, XREAL_1: 27;

        hence thesis by A1, A5, A7, METRIC_1: 8;

      end;

      assume

       A8: x = y;

      then

       A9: (( real_dist . (x1,y1)) ^2 ) = ( 0 ^2 ) & (( real_dist . (x2,y2)) ^2 ) = ( 0 ^2 ) by METRIC_1: 8;

      ( Eukl_dist3 . (x,y)) = ( sqrt (((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 )) + (( real_dist . (x3,y3)) ^2 ))) by A1, Def22

      .= ( 0 ^2 ) by A8, A9, METRIC_1: 8, SQUARE_1: 17;

      hence thesis;

    end;

    theorem :: METRIC_3:29

    

     Th29: for x,y be Element of [: REAL , REAL , REAL :] holds ( Eukl_dist3 . (x,y)) = ( Eukl_dist3 . (y,x))

    proof

      let x,y be Element of [: REAL , REAL , REAL :];

      reconsider x1 = (x `1_3 ), x2 = (x `2_3 ), x3 = (x `3_3 ), y1 = (y `1_3 ), y2 = (y `2_3 ), y3 = (y `3_3 ) as Element of REAL ;

      

       A1: x = [x1, x2, x3] & y = [y1, y2, y3];

      

      then ( Eukl_dist3 . (x,y)) = ( sqrt (((( real_dist . (x1,y1)) ^2 ) + (( real_dist . (x2,y2)) ^2 )) + (( real_dist . (x3,y3)) ^2 ))) by Def22

      .= ( sqrt (((( real_dist . (y1,x1)) ^2 ) + (( real_dist . (x2,y2)) ^2 )) + (( real_dist . (x3,y3)) ^2 ))) by METRIC_1: 9

      .= ( sqrt (((( real_dist . (y1,x1)) ^2 ) + (( real_dist . (y2,x2)) ^2 )) + (( real_dist . (x3,y3)) ^2 ))) by METRIC_1: 9

      .= ( sqrt (((( real_dist . (y1,x1)) ^2 ) + (( real_dist . (y2,x2)) ^2 )) + (( real_dist . (y3,x3)) ^2 ))) by METRIC_1: 9

      .= ( Eukl_dist3 . (y,x)) by A1, Def22;

      hence thesis;

    end;

    theorem :: METRIC_3:30

    

     Th30: for x,y,z be Element of [: REAL , REAL , REAL :] holds ( Eukl_dist3 . (x,z)) <= (( Eukl_dist3 . (x,y)) + ( Eukl_dist3 . (y,z)))

    proof

      let x,y,z be Element of [: REAL , REAL , REAL :];

      reconsider x1 = (x `1_3 ), x2 = (x `2_3 ), x3 = (x `3_3 ), y1 = (y `1_3 ), y2 = (y `2_3 ), y3 = (y `3_3 ), z1 = (z `1_3 ), z2 = (z `2_3 ), z3 = (z `3_3 ) as Element of REAL ;

      

       A1: x = [x1, x2, x3];

      set d9 = ( real_dist . (y3,z3));

      set d5 = ( real_dist . (x2,y2)), d6 = ( real_dist . (y2,z2));

      set d1 = ( real_dist . (x1,z1)), d2 = ( real_dist . (x1,y1));

      

       A2: y = [y1, y2, y3];

      d9 = |.(y3 - z3).| by METRIC_1:def 12;

      then

       A3: 0 <= d9 by COMPLEX1: 46;

      d6 = |.(y2 - z2).| by METRIC_1:def 12;

      then

       A4: 0 <= d6 by COMPLEX1: 46;

      d5 = |.(x2 - y2).| by METRIC_1:def 12;

      then

       A5: 0 <= d5 by COMPLEX1: 46;

      set d7 = ( real_dist . (x3,z3)), d8 = ( real_dist . (x3,y3));

      set d3 = ( real_dist . (y1,z1)), d4 = ( real_dist . (x2,z2));

      

       A6: z = [z1, z2, z3];

      d7 = |.(x3 - z3).| by METRIC_1:def 12;

      then 0 <= d7 by COMPLEX1: 46;

      then

       A7: (d7 ^2 ) <= ((d8 + d9) ^2 ) by METRIC_1: 10, SQUARE_1: 15;

      d4 = |.(x2 - z2).| by METRIC_1:def 12;

      then 0 <= d4 by COMPLEX1: 46;

      then

       A8: (d4 ^2 ) <= ((d5 + d6) ^2 ) by METRIC_1: 10, SQUARE_1: 15;

      d1 = |.(x1 - z1).| by METRIC_1:def 12;

      then 0 <= d1 by COMPLEX1: 46;

      then (d1 ^2 ) <= ((d2 + d3) ^2 ) by METRIC_1: 10, SQUARE_1: 15;

      then ((d1 ^2 ) + (d4 ^2 )) <= (((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) by A8, XREAL_1: 7;

      then

       A9: (((d1 ^2 ) + (d4 ^2 )) + (d7 ^2 )) <= ((((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) + ((d8 + d9) ^2 )) by A7, XREAL_1: 7;

       0 <= (d1 ^2 ) & 0 <= (d4 ^2 ) by XREAL_1: 63;

      then

       A10: ( 0 + 0 ) <= ((d1 ^2 ) + (d4 ^2 )) by XREAL_1: 7;

       0 <= (d7 ^2 ) by XREAL_1: 63;

      then ( 0 + 0 ) <= (((d1 ^2 ) + (d4 ^2 )) + (d7 ^2 )) by A10, XREAL_1: 7;

      then

       A11: ( sqrt (((d1 ^2 ) + (d4 ^2 )) + (d7 ^2 ))) <= ( sqrt ((((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) + ((d8 + d9) ^2 ))) by A9, SQUARE_1: 26;

      d8 = |.(x3 - y3).| by METRIC_1:def 12;

      then

       A12: 0 <= d8 by COMPLEX1: 46;

      d3 = |.(y1 - z1).| by METRIC_1:def 12;

      then

       A13: 0 <= d3 by COMPLEX1: 46;

      d2 = |.(x1 - y1).| by METRIC_1:def 12;

      then 0 <= d2 by COMPLEX1: 46;

      then ( sqrt ((((d2 + d3) ^2 ) + ((d5 + d6) ^2 )) + ((d8 + d9) ^2 ))) <= (( sqrt (((d2 ^2 ) + (d5 ^2 )) + (d8 ^2 ))) + ( sqrt (((d3 ^2 ) + (d6 ^2 )) + (d9 ^2 )))) by A13, A5, A4, A12, A3, Lm2;

      then ( sqrt (((d1 ^2 ) + (d4 ^2 )) + (d7 ^2 ))) <= (( sqrt (((d2 ^2 ) + (d5 ^2 )) + (d8 ^2 ))) + ( sqrt (((d3 ^2 ) + (d6 ^2 )) + (d9 ^2 )))) by A11, XXREAL_0: 2;

      then ( Eukl_dist3 . (x,z)) <= (( sqrt (((d2 ^2 ) + (d5 ^2 )) + (d8 ^2 ))) + ( sqrt (((d3 ^2 ) + (d6 ^2 )) + (d9 ^2 )))) by A1, A6, Def22;

      then ( Eukl_dist3 . (x,z)) <= (( Eukl_dist3 . (x,y)) + ( sqrt (((d3 ^2 ) + (d6 ^2 )) + (d9 ^2 )))) by A1, A2, Def22;

      hence thesis by A2, A6, Def22;

    end;

    definition

      :: METRIC_3:def23

      func EuklSpace3 -> strict non empty MetrSpace equals MetrStruct (# [: REAL , REAL , REAL :], Eukl_dist3 #);

      coherence

      proof

        now

          let x,y,z be Element of MetrStruct (# [: REAL , REAL , REAL :], Eukl_dist3 #);

          reconsider x9 = x, y9 = y, z9 = z as Element of [: REAL , REAL , REAL :];

          

           A1: ( dist (x,y)) = ( Eukl_dist3 . (x9,y9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = 0 iff x = y by Th28;

          ( dist (y,x)) = ( Eukl_dist3 . (y9,x9)) by METRIC_1:def 1;

          hence ( dist (x,y)) = ( dist (y,x)) by A1, Th29;

          ( dist (x,z)) = ( Eukl_dist3 . (x9,z9)) & ( dist (y,z)) = ( Eukl_dist3 . (y9,z9)) by METRIC_1:def 1;

          hence ( dist (x,z)) <= (( dist (x,y)) + ( dist (y,z))) by A1, Th30;

        end;

        hence thesis by METRIC_1: 6;

      end;

    end