let S be non empty non void ManySortedSign ; for X0 being V5() countable ManySortedSet of S
for A0 being b1,S -terms MSAlgebra over S
for h being ManySortedFunction of (Free (S,X0)),A0 st h is_homomorphism Free (S,X0),A0 holds
ex g being ManySortedFunction of A0,A0 st
( g is_homomorphism A0,A0 & h = g ** (canonical_homomorphism A0) )
let X0 be V5() countable ManySortedSet of S; for A0 being X0,S -terms MSAlgebra over S
for h being ManySortedFunction of (Free (S,X0)),A0 st h is_homomorphism Free (S,X0),A0 holds
ex g being ManySortedFunction of A0,A0 st
( g is_homomorphism A0,A0 & h = g ** (canonical_homomorphism A0) )
let A0 be X0,S -terms MSAlgebra over S; for h being ManySortedFunction of (Free (S,X0)),A0 st h is_homomorphism Free (S,X0),A0 holds
ex g being ManySortedFunction of A0,A0 st
( g is_homomorphism A0,A0 & h = g ** (canonical_homomorphism A0) )
set A = A0;
let h be ManySortedFunction of (Free (S,X0)),A0; ( h is_homomorphism Free (S,X0),A0 implies ex g being ManySortedFunction of A0,A0 st
( g is_homomorphism A0,A0 & h = g ** (canonical_homomorphism A0) ) )
assume A1:
h is_homomorphism Free (S,X0),A0
; ex g being ManySortedFunction of A0,A0 st
( g is_homomorphism A0,A0 & h = g ** (canonical_homomorphism A0) )
set ww = canonical_homomorphism A0;
reconsider H = FreeGen X0 as GeneratorSet of Free (S,X0) by Th44;
reconsider G = FreeGen X0 as GeneratorSet of A0 by Th44;
A2:
now for s being SortSymbol of S
for i being Element of X0 . s holds ((canonical_homomorphism A0) . s) . (root-tree [i,s]) = root-tree [i,s]let s be
SortSymbol of
S;
for i being Element of X0 . s holds ((canonical_homomorphism A0) . s) . (root-tree [i,s]) = root-tree [i,s]let i be
Element of
X0 . s;
((canonical_homomorphism A0) . s) . (root-tree [i,s]) = root-tree [i,s]
root-tree [i,s] in FreeGen (
s,
X0)
by MSAFREE:def 15;
then A3:
root-tree [i,s] in H . s
by MSAFREE:def 16;
G c= the
Sorts of
A0
by PBOOLE:def 18;
then
H . s c= the
Sorts of
A0 . s
;
hence
((canonical_homomorphism A0) . s) . (root-tree [i,s]) = root-tree [i,s]
by A3, Th46;
verum end;
then A4:
( canonical_homomorphism A0 is_homomorphism Free (S,X0),A0 & ( for s being SortSymbol of S
for i being Element of X0 . s holds ((canonical_homomorphism A0) . s) . (root-tree [i,s]) = root-tree [i,s] ) )
by Def7;
reconsider hG = h || H as ManySortedFunction of G, the Sorts of A0 ;
consider g being ManySortedFunction of A0,A0 such that
A5:
( g is_homomorphism A0,A0 & g || G = hG )
by Def6;
take
g
; ( g is_homomorphism A0,A0 & h = g ** (canonical_homomorphism A0) )
thus
g is_homomorphism A0,A0
by A5; h = g ** (canonical_homomorphism A0)
A6:
g ** (canonical_homomorphism A0) is_homomorphism Free (S,X0),A0
by A4, A5, MSUALG_3:10;
now for x being object st x in the carrier of S holds
(h || H) . x = ((g ** (canonical_homomorphism A0)) || H) . xlet x be
object ;
( x in the carrier of S implies (h || H) . x = ((g ** (canonical_homomorphism A0)) || H) . x )assume
x in the
carrier of
S
;
(h || H) . x = ((g ** (canonical_homomorphism A0)) || H) . xthen reconsider s =
x as
SortSymbol of
S ;
A7:
(
dom ((h || H) . s) = H . s &
dom (((g ** (canonical_homomorphism A0)) || H) . s) = H . s )
by FUNCT_2:def 1;
now for y being object st y in H . s holds
((h || H) . x) . y = (((g ** (canonical_homomorphism A0)) || H) . x) . ylet y be
object ;
( y in H . s implies ((h || H) . x) . y = (((g ** (canonical_homomorphism A0)) || H) . x) . y )assume A8:
y in H . s
;
((h || H) . x) . y = (((g ** (canonical_homomorphism A0)) || H) . x) . ythen
y in FreeGen (
s,
X0)
by MSAFREE:def 16;
then consider z being
set such that A9:
(
z in X0 . s &
y = root-tree [z,s] )
by MSAFREE:def 15;
A10:
((canonical_homomorphism A0) . s) . y = root-tree [z,s]
by A2, A9;
then
((canonical_homomorphism A0) . s) . y in FreeGen (
s,
X0)
by A9, MSAFREE:def 15;
then A11:
((canonical_homomorphism A0) . s) . y in G . s
by MSAFREE:def 16;
A12:
H . s c= the
Sorts of
(Free (S,X0)) . s
by PBOOLE:def 2, PBOOLE:def 18;
A13:
dom (g ** (canonical_homomorphism A0)) = the
carrier of
S /\ the
carrier of
S
by PARTFUN1:def 2;
thus ((h || H) . x) . y =
((g . s) | (G . s)) . (((canonical_homomorphism A0) . s) . y)
by A9, A10, A5, MSAFREE:def 1
.=
(g . s) . (((canonical_homomorphism A0) . s) . y)
by A11, FUNCT_1:49
.=
((g . s) * ((canonical_homomorphism A0) . s)) . y
by A8, A12, FUNCT_2:15
.=
((g ** (canonical_homomorphism A0)) . s) . y
by A13, PBOOLE:def 19
.=
(((g ** (canonical_homomorphism A0)) . s) | (H . s)) . y
by A8, FUNCT_1:49
.=
(((g ** (canonical_homomorphism A0)) || H) . x) . y
by MSAFREE:def 1
;
verum end; hence
(h || H) . x = ((g ** (canonical_homomorphism A0)) || H) . x
by A7;
verum end;
hence
h = g ** (canonical_homomorphism A0)
by A1, A6, EXTENS_1:19, PBOOLE:3; verum