reserve U1,U2,U3 for Universal_Algebra,
  m,n for Nat,
  a for set,
  A for non empty set,
  h for Function of U1,U2;

theorem
  for U1,U2,U3 st U1,U2 are_similar & U2,U3 are_similar for h1 be
  Function of U1,U2, h2 be Function of U2,U3 holds (MSAlg h2) ** (MSAlg h1) =
  MSAlg (h2*h1)
proof
  let U1,U2,U3 such that
A1: U1,U2 are_similar and
A2: U2,U3 are_similar;
  let h1 be Function of U1,U2, h2 be Function of U2,U3;
A3: MSAlg h1 is ManySortedSet of {0} by A1,Th17;
  MSAlg h2 is ManySortedSet of {0} by A2,Th17;
  then
A4: dom MSAlg h2 = {0} by PARTFUN1:def 2;
A5: dom ((MSAlg h2)**(MSAlg h1)) = (dom MSAlg h1) /\ (dom MSAlg h2) by
PBOOLE:def 19
    .= {0} /\ {0} by A3,A4,PARTFUN1:def 2
    .= {0};
A6: now
    let a be set ,f be Function, g be Function such that
A7: a in dom ((MSAlg h2) ** (MSAlg h1)) and
A8: f = (MSAlg h1).a and
A9: g = (MSAlg h2).a;
A10: g = (MSAlg h2).0 by A5,A7,A9,TARSKI:def 1
      .= (0 .--> h2).0 by A2,Def3,Th10
      .= h2 by FUNCOP_1:72;
    f = (MSAlg h1).0 by A5,A7,A8,TARSKI:def 1
      .= (0 .--> h1).0 by A1,Def3,Th10
      .= h1 by FUNCOP_1:72;
    hence ((MSAlg h2)**(MSAlg h1)).a = h2*h1 by A7,A8,A9,A10,PBOOLE:def 19;
  end;
  set h = h2*h1;
A11: MSAlg h is ManySortedSet of {0} by A1,A2,Th17,UNIALG_2:2;
A12: MSSign U2 = MSSign U3 by A2,Th10;
A13: now
    let a be set;
    assume a in dom MSAlg h;
    then
A14: a in {0} by A11,PARTFUN1:def 2;
    (MSAlg (h2*h1)).0 = (0 .--> (h2*h1)).0 by A1,A12,Def3,Th10
      .= h2*h1 by FUNCOP_1:72;
    hence (MSAlg (h2*h1)).a = h2*h1 by A14,TARSKI:def 1;
  end;
A15: dom (MSAlg (h2*h1)) = {0} by A11,PARTFUN1:def 2;
A16: now
    let a be set, f,g be Function such that
A17: a in dom (MSAlg (h2*h1)) and
A18: f = (MSAlg h1).a & g = (MSAlg h2).a;
    thus (MSAlg (h2*h1)).a = h2*h1 by A13,A17
      .= ((MSAlg h2)**(MSAlg h1)).a by A5,A6,A15,A17,A18;
  end;
A19: dom MSAlg (h2*h1) = {0} by A11,PARTFUN1:def 2;
A20: for a being object st a in {0}
   holds ((MSAlg h2)**(MSAlg h1)).a = (MSAlg (h2*h1)).a
  proof
    let a be object;
A21: (MSAlg h1).a is Function & (MSAlg h2).a is Function;
    assume a in {0};
    hence thesis by A19,A16,A21;
  end;
  ((MSAlg h2)**(MSAlg h1)) is ManySortedSet of {0} by A5,PARTFUN1:def 2
,RELAT_1:def 18;
  hence thesis by A11,A20,PBOOLE:3;
end;
