Article EUCLID_4, MML version 4.99.1005

:: EUCLID_4:th 1
theorem
for b1 being Element of NAT
for b2 being Element of REAL b1 holds
   (0 * b2) + b2 = b2 & b2 + 0* b1 = b2;

:: EUCLID_4:th 2
theorem
for b1 being Element of REAL
for b2 being Element of NAT holds
   b1 * 0* b2 = 0* b2;

:: EUCLID_4:th 3
theorem
for b1 being Element of NAT
for b2 being Element of REAL b1 holds
   1 * b2 = b2 & 0 * b2 = 0* b1;

:: EUCLID_4:th 4
theorem
for b1, b2 being Element of REAL
for b3 being Element of NAT
for b4 being Element of REAL b3 holds
   (b1 * b2) * b4 = b1 * (b2 * b4);

:: EUCLID_4:th 5
theorem
for b1 being Element of REAL
for b2 being Element of NAT
for b3 being Element of REAL b2
      st b1 * b3 = 0* b2 & b1 <> 0
   holds b3 = 0* b2;

:: EUCLID_4:th 6
theorem
for b1 being Element of REAL
for b2 being Element of NAT
for b3, b4 being Element of REAL b2 holds
b1 * (b3 + b4) = (b1 * b3) + (b1 * b4);

:: EUCLID_4:th 7
theorem
for b1, b2 being Element of REAL
for b3 being Element of NAT
for b4 being Element of REAL b3 holds
   (b1 + b2) * b4 = (b1 * b4) + (b2 * b4);

:: EUCLID_4:th 8
theorem
for b1 being Element of REAL
for b2 being Element of NAT
for b3, b4 being Element of REAL b2
      st b1 * b3 = b1 * b4 & b1 <> 0
   holds b3 = b4;

:: EUCLID_4:funcnot 1 => EUCLID_4:func 1
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of REAL a1;
  func Line(A2,A3) -> Element of bool REAL a1 equals
    {((1 - b1) * a2) + (b1 * a3) where b1 is Element of REAL: TRUE};
end;

:: EUCLID_4:def 1
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
Line(b2,b3) = {((1 - b4) * b2) + (b4 * b3) where b4 is Element of REAL: TRUE};

:: EUCLID_4:funcreg 1
registration
  let a1 be Element of NAT;
  let a2, a3 be Element of REAL a1;
  cluster Line(a2,a3) -> non empty;
end;

:: EUCLID_4:th 9
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
Line(b2,b3) = Line(b3,b2);

:: EUCLID_4:funcnot 2 => EUCLID_4:func 2
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of REAL a1;
  redefine func Line(a2,a3) -> Element of bool REAL a1;
  commutativity;
::  for a1 being Element of NAT
::  for a2, a3 being Element of REAL a1 holds
::  Line(a2,a3) = Line(a3,a2);
end;

:: EUCLID_4:th 10
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
b2 in Line(b2,b3) & b3 in Line(b2,b3);

:: EUCLID_4:th 11
theorem
for b1 being Element of NAT
for b2, b3, b4, b5 being Element of REAL b1
      st b2 in Line(b3,b4) & b5 in Line(b3,b4)
   holds Line(b2,b5) c= Line(b3,b4);

:: EUCLID_4:th 12
theorem
for b1 being Element of NAT
for b2, b3, b4, b5 being Element of REAL b1
      st b2 in Line(b3,b4) & b5 in Line(b3,b4) & b2 <> b5
   holds Line(b3,b4) c= Line(b2,b5);

:: EUCLID_4:attrnot 1 => EUCLID_4:attr 1
definition
  let a1 be Element of NAT;
  let a2 be Element of bool REAL a1;
  attr a2 is being_line means
    ex b1, b2 being Element of REAL a1 st
       b1 <> b2 & a2 = Line(b1,b2);
end;

:: EUCLID_4:dfs 2
definiens
  let a1 be Element of NAT;
  let a2 be Element of bool REAL a1;
To prove
     a2 is being_line
it is sufficient to prove
  thus ex b1, b2 being Element of REAL a1 st
       b1 <> b2 & a2 = Line(b1,b2);

:: EUCLID_4:def 2
theorem
for b1 being Element of NAT
for b2 being Element of bool REAL b1 holds
      b2 is being_line(b1)
   iff
      ex b3, b4 being Element of REAL b1 st
         b3 <> b4 & b2 = Line(b3,b4);

:: EUCLID_4:prednot 1 => EUCLID_4:attr 1
notation
  let a1 be Element of NAT;
  let a2 be Element of bool REAL a1;
  synonym a2 is_line for being_line;
end;

