reserve A for non empty set,
  S for non void non empty ManySortedSign;
reserve x for set;
reserve o for OperSymbol of S;

theorem
  for x be MSAlgebra over S st x in MSAlg_set (S,A) holds the Sorts
  of x in Funcs (the carrier of S, bool A) & the Charact of x in Funcs (the
  carrier' of S,PFuncs(PFuncs (NAT ,A),A))
proof
  let x be MSAlgebra over S;
  assume x in MSAlg_set (S,A);
  then consider M be strict feasible MSAlgebra over S such that
A1: x = M and
A2: for C be Component of the Sorts of M holds C c= A by Def2;
A3: dom the Sorts of M = the carrier of S by PARTFUN1:def 2;
  then reconsider SM = the Sorts of M as Function of the carrier of S, rng the
  Sorts of M by FUNCT_2:1;
A4: rng the Sorts of M c= bool A
  proof
    let x be object;
    assume x in rng the Sorts of M;
    then reconsider x9 = x as Component of the Sorts of M;
    x9 c= A by A2;
    hence thesis;
  end;
  then reconsider SM9 = SM as Function of the carrier of S, bool A by FUNCT_2:6
;
A5: dom the Charact of M = the carrier' of S by PARTFUN1:def 2;
A6: rng the Charact of M c= PFuncs(PFuncs (NAT,A),A)
  proof
    reconsider SA = (the Sorts of M)# * the Arity of S, SR = (the Sorts of M)
    * the ResultSort of S as ManySortedSet of the carrier' of S;
    let x be object;
    reconsider CM = the Charact of M as ManySortedFunction of SA,SR;
    assume x in rng the Charact of M;
    then consider x1 be object such that
A7: x1 in dom the Charact of M and
A8: x = (the Charact of M).x1 by FUNCT_1:def 3;
    reconsider Cm = CM.x1 as Function of SA.x1, SR.x1 by A7,PBOOLE:def 15;
A9: x1 in dom SA by A5,A7,PARTFUN1:def 2;
    SA.x1 c= PFuncs (NAT ,A)
    proof
      reconsider AX = (the Arity of S).x1 as Element of (the carrier of S)*
            by A7,FUNCT_2:5;
      let a be object;
      assume a in SA.x1;
      then
A10:  a in ((the Sorts of M)# ).((the Arity of S).x1) by A9,FUNCT_1:12;
      ((the Sorts of M)# ).AX = product ( (the Sorts of M) * AX) by
FINSEQ_2:def 5;
      then
A11:  ex g be Function st a = g & dom g = dom ( (the Sorts of M ) * AX) &
for x2 be object st x2 in dom ((the Sorts of M) * AX)
holds g.x2 in (( the Sorts
      of M) * AX).x2 by A10,CARD_3:def 5;
      then reconsider a9=a as Function;
  rng AX c= dom the Sorts of M by A3;
      then
A12:  dom a9 = dom AX by A11,RELAT_1:27;
      rng a9 c= A
      proof
        rng the Sorts of M c= bool A
        proof
          let w be object;
          assume w in rng the Sorts of M;
          then reconsider w9=w as Component of the Sorts of M;
          w9 c= A by A2;
          hence thesis;
        end;
        then
A13:    union rng the Sorts of M c= union bool A by ZFMISC_1:77;
        let r be object;
        assume r in rng a9;
        then consider r1 be object such that
A14:    r1 in dom a9 and
A15:    r = a9.r1 by FUNCT_1:def 3;
        AX.r1 in rng AX by A12,A14,FUNCT_1:def 3;
        then
A16:    (the Sorts of M).(AX.r1) in rng the Sorts of M by A3,FUNCT_1:def 3;
        r in ((the Sorts of M) * AX).r1 by A11,A14,A15;
        then r in (the Sorts of M).(AX.r1) by A12,A14,FUNCT_1:13;
        then r in union rng the Sorts of M by A16,TARSKI:def 4;
        then r in union bool A by A13;
        hence thesis by ZFMISC_1:81;
      end;
      hence thesis by A11,PARTFUN1:def 3;
    end;
    then
A17: dom Cm c= PFuncs(NAT,A);
    x1 in dom SR by A5,A7,PARTFUN1:def 2;
    then
A18: SR.x1 = (the Sorts of M).((the ResultSort of S).x1) by FUNCT_1:12;
    (the ResultSort of S).x1 in the carrier of S by A7,FUNCT_2:5;
    then SR.x1 in rng (the Sorts of M) by A3,A18,FUNCT_1:def 3;
    then rng Cm c= A by A4,XBOOLE_1:1;
    hence thesis by A8,A17,PARTFUN1:def 3;
  end;
  SM9 in Funcs (the carrier of S, bool A) by FUNCT_2:8;
  hence thesis by A1,A5,A6,FUNCT_2:def 2;
end;
