reserve n,i,k,m for Nat;
reserve r,r1,r2,s,s1,s2 for Real;
reserve p,p1,p2,q1,q2 for Point of TOP-REAL n;
reserve P,Q for Subset of TOP-REAL 2,
  f,f1,f2 for FinSequence of the carrier of TOP-REAL 2,
  p,p1,p2,p3,q,q3 for Point of TOP-REAL 2;

theorem Th37:
  for u being Point of Euclid 2 st f is special alternating & 1<=i
  & i+2<=len f & u = f/.(i+1) & f/.(i+1) in LSeg(p,q) & f/.(i+1)<>q & not p in
  LSeg(f,i) \/ LSeg(f,i+1) holds for s st s>0 ex p3 st not p3 in LSeg(f,i) \/
  LSeg(f,i+1) & p3 in LSeg(p,q) & p3 in Ball(u,s)
proof
  let u be Point of Euclid 2 such that
A1: f is special & f is alternating and
A2: 1<=i and
A3: i+2<=len f and
A4: u = f/.(i+1) and
A5: f/.(i+1) in LSeg(p,q) and
A6: f/.(i+1)<>q and
A7: not p in LSeg(f,i) \/ LSeg(f,i+1);
  set p0=f/.(i+1);
  i+1 <= i+2 by XREAL_1:6;
  then i+1 <= len f by A3,XXREAL_0:2;
  then LSeg(f,i)=LSeg(f/.i,p0) by A2,TOPREAL1:def 3;
  then
A8: p0 in LSeg(f,i) by RLTOPSP1:68;
  let s;
  assume
A9: s>0;
  per cases;
  suppose
    p = q;
    then f/.(i+1) in {p} by A5,RLTOPSP1:70;
    then p in LSeg(f,i) by A8,TARSKI:def 1;
    hence thesis by A7,XBOOLE_0:def 3;
  end;
  suppose
A10: p<>q;
    reconsider v2=q as Element of REAL 2 by EUCLID:22;
    reconsider v1=p as Element of REAL 2 by EUCLID:22;
A11: |.v2-v1.|>0 by A10,EUCLID:17;
    reconsider r0=s/2 as Real;
    consider s0 being Real such that
A12: p0=(1-s0)*p+s0*q and
A13: 0<=s0 and
A14: s0<=1 by A5;
    set r3 = min(s0+r0/|.v2-v1.|,1), r4=max(s0+(-r0)/|.v2-v1.|,0);
    set p4 = (1-r4)*p+r4*q;
    set p3 = (1-r3)*p+r3*q;
A15: r0>0 by A9,XREAL_1:139;
    then
A16: s0<=s0+r0/|.v2-v1.| by A11,XREAL_1:29,139;
A17: r0/|.v2-v1.|>0 by A15,A11,XREAL_1:139;
    then
A18: -(r0/|.v2-v1.|)< -0 by XREAL_1:24;
    then
A19: (-r0)/|.v2-v1.|<0 by XCMPLX_1:187;
    then
A20: s0+0>s0+(-r0)/|.v2-v1.| by XREAL_1:6;
    then
A21: s0+(-r0)/|.v2-v1.|<=1 by A14,XXREAL_0:2;
    then 0<=r4 & r4<=1 by XXREAL_0:28,30;
    then
A22: p4 in LSeg(p,q);
A23: s0<s0+r0/|.v2-v1.| by A15,A11,XREAL_1:29,139;
    not LSeg(p3,p4) c= LSeg(f,i) \/ LSeg(f,i+1)
    proof
A24:  p0 in LSeg(p3,p4)
      proof
        s0+(-r0)/|.v2-v1.|<s0+r0/|.v2-v1.| by A9,A19,XREAL_1:6;
        then
A25:    r4<s0+r0/|.v2-v1.| by A17,A13,XXREAL_0:29;
A26:    r4<=1 by A21,XXREAL_0:28;
        per cases by A26,XXREAL_0:1;
        suppose
          r4<1;
          then r4<r3 by A25,XXREAL_0:21;
          then
A27:      r3-r4>0 by XREAL_1:50;
          set r5 = (r3-s0)/(r3-r4);
          min(s0+r0/|.v2-v1.|,1)>=s0 by A14,A16,XXREAL_0:20;
          then
A28:      r3-s0>=0 by XREAL_1:48;
          max(s0+(-r0)/|.v2-v1.|,0)<=s0 by A13,A20,XXREAL_0:28;
          then r3-s0<=r3-r4 by XREAL_1:10;
          then (r3-s0)/(r3-r4)<=(r3-r4)/(r3-r4) by A27,XREAL_1:72;
          then
