reserve a, I for set,
  S for non empty non void ManySortedSign;
reserve A, M for ManySortedSet of I,
  B, C for non-empty ManySortedSet of I;

theorem Th30:
  for A, B being non-empty MSAlgebra over S for F being
  ManySortedFunction of A, B st F is_homomorphism A, B holds MSHomQuot F **
  MSNat_Hom(A,MSCng F) = F
proof
  let A, B be non-empty MSAlgebra over S, F be ManySortedFunction of A, B such
  that
A1: F is_homomorphism A, B;
  now
    let i be object;
    assume i in the carrier of S;
    then reconsider s = i as SortSymbol of S;
    reconsider h = MSHomQuot(F,s) as Function of (Class MSCng F).s, (the Sorts
    of B).s;
    reconsider f = h * MSNat_Hom(A,MSCng F,s) as Function of (the Sorts of A).
    s, (the Sorts of B).s;
A2: for c being Element of (the Sorts of A).s holds f.c = F.s.c
    proof
      let c be Element of (the Sorts of A).s;
      thus f.c = h.((MSNat_Hom(A,MSCng F,s)).c) by FUNCT_2:15
        .= h.(Class((MSCng F).s,c)) by MSUALG_4:def 15
        .= h.(Class(MSCng(F,s),c)) by A1,MSUALG_4:def 18
        .= F.s.c by A1,MSUALG_4:def 19;
    end;
    thus (MSHomQuot F ** MSNat_Hom(A,MSCng F)).i = ((MSHomQuot F).s) * ((
    MSNat_Hom(A,MSCng F)).s) by MSUALG_3:2
      .= MSHomQuot(F,s) * ((MSNat_Hom(A,MSCng F)).s) by MSUALG_4:def 20
      .= MSHomQuot(F,s) * MSNat_Hom(A,MSCng F,s) by MSUALG_4:def 16
      .= F.i by A2,FUNCT_2:63;
  end;
  hence thesis;
end;
