reserve p,p1,p2,q,r,F,G,G1,G2,H,H1,H2 for ZF-formula,
  x,x1,x2,y,y1,y2,z,z1,z2,s,t for Variable,
  a,X for set;
reserve M for non empty set,
  m,m9 for Element of M,
  v,v9 for Function of VAR,M;
reserve i,j for Element of NAT;

theorem
  M,v |= (p => (q => r)) => ((p => q) => (p => r)) & M |= (p => (q => r)
  ) => ((p => q) => (p => r))
proof
  now
    let v;
    now
      assume
A1:   M,v |= p => (q => r);
      now
        assume M,v |= p => q;
        then
A2:     M,v |= p implies M,v |= q => r & M,v |= q by A1,ZF_MODEL:18;
        M,v |= q & M,v |= q => r implies M,v |= r by ZF_MODEL:18;
        hence M,v |= p => r by A2,ZF_MODEL:18;
      end;
      hence M,v |= (p => q) => (p => r) by ZF_MODEL:18;
    end;
    hence M,v |= (p => (q => r)) => ((p => q) => (p => r)) by ZF_MODEL:18;
  end;
  hence thesis;
end;