A29:      r5<=1 by A27,XCMPLX_1:60;
A30:      ((1-(r3-s0)/(r3-r4))*r3)+(((r3-s0)/(r3-r4))*r4) = r3-((r3-s0)/(
          r3-r4))*(r3-r4)
            .= r3-(r3-s0) by A27,XCMPLX_1:87
            .= s0;
          (1-r5)*p3+r5*p4 = (1-(r3-s0)/(r3-r4))*((1-r3)*p)+(1-(r3-s0)/(r3
          -r4))*(r3*q) +((r3-s0)/(r3-r4))*((1-r4)*p+r4*q) by RLVECT_1:def 5
            .= (1-(r3-s0)/(r3-r4))*((1-r3)*p)+(1- (r3-s0)/(r3-r4))*(r3*q) +(
          ((r3-s0)/(r3-r4))*((1-r4)*p)+((r3-s0)/(r3-r4))*(r4*q)) by
RLVECT_1:def 5
            .= ((r3-s0)/(r3-r4))*((1-r4)*p)+((1-(r3-s0)/(r3-r4))*((1-r3)*p)
          +(1- (r3-s0)/(r3-r4))*(r3*q)+((r3-s0)/(r3-r4))*(r4*q)) by
RLVECT_1:def 3;
          then
          (1-r5)*p3+r5*p4 = ((r3-s0)/(r3-r4))*((1-r4)*p)+((1-(r3-s0)/(r3-
r4))*((1-r3)*p) +(1- (r3-s0)/(r3-r4))*(r3*q))+((r3-s0)/(r3-r4))*(r4*q) by
RLVECT_1:def 3
            .= ((r3-s0)/(r3-r4))*((1-r4)*p)+(1-(r3-s0)/(r3-r4))*((1-r3)*p) +
          (1- (r3-s0)/(r3-r4))*(r3*q)+((r3-s0)/(r3-r4))*(r4*q) by
RLVECT_1:def 3
            .= (((r3-s0)/(r3-r4)))*(1-r4)*p+(1-(r3-s0)/(r3-r4))*((1-r3)*p) +
          (1- (r3-s0)/(r3-r4))*(r3*q)+((r3-s0)/(r3-r4))*(r4*q) by
RLVECT_1:def 7;
          then
          (1-r5)*p3+r5*p4 = (((r3-s0)/(r3-r4)))*(1-r4)*p+((1-(r3-s0)/(r3-
r4))*(1-r3))*p +(1-(r3-s0)/(r3-r4))*(r3*q)+((r3-s0)/(r3-r4))*(r4*q) by
RLVECT_1:def 7
            .= (((r3-s0)/(r3-r4)))*(1-r4)*p+((1-(r3-s0)/(r3-r4))*(1-r3))*p +
          ((1- (r3-s0)/(r3-r4))*r3)*q+((r3-s0)/(r3-r4))*(r4*q) by
RLVECT_1:def 7;
          then
          (1-r5)*p3+r5*p4 = (((r3-s0)/(r3-r4)))*(1-r4)*p+((1- (r3-s0)/(r3
-r4))*(1-r3))*p +((1- (r3-s0)/(r3-r4))*r3)*q+(((r3-s0)/(r3-r4))*r4)*q by
RLVECT_1:def 7;
          then
          (1-r5)*p3+r5*p4 = ((((r3-s0)/(r3-r4)))*(1-r4)+((1- (r3-s0)/(r3-
r4))*(1-r3)))*p +((1- (r3-s0)/(r3-r4))*r3)*q+(((r3-s0)/(r3-r4))*r4)*q by
RLVECT_1:def 6
            .= ((((r3-s0)/(r3-r4)))*(1-r4)+((1- (r3-s0)/(r3-r4))*(1-r3)))*p
          +(((1- (r3-s0)/(r3-r4))*r3)*q+(((r3-s0)/(r3-r4))*r4)*q) by
RLVECT_1:def 3
            .= p0 by A12,A30,RLVECT_1:def 6;
          hence thesis by A27,A28,A29;
        end;
        suppose
          r4=1;
          then s0+(-r0)/|.v2-v1.|=1 or 0=1 by XXREAL_0:16;
          then s0+(-r0)/|.v2-v1.|-s0>=s0-s0 by A14,XREAL_1:9;
          hence thesis by A18,XCMPLX_1:187;
        end;
      end;
