begin
begin
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 x = f & 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 x = f & 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 x = f & 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 x = f & 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 x = f & 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 x = f & 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;
( x = f & 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:
x = f
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;
then A5:
rng (the_arity_of o) c= dom the
Sorts of
U1
by PARTFUN1:def 2;
A6:
F # x = (Frege (F * (the_arity_of o))) . x
by A2, A3, Def5;
A7:
dom ( the Sorts of U1 * (the_arity_of o)) = (F * (the_arity_of o)) " (SubFuncs (rng (F * (the_arity_of o))))
A12:
Args (
o,
U2)
= product ( the Sorts of U2 * (the_arity_of o))
by PRALG_2:3;
then A13:
dom u = dom ( the Sorts of U2 * (the_arity_of o))
by A3, CARD_3:9;
A14:
Args (
o,
U1)
= product ( the Sorts of U1 * (the_arity_of o))
by PRALG_2:3;
then A15:
dom f =
dom ( the Sorts of U1 * (the_arity_of o))
by A1, A2, CARD_3:9
.=
dom (the_arity_of o)
by A5, RELAT_1:27
;
rng (the_arity_of o) c= dom the
Sorts of
U2
by A4, PARTFUN1:def 2;
then A16:
dom u = dom (the_arity_of o)
by A13, RELAT_1:27;
now for e being set st e in (F * (the_arity_of o)) " (SubFuncs (rng (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
set ;
( e in (F * (the_arity_of o)) " (SubFuncs (rng (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 (F * (the_arity_of o)) " (SubFuncs (rng (F * (the_arity_of o))))
;
( the Sorts of U1 * (the_arity_of o)) . e = proj1 ((F * (the_arity_of o)) . e)then
e in dom (F * (the_arity_of o))
by FUNCT_6:19;
then A17:
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 A13, A16, A17, FUNCT_1:def 3;
then A18:
( the Sorts of U2 * (the_arity_of o)) . e <> {}
by A3, A12, 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 A17, FUNCT_1:13;
hence ( the Sorts of U1 * (the_arity_of o)) . e =
dom Foe
by A18, FUNCT_2:def 1
.=
proj1 Foe
.=
proj1 ((F * (the_arity_of o)) . e)
by A17, FUNCT_1:13
;
verum
end;
then A19:
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 A20:
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 A21:
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 A15, FINSEQ_2:11;
then
(the_arity_of o) . n in dom F
by PARTFUN1:def 2;
then A22:
n in dom (F * (the_arity_of o))
by A15, A21, FUNCT_1:11;
then A23:
(F * (the_arity_of o)) . n =
F . ((the_arity_of o) . n)
by FUNCT_1:12
.=
F . ((the_arity_of o) /. n)
by A15, A21, PARTFUN1:def 6
;
thus u . n =
((F * (the_arity_of o)) .. f) . n
by A1, A2, A14, A19, A20, PRALG_2:def 2
.=
(F . ((the_arity_of o) /. n)) . (f . n)
by A22, A23, PRALG_1:def 17
;
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 ;
A24:
rng (the_arity_of o) c= dom F
by A4, PARTFUN1:def 2;
assume A25:
for
n being
Nat st
n in dom f holds
u . n = (F . ((the_arity_of o) /. n)) . (f . n)
;
u = F # x
A26:
now for e being set st e in dom f holds
u . e = g . e
let e be
set ;
( e in dom f implies u . e = g . e )assume A27:
e in dom f
;
u . e = g . ethen reconsider n =
e as
Nat by A15;
(the_arity_of o) . n in the
carrier of
S
by A15, A27, FINSEQ_2:11;
then
(the_arity_of o) . n in dom F
by PARTFUN1:def 2;
then A28:
n in dom (F * (the_arity_of o))
by A15, A27, FUNCT_1:11;
then A29:
(F * (the_arity_of o)) . n =
F . ((the_arity_of o) . n)
by FUNCT_1:12
.=
F . ((the_arity_of o) /. n)
by A15, A27, PARTFUN1:def 6
;
thus u . e =
(F . ((the_arity_of o) /. n)) . (f . n)
by A25, A27
.=
((F * (the_arity_of o)) .. f) . n
by A28, A29, PRALG_1:def 17
.=
g . e
by A1, A2, A14, A19, A6, PRALG_2:def 2
;
verum
end;
F # x = (F * (the_arity_of o)) .. f
by A1, A2, A14, A19, A6, PRALG_2:def 2;
then dom g =
dom (F * (the_arity_of o))
by PRALG_1:def 17
.=
dom f
by A15, A24, RELAT_1:27
;
hence
u = F # x
by A15, A16, A26, 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