reserve X for ARS, a,b,c,u,v,w,x,y,z for Element of X;
reserve i,j,k for Element of ARS_01;
reserve l,m,n for Element of ARS_02;
reserve A for set;

theorem ThSN:
  for X holds X is SN iff
  not ex A,z st z in A & for x st x in A ex y st y in A & x ==> y
  proof
    let X;
    thus X is SN implies not ex A,z st z in A &
    for x st x in A ex y st y in A & x ==> y
    proof assume
00:   for f being Function of NAT, the carrier of X
      ex i being Nat st not f.i ==> f.(i+1);
      given A,z such that
01:   z in A & for x st x in A ex y st y in A & x ==> y;
      ex y st y in A & z ==> y by 01; then
      reconsider X0 = X as non empty ARS;
      reconsider z0 = z as Element of X0;
      defpred P[Nat,Element of X0,Element of X0] means
      $2 in A implies $3 in A & $2 ==> $3;
02:   for i being Nat, x being Element of X0
      ex y being Element of X0 st P[i,x,y] by 01;
      consider f being Function of NAT, the carrier of X0 such that
03:   f.0 = z0 and
04:   for i being Nat holds P[i,f.i,f.(i+1)]
      from RECDEF_1:sch 2(02);
      defpred Q[Nat] means f.$1 ==> f.($1+1) & f.$1 in A;
05:   Q[0] by 01,03,04;
06:   now let i be Nat; assume Q[i]; then
        f.(i+1) in A by 04;
        hence Q[i+1] by 04;
      end;
      for i being Nat holds Q[i] from NAT_1:sch 2(05,06);
      hence contradiction by 00;
    end;
    assume
00: not ex A,z st z in A &
    for x st x in A ex y st y in A & x ==> y;
    given f being Function of NAT, the carrier of X such that
01: for i being Nat holds f.i ==> f.(i+1);
    f.0 ==> f.(0+1) by 01; then
04: X is non empty & 0 in NAT by ORDINAL1:def 12; then
02: f.0 in rng f by FUNCT_2:4;
    now let x; assume x in rng f; then
      consider i being object such that
03:   i in dom f & x = f.i by FUNCT_1:def 3;
      reconsider i as Element of NAT by 03;
      take y = f.(i+1);
      thus y in rng f by 04,FUNCT_2:4;
      thus x ==> y by 01,03;
    end;
    hence contradiction by 00,02;
  end;