A31:  p0 is_extremal_in LSeg(f,i) \/ LSeg(f,i+1) by A1,A2,A3,Th36;
      assume
A32:  LSeg(p3,p4) c= LSeg(f,i) \/ LSeg(f,i+1);
      per cases by A32,A24,A31;
      suppose
A33:    p0=p3;
        now
          per cases;
          suppose
            s0 = 1;
            then p0 = 0.TOP-REAL 2+1*q by A12,RLVECT_1:10
              .= 1*q by RLVECT_1:4
              .= q by RLVECT_1:def 8;
            hence contradiction by A6;
          end;
          suppose
A34:        s0<>1;
            0.TOP-REAL 2 = (1-s0)*p+s0*q-((1-r3)*p+r3*q) by A12,A33,RLVECT_1:5
              .= (1-s0)*p+s0*q+(-((1-r3)*p)-(r3*q)) by RLVECT_1:30
              .= (1-s0)*p+s0*q+-(r3*q)+-((1-r3)*p) by RLVECT_1:def 3
              .= -((1-r3)*p)+((1-s0)*p+(s0*q+-(r3*q))) by RLVECT_1:def 3
              .= -((1-r3)*p)+(1-s0)*p+(s0*q+-(r3*q)) by RLVECT_1:def 3
              .= (-(1-r3))*p+(1-s0)*p+(s0*q+-(r3*q)) by RLVECT_1:79
              .= (-(1-r3)+(1-s0))*p+(s0*q+-(r3*q)) by RLVECT_1:def 6
              .= (-(1-r3)+(1-s0))*p+(s0*q+(-r3)*q) by RLVECT_1:79
              .= ((-1)*(s0-r3))*p+(s0+-r3)*q by RLVECT_1:def 6
              .= (-(s0-r3))*p+(s0+-r3)*q
              .= -(s0-r3)*p+(s0+-r3)*q by RLVECT_1:79
              .= (s0-r3)*q-((s0-r3)*p);
            then (s0-r3)*q = --((s0-r3)*p) by RLVECT_1:6
              .= (s0-r3)*p;
            then
A35:        s0+-r3=0 by A10,RLVECT_1:36;
            1>s0 by A14,A34,XXREAL_0:1;
            hence contradiction by A23,A35,XXREAL_0:21;
          end;
        end;
        hence contradiction;
      end;
      suppose
A36:    p0=p4;
        now
          per cases;
          suppose
            s0 = 0;
            then p0 = 1*p+0.TOP-REAL 2 by A12,RLVECT_1:10
              .= 1*p by RLVECT_1:4
              .= p by RLVECT_1:def 8;
            hence contradiction by A7,A8,XBOOLE_0:def 3;
          end;
          suppose
A37:        s0<>0;
            0.TOP-REAL 2 = (1-s0)*p+s0*q-((1-r4)*p+r4*q) by A12,A36,RLVECT_1:5
              .= (1-s0)*p+s0*q+(-((1-r4)*p)-(r4*q)) by RLVECT_1:30
              .= (1-s0)*p+s0*q+-(r4*q)+-((1-r4)*p) by RLVECT_1:def 3
              .= -((1-r4)*p)+((1-s0)*p+(s0*q+-(r4*q))) by RLVECT_1:def 3
              .= -((1-r4)*p)+(1-s0)*p+(s0*q+-(r4*q)) by RLVECT_1:def 3
              .= (-(1-r4))*p+(1-s0)*p+(s0*q+-(r4*q)) by RLVECT_1:79
              .= (-(1-r4)+(1-s0))*p+(s0*q+-(r4*q)) by RLVECT_1:def 6
              .= (-(1-r4)+(1-s0))*p+(s0*q+(-r4)*q) by RLVECT_1:79
              .= ((-1)*(s0-r4))*p+(s0+-r4)*q by RLVECT_1:def 6
              .= (-(s0-r4))*p+(s0-r4)*q
              .= -(s0-r4)*p+(s0-r4)*q by RLVECT_1:79
              .= -((s0-r4)*p)+(s0-r4)*q
              .= (s0-r4)*q+-((s0-r4)*p)
              .= (s0-r4)*q-((s0-r4)*p);
            then (s0-r4)*q = --((s0-r4)*p) by RLVECT_1:6
              .= (s0-r4)*p;
            then s0+-r4=0 by A10,RLVECT_1:36;
            hence contradiction by A13,A20,A37,XXREAL_0:29;
          end;
        end;
        hence contradiction;
      end;
    end;
    then
