reserve H for ZF-formula,
  M,E for non empty set,
  e for Element of E,
  m,m0,m3, m4 for Element of M,
  v,v1,v2 for Function of VAR,M,
  f,f1 for Function of VAR,E,
  g for Function,
  u,u1,u2 for set,
  x,y for Variable,
  i,n for Element of NAT,
  X for set;
reserve W for Universe,
  w for Element of W,
  Y for Subclass of W,
  a,a1,b,c for Ordinal of W,
  L for DOMAIN-Sequence of W;

theorem
  omega in W & (for a,b st a in b holds L.a c= L.b) & (for a st a <> {}
& a is limit_ordinal holds L.a = Union (L|a)) & (for a holds L.a in Union L & L
  .a is epsilon-transitive) & Union L is closed_wrt_A1-A7 implies Union L is
  being_a_model_of_ZF
proof
  assume that
A1: omega in W and
A2: for a,b st a in b holds L.a c= L.b and
A3: for a st a <> {} & a is limit_ordinal holds L.a = Union (L|a) and
A4: for a holds L.a in Union L & L.a is epsilon-transitive and
A5: Union L is closed_wrt_A1-A7;
A6: Union L is epsilon-transitive
  proof
    let X;
    assume X in Union L;
    then consider u such that
A7: u in dom L and
A8: X in L.u by Lm1;
    reconsider u as Ordinal by A7;
    u in On W by A7,ZF_REFLE:def 2;
    then reconsider u as Ordinal of W by ZF_REFLE:7;
    L.u is epsilon-transitive by A4;
    then
A9: X c= L.u by A8;
    let u1 be object;
A10: L.u c= Union L by ZF_REFLE:16;
    assume u1 in X;
    then u1 in L.u by A9;
    hence thesis by A10;
  end;
  then Union L is predicatively_closed by A5,Th5;
  then
A11: Union L |= the_axiom_of_power_sets & for H st {x.0,x.1,x.2} misses
  Free H holds Union L |= the_axiom_of_substitution_for H by A1,A2,A3,A4,Th2
,Th3;
  for u st u in Union L holds union u in Union L by A5,ZF_FUND1:2;
  then
A12: Union L |= the_axiom_of_unions by A6,ZFMODEL1:5;
  for u1,u2 st u1 in Union L & u2 in Union L holds {u1,u2} in Union L by A5,
ZF_FUND1:6;
  then
A13: Union L |= the_axiom_of_pairs by A6,ZFMODEL1:3;
  ex u st u in Union L & u<>{} & for u1 st u1 in u ex u2 st u1 c< u2 & u2 in u
  proof
A14: card omega in card W by A1,CLASSES2:1;
    deffunc G(set,set) = inf {w: L.$2 in L.w};
    consider ksi being Function such that
A15: dom ksi=NAT & ksi.0=0-element_of(W) & for i being Nat holds ksi.(
    i+1)=G(i,ksi.i) from NAT_1:sch 11;
    card rng ksi c= card NAT by A15,CARD_1:12;
    then
A16: card rng ksi in card W by A14,ORDINAL1:12;
    set lambda=sup rng ksi;
A17: for i being Nat holds ksi.i in On W & ksi.i is Ordinal of W
    proof
      defpred P[Nat] means ksi.$1 in On W & ksi.$1 is Ordinal of W;
A18:  now
        let i be Nat;
        assume P[i];
        then reconsider a=ksi.i as Ordinal of W;
A19:    ksi.(i+1)=inf {w: L.a in L.w} by A15;
        consider u such that
A20:    u in dom L and
A21:    L.a in L.u by A4,Lm1;
        dom L=On W by ZF_REFLE:def 2;
        then reconsider b=u as Ordinal of W by A20,ZF_REFLE:7;
        b in {w: L.a in L.w} by A21;
        then inf {w: L.a in L.w} c= b by ORDINAL2:14;
        then ksi.(i+1) in W by A19,CLASSES1:def 1;
        hence P[i+1] by A19,ORDINAL1:def 9;
      end;
A22:  P[0] by A15,ZF_REFLE:7;
      thus for i being Nat holds P[i] from NAT_1:sch 2(A22,A18);
    end;
    rng ksi c= W
    proof
      let a be object;
      assume a in rng ksi;
      then consider i being object such that
A23:  i in dom ksi and
A24:  a=ksi.i by FUNCT_1:def 3;
      reconsider i as Element of NAT by A15,A23;
      ksi.i in On W by A17;
      hence thesis by A24,ORDINAL1:def 9;
    end;
    then rng ksi in W by A16,CLASSES1:1;
    then reconsider l=lambda as Ordinal of W by ZF_REFLE:19;
A25: for i holds L.(ksi.i) in L.(ksi.(i+1))
    proof
      let i;
      reconsider a=ksi.i as Ordinal of W by A17;
      consider b being set such that
