
theorem Th12:
  for F,G being Function-yielding Function, f be Function
  holds (G**F)*f = (G*f)**(F*f)
proof
  let F,G be Function-yielding Function, f be Function;
A1: dom((G**F)*f) = f"dom(G**F) by RELAT_1:147
    .= f"(dom G /\ dom F) by PBOOLE:def 19
    .= (f"dom F) /\ (f"dom G) by FUNCT_1:68
    .= (f"dom F) /\ dom(G*f) by RELAT_1:147
    .= dom(F*f) /\ dom(G*f) by RELAT_1:147;
  now
    let i be object;
    assume
A2: i in dom((G**F)*f);
    then
A3: i in dom f by FUNCT_1:11;
A4: f.i in dom(G**F) by A2,FUNCT_1:11;
    thus ((G**F)*f).i = (G**F).(f.i) by A2,FUNCT_1:12
      .= (G.(f.i))*(F.(f.i)) by A4,PBOOLE:def 19
      .= ((G*f).i)*(F.(f.i)) by A3,FUNCT_1:13
      .= ((G*f).i)*((F*f).i) by A3,FUNCT_1:13;
  end;
  hence thesis by A1,PBOOLE:def 19;
end;
