reserve X,Y,Z for set, x,y,z for object;
reserve i,j for Nat;
reserve A,B,C for Subset of X;
reserve R,R1,R2 for Relation of X;
reserve AX for Subset of [:X,X:];
reserve SFXX for Subset-Family of [:X,X:];
reserve EqR,EqR1,EqR2,EqR3 for Equivalence_Relation of X;
reserve X for non empty set,
  x for Element of X;
reserve F for Part-Family of X;
reserve e,u,v for object, E,X,Y,X1 for set;
reserve X,Y,Z for non empty set;

theorem
  for F being Function of X,Y, G being Function of X,Z st
  for x,x9 being Element of X st F.x=F.x9 holds G.x=G.x9
  ex H being Function of Y,Z st H*F = G
proof
  let F be Function of X,Y, G be Function of X,Z;
  defpred P[object,object] means
  not (ex x being Element of X st $1 = F.x) or for x
  being Element of X st $1 = F.x holds $2 = G.x;
  assume
A1: for x,x9 being Element of X st F.x=F.x9 holds G.x=G.x9;
A2: now
    let e be object such that
    e in Y;
    now
      per cases;
      case
        ex x being Element of X st e = F.x;
        then consider x being Element of X such that
A3:     e = F.x;
        take u = G.x;
        thus u in Z & ((ex x being Element of X st e = F.x) implies ex x being
        Element of X st e = F.x & u = G.x) by A3;
      end;
      case
A4:     not ex x being Element of X st e = F.x;
        set u = the Element of Z;
        u in Z;
        hence
        ex u st u in Z & ((ex x being Element of X st e = F.x) implies ex
        x being Element of X st e = F.x & u = G.x) by A4;
      end;
    end;
    then consider u such that
A5: u in Z and
A6: (ex x being Element of X st e = F.x) implies ex x being Element of
    X st e = F.x & u = G.x;
     reconsider u as object;
    take u;
    thus u in Z by A5;
    thus P[e,u] by A1,A6;
  end;
  consider H being Function of Y,Z such that
A7: for e being object st e in Y holds P[e,H.e] from FUNCT_2:sch 1(A2);
  take H;
  now
    let x be Element of X;
    thus (H*F).x = H.(F.x) by FUNCT_2:15
      .= G.x by A7;
  end;
  hence thesis by FUNCT_2:63;
end;
