reserve x,y,z,x1,x2,x3,x4,y1,y2,s for Variable,
  M for non empty set,
  a,b for set,
  i,j,k for Element of NAT,
  m,m1,m2,m3,m4 for Element of M,
  H,H1,H2 for ZF-formula,
  v,v9,v1,v2 for Function of VAR,M;

theorem
  not x.0 in Free H1 & M,v1 |= All(x.3,Ex(x.0,All(x.4,H1 <=> x.4 '=' x.0
))) implies ex H2,v2 st Free H1 /\ Free H2 c= {x.3,x.4} & not x.0 in Free H2 &
  M,v2 |= All(x.3,Ex(x.0,All(x.4,H2 <=> x.4 '=' x.0))) & def_func'(H1,v1) =
  def_func'(H2,v2)
proof
  assume that
A1: not x.0 in Free H1 and
A2: M,v1 |= All(x.3,Ex(x.0,All(x.4,H1 <=> x.4 '=' x.0)));
  consider i such that
A3: for j st x.j in variables_in H1 holds j < i by Th3;
  consider H2,v2 such that
A4: for j st j < i & x.j in variables_in H2 holds j=3 or j=4 and
A5: not x.0 in Free H2 and
A6: M,v2 |= All(x.3,Ex(x.0,All(x.4,H2 <=> x.4 '=' x.0))) and
A7: def_func'(H1,v1) = def_func'(H2,v2) by A1,A2,Th16;
  take H2,v2;
  thus Free H1 /\ Free H2 c= {x.3,x.4}
  proof
A8: Free H2 c= variables_in H2 by ZF_LANG1:151;
    let a be object;
A9: Free H1 c= variables_in H1 by ZF_LANG1:151;
    assume
A10: a in Free H1 /\ Free H2;
    then
A11: a in Free H2 by XBOOLE_0:def 4;
    reconsider x = a as Variable by A10;
    consider j such that
A12: x = x.j by ZF_LANG1:77;
    a in Free H1 by A10,XBOOLE_0:def 4;
    then j = 3 or j = 4 by A3,A4,A11,A12,A9,A8;
    hence thesis by A12,TARSKI:def 2;
  end;
  thus thesis by A5,A6,A7;
end;
