reserve a,b,r for Real;
reserve A,B for non empty set;
reserve f,g,h for Element of PFuncs(A,REAL);

theorem
  (multpfunc A).(f,(multpfunc A).(g,h)) = (multpfunc A).((multpfunc A).(
  f,g),h)
proof
  set j = (multpfunc A).(g,h);
  set k = (multpfunc A).(f,g);
  set j1 = (multpfunc A).(f,j);
  set k1 = (multpfunc A).(k,h);
A1: dom k1 = dom k /\ dom h by Th7;
  then
A2: dom k1 c= dom k by XBOOLE_1:17;
A3: dom k1 = (dom f /\ dom g)/\dom h by A1,Th7;
A4: dom j1 = dom f /\ dom j by Th7;
  then
A5: dom j1 = dom f/\(dom g /\dom h) by Th7;
A6: dom j1 c= dom j by A4,XBOOLE_1:17;
  now
    let x be Element of A;
    assume
A7: x in dom j1;
    then
A8: x in dom k1 by A5,A3,XBOOLE_1:16;
    thus j1.x =f.x * j.x by A7,Th7
      .= f.x * (g.x * h.x) by A6,A7,Th7
      .= (f.x * g.x) * h.x
      .= k.x * h.x by A2,A8,Th7
      .= k1.x by A8,Th7;
  end;
  hence thesis by A5,A3,PARTFUN1:5,XBOOLE_1:16;
end;
