reserve S for non void non empty ManySortedSign,
  U1, U2, U3 for non-empty MSAlgebra over S,
  I for set,
  A for ManySortedSet of I,
  B, C for non-empty ManySortedSet of I;

theorem
  for F be ManySortedFunction of A, B for G be ManySortedFunction of B,
C for X be non-empty ManySortedSubset of B st rngs F c= X holds (G || X) ** F =
  G ** F
proof
  let F be ManySortedFunction of A, B, G be ManySortedFunction of B, C, X be
  non-empty ManySortedSubset of B such that
A1: rngs F c= X;
A2: dom F = I by PARTFUN1:def 2;
A3: F is ManySortedFunction of A, X
  proof
    let i be object;
    assume
A4: i in I;
    then reconsider f = F.i as Function of A.i, B.i by PBOOLE:def 15;
A5: (rngs F).i c= X.i by A1,A4;
    dom f = A.i & (rngs F).i = rng f by A2,A4,FUNCT_2:def 1,FUNCT_6:22;
    hence thesis by A4,A5,FUNCT_2:def 1,RELSET_1:4;
  end;
A6: now
    let i be object;
    assume
A7: i in I;
    then reconsider f = F.i as Function of A.i, B.i by PBOOLE:def 15;
    (rngs F).i = rng f by A2,A7,FUNCT_6:22;
    then
A8: rng f c= X.i by A1,A7;
    dom f = A.i by A7,FUNCT_2:def 1;
    then reconsider f9 = f as Function of A.i, X.i by A7,A8,FUNCT_2:def 1
,RELSET_1:4;
    reconsider g = G.i as Function of B.i, C.i by A7,PBOOLE:def 15;
A9: rng f9 c= X.i by RELAT_1:def 19;
    reconsider gx = (G || X).i as Function of X.i, C.i by A7,PBOOLE:def 15;
    thus ((G || X) ** F).i = gx * f9 by A3,A7,MSUALG_3:2
      .= (g | (X.i)) * f by A7,MSAFREE:def 1
      .= g * f9 by A9,MSUHOM_1:1
      .= (G ** F).i by A7,MSUALG_3:2;
  end;
  (G || X) ** F is ManySortedSet of I by A3,Lm1;
  hence thesis by A6,PBOOLE:3;
end;