:: EUCLID_4:th 13
theorem
for b1 being Element of NAT
for b2, b3 being Element of bool REAL b1
for b4, b5 being Element of REAL b1
      st b2 is being_line(b1) & b3 is being_line(b1) & b4 in b2 & b5 in b2 & b4 in b3 & b5 in b3 & b4 <> b5
   holds b2 = b3;

:: EUCLID_4:th 14
theorem
for b1 being Element of NAT
for b2 being Element of bool REAL b1
      st b2 is being_line(b1)
   holds ex b3, b4 being Element of REAL b1 st
      b3 in b2 & b4 in b2 & b3 <> b4;

:: EUCLID_4:th 15
theorem
for b1 being Element of NAT
for b2 being Element of REAL b1
for b3 being Element of bool REAL b1
      st b3 is being_line(b1)
   holds ex b4 being Element of REAL b1 st
      b2 <> b4 & b4 in b3;

:: EUCLID_4:th 20
theorem
for b1 being Element of NAT
for b2 being Element of REAL b1 holds
   |.b2.| = sqrt |(b2,b2)|;

:: EUCLID_4:th 21
theorem
for b1 being Element of NAT
for b2 being Element of REAL b1 holds
      |(b2,b2)| = 0
   iff
      |.b2.| = 0;

:: EUCLID_4:th 22
theorem
for b1 being Element of NAT
for b2 being Element of REAL b1 holds
      |(b2,b2)| = 0
   iff
      b2 = 0* b1;

:: EUCLID_4:th 23
theorem
for b1 being Element of NAT
for b2 being Element of REAL b1 holds
   |(b2,0* b1)| = 0;

:: EUCLID_4:th 24
theorem
for b1 being Element of NAT
for b2 being Element of REAL b1 holds
   |(0* b1,b2)| = 0;

:: EUCLID_4:th 25
theorem
for b1 being Element of NAT
for b2, b3, b4 being Element of REAL b1 holds
|(b2 + b3,b4)| = |(b2,b4)| + |(b3,b4)|;

:: EUCLID_4:th 26
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1
for b4 being real set holds
   |(b4 * b2,b3)| = b4 * |(b2,b3)|;

:: EUCLID_4:th 27
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1
for b4 being real set holds
   |(b2,b4 * b3)| = b4 * |(b2,b3)|;

:: EUCLID_4:th 28
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|(- b2,b3)| = - |(b2,b3)|;

:: EUCLID_4:th 29
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|(b2,- b3)| = - |(b2,b3)|;

:: EUCLID_4:th 30
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|(- b2,- b3)| = |(b2,b3)|;

:: EUCLID_4:th 31
theorem
for b1 being Element of NAT
for b2, b3, b4 being Element of REAL b1 holds
|(b2 - b3,b4)| = |(b2,b4)| - |(b3,b4)|;

:: EUCLID_4:th 32
theorem
for b1 being Element of NAT
for b2, b3 being real set
for b4, b5, b6 being Element of REAL b1 holds
|((b2 * b4) + (b3 * b5),b6)| = (b2 * |(b4,b6)|) + (b3 * |(b5,b6)|);

:: EUCLID_4:th 33
theorem
for b1 being Element of NAT
for b2, b3, b4 being Element of REAL b1 holds
|(b2,b3 + b4)| = |(b2,b3)| + |(b2,b4)|;

:: EUCLID_4:th 34
theorem
for b1 being Element of NAT
for b2, b3, b4 being Element of REAL b1 holds
|(b2,b3 - b4)| = |(b2,b3)| - |(b2,b4)|;

:: EUCLID_4:th 35
theorem
for b1 being Element of NAT
for b2, b3, b4, b5 being Element of REAL b1 holds
|(b2 + b3,b4 + b5)| = ((|(b2,b4)| + |(b2,b5)|) + |(b3,b4)|) + |(b3,b5)|;

:: EUCLID_4:th 36
theorem
for b1 being Element of NAT
for b2, b3, b4, b5 being Element of REAL b1 holds
|(b2 - b3,b4 - b5)| = ((|(b2,b4)| - |(b2,b5)|) - |(b3,b4)|) + |(b3,b5)|;

:: EUCLID_4:th 37
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|(b2 + b3,b2 + b3)| = (|(b2,b2)| + (2 * |(b2,b3)|)) + |(b3,b3)|;

:: EUCLID_4:th 38
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|(b2 - b3,b2 - b3)| = (|(b2,b2)| - (2 * |(b2,b3)|)) + |(b3,b3)|;

:: EUCLID_4:th 39
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|.b2 + b3.| ^2 = (|.b2.| ^2 + (2 * |(b2,b3)|)) + (|.b3.| ^2);

