reserve r,r1,r2,g,g1,g2,x0,t for Real;
reserve n,k,m for Element of NAT;
reserve seq for Real_Sequence;
reserve f,f1,f2 for PartFunc of REAL,REAL;

theorem
  f is_convergent_in x0 iff (for r1,r2 st r1<x0 & x0<r2 ex g1,g2 st r1<
g1 & g1<x0 & g1 in dom f & g2<r2 & x0<g2 & g2 in dom f) & ex g st for g1 st 0<
  g1 ex g2 st 0<g2 & for r1 st 0<|.x0-r1.| & |.x0-r1.|<g2 & r1 in dom f holds
  |.f.r1-g.|<g1
proof
  thus f is_convergent_in x0 implies (for r1,r2 st r1<x0 & x0<r2 ex g1,g2 st
r1<g1 & g1<x0 & g1 in dom f & g2<r2 & x0<g2 & g2 in dom f) & ex g st for g1 st
0<g1 ex g2 st 0<g2 & for r1 st 0<|.x0-r1.| & |.x0-r1.|<g2 & r1 in dom f holds
  |.f.r1-g.|<g1
  proof
    assume that
A1: f is_convergent_in x0 and
A2: (not for r1,r2 st r1<x0 & x0<r2 ex g1,g2 st r1<g1 & g1<x0 & g1 in
dom f & g2<r2 & x0<g2 & g2 in dom f) or for g ex g1 st 0<g1 & for g2 st 0<g2 ex
    r1 st 0<|.x0-r1.| & |.x0-r1.|<g2 & r1 in dom f & |.f.r1-g.|>=g1;
    consider g such that
A3: for seq st seq is convergent & lim seq=x0 & rng seq c=dom f\{x0}
    holds f/*seq is convergent & lim(f/*seq)=g by A1;
    consider g1 such that
A4: 0<g1 and
A5: for g2 st 0<g2 ex r1 st 0<|.x0-r1.| & |.x0-r1.|<g2 & r1 in dom f
    & |.f.r1-g.|>= g1 by A1,A2;
    defpred X[Element of NAT,Real] means 0<|.x0-$2.| & |.x0-$2.|<1/(
    $1+1) & $2 in dom f & |.f.($2)-g.|>=g1;
A6: for n ex r1 being Element of REAL st X[n,r1]
     proof let n;
       consider r1 such that
A7:       X[n,r1] by A5,XREAL_1:139;
       reconsider r1 as Element of REAL by XREAL_0:def 1;
      take r1;
      thus thesis by A7;
     end;
    consider s be Real_Sequence such that
A8: for n holds X[n,s.n] from FUNCT_2:sch 3(A6);
A9: rng s c=dom f\{x0} by A8,Th2;
A10: lim s=x0 by A8,Th2;
A11: s is convergent by A8,Th2;
    then
A12: lim(f/*s)=g by A3,A10,A9;
    f/*s is convergent by A3,A11,A10,A9;
    then consider n being Nat such that
A13: for k being Nat st n<=k holds |.(f/*s).k-g.|<g1 by A4,A12,SEQ_2:def 7;
A14: |.(f/*s).n-g.|<g1 by A13;
A15: n in NAT by ORDINAL1:def 12;
    rng s c=dom f by A8,Th2;
    then |.f.(s.n)-g.|<g1 by A14,FUNCT_2:108,A15;
    hence contradiction by A8,A15;
  end;
  assume
A16: for r1,r2 st r1<x0 & x0<r2 ex g1,g2 st r1<g1 & g1<x0 & g1 in dom f
  & g2<r2 & x0<g2 & g2 in dom f;
  given g such that
A17: for g1 st 0<g1 ex g2 st 0<g2 & for r1 st 0<|.x0-r1.| & |.x0-r1.|<
  g2 & r1 in dom f holds |.f.r1-g.|<g1;
  now
    let s be Real_Sequence;
    assume that
A18: s is convergent and
A19: lim s=x0 and
A20: rng s c=dom f\{x0};
A21: now
      let g1 be Real;
      assume
A22:  0<g1;
      consider g2 such that
A23:  0<g2 and
A24:  for r1 st 0<|.x0-r1.| & |.x0-r1.|<g2 & r1 in dom f holds
      |.f.r1 -g.|<g1 by A17,A22;
      consider n such that
A25:  for k st n<=k holds 0<|.x0-s.k.| & |.x0-s.k.|<g2 & s.k in dom
      f by A18,A19,A20,A23,Th3;
       reconsider n as Nat;
      take n;
      let k be Nat;
A26:    k in NAT by ORDINAL1:def 12;
      assume
A27:  n<=k;
      then
A28:  |.x0-s.k.|<g2 by A25,A26;
A29:  s.k in dom f by A25,A27,A26;
      0<|.x0-s.k.| by A25,A27,A26;
      then |.f.(s.k)-g.|<g1 by A24,A28,A29;
      hence |.(f/*s).k-g.|<g1 by A20,FUNCT_2:108,XBOOLE_1:1,A26;
    end;
    hence f/*s is convergent by SEQ_2:def 6;
    hence lim(f/*s)=g by A21,SEQ_2:def 7;
  end;
  hence thesis by A16;
end;
