theorem
  for f,g,h being Function, D being set holds (f +* g)|D =h | D implies
  (h +* g) | D = (f +* g) | D
proof
  let f,g,h be Function, D be set;
  assume
A1: (f +* g)|D =h | D;
A2: dom ((f +* g) | D) = dom (f +* g) /\ D by RELAT_1:61
    .= (dom f \/ dom g) /\ D by Def1;
A3: dom ((h +* g) | D) = dom (h +* g) /\ D by RELAT_1:61
    .= (dom h \/ dom g) /\ D by Def1;
  then
A4: dom ((h +* g) | D) = (dom h /\ D) \/ (dom g /\ D) by XBOOLE_1:23
    .= ((dom f \/ dom g) /\ D) \/ (dom g /\ D) by A1,A2,RELAT_1:61
    .= ((dom f \/ dom g) \/ dom g) /\ D by XBOOLE_1:23
    .= (dom f \/ (dom g \/ dom g)) /\ D by XBOOLE_1:4
    .= (dom f \/ dom g ) /\ D;
  now
    let x be object;
    assume
A5: x in dom ((f +* g) | D);
    then
A6: x in dom f \/ dom g by A2,XBOOLE_0:def 4;
A7: x in D by A2,A5,XBOOLE_0:def 4;
A8: x in dom h \/ dom g & ((h +* g) | D).x = (h +* g).x by A2,A3,A4,A5,
FUNCT_1:47,XBOOLE_0:def 4;
    per cases;
    suppose
A9:   x in dom g;
      ((f +* g) | D).x = (f +* g).x by A5,FUNCT_1:47
        .=g.x by A6,A9,Def1;
      hence ((h +* g) | D).x =((f +* g) | D).x by A8,A9,Def1;
    end;
    suppose
      not x in dom g;
      hence ((h +* g) | D).x = h.x by A8,Def1
        .=((f +* g) | D).x by A1,A7,FUNCT_1:49;
    end;
  end;
  hence thesis by A2,A4;
end;
