deffunc H1( Element of S) -> Element of K6(K7((the Sorts of U1 . S),(the Sorts of U1 . S))) = id (the Sorts of U1 . S);
consider f being Function such that
A1:
( dom f = the carrier of S & ( for d being Element of S holds f . d = H1(d) ) )
from FUNCT_1:sch 4();
reconsider f = f as ManySortedSet of by A1, PARTFUN1:def 4, RELAT_1:def 18;
for x being set st x in dom f holds
f . x is Relation
then reconsider f = f as ManySortedRelation of by Def1;
for i being set st i in the carrier of S holds
f . i is Relation of (the Sorts of U1 . i),(the Sorts of U1 . i)
then reconsider f = f as ManySortedRelation of the Sorts of U1,the Sorts of U1 by Def2;
reconsider f = f as ManySortedRelation of U1 ;
for i being set
for R being Relation of (the Sorts of U1 . i) st i in the carrier of S & f . i = R holds
R is Equivalence_Relation of (the Sorts of U1 . i)
then
f is MSEquivalence_Relation-like
by Def3;
then reconsider f = f as MSEquivalence-like ManySortedRelation of U1 by Def5;
take
f
; :: thesis: f is MSCongruence-like
for o being OperSymbol of S
for x, y being Element of Args o,U1 st ( for n being Nat st n in dom x holds
[(x . n),(y . n)] in f . ((the_arity_of o) /. n) ) holds
[((Den o,U1) . x),((Den o,U1) . y)] in f . (the_result_sort_of o)
proof
let o be
OperSymbol of
S;
:: thesis: for x, y being Element of Args o,U1 st ( for n being Nat st n in dom x holds
[(x . n),(y . n)] in f . ((the_arity_of o) /. n) ) holds
[((Den o,U1) . x),((Den o,U1) . y)] in f . (the_result_sort_of o)let x,
y be
Element of
Args o,
U1;
:: thesis: ( ( for n being Nat st n in dom x holds
[(x . n),(y . n)] in f . ((the_arity_of o) /. n) ) implies [((Den o,U1) . x),((Den o,U1) . y)] in f . (the_result_sort_of o) )
assume A2:
for
n being
Nat st
n in dom x holds
[(x . n),(y . n)] in f . ((the_arity_of o) /. n)
;
:: thesis: [((Den o,U1) . x),((Den o,U1) . y)] in f . (the_result_sort_of o)
A3:
(
dom x = dom (the_arity_of o) &
dom y = dom (the_arity_of o) )
by MSUALG_3:6;
for
a being
set st
a in dom (the_arity_of o) holds
x . a = y . a
then A7:
(Den o,U1) . x = (Den o,U1) . y
by A3, FUNCT_1:9;
set r =
the_result_sort_of o;
A8:
f . (the_result_sort_of o) = id (the Sorts of U1 . (the_result_sort_of o))
by A1;
A10:
(
dom the
ResultSort of
S = the
carrier' of
S &
rng the
ResultSort of
S c= the
carrier of
S )
by FUNCT_2:def 1;
then A11:
dom (the Sorts of U1 * the ResultSort of S) = dom the
ResultSort of
S
by PARTFUN1:def 4;
Result o,
U1 =
(the Sorts of U1 * the ResultSort of S) . o
by MSUALG_1:def 10
.=
the
Sorts of
U1 . (the ResultSort of S . o)
by A10, A11, FUNCT_1:22
.=
the
Sorts of
U1 . (the_result_sort_of o)
by MSUALG_1:def 7
;
hence
[((Den o,U1) . x),((Den o,U1) . y)] in f . (the_result_sort_of o)
by A7, A8, RELAT_1:def 10;
:: thesis: verum
end;
hence
f is MSCongruence-like
by Def6; :: thesis: verum