reserve A for non empty closed_interval Subset of REAL;

theorem Th18E:
for c being Real, f,g be Function of REAL,REAL
holds
f|].-infty,c.[ +* g|[.c,+infty.[ = (f|].-infty,c.]) +* (g|[.c,+infty.[)
proof
 let c be Real;
 let f,g be Function of REAL,REAL;
 set f1 = (f|].-infty,c.[) +* (g|[.c,+infty.[);
 set f2 = (f|].-infty,c.]) +* (g|[.c,+infty.[);
 A4: -infty < c & c < +infty by XXREAL_0:12,XXREAL_0:9,XREAL_0:def 1;
 A2: dom f1
  = dom (f|].-infty,c.[) \/  dom (g|[.c,+infty.[) by FUNCT_4:def 1
 .= ].-infty,c.[ \/ dom (g|[.c,+infty.[)  by FUNCT_2:def 1
 .= ].-infty,c.[ \/ [.c,+infty.[  by FUNCT_2:def 1
 .= ].-infty,+infty.[ by XXREAL_1:173,A4
 .= ].-infty,c.] \/ [.c,+infty.[ by XXREAL_1:172,A4
 .= dom (f | ].-infty,c.]) \/ [.c,+infty.[  by FUNCT_2:def 1
 .= dom (f | ].-infty,c.]) \/ dom (g | [.c,+infty.[)  by FUNCT_2:def 1
 .= dom f2 by FUNCT_4:def 1;
 Dg: dom (g|[.c,+infty.[) = [.c,+infty.[ by FUNCT_2:def 1;
 for x being object st x in dom f1 holds
 f1 . x = f2 . x
 proof
  let x be object;
  assume A3: x in dom f1;
  dom f1
   = dom (f|].-infty,c.[) \/  dom (g|[.c,+infty.[) by FUNCT_4:def 1
  .= ].-infty,c.[ \/ dom (g|[.c,+infty.[)  by FUNCT_2:def 1
  .= ].-infty,c.[ \/ [.c,+infty.[  by FUNCT_2:def 1
  .= REAL by XXREAL_1:224,XXREAL_1:173,A4;
  then reconsider x as Real by A3;
  per cases;
  suppose C1: x >= c;
   ((f|].-infty,c.[) +* (g|[.c,+infty.[)).x
    = (g|[.c,+infty.[).x by FUNCT_4:13,Dg,C1,XXREAL_1:236;
   hence thesis by FUNCT_4:13,Dg,C1,XXREAL_1:236;
  end;
  suppose C2: x < c;
   ].-infty,c.[ c= ].-infty,c.] by XXREAL_1:21;
   then
   C6: x in ].-infty,c.] by XXREAL_1:233,C2;
   C4: not (x in dom (g|[.c,+infty.[) ) by C2,XXREAL_1:236;
   ((f|].-infty,c.[) +* (g|[.c,+infty.[)).x
    = (f|].-infty,c.[).x by FUNCT_4:11,C4
   .= f .x by FUNCT_1:49,XXREAL_1:233,C2
   .= (f|].-infty,c.]).x by FUNCT_1:49,C6;
   hence thesis by FUNCT_4:11,C4;
  end;
 end;
 hence thesis by FUNCT_1:2,A2;
end;
