let A be free Universal_Algebra; :: thesis: 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

let G be GeneratorSet of A; :: thesis: 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

let B be Universal_Algebra; :: thesis: for h1, h2 being Function of A,B st h1 is_homomorphism & h2 is_homomorphism & h1 | G = h2 | G holds
h1 = h2

let h1, h2 be Function of A,B; :: thesis: ( h1 is_homomorphism & h2 is_homomorphism & h1 | G = h2 | G implies h1 = h2 )
assume that
A1: h1 is_homomorphism and
A2: h2 is_homomorphism and
A3: h1 | G = h2 | G ; :: thesis: h1 = h2
defpred S1[ Nat] means for a being Element of A st a in G |^ $1 holds
h1 . a = h2 . a;
A4: S1[ 0 ]
proof
let a be Element of A; :: thesis: ( a in G |^ 0 implies h1 . a = h2 . a )
assume a in G |^ 0 ; :: thesis: h1 . a = h2 . a
then A5: a in G by Th18;
then h1 . a = (h1 | G) . a by FUNCT_1:49;
hence h1 . a = h2 . a by A3, A5, FUNCT_1:49; :: thesis: verum
end;
A6: for n being Nat st S1[n] holds
S1[n + 1]
proof
let n be Nat; :: thesis: ( S1[n] implies S1[n + 1] )
assume A7: S1[n] ; :: thesis: S1[n + 1]
let a be Element of A; :: thesis: ( a in G |^ (n + 1) implies h1 . a = h2 . a )
assume that
A8: a in G |^ (n + 1) and
A9: h1 . a <> h2 . a ; :: thesis: contradiction
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 :: thesis: ( G |^ n c= dom h1 & G |^ n c= dom h2 & ( for x being set st x in G |^ n holds
h1 . x = h2 . x ) )
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; :: thesis: for x being set st x in G |^ n holds
h1 . x = h2 . x

let x be set ; :: thesis: ( x in G |^ n implies h1 . x = h2 . x )
assume x in G |^ n ; :: thesis: h1 . x = h2 . x
hence h1 . x = h2 . x by A7; :: thesis: verum
end;
hence contradiction by A9, A12, A15, A16, Th1; :: thesis: verum
end;
A18: for n being Nat holds S1[n] from NAT_1:sch 2(A4, A6);
now :: thesis: for a being Element of A holds h1 . a = h2 . a
let a be Element of A; :: thesis: h1 . a = h2 . a
ex n being Nat st a in G |^ n by Th30;
hence h1 . a = h2 . a by A18; :: thesis: verum
end;
hence h1 = h2 by FUNCT_2:63; :: thesis: verum