:: EUCLID_4:th 40
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|.b2 - b3.| ^2 = (|.b2.| ^2 - (2 * |(b2,b3)|)) + (|.b3.| ^2);

:: EUCLID_4:th 41
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|.b2 + b3.| ^2 + (|.b2 - b3.| ^2) = 2 * (|.b2.| ^2 + (|.b3.| ^2));

:: EUCLID_4:th 42
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|.b2 + b3.| ^2 - (|.b2 - b3.| ^2) = 4 * |(b2,b3)|;

:: EUCLID_4:th 43
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
abs |(b2,b3)| <= |.b2.| * |.b3.|;

:: EUCLID_4:th 44
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
|.b2 + b3.| <= |.b2.| + |.b3.|;

:: EUCLID_4:prednot 2 => EUCLID_4:pred 1
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of REAL a1;
  pred A2,A3 are_orthogonal means
    |(a2,a3)| = 0;
  symmetry;
::  for a1 being Element of NAT
::  for a2, a3 being Element of REAL a1
::        st a2,a3 are_orthogonal
::     holds a3,a2 are_orthogonal;
end;

:: EUCLID_4:dfs 3
definiens
  let a1 be Element of NAT;
  let a2, a3 be Element of REAL a1;
To prove
     a2,a3 are_orthogonal
it is sufficient to prove
  thus |(a2,a3)| = 0;

:: EUCLID_4:def 6
theorem
for b1 being Element of NAT
for b2, b3 being Element of REAL b1 holds
   b2,b3 are_orthogonal
iff
   |(b2,b3)| = 0;

:: EUCLID_4:th 45
theorem
for b1 being Element of NAT
for b2 being Element of bool REAL
for b3, b4, b5 being Element of REAL b1
      st b2 = {|.b5 - b6.| where b6 is Element of REAL b1: b6 in Line(b3,b4)}
   holds ex b6 being Element of REAL b1 st
      b6 in Line(b3,b4) & |.b5 - b6.| = lower_bound b2 & b3 - b4,b5 - b6 are_orthogonal;

:: EUCLID_4:funcnot 3 => EUCLID_4:func 3
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of the carrier of TOP-REAL a1;
  func Line(A2,A3) -> Element of bool the carrier of TOP-REAL a1 equals
    {((1 - b1) * a2) + (b1 * a3) where b1 is Element of REAL: TRUE};
end;

:: EUCLID_4:def 7
theorem
for b1 being Element of NAT
for b2, b3 being Element of the carrier of TOP-REAL b1 holds
Line(b2,b3) = {((1 - b4) * b2) + (b4 * b3) where b4 is Element of REAL: TRUE};

:: EUCLID_4:funcreg 2
registration
  let a1 be Element of NAT;
  let a2, a3 be Element of the carrier of TOP-REAL a1;
  cluster Line(a2,a3) -> non empty;
end;

:: EUCLID_4:th 46
theorem
for b1 being Element of NAT
for b2, b3 being Element of the carrier of TOP-REAL b1 holds
Line(b2,b3) = Line(b3,b2);

:: EUCLID_4:funcnot 4 => EUCLID_4:func 4
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of the carrier of TOP-REAL a1;
  redefine func Line(a2,a3) -> Element of bool the carrier of TOP-REAL a1;
  commutativity;
::  for a1 being Element of NAT
::  for a2, a3 being Element of the carrier of TOP-REAL a1 holds
::  Line(a2,a3) = Line(a3,a2);
end;

:: EUCLID_4:th 47
theorem
for b1 being Element of NAT
for b2, b3 being Element of the carrier of TOP-REAL b1 holds
b2 in Line(b2,b3) & b3 in Line(b2,b3);

:: EUCLID_4:th 48
theorem
for b1 being Element of NAT
for b2, b3, b4, b5 being Element of the carrier of TOP-REAL b1
      st b2 in Line(b3,b4) & b5 in Line(b3,b4)
   holds Line(b2,b5) c= Line(b3,b4);

:: EUCLID_4:th 49
theorem
for b1 being Element of NAT
for b2, b3, b4, b5 being Element of the carrier of TOP-REAL b1
      st b2 in Line(b3,b4) & b5 in Line(b3,b4) & b2 <> b5
   holds Line(b3,b4) c= Line(b2,b5);

:: EUCLID_4:attrnot 2 => EUCLID_4:attr 2
definition
  let a1 be Element of NAT;
  let a2 be Element of bool the carrier of TOP-REAL a1;
  attr a2 is being_line means
    ex b1, b2 being Element of the carrier of TOP-REAL a1 st
       b1 <> b2 & a2 = Line(b1,b2);
