let S be non empty non void ManySortedSign ; :: thesis: for A being non-empty MSAlgebra of S holds id the Sorts of A is MSCongruence of A
let A be non-empty MSAlgebra of S; :: thesis: id the Sorts of A is MSCongruence of A
set J = id the Sorts of A;
for i being set st i in the carrier of S holds
(id the Sorts of A) . i is Relation of (the Sorts of A . i)
proof
let i be set ; :: thesis: ( i in the carrier of S implies (id the Sorts of A) . i is Relation of (the Sorts of A . i) )
assume i in the carrier of S ; :: thesis: (id the Sorts of A) . i is Relation of (the Sorts of A . i)
then (id the Sorts of A) . i = id (the Sorts of A . i) by MSUALG_3:def 1;
hence (id the Sorts of A) . i is Relation of (the Sorts of A . i) ; :: thesis: verum
end;
then reconsider J = id the Sorts of A as ManySortedRelation of the Sorts of A by MSUALG_4:def 2;
for i being set
for R being Relation of (the Sorts of A . i) st i in the carrier of S & J . i = R holds
R is Equivalence_Relation of (the Sorts of A . i)
proof
let i be set ; :: thesis: for R being Relation of (the Sorts of A . i) st i in the carrier of S & J . i = R holds
R is Equivalence_Relation of (the Sorts of A . i)

let R be Relation of (the Sorts of A . i); :: thesis: ( i in the carrier of S & J . i = R implies R is Equivalence_Relation of (the Sorts of A . i) )
assume A1: ( i in the carrier of S & J . i = R ) ; :: thesis: R is Equivalence_Relation of (the Sorts of A . i)
then J . i = id (the Sorts of A . i) by MSUALG_3:def 1;
hence R is Equivalence_Relation of (the Sorts of A . i) by A1; :: thesis: verum
end;
then reconsider J = J as MSEquivalence_Relation-like ManySortedRelation of the Sorts of A by MSUALG_4:def 3;
reconsider J = J as ManySortedRelation of A ;
reconsider J = J as MSEquivalence-like ManySortedRelation of A by MSUALG_4:def 5;
for o being OperSymbol of S
for x, y being Element of Args o,A st ( for n being Nat st n in dom x holds
[(x . n),(y . n)] in J . ((the_arity_of o) /. n) ) holds
[((Den o,A) . x),((Den o,A) . y)] in J . (the_result_sort_of o)
proof
let o be OperSymbol of S; :: thesis: for x, y being Element of Args o,A st ( for n being Nat st n in dom x holds
[(x . n),(y . n)] in J . ((the_arity_of o) /. n) ) holds
[((Den o,A) . x),((Den o,A) . y)] in J . (the_result_sort_of o)

let x, y be Element of Args o,A; :: thesis: ( ( for n being Nat st n in dom x holds
[(x . n),(y . n)] in J . ((the_arity_of o) /. n) ) implies [((Den o,A) . x),((Den o,A) . y)] in J . (the_result_sort_of o) )

assume A2: for n being Nat st n in dom x holds
[(x . n),(y . n)] in J . ((the_arity_of o) /. n) ; :: thesis: [((Den o,A) . x),((Den o,A) . y)] in J . (the_result_sort_of o)
A3: dom x = dom (the_arity_of o) by MSUALG_3:6
.= Seg (len (the_arity_of o)) by FINSEQ_1:def 3 ;
A4: dom y = dom (the_arity_of o) by MSUALG_3:6
.= Seg (len (the_arity_of o)) by FINSEQ_1:def 3 ;
then reconsider x' = x, y' = y as FinSequence by A3, FINSEQ_1:def 2;
now
let n be Nat; :: thesis: ( n in dom x implies x' . n = y' . n )
assume A5: n in dom x ; :: thesis: x' . n = y' . n
J . ((the_arity_of o) /. n) = id (the Sorts of A . ((the_arity_of o) /. n)) by MSUALG_3:def 1;
then [(x . n),(y . n)] in id (the Sorts of A . ((the_arity_of o) /. n)) by A2, A5;
hence x' . n = y' . n by RELAT_1:def 10; :: thesis: verum
end;
then A6: x = y by A3, A4, FINSEQ_1:17;
o in the carrier' of S ;
then A7: o in dom the ResultSort of S by FUNCT_2:def 1;
(Den o,A) . x in Result o,A ;
then (Den o,A) . x in (the Sorts of A * the ResultSort of S) . o by MSUALG_1:def 10;
then (Den o,A) . x in the Sorts of A . (the ResultSort of S . o) by A7, FUNCT_1:23;
then A8: (Den o,A) . x in the Sorts of A . (the_result_sort_of o) by MSUALG_1:def 7;
J . (the_result_sort_of o) = id (the Sorts of A . (the_result_sort_of o)) by MSUALG_3:def 1;
hence [((Den o,A) . x),((Den o,A) . y)] in J . (the_result_sort_of o) by A6, A8, RELAT_1:def 10; :: thesis: verum
end;
hence id the Sorts of A is MSCongruence of A by MSUALG_4:def 6; :: thesis: verum