set x = the set ;
reconsider A = { the set } as non empty set ;
set a = the Element of A;
reconsider w = (<*> A) .--> the Element of A as Element of PFuncs ((A *),A) by MARGREL1:19;
reconsider ww = <*w*> as PFuncFinSequence of A ;
set U0 = UAStr(# A,ww #);
A1: ( the charact of UAStr(# A,ww #) is quasi_total & the charact of UAStr(# A,ww #) is homogeneous ) by MARGREL1:20;
A2: the charact of UAStr(# A,ww #) is non-empty by MARGREL1:20;
A3: len the charact of UAStr(# A,ww #) = 1 by FINSEQ_1:39;
reconsider U0 = UAStr(# A,ww #) as Universal_Algebra by A1, A2, UNIALG_1:def 1, UNIALG_1:def 2, UNIALG_1:def 3;
A4: dom the charact of U0 = {1} by A3, FINSEQ_1:2, FINSEQ_1:def 3;
1 in {1} by TARSKI:def 1;
then reconsider o0 = the charact of U0 . 1 as operation of U0 by A4, FUNCT_1:def 3;
take U0 ; :: thesis: ( U0 is free & U0 is strict )
A5: GenUnivAlg ({} the carrier of U0) = U0
proof
set P = {} the carrier of U0;
reconsider B = the carrier of (GenUnivAlg ({} the carrier of U0)) as non empty Subset of U0 by UNIALG_2:def 7;
A6: dom the charact of U0 = dom (Opers (U0,B)) by UNIALG_2:def 6;
A7: B = the carrier of U0 by ZFMISC_1:33;
for n being Nat st n in dom the charact of U0 holds
the charact of U0 . n = (Opers (U0,B)) . n
proof
let n be Nat; :: thesis: ( n in dom the charact of U0 implies the charact of U0 . n = (Opers (U0,B)) . n )
assume A8: n in dom the charact of U0 ; :: thesis: the charact of U0 . n = (Opers (U0,B)) . n
then reconsider o = the charact of U0 . n as operation of U0 by FUNCT_1:def 3;
(Opers (U0,B)) . n = o /. B by A6, A8, UNIALG_2:def 6;
hence the charact of U0 . n = (Opers (U0,B)) . n by A7, UNIALG_2:4; :: thesis: verum
end;
then the charact of U0 = Opers (U0,B) by A6, FINSEQ_1:13
.= the charact of (GenUnivAlg ({} the carrier of U0)) by UNIALG_2:def 7 ;
hence GenUnivAlg ({} the carrier of U0) = U0 by A7; :: thesis: verum
end;
A10: dom o0 = {(<*> A)} by FUNCOP_1:13;
now :: thesis: ( ex x being FinSequence st x in dom o0 & ( for x being FinSequence st x in dom o0 holds
len x = 0 ) )
<*> A in dom o0 by A10, TARSKI:def 1;
hence ex x being FinSequence st x in dom o0 ; :: thesis: for x being FinSequence st x in dom o0 holds
len x = 0

let x be FinSequence; :: thesis: ( x in dom o0 implies len x = 0 )
assume x in dom o0 ; :: thesis: len x = 0
then x = <*> A by A10, TARSKI:def 1;
hence len x = 0 ; :: thesis: verum
end;
then A11: arity o0 = 0 by MARGREL1:def 25;
A12: {} in {(<*> A)} by TARSKI:def 1;
then o0 . (<*> A) = the Element of A by FUNCOP_1:7;
then the Element of A in rng o0 by A10, A12, FUNCT_1:def 3;
then the Element of A in Constants U0 by A11;
then reconsider G = {} the carrier of U0 as GeneratorSet of U0 by A5, Lm3;
now :: thesis: ex G being GeneratorSet of U0 st G is free
take G = G; :: thesis: G is free
now :: thesis: for U1 being Universal_Algebra st U0,U1 are_similar holds
for f being Function of G, the carrier of U1 ex h being Function of U0,U1 st
( h is_homomorphism & h | G = f )
let U1 be Universal_Algebra; :: thesis: ( U0,U1 are_similar implies for f being Function of G, the carrier of U1 ex h being Function of U0,U1 st
( h is_homomorphism & h | G = f ) )

A13: 1 in {1} by TARSKI:def 1;
assume A14: U0,U1 are_similar ; :: thesis: for f being Function of G, the carrier of U1 ex h being Function of U0,U1 st
( h is_homomorphism & h | G = f )

then A15: signature U0 = signature U1 ;
len the charact of U1 = 1 by A3, A14, UNIALG_2:1;
then dom the charact of U1 = {1} by FINSEQ_1:2, FINSEQ_1:def 3;
then reconsider o1 = the charact of U1 . 1 as operation of U1 by A13, FUNCT_1:def 3;
A16: rng o1 c= the carrier of U1 by RELAT_1:def 19;
let f be Function of G, the carrier of U1; :: thesis: ex h being Function of U0,U1 st
( h is_homomorphism & h | G = f )

consider aa being object such that
A17: aa in dom o1 by XBOOLE_0:def 1;
o1 . aa in rng o1 by A17, FUNCT_1:def 3;
then reconsider u1 = o1 . aa as Element of U1 by A16;
reconsider h = the carrier of U0 --> u1 as Function of U0,U1 ;
take h = h; :: thesis: ( h is_homomorphism & h | G = f )
A18: ( len (signature U0) = len the charact of U0 & dom (signature U0) = Seg (len (signature U0)) ) by FINSEQ_1:def 3, UNIALG_1:def 4;
then (signature U0) . 1 = arity o0 by A3, A13, FINSEQ_1:2, UNIALG_1:def 4;
then A19: arity o0 = arity o1 by A3, A13, A15, A18, FINSEQ_1:2, UNIALG_1:def 4;
now :: thesis: for n being Nat st n in dom the charact of U0 holds
for 0o being operation of U0
for 1o being operation of U1 st 0o = the charact of U0 . n & 1o = the charact of U1 . n holds
for y being FinSequence of U0 st y in dom 0o holds
h . (0o . y) = 1o . (h * y)
let n be Nat; :: thesis: ( n in dom the charact of U0 implies for 0o being operation of U0
for 1o being operation of U1 st 0o = the charact of U0 . n & 1o = the charact of U1 . n holds
for y being FinSequence of U0 st y in dom 0o holds
h . (0o . y) = 1o . (h * y) )

assume n in dom the charact of U0 ; :: thesis: for 0o being operation of U0
for 1o being operation of U1 st 0o = the charact of U0 . n & 1o = the charact of U1 . n holds
for y being FinSequence of U0 st y in dom 0o holds
h . (0o . y) = 1o . (h * y)

then A20: n = 1 by A4, TARSKI:def 1;
let 0o be operation of U0; :: thesis: for 1o being operation of U1 st 0o = the charact of U0 . n & 1o = the charact of U1 . n holds
for y being FinSequence of U0 st y in dom 0o holds
h . (0o . y) = 1o . (h * y)

let 1o be operation of U1; :: thesis: ( 0o = the charact of U0 . n & 1o = the charact of U1 . n implies for y being FinSequence of U0 st y in dom 0o holds
h . (0o . y) = 1o . (h * y) )

assume that
A21: 0o = the charact of U0 . n and
A22: 1o = the charact of U1 . n ; :: thesis: for y being FinSequence of U0 st y in dom 0o holds
h . (0o . y) = 1o . (h * y)

let y be FinSequence of U0; :: thesis: ( y in dom 0o implies h . (0o . y) = 1o . (h * y) )
assume A23: y in dom 0o ; :: thesis: h . (0o . y) = 1o . (h * y)
then y = <*> the carrier of U0 by A10, A20, A21, TARSKI:def 1;
then A24: h * y = <*> the carrier of U1 ;
dom 1o = 0 -tuples_on the carrier of U1 by A11, A19, A20, A22, MARGREL1:22
.= {(<*> the carrier of U1)} by FINSEQ_2:94 ;
then A25: 1o . (h * y) = u1 by A17, A20, A22, A24, TARSKI:def 1;
A26: rng 0o c= the carrier of U0 by RELAT_1:def 19;
0o . y in rng 0o by A23, FUNCT_1:def 3;
hence h . (0o . y) = 1o . (h * y) by A25, A26, FUNCOP_1:7; :: thesis: verum
end;
hence h is_homomorphism by A14, ALG_1:def 1; :: thesis: h | G = f
f = {} ;
hence h | G = f ; :: thesis: verum
end;
hence G is free ; :: thesis: verum
end;
hence ( U0 is free & U0 is strict ) ; :: thesis: verum