Lm1: 
now    for S being   non  empty   non  void   ManySortedSign 
  for U1, U2 being    MSAlgebra over S
  for o being   OperSymbol of S
  for F being   ManySortedFunction of U1,U2
  for x being    Element of  Args (o,U1)
  for f, u being   Function  st f = x & x in  Args (o,U1) & u in  Args (o,U2) holds 
( ( u = F # x implies  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) & ( (  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) implies u = F # x ) )
let S be   non  
empty   non  
void   ManySortedSign ; 
  for U1, U2 being    MSAlgebra over S
  for o being   OperSymbol of S
  for F being   ManySortedFunction of U1,U2
  for x being    Element of  Args (o,U1)
  for f, u being   Function  st f = x & x in  Args (o,U1) & u in  Args (o,U2) holds 
( ( u = F # x implies  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) & ( (  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) implies u = F # x ) )let U1, 
U2 be    
MSAlgebra over 
S; 
  for o being   OperSymbol of S
  for F being   ManySortedFunction of U1,U2
  for x being    Element of  Args (o,U1)
  for f, u being   Function  st f = x & x in  Args (o,U1) & u in  Args (o,U2) holds 
( ( u = F # x implies  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) & ( (  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) implies u = F # x ) )let o be   
OperSymbol of 
S; 
  for F being   ManySortedFunction of U1,U2
  for x being    Element of  Args (o,U1)
  for f, u being   Function  st f = x & x in  Args (o,U1) & u in  Args (o,U2) holds 
( ( u = F # x implies  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) & ( (  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) implies u = F # x ) )let F be   
ManySortedFunction of 
U1,
U2; 
  for x being    Element of  Args (o,U1)
  for f, u being   Function  st f = x & x in  Args (o,U1) & u in  Args (o,U2) holds 
( ( u = F # x implies  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) & ( (  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) implies u = F # x ) )let x be    
Element of  
Args (
o,
U1); 
  for f, u being   Function  st f = x & x in  Args (o,U1) & u in  Args (o,U2) holds 
( ( u = F # x implies  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) & ( (  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) implies u = F # x ) )let f, 
u be   
Function; 
 ( f = x & x in  Args (o,U1) & u in  Args (o,U2) implies ( ( u = F # x implies  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) & ( (  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) implies u = F # x ) ) )assume that A1: 
f = x
 and A2: 
x in  Args (
o,
U1)
 
and A3: 
u in  Args (
o,
U2)
 ; 
 ( ( u = F # x implies  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) & ( (  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) implies u = F # x ) )A4: 
 
rng (the_arity_of o) c=  the 
carrier of 
S
 by FINSEQ_1:def 4;
A6: 
F # x = (Frege (F * (the_arity_of o))) . x
 by A2, A3, Def5;
A7: 
 
dom ( the Sorts of U1 * (the_arity_of o)) =  dom (F * (the_arity_of o))
 
A11: 
 
Args (
o,
U2) 
=  product ( the Sorts of U2 * (the_arity_of o))
 by PRALG_2:3;
then A12: 
 
dom u =  dom ( the Sorts of U2 * (the_arity_of o))
 by A3, CARD_3:9;
A13: 
 
Args (
o,
U1) 
=  product ( the Sorts of U1 * (the_arity_of o))
 by PRALG_2:3;
A14: 
 
dom f =  dom (the_arity_of o)
 by A1, A2, Th6;
 rng (the_arity_of o) c=  dom  the 
Sorts of 
U2
 by A4, PARTFUN1:def 2;
then A15: 
 
dom u =  dom (the_arity_of o)
 by A12, RELAT_1:27;
set tao =  
the_arity_of o;
now    for e being    object   st e in  dom (F * (the_arity_of o)) holds 
( the Sorts of U1 * (the_arity_of o)) . e =  proj1 ((F * (the_arity_of o)) . e)
let e be    
object ; 
 ( e in  dom (F * (the_arity_of o)) implies ( the Sorts of U1 * (the_arity_of o)) . e =  proj1 ((F * (the_arity_of o)) . e) )assume 
e in  dom (F * (the_arity_of o))
 ; 
 ( the Sorts of U1 * (the_arity_of o)) . e =  proj1 ((F * (the_arity_of o)) . e)then A16: 
e in  dom (the_arity_of o)
 by FUNCT_1:11;
then reconsider Foe = 
F . ((the_arity_of o) . e) as   
Function of 
( the Sorts of U1 . ((the_arity_of o) . e)),
( the Sorts of U2 . ((the_arity_of o) . e)) by FINSEQ_2:11, PBOOLE:def 15;
( the Sorts of U2 * (the_arity_of o)) . e in  rng ( the Sorts of U2 * (the_arity_of o))
 by A12, A15, A16, FUNCT_1:def 3;
then A17: 
( the Sorts of U2 * (the_arity_of o)) . e <>  {} 
 by A3, A11, CARD_3:26;
( 
( the Sorts of U1 * (the_arity_of o)) . e =  the 
Sorts of 
U1 . ((the_arity_of o) . e) & 
( the Sorts of U2 * (the_arity_of o)) . e =  the 
Sorts of 
U2 . ((the_arity_of o) . e) )
 
by A16, FUNCT_1:13;
hence ( the Sorts of U1 * (the_arity_of o)) . e = 
 
dom Foe
by A17, FUNCT_2:def 1
.= 
 
proj1 ((F * (the_arity_of o)) . e)
by A16, FUNCT_1:13
; 
 verum
 
end;
 
then A18: 
 the 
Sorts of 
U1 * (the_arity_of o) =  doms (F * (the_arity_of o))
 by A7, FUNCT_6:def 2;
hereby   ( (  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n) ) implies u = F # x )
assume 
u = F # x
 ; 
  for n being   Nat  st n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n)then A19: 
u = (Frege (F * (the_arity_of o))) . x
 by A2, A3, Def5;
let n be   
Nat; 
 ( n in  dom f implies u . n = (F . ((the_arity_of o) /. n)) . (f . n) )assume A20: 
n in  dom f
 ; 
 u . n = (F . ((the_arity_of o) /. n)) . (f . n)then 
(the_arity_of o) . n in  the 
carrier of 
S
 by A14, FINSEQ_2:11;
then 
(the_arity_of o) . n in  dom F
 by PARTFUN1:def 2;
then A21: 
n in  dom (F * (the_arity_of o))
 by A14, A20, FUNCT_1:11;
then 
n in (dom (F * (the_arity_of o))) /\ (dom f)
 by A20, XBOOLE_0:def 4;
then a21: 
n in  dom ((F * (the_arity_of o)) .. f)
 by PRALG_1:def 19;
A22: 
(F * (the_arity_of o)) . n = 
F . ((the_arity_of o) . n)
by FUNCT_1:12, A21
.= 
F . ((the_arity_of o) /. n)
by A14, A20, PARTFUN1:def 6
;
thus u . n = 
((F * (the_arity_of o)) .. f) . n
by A1, A2, A13, A18, A19, PRALG_2:def 2
.= 
(F . ((the_arity_of o) /. n)) . (f . n)
by A22, PRALG_1:def 19, a21
; 
 verum
 
end;
 
F # x is    
Element of  
product ( the Sorts of U2 * (the_arity_of o))
 by PRALG_2:3;
then reconsider g = 
F # x as   
Function ;
A23: 
 
rng (the_arity_of o) c=  dom F
 by A4, PARTFUN1:def 2;
assume A24: 
 for 
n being   
Nat  st 
n in  dom f holds 
u . n = (F . ((the_arity_of o) /. n)) . (f . n)
 ; 
 u = F # x
A25: 
now    for e being    object   st e in  dom f holds 
u . e = g . e
let e be    
object ; 
 ( e in  dom f implies u . e = g . e )assume A26: 
e in  dom f
 ; 
 u . e = g . ethen reconsider n = 
e as   
Nat by A14;
(the_arity_of o) . n in  the 
carrier of 
S
 by A14, A26, FINSEQ_2:11;
then 
(the_arity_of o) . n in  dom F
 by PARTFUN1:def 2;
then A27: 
n in  dom (F * (the_arity_of o))
 by A14, A26, FUNCT_1:11;
then 
n in (dom (F * (the_arity_of o))) /\ (dom f)
 by A26, XBOOLE_0:def 4;
then a27: 
n in  dom ((F * (the_arity_of o)) .. f)
 by PRALG_1:def 19;
A28: 
(F * (the_arity_of o)) . n = 
F . ((the_arity_of o) . n)
by FUNCT_1:12, A27
.= 
F . ((the_arity_of o) /. n)
by A14, A26, PARTFUN1:def 6
;
thus u . e = 
(F . ((the_arity_of o) /. n)) . (f . n)
by A24, A26
.= 
((F * (the_arity_of o)) .. f) . n
by a27, A28, PRALG_1:def 19
.= 
g . e
by A1, A2, A13, A18, A6, PRALG_2:def 2
; 
 verum
 
end;
 
 dom f =  dom (the_arity_of o)
 by A1, A2, Th6;
F # x = (F * (the_arity_of o)) .. f
 by A1, A2, A13, A18, A6, PRALG_2:def 2;
then  dom g = 
(dom (F * (the_arity_of o))) /\ (dom f)
by PRALG_1:def 19
.= 
(dom (the_arity_of o)) /\ (dom f)
by A23, RELAT_1:27
;
hence 
u = F # x
 by A14, A15, A25, FUNCT_1:2; 
 verum
 
end;
 
Lm2: 
 for S being   non  empty   non  void   ManySortedSign 
  for U1, U2 being   non-empty   MSAlgebra over S
  for H being   ManySortedFunction of U1,U2  st H is_isomorphism U1,U2 holds 
H ""  is_homomorphism U2,U1
 
Lm3: 
 for S being   non  empty   non  void   ManySortedSign 
  for U1, U2 being   non-empty   MSAlgebra over S
  for F being   ManySortedFunction of U1,U2  st F is_homomorphism U1,U2 holds 
F is   ManySortedFunction of U1,(Image F)
 
Lm4: 
 for S being   non  empty   non  void   ManySortedSign 
  for U1, U2 being   non-empty   MSAlgebra over S
  for U3 being   non-empty   MSSubAlgebra of U2
  for F being   ManySortedFunction of U1,U2
  for G being   ManySortedFunction of U1,U3  st F = G & G is_homomorphism U1,U3 holds 
F is_homomorphism U1,U2