A26:  b in dom L and
A27:  L.a in L.b by A4,Lm1;
      b in On W by A26,ZF_REFLE:def 2;
      then reconsider b as Ordinal of W by ZF_REFLE:7;
A28:  b in {w: L.a in L.w} by A27;
      ksi.(i+1)=inf {w: L.(ksi.i) in L.w} by A15;
      then ksi.(i+1) in {w: L.(ksi.i) in L.w} by A28,ORDINAL2:17;
      then ex w st w=ksi.(i+1) & L.a in L.w;
      hence thesis;
    end;
A29: for i holds ksi.i in ksi.(i+1)
    proof
      let i;
      reconsider b=ksi.(i+1) as Ordinal of W by A17;
      reconsider a=ksi.i as Ordinal of W by A17;
      assume not ksi.i in ksi.(i+1);
      then b=a or b in a by ORDINAL1:14;
      then L.b c= L.a by A2;
      hence contradiction by A25,ORDINAL1:5;
    end;
A30: l c= union l
    proof
      let u1 be Ordinal;
      assume u1 in l;
      then consider u2 being Ordinal such that
A31:  u2 in rng ksi and
A32:  u1 c= u2 by ORDINAL2:21;
      consider i being object such that
A33:  i in dom ksi and
A34:  u2=ksi.i by A31,FUNCT_1:def 3;
      reconsider i as Element of NAT by A15,A33;
      reconsider u3=ksi.(i+1) as Ordinal of W by A17;
      u3 in rng ksi by A15,FUNCT_1:def 3;
      then
A35:  u3 in l by ORDINAL2:19;
      u1 in u3 by A29,A32,A34,ORDINAL1:12;
      hence thesis by A35,TARSKI:def 4;
    end;
    union l c= l by ORDINAL2:5;
    then l=union l by A30;
    then
A36: l is limit_ordinal;
A37: union the set of all L.(ksi.n)=L.l
    proof
      set A=the set of all L.(ksi.n);
      thus union A c= L.l
      proof
        let u1 be object;
        assume u1 in union A;
        then consider X such that
A38:    u1 in X and
A39:    X in A by TARSKI:def 4;
        consider n such that
A40:    X=L.(ksi.n) by A39;
        reconsider a=ksi.n as Ordinal of W by A17;
        a in rng ksi by A15,FUNCT_1:def 3;
        then L.a c= L.l by A2,ORDINAL2:19;
        hence thesis by A38,A40;
      end;
      0-element_of W in rng ksi by A15,FUNCT_1:def 3;
      then l<>{} by ORDINAL2:19;
      then
A41:  L.l=Union(L|l) by A3,A36;
      let u1 be object;
      assume u1 in L.l;
      then consider u2 such that
A42:  u2 in dom(L|l) and
A43:  u1 in (L|l).u2 by A41,Lm1;
A44:  u1 in L.u2 by A42,A43,FUNCT_1:47;
A45:  u2 in (dom L) /\ l by A42,RELAT_1:61;
      then
A46:  u2 in l by XBOOLE_0:def 4;
      u2 in dom L by A45,XBOOLE_0:def 4;
      then u2 in On W by ZF_REFLE:def 2;
      then reconsider u2 as Ordinal of W by ZF_REFLE:7;
      consider b being Ordinal such that
A47:  b in rng ksi and
A48:  u2 c= b by A46,ORDINAL2:21;
      consider i being object such that
A49:  i in dom ksi and
A50:  b=ksi.i by A47,FUNCT_1:def 3;
      reconsider i as Element of NAT by A15,A49;
      b=ksi.i by A50;
      then reconsider b as Ordinal of W by A17;
      u2 c< b iff u2 c= b & u2 <> b;
      then
A51:  L.u2 c= L.b by A2,A48,ORDINAL1:11;
      L.(ksi.i) in A;
      hence thesis by A44,A50,A51,TARSKI:def 4;
    end;
    take u = L.lambda;
    L.l in Union L by A4;
    hence u in Union L & u<>{};
    let u1;
    assume u1 in u;
    then consider u2 such that
A52: u1 in u2 & u2 in the set of all L.(ksi.n) by A37,TARSKI:def 4;
    take u2;
    consider i such that
A53: u2=L.(ksi.i) by A52;
A54: u1<>u2 by A52;
    reconsider a=ksi.i as Ordinal of W by A17;
    L.a is epsilon-transitive by A4;
    then u1 c= u2 by A52,A53;
    hence u1 c< u2 by A54;
A55: L.(ksi.(i+1)) in the set of all L.(ksi.n);
    L.(ksi.i) in L.(ksi.(i+1)) by A25;
    hence u2 in u by A37,A53,A55,TARSKI:def 4;
  end;
  then Union L |= the_axiom_of_infinity by A6,ZFMODEL1:7;
  hence thesis by A6,A13,A12,A11,ZF_MODEL:def 12;
end;
