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 Th12:
  not x in variables_in H implies (M,v |= H/(y,x) iff M,v/(y,v.x) |= H)
proof
  defpred V[ZF-formula] means not x in variables_in $1 implies for v holds M,v
  |= $1/(y,x) iff M,v/(y,v.x) |= $1;
A1: for x1,x2 holds V[x1 '=' x2] & V[x1 'in' x2]
  proof
    let x1,x2;
A2: x2 = y or x2 <> y;
A3: x1 = y or x1 <> y;
    thus V[x1 '=' x2]
    proof
      assume not x in variables_in (x1 '=' x2);
      let v;
      consider y1,y2 such that
A4:   x1 <> y & x2 <> y & y1 = x1 & y2 = x2 or x1 = y & x2 <> y & y1 =
x & y2 = x2 or x1 <> y & x2 = y & y1 = x1 & y2 = x or x1 = y & x2 = y & y1 = x
      & y2 = x by A3,A2;
A5:   v/(y,v.x).x2 = v.y2 by A4,FUNCT_7:32,128;
A6:   v/(y,v.x).x1 = v.y1 by A4,FUNCT_7:32,128;
A7:   (x1 '=' x2)/(y,x) = y1 '=' y2 by A4,ZF_LANG1:152;
      thus M,v |= (x1 '=' x2)/(y,x) implies M,v/(y,v.x) |= x1 '=' x2
      proof
        assume M,v |= (x1 '=' x2)/(y,x);
        then v.y1 = v.y2 by A7,ZF_MODEL:12;
        hence thesis by A6,A5,ZF_MODEL:12;
      end;
      assume M,v/(y,v.x) |= x1 '=' x2;
      then v/(y,v.x).x1 = v/(y,v.x).x2 by ZF_MODEL:12;
      hence thesis by A7,A6,A5,ZF_MODEL:12;
    end;
    consider y1,y2 such that
A8: x1 <> y & x2 <> y & y1 = x1 & y2 = x2 or x1 = y & x2 <> y & y1 =
x & y2 = x2 or x1 <> y & x2 = y & y1 = x1 & y2 = x or x1 = y & x2 = y & y1 = x
    & y2 = x by A3,A2;
    assume not x in variables_in (x1 'in' x2);
    let v;
A9: v/(y,v.x).x1 = v.y1 by A8,FUNCT_7:32,128;
A10: v/(y,v.x).x2 = v.y2 by A8,FUNCT_7:32,128;
A11: (x1 'in' x2)/(y,x) = y1 'in' y2 by A8,ZF_LANG1:154;
    thus M,v |= (x1 'in' x2)/(y,x) implies M,v/(y,v.x) |= x1 'in' x2
    proof
      assume M,v |= (x1 'in' x2)/(y,x);
      then v.y1 in v.y2 by A11,ZF_MODEL:13;
      hence thesis by A9,A10,ZF_MODEL:13;
    end;
    assume M,v/(y,v.x) |= x1 'in' x2;
    then v/(y,v.x).x1 in v/(y,v.x).x2 by ZF_MODEL:13;
    hence thesis by A11,A9,A10,ZF_MODEL:13;
  end;
A12: for H1,H2 st V[H1] & V[H2] holds V[H1 '&' H2]
  proof
    let H1,H2 such that
A13: not x in variables_in H1 implies for v holds M,v |= H1/(y,x) iff
    M,v/(y,v.x) |= H1 and
A14: not x in variables_in H2 implies for v holds M,v |= H2/(y,x) iff
    M,v/(y,v.x) |= H2;
    assume not x in variables_in (H1 '&' H2);
    then
A15: not x in variables_in H1 \/ variables_in H2 by ZF_LANG1:141;
    let v;
    thus M,v |= (H1 '&' H2)/(y,x) implies M,v/(y,v.x) |= H1 '&' H2
    proof
      assume M,v |= (H1 '&' H2)/(y,x);
      then
A16:  M,v |= (H1/(y,x)) '&' (H2/(y,x)) by ZF_LANG1:158;
      then M,v |= H2/(y,x) by ZF_MODEL:15;
      then
A17:  M,v/(y,v.x) |= H2 by A14,A15,XBOOLE_0:def 3;
      M,v |= H1/(y,x) by A16,ZF_MODEL:15;
      then M,v/(y,v.x) |= H1 by A13,A15,XBOOLE_0:def 3;
      hence thesis by A17,ZF_MODEL:15;
    end;
    assume
A18: M,v/(y,v.x) |= H1 '&' H2;
    then M,v/(y,v.x) |= H2 by ZF_MODEL:15;
    then
A19: M,v |= H2/(y,x) by A14,A15,XBOOLE_0:def 3;
    M,v/(y,v.x) |= H1 by A18,ZF_MODEL:15;
    then M,v |= H1/(y,x) by A13,A15,XBOOLE_0:def 3;
    then M,v |= (H1/(y,x)) '&' (H2/(y,x)) by A19,ZF_MODEL:15;
    hence thesis by ZF_LANG1:158;
  end;
A20: for H,z st V[H] holds V[All(z,H)]
  proof
    let H,z such that
A21: not x in variables_in H implies for v holds M,v |= H/(y,x) iff M,
    v/(y,v.x) |= H;
    z = y or z <> y;
    then consider s being Variable such that
