reserve U1,U2,U3 for Universal_Algebra,
  n,m for Nat,
  o1 for operation of U1,
  o2 for operation of U2,
  o3 for operation of U3,
  x,y for set;
reserve a for FinSequence of U1,
  f for Function of U1,U2;

theorem Th4:
  for h1 be Function of U1,U2, h2 be Function of U2,U3,a be
  FinSequence of U1 holds h2*(h1*a) = (h2 * h1)*a
proof
  let h1 be Function of U1,U2, h2 be Function of U2,U3,a be FinSequence of U1;
A1: dom a = Seg len a by FINSEQ_1:def 3;
A2: dom (h2*(h1*a)) = dom(h1*a) by FINSEQ_3:120;
  dom (h1*a) = dom a by FINSEQ_3:120;
  then
A3: dom (h2*(h1*a)) = Seg len a by A2,FINSEQ_1:def 3;
A4: len a = len((h2 * h1 qua Function of the carrier of U1, the carrier of
  U3) *(a qua FinSequence of the carrier of U1)) by FINSEQ_3:120;
  then
A5: dom ((h2 * h1)*a) = Seg len a by FINSEQ_1:def 3;
A6: now
    let n be Nat;
    assume
A7: n in dom(h2*(h1*a));
    hence (h2*(h1*a)).n = h2.((h1*a).n) by FINSEQ_3:120
      .= h2.(h1.(a.n)) by A2,A7,FINSEQ_3:120
      .= (h2*h1).(a.n) by A1,A3,A7,FINSEQ_2:11,FUNCT_2:15
      .= ((h2 * h1)*a).n by A3,A5,A7,FINSEQ_3:120;
  end;
  len(h2*(h1*a)) = len(h1*a) & len(h1*a) = len a by FINSEQ_3:120;
  hence thesis by A4,A6,FINSEQ_2:9;
end;