A38: ex x being object
   st x in LSeg(p3,p4) & not x in LSeg(f,i) \/ LSeg(f,i+1);
    reconsider u4 = p4 as Point of Euclid 2 by EUCLID:22;
A39: |.v2-v1.|<>0 by A10,EUCLID:17;
    reconsider u3 = p3 as Point of Euclid 2 by EUCLID:22;
A40: r3<=1 by XXREAL_0:22;
    0<=r3 by A9,A13,XXREAL_0:20;
    then p3 in LSeg(p,q) by A40;
    then
A41: LSeg(p3,p4)c=LSeg(p,q) by A22,TOPREAL1:6;
    reconsider u0=p0 as Point of Euclid 2 by EUCLID:22;
A42: p4-p0 = (1-r4)*p+r4*q+ (-((1-s0)*p)-(s0*q)) by A12,RLVECT_1:30
      .= (1-r4)*p+r4*q+ -((1-s0)*p)+-(s0*q) by RLVECT_1:def 3
      .= r4*q+((1-r4)*p+ -((1-s0)*p))+-(s0*q) by RLVECT_1:def 3
      .= ((1-r4)*p+ -((1-s0)*p))+r4*q+(-s0)*q by RLVECT_1:79
      .= ((1-r4)*p+ (-(1-s0))*p)+r4*q+(-s0)*q by RLVECT_1:79
      .= ((1-r4)*p+ (-(1-s0))*p)+(r4*q+(-s0)*q) by RLVECT_1:def 3
      .= ((1-r4)*p+ (-(1-s0))*p)+(r4+(-s0))*q by RLVECT_1:def 6
      .= ((1-r4)+ -(1-s0))*p+(r4-s0)*q by RLVECT_1:def 6
      .= (-(r4-s0))*p+(r4-s0)*q
      .= (r4-s0)*q -((r4-s0)*p) by RLVECT_1:79
      .= (r4-s0)*(q -p) by RLVECT_1:34
      .= (r4-s0)*(v2 -v1);
    now
      per cases;
      suppose
        s0+(-r0)/|.v2-v1.|<=0;
        then
A43:    r4=0 by XXREAL_0:def 10;
        r4>=s0+(-r0)/|.v2-v1.| by XXREAL_0:25;
        then r4+-s0>=s0+(-r0)/|.v2-v1.|+-s0 by XREAL_1:6;
        then
A44:    -(r4-s0)<=-((-r0)/|.v2-v1.|) by XREAL_1:24;
        r0+r0 = s;
        then
A45:    r0<s by A9,XREAL_1:29;
        reconsider v3=p4, v4=p0 as Element of REAL 2 by EUCLID:22;
A46:    -((-r0)/|.v2-v1.|) = ((--r0)/|.v2-v1.|) by XCMPLX_1:187
          .= r0/|.v2-v1.|;
A47:    dist(u4,u0) = |.v3-v4.| by Th5
          .= |.p4-p0.|
          .= |.r4-s0.|*|.(v2 -v1).| by A42,EUCLID:11;
        |.r4-s0.| = |.-(r4-s0).| by COMPLEX1:52
          .= -(0-s0) by A13,A43,ABSVALUE:def 1;
        then |.r4-s0.|*|.v2 -v1.|<=(r0/|.v2-v1.|)*|.v2 -v1.| by A43,A44,A46,
XREAL_1:64;
        then dist(u4,u0)<= r0 by A39,A47,XCMPLX_1:87;
        hence dist(u4,u0)<s by A45,XXREAL_0:2;
      end;
      suppose
        not s0+(-r0)/|.v2-v1.|<=0;
        then
A48:    p4-p0 = (s0+(-r0)/|.v2-v1.|-s0)*(v2-v1) by A42,XXREAL_0:def 10
          .= (s0+(-r0)/|.v2-v1.|-s0)*(q-p)
          .= ((-r0)/|.v2-v1.|)*(q-p)
          .= ((-r0)/|.v2-v1.|)*(v2-v1);
        reconsider v3=p4, v4=p0 as Element of REAL 2 by EUCLID:22;
A49:    r0+r0 =s;
        dist(u4,u0) = |.v3-v4.| by Th5
          .= |.p4-p0.|
          .= |.(-r0)/|.v2-v1.|.|*|.v2-v1.| by A48,EUCLID:11
          .= (|.-r0.|/|.|.v2-v1.|.|)*|.v2-v1.| by COMPLEX1:67
          .= (|.-r0.|/|.v2-v1.|)*|.v2-v1.| by ABSVALUE:def 1
          .= |.-r0.| by A11,XCMPLX_1:87
          .= |.r0.| by COMPLEX1:52
          .= r0 by A9,ABSVALUE:def 1;
        hence dist(u4,u0)<s by A9,A49,XREAL_1:29;
      end;
    end;
    then u4 in {u7 where u7 is Point of Euclid 2: dist(u0,u7)<s};
    then