A22: z = y & s = x or z <> y & s = z;
    assume
A23: not x in variables_in All(z,H);
    then
A24: not x in variables_in H \/ {z} by ZF_LANG1:142;
    then not x in {z} by XBOOLE_0:def 3;
    then
A25: x <> z by TARSKI:def 1;
    let v;
    Free H c= variables_in H by ZF_LANG1:151;
    then
A26: not x in Free H by A24,XBOOLE_0:def 3;
    thus M,v |= All(z,H)/(y,x) implies M,v/(y,v.x) |= All(z,H)
    proof
      assume M,v |= All(z,H)/(y,x);
      then
A27:  M,v |= All(s,H/(y,x)) by A22,ZF_LANG1:159,160;
A28:  now
        assume that
A29:    z = y and
A30:    s = x;
        now
          let m;
A31:      v/(x,m).x = m by FUNCT_7:128;
          M,v/(x,m) |= H/(y,x) by A27,A30,ZF_LANG1:71;
          then
A32:      M,(v/(x,m))/(y,v/(x,m).x) |= H by A21,A24,XBOOLE_0:def 3;
          (v/(x,m))/(y,m) = (v/(y,m))/(x,m) by A25,A29,FUNCT_7:33;
          then M,(v/(y,m))/(x,m) |= All(x,H) by A26,A32,A31,ZFMODEL1:10;
          then
A33:      M,((v/(y,m))/(x,m))/(x,v/(y,m).x) |= H by ZF_LANG1:71;
          ((v/(y,m))/(x,m))/(x,v/(y,m).x) = (v/(y,m))/(x,v/(y,m).x) by
FUNCT_7:34;
          hence M,v/(y,m) |= H by A33,FUNCT_7:35;
        end;
        then M,v |= All(y,H) by ZF_LANG1:71;
        hence thesis by A29,ZF_LANG1:72;
      end;
      now
        assume that
A34:    z <> y and
A35:    s = z;
        now
          let m;
          M,v/(z,m) |= H/(y,x) by A27,A35,ZF_LANG1:71;
          then
A36:      M,(v/(z,m))/(y,v/(z,m).x) |= H by A21,A24,XBOOLE_0:def 3;
          v/(z,m).x = v.x by A25,FUNCT_7:32;
          hence M,(v/(y,v.x))/(z,m) |= H by A34,A36,FUNCT_7:33;
        end;
        hence thesis by ZF_LANG1:71;
      end;
      hence thesis by A22,A28;
    end;
    assume
A37: M,v/(y,v.x) |= All(z,H);
    Free All(z,H) c= variables_in All(z,H) by ZF_LANG1:151;
    then
A38: not x in Free All(z,H) by A23;
A39: now
      assume that
A40:  z = y and
      s = x;
      M,v |= All(y,H) by A37,A40,ZF_LANG1:72;
      then
A41:  M,v |= All(x,All(y,H)) by A38,A40,ZFMODEL1:10;
      now
        let m;
        M,v/(x,m) |= All(y,H) by A41,ZF_LANG1:71;
        then
A42:    M,(v/(x,m))/(y,m) |= H by ZF_LANG1:71;
        v/(x,m).x = m by FUNCT_7:128;
        hence M,v/(x,m) |= H/(y,x) by A21,A24,A42,XBOOLE_0:def 3;
      end;
      then M,v |= All(x,H/(y,x)) by ZF_LANG1:71;
      hence thesis by A40,ZF_LANG1:160;
    end;
    now
      assume that
A43:  z <> y and
      s = z;
      now
        let m;
        M,(v/(y,v.x))/(z,m) |= H by A37,ZF_LANG1:71;
        then M,(v/(z,m))/(y,v.x) |= H by A43,FUNCT_7:33;
        then M,(v/(z,m))/(y,v/(z,m).x) |= H by A25,FUNCT_7:32;
        hence M,v/(z,m) |= H/(y,x) by A21,A24,XBOOLE_0:def 3;
      end;
      then M,v |= All(z,H/(y,x)) by ZF_LANG1:71;
      hence thesis by A43,ZF_LANG1:159;
    end;
    hence thesis by A22,A39;
  end;
A44: for H st V[H] holds V['not' H]
  proof
    let H such that
A45: not x in variables_in H implies for v holds M,v |= H/(y,x) iff M,
    v/(y,v.x) |= H;
    assume
A46: not x in variables_in 'not' H;
    let v;
    thus M,v |= ('not' H)/(y,x) implies M,v/(y,v.x) |= 'not' H
    proof
      assume M,v |= ('not' H)/(y,x);
      then M,v |= 'not'(H/(y,x)) by ZF_LANG1:156;
      then not M,v |= H/(y,x) by ZF_MODEL:14;
      then not M,v/(y,v.x) |= H by A45,A46,ZF_LANG1:140;
      hence thesis by ZF_MODEL:14;
    end;
    assume M,v/(y,v.x) |= 'not' H;
    then not M,v/(y,v.x) |= H by ZF_MODEL:14;
    then not M,v |= H/(y,x) by A45,A46,ZF_LANG1:140;
    then M,v |= 'not'(H/(y,x)) by ZF_MODEL:14;
    hence thesis by ZF_LANG1:156;
  end;
  for H holds V[H] from ZF_LANG1:sch 1(A1,A44,A12,A20);
  hence thesis;
end;
