reserve a,b,i,k,m,n for Nat;
reserve s,z for non zero Nat;
reserve r for Real;
reserve c for Complex;
reserve e1,e2,e3,e4,e5 for ExtReal;

theorem
  {n where n is Nat: n divides 2|^n+1} is infinite
  proof
    set S = {n where n is Nat: n divides 2|^n+1};
    deffunc F(Nat) = 3|^$1;
    consider f being ManySortedSet of NAT such that
A1: for i being Element of NAT holds f.i = F(i) from PBOOLE:sch 5;
    set R = rng f;
A2: dom f = NAT by PARTFUN1:def 2;
A3: R c= S
    proof
      let x be object;
      assume x in R;
      then consider m being object such that
A4:   m in dom f and
A5:   x = f.m by FUNCT_1:def 3;
      reconsider m as Element of NAT by A4,PARTFUN1:def 2;
A6:   f.m = F(m) by A1;
      3|^m divides 2|^(3|^m)+1 by Th37;
      hence x in S by A5,A6;
    end;
    for m being Nat ex N being Nat st N >= m & N in R
    proof
      let m be Nat;
      take n = F(m+1);
A7:   m <= 3|^m by NEWTON:86;
      m+0 <= m+1 by XREAL_1:6;
      then 3|^m <= 3|^(m+1) by NAT_6:1;
      hence n >= m by A7,XXREAL_0:2;
      f.(m+1) = n by A1;
      hence n in R by A2,FUNCT_1:def 3;
    end;
    hence thesis by A3,PYTHTRIP:9;
  end;
