reserve x,y for object;
reserve S for non void non empty ManySortedSign,
  o for OperSymbol of S,
  U0,U1, U2 for MSAlgebra over S;

theorem
  for S be non void all-with_const_op non empty ManySortedSign, U0 be
  non-empty MSAlgebra over S, U1,U2 be non-empty MSSubAlgebra of U0 holds (the
  Sorts of U1) (/\) (the Sorts of U2) is non-empty
proof
  let S be non void all-with_const_op non empty ManySortedSign, U0 be
  non-empty MSAlgebra over S, U1,U2 be non-empty MSSubAlgebra of U0;
  Constants(U0) is non-empty MSSubset of U2 by Th10;
  then
A1: Constants(U0)c=the Sorts of U2 by PBOOLE:def 18;
  Constants(U0) is non-empty MSSubset of U1 by Th10;
  then Constants(U0)c=the Sorts of U1 by PBOOLE:def 18;
  then
A2: (Constants(U0)) (/\) (Constants(U0))
     c= (the Sorts of U1) (/\) (the Sorts of U2) by A1,PBOOLE:21;
  now
    let i be object;
    assume i in the carrier of S;
    then reconsider s = i as SortSymbol of S;
    ((the Sorts of U1) (/\) (the Sorts of U2)).s = ((the Sorts of U1).s) /\
    ((the Sorts of U2).s) by PBOOLE:def 5;
    then
A3: (Constants (U0)).s c= ((the Sorts of U1).s) /\ ((the Sorts of U2). s)
    by A2;
    ex a be object st a in (Constants(U0)).s by XBOOLE_0:def 1;
    hence ((the Sorts of U1) (/\) (the Sorts of U2)).i is non empty by A3,
PBOOLE:def 5;
  end;
  hence thesis;
end;
