reserve            x for object,
               X,Y,Z for set,
         i,j,k,l,m,n for Nat,
                 r,s for Real,
                  no for Element of OrderedNAT,
                   A for Subset of [:NAT,NAT:];
reserve X,Y,X1,X2 for non empty set,
          cA1,cB1 for filter_base of X1,
          cA2,cB2 for filter_base of X2,
              cF1 for Filter of X1,
              cF2 for Filter of X2,
             cBa1 for basis of cF1,
             cBa2 for basis of cF2;
reserve T for non empty TopSpace,
        s for Function of [:NAT,NAT:], the carrier of T,
        M for Subset of the carrier of T;
reserve cF3,cF4 for Filter of the carrier of T;

theorem Th55:
  for x being Point of T, cB being basis of BOOL2F NeighborhoodSystem x holds
  x in lim_filter(s,Frechet_Filter([:NAT,NAT:])) iff
  for B being Element of cB holds ex i,j st for m,n st i <= m or j <= n holds
    s.(m,n) in B
  proof
    let x be Point of T,cB be basis of BOOL2F NeighborhoodSystem x;
    hereby
      assume
A1:   x in lim_filter(s,Frechet_Filter([:NAT,NAT:]));
      hereby
        let B be Element of cB;
        consider i,j be Nat such that
A2:     s.:([:NAT,NAT:] \ [:Segm i,Segm j:]) c= B by A1,Th52;
        take i,j;
        thus for m,n st i <= m or j <= n holds s.(m,n) in B
        proof
          let m,n;
          assume
A3:       i <= m or j <= n;
          m in NAT & n in NAT by ORDINAL1:def 12; then
A4:       [m,n] in [:NAT,NAT:] by ZFMISC_1:def 2;
A5:       not (m in Segm i & n in Segm j) by A3,NAT_1:44;
          not [m,n] in [:Segm i,Segm j:]
          proof
            assume [m,n] in [:Segm i,Segm j:];
            then ex a,b be object st a in Segm i & b in Segm j & [m,n] = [a,b]
              by ZFMISC_1:def 2;
            hence thesis by A5,XTUPLE_0:1;
          end;
          then
A6:       [m,n] in [:NAT,NAT:] \ [:Segm i,Segm j:] by A4,XBOOLE_0:def 5;
          [m,n] in dom s by A4,FUNCT_2:def 1;
          then s.([m,n]) in s.:([:NAT,NAT:] \ [:Segm i,Segm j:])
            by A6,FUNCT_1:def 6;
          then s.([m,n]) in B by A2;
          hence s.(m,n) in B by BINOP_1:def 1;
        end;
      end;
    end;
    assume
A7: for B being Element of cB holds ex i,j st for m,n st
      i <= m or j <= n holds s.(m,n) in B;
    now
      let B be Element of cB;
      consider i,j such that
A8:   for m,n st i <= m or j <= n holds s.(m,n) in B by A7;
      s.:([:NAT,NAT:] \ [:Segm i,Segm j:]) c= B
      proof
        let t be object;
        assume t in s.:([:NAT,NAT:] \ [:Segm i,Segm j:]);
        then consider a be object such that
A9:     a in dom s and
A10:    a in [:NAT,NAT:] \ [:Segm i,Segm j:] and
A11:    t = s.a by FUNCT_1:def 6;
        reconsider a as Element of [:NAT,NAT:] by A9;
        consider a1,a2 be object such that
A12:    a1 in NAT and
A13:    a2 in NAT and
A14:    a = [a1,a2] by ZFMISC_1:def 2;
        reconsider a1,a2 as Nat by A12,A13;
        not a1 in Segm i or not a2 in Segm j
        proof
          assume not (not a1 in Segm i or not a2 in Segm j);
          then [a1,a2] in [:Segm i,Segm j:] by ZFMISC_1:def 2;
          hence thesis by A14,A10,XBOOLE_0:def 5;
        end;
        then
A15:    i <= a1 or j <= a2 by NAT_1:44;
        t = s.(a1,a2) by A11,A14,BINOP_1:def 1;
        hence t in B by A8,A15;
      end;
      hence ex n1,n2 be Nat st s.:([:NAT,NAT:] \ [:Segm n1,Segm n2:]) c= B;
    end;
    hence x in lim_filter(s,Frechet_Filter([:NAT,NAT:]))
      by Th52;
  end;