end;

:: EUCLID_4:dfs 5
definiens
  let a1 be Element of NAT;
  let a2 be Element of bool the carrier of TOP-REAL a1;
To prove
     a2 is being_line
it is sufficient to prove
  thus ex b1, b2 being Element of the carrier of TOP-REAL a1 st
       b1 <> b2 & a2 = Line(b1,b2);

:: EUCLID_4:def 8
theorem
for b1 being Element of NAT
for b2 being Element of bool the carrier of TOP-REAL b1 holds
      b2 is being_line(b1)
   iff
      ex b3, b4 being Element of the carrier of TOP-REAL b1 st
         b3 <> b4 & b2 = Line(b3,b4);

:: EUCLID_4:prednot 3 => EUCLID_4:attr 2
notation
  let a1 be Element of NAT;
  let a2 be Element of bool the carrier of TOP-REAL a1;
  synonym a2 is_line for being_line;
end;

:: EUCLID_4:th 50
theorem
for b1 being Element of NAT
for b2, b3 being Element of the carrier of TOP-REAL b1
for b4, b5 being Element of bool the carrier of TOP-REAL b1
      st b4 is being_line(b1) & b5 is being_line(b1) & b2 in b4 & b3 in b4 & b2 in b5 & b3 in b5 & b2 <> b3
   holds b4 = b5;

:: EUCLID_4:th 51
theorem
for b1 being Element of NAT
for b2 being Element of bool the carrier of TOP-REAL b1
      st b2 is being_line(b1)
   holds ex b3, b4 being Element of the carrier of TOP-REAL b1 st
      b3 in b2 & b4 in b2 & b3 <> b4;

:: EUCLID_4:th 52
theorem
for b1 being Element of NAT
for b2 being Element of the carrier of TOP-REAL b1
for b3 being Element of bool the carrier of TOP-REAL b1
      st b3 is being_line(b1)
   holds ex b4 being Element of the carrier of TOP-REAL b1 st
      b2 <> b4 & b4 in b3;

:: EUCLID_4:funcnot 5 => EUCLID_4:func 5
definition
  let a1 be Element of NAT;
  let a2 be Element of the carrier of TOP-REAL a1;
  func TPn2Rn A2 -> Element of REAL a1 equals
    a2;
end;

:: EUCLID_4:def 9
theorem
for b1 being Element of NAT
for b2 being Element of the carrier of TOP-REAL b1 holds
   TPn2Rn b2 = b2;

:: EUCLID_4:funcnot 6 => EUCLID_4:func 6
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of the carrier of TOP-REAL a1;
  func |(A2,A3)| -> Element of REAL equals
    |(TPn2Rn a2,TPn2Rn a3)|;
  commutativity;
::  for a1 being Element of NAT
::  for a2, a3 being Element of the carrier of TOP-REAL a1 holds
::  |(a2,a3)| = |(a3,a2)|;
end;

:: EUCLID_4:def 11
theorem
for b1 being Element of NAT
for b2, b3 being Element of the carrier of TOP-REAL b1 holds
|(b2,b3)| = |(TPn2Rn b2,TPn2Rn b3)|;

:: EUCLID_4:prednot 4 => EUCLID_4:pred 2
definition
  let a1 be Element of NAT;
  let a2, a3 be Element of the carrier of TOP-REAL a1;
  pred A2,A3 are_orthogonal means
    |(a2,a3)| = 0;
  symmetry;
::  for a1 being Element of NAT
::  for a2, a3 being Element of the carrier of TOP-REAL a1
::        st a2,a3 are_orthogonal
::     holds a3,a2 are_orthogonal;
end;

:: EUCLID_4:dfs 8
definiens
  let a1 be Element of NAT;
  let a2, a3 be Element of the carrier of TOP-REAL a1;
To prove
     a2,a3 are_orthogonal
it is sufficient to prove
  thus |(a2,a3)| = 0;

:: EUCLID_4:def 12
theorem
for b1 being Element of NAT
for b2, b3 being Element of the carrier of TOP-REAL b1 holds
   b2,b3 are_orthogonal
iff
   |(b2,b3)| = 0;

:: EUCLID_4:th 53
theorem
for b1 being Element of NAT
for b2 being Element of bool REAL
for b3, b4, b5 being Element of the carrier of TOP-REAL b1
      st b2 = {|.b5 - b6.| where b6 is Element of the carrier of TOP-REAL b1: b6 in Line(b3,b4)}
   holds ex b6 being Element of the carrier of TOP-REAL b1 st
      b6 in Line(b3,b4) & |.b5 - b6.| = lower_bound b2 & b3 - b4,b5 - b6 are_orthogonal;