A50: p4 in Ball(u0,s) by METRIC_1:17;
A51: p3-p0 =(1-r3)*p+r3*q+ (-((1-s0)*p)-(s0*q)) by A12,RLVECT_1:30
      .=(1-r3)*p+r3*q+ -((1-s0)*p)+-(s0*q) by RLVECT_1:def 3
      .=r3*q+((1-r3)*p+ -((1-s0)*p))+-(s0*q) by RLVECT_1:def 3
      .=((1-r3)*p+ -((1-s0)*p))+r3*q+(-s0)*q by RLVECT_1:79
      .=((1-r3)*p+ (-(1-s0))*p)+r3*q+(-s0)*q by RLVECT_1:79
      .=((1-r3)*p+ (-(1-s0))*p)+(r3*q+(-s0)*q) by RLVECT_1:def 3
      .=((1-r3)*p+ (-(1-s0))*p)+(r3+(-s0))*q by RLVECT_1:def 6
      .=((1-r3)+ -(1-s0))*p+(r3-s0)*q by RLVECT_1:def 6
      .=(-(r3-s0))*p+(r3-s0)*q
      .=(r3-s0)*q -((r3-s0)*p) by RLVECT_1:79
      .=(r3-s0)*(q-p) by RLVECT_1:34
      .=(r3-s0)*(v2-v1);
    now
      per cases;
      suppose
A52:    1<=s0+r0/|.v2-v1.|;
        r3<=s0+r0/|.v2-v1.| by XXREAL_0:17;
        then
A53:    r3+-s0<=s0+r0/|.v2-v1.|+-s0 by XREAL_1:6;
        r3=1 by A52,XXREAL_0:def 9;
        then r3-s0>=0 by A14,XREAL_1:48;
        then |.r3-s0.|<=r0/|.v2-v1.| by A53,ABSVALUE:def 1;
        then
A54:    |.r3-s0.|*|.v2 -v1.|<=(r0/|.v2-v1.|)*|.v2 -v1.| by XREAL_1:64;
        reconsider v3=p3, v4=p0 as Element of REAL 2 by EUCLID:22;
        r0+r0 = s;
        then
A55:    r0<s by A9,XREAL_1:29;
        dist(u3,u0) = |.v3-v4.| by Th5
          .= |.p3-p0.|
          .= |.(r3-s0)*(v2 -v1).| by A51
          .= |.r3-s0.|*|.(v2 -v1).| by EUCLID:11;
        then dist(u3,u0)<= r0 by A39,A54,XCMPLX_1:87;
        hence dist(u3,u0)<s by A55,XXREAL_0:2;
      end;
      suppose
        not 1<=s0+r0/|.v2-v1.|;
        then
A56:    p3-p0 = (s0+r0/|.v2-v1.|-s0)*(v2-v1) by A51,XXREAL_0:def 9
          .= (s0+r0/|.v2-v1.|-s0)*(q-p)
          .= (r0/|.v2-v1.|)*(q-p)
          .= (r0/|.v2-v1.|)*(v2-v1);
        reconsider v3=p3, v4=p0 as Element of REAL 2 by EUCLID:22;
A57:    r0+r0 = s;
        dist(u3,u0) = |.v3-v4.| by Th5
          .= |.p3-p0.|
          .= |.r0/|.v2-v1.|.|*|.v2-v1.| by A56,EUCLID:11
          .= (|.r0.|/|.|.v2-v1.|.|)*|.v2-v1.| by COMPLEX1:67
          .= (|.r0.|/|.v2-v1.|)*|.v2-v1.| by ABSVALUE:def 1
          .= |.r0.| by A11,XCMPLX_1:87
          .= r0 by A9,ABSVALUE:def 1;
        hence dist(u3,u0)<s by A9,A57,XREAL_1:29;
      end;
    end;
    then u3 in {u6 where u6 is Point of Euclid 2: dist(u0,u6)<s};
    then p3 in Ball(u0,s) by METRIC_1:17;
    then LSeg(p3,p4) c= Ball(u0,s) by A50,TOPREAL3:21;
    hence thesis by A4,A38,A41;
  end;
end;
