reserve a,b,p,x,x9,x1,x19,x2,y,y9,y1,y19,y2,z,z9,z1,z2 for object,
   X,X9,Y,Y9,Z,Z9 for set;
reserve A,D,D9 for non empty set;
reserve f,g,h for Function;

theorem Th34:
  f tolerates g iff f +* g = g +* f
proof
  thus f tolerates g implies f +* g = g +* f
  proof
    assume
A1: f tolerates g;
A2: for x being object st x in dom(f +* g) holds (f +* g).x = (g +* f).x
    proof
      let x being object such that
A3:   x in dom(f +* g);
      now
A4:     dom(f +* g) = dom f \/ dom g by Def1;
        per cases by A3,A4,XBOOLE_0:def 3;
        suppose
A5:       x in dom f & x in dom g;
          then
A6:       (g +* f).x = f.x by Th13;
          x in dom f /\ dom g & (f +* g).x = g.x by A5,Th13,XBOOLE_0:def 4;
          hence thesis by A1,A6;
        end;
        suppose
A7:       x in dom f & not x in dom g;
          then (f +* g).x = f.x by Th11;
          hence thesis by A7,Th13;
        end;
        suppose
A8:       not x in dom f & x in dom g;
          then (f +* g).x = g.x by Th13;
          hence thesis by A8,Th11;
        end;
      end;
      hence thesis;
    end;
    dom(f +* g) = dom g \/ dom f by Def1
      .= dom(g +* f) by Def1;
    hence thesis by A2;
  end;
  assume
A9: f +* g = g +* f;
  let x be object;
  assume
A10: x in dom f /\ dom g;
  then x in dom g by XBOOLE_0:def 4;
  then
A11: (f +* g).x = g.x by Th13;
  x in dom f by A10,XBOOLE_0:def 4;
  hence thesis by A9,A11,Th13;
end;
