
theorem
  for A being free Universal_Algebra for G being GeneratorSet of A
  for B being Universal_Algebra for h1,h2 being Function of A,B
  st h1 is_homomorphism & h2 is_homomorphism & h1|G = h2|G
  holds h1 = h2
proof
  let A be free Universal_Algebra;
  let G be GeneratorSet of A;
  let B be Universal_Algebra;
  let h1,h2 be Function of A,B such that
A1: h1 is_homomorphism and
A2: h2 is_homomorphism and
A3: h1|G = h2|G;
  defpred P[Nat] means
  for a being Element of A st a in G|^$1 holds h1.a = h2.a;
A4: P[0]
  proof
    let a be Element of A;
    assume a in G|^0;
    then
A5: a in G by Th18;
    then h1.a = (h1|G).a by FUNCT_1:49;
    hence thesis by A3,A5,FUNCT_1:49;
  end;
A6: for n being Nat st P[n] holds P[n+1]
  proof
    let n be Nat such that
A7: P[n];
    let a be Element of A;
    assume that
A8: a in G|^(n+1) and
A9: h1.a <> h2.a;
    a nin G|^n by A7,A9;
    then consider o being (Element of dom the charact of A),
    p being Element of (the carrier of A)* such that
A10: a = Den(o,A).p and
A11: p in dom Den(o,A) and
A12: rng p c= G|^n by A8,Th20;
    A,B are_similar by A1,ALG_1:def 1;
    then len the charact of A = len the charact of B by UNIALG_2:1;
    then reconsider o9 = o as Element of dom the charact of B by FINSEQ_3:29;
A13: Operations A = rng the charact of A;
A14: Operations B = rng the charact of B;
    then
A15: h1.a = Den(o9,B).(h1*p) by A1,A10,A11,A13,ALG_1:def 1;
A16: h2.a = Den(o9,B).(h2*p) by A2,A10,A11,A13,A14,ALG_1:def 1;
    now
A17:  dom h1 = the carrier of A by FUNCT_2:def 1;
      dom h2 = the carrier of A by FUNCT_2:def 1;
      hence G|^n c= dom h1 & G|^n c= dom h2 by A17;
      let x be set;
      assume x in G|^n;
      hence h1.x = h2.x by A7;
    end;
    hence thesis by A9,A12,A15,A16,Th1;
  end;
A18: for n being Nat holds P[n] from NAT_1:sch 2(A4,A6);
  now
    let a be Element of A;
    ex n being Nat st a in G|^n by Th30;
    hence h1.a = h2.a by A18;
  end;
  hence thesis by FUNCT_2:63;
end;
