reserve I,X,x,d,i for set;
reserve M for ManySortedSet of I;
reserve EqR1,EqR2 for Equivalence_Relation of X;
reserve I for non empty set;
reserve M for ManySortedSet of I;
reserve EqR,EqR1,EqR2,EqR3,EqR4 for Equivalence_Relation of M;
reserve S for non void non empty ManySortedSign;
reserve A for non-empty MSAlgebra over S;

theorem Th17:
  id (the Sorts of A) is MSCongruence of A
proof
  set J = id (the Sorts of A);
  for i be set st i in the carrier of S holds J.i is Relation of (the
  Sorts of A).i
  proof
    let i be set;
    assume i in the carrier of S;
    then J.i = id ((the Sorts of A).i) by MSUALG_3:def 1;
    hence thesis;
  end;
  then reconsider J as ManySortedRelation of the Sorts of A by MSUALG_4:def 1;
  for i be object, R be 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 object;
    let R be Relation of (the Sorts of A).i;
    assume that
A1: i in the carrier of S and
A2: J.i = R;
    J.i = id ((the Sorts of A).i) by A1,MSUALG_3:def 1;
    hence thesis by A2;
  end;
  then reconsider
  J as MSEquivalence_Relation-like ManySortedRelation of the Sorts
  of A by MSUALG_4:def 2;
  reconsider J as ManySortedRelation of A;
  reconsider J as MSEquivalence-like ManySortedRelation of A by MSUALG_4:def 3;
  for o be OperSymbol of S, x,y be Element of Args(o,A) st (for n be 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;
    let x,y be Element of Args(o,A) such that
A3: for n be Nat st n in dom x holds [x.n,y.n] in J.((the_arity_of o) /.n);
A4: dom y = dom (the_arity_of o) by MSUALG_3:6
      .= Seg len (the_arity_of o) by FINSEQ_1:def 3;
A5: dom x = dom (the_arity_of o) by MSUALG_3:6
      .= Seg len (the_arity_of o) by FINSEQ_1:def 3;
    then reconsider x9 = x, y9 = y as FinSequence by A4,FINSEQ_1:def 2;
    now
      let n be Nat such that
A6:   n in dom x;
      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 A3,A6;
      hence x9.n = y9.n by RELAT_1:def 10;
    end;
    then
A7: x = y by A5,A4,FINSEQ_1:13;
    Den(o,A).x in Result(o,A);
    then
A8: Den(o,A).x in ((the Sorts of A) * the ResultSort of S).o by MSUALG_1:def 5;
    o in the carrier' of S;
    then o in dom (the ResultSort of S) by FUNCT_2:def 1;
    then Den(o,A).x in (the Sorts of A).((the ResultSort of S).o) by A8,
FUNCT_1:13;
    then
A9: Den(o,A).x in (the Sorts of A).(the_result_sort_of o) by MSUALG_1:def 2;
    J.(the_result_sort_of o) = id ((the Sorts of A).(the_result_sort_of o
    ) ) by MSUALG_3:def 1;
    hence thesis by A7,A9,RELAT_1:def 10;
  end;
  hence thesis by MSUALG_4:def 4;
end;
