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;

theorem Th34:
  all-square-uparrow, [: base_of_frechet_filter,base_of_frechet_filter :]
    are_equivalent_generators
  proof
    set cB1 = all-square-uparrow,
        cB2 = [: base_of_frechet_filter,base_of_frechet_filter :];
A1: now
      let b1 be Element of cB1;
      b1 in cB1;
      then consider n such that
A2:   b1 = square-uparrow n;
      NAT \ Segm n is Element of base_of_frechet_filter by Th21;
      then [:NAT \ Segm n,NAT \ Segm n :] in [: base_of_frechet_filter,
             base_of_frechet_filter :];
      then reconsider b2 = [:NAT \ Segm n, NAT \ Segm n:] as Element of cB2;
      b2 c= b1 by A2,Th27;
      hence ex b2 be Element of cB2 st b2 c= b1;
    end;
    now
      let b2 be Element of cB2;
      consider n such that
A1:   square-uparrow n c= b2 by Th32;
      square-uparrow n in all-square-uparrow;
      hence ex b1 be Element of cB1 st b1 c= b2 by A1;
    end;
    hence thesis by A1;
  end;
