reserve y for set;
reserve x,a,b,c for Real;
reserve n for Element of NAT;
reserve Z for open Subset of REAL;
reserve f,f1,f2 for PartFunc of REAL,REAL;

theorem
  Z c= dom (ln*(f1/f2)) & (for x st x in Z holds f1.x=a+x & f1.x >0 & f2
  .x=a-x & f2.x >0) implies ln*(f1/f2) is_differentiable_on Z & for x st x in Z
  holds ((ln*(f1/f2))`|Z).x = (2*a)/(a^2-x^2)
proof
  assume that
A1: Z c= dom (ln*(f1/f2)) and
A2: for x st x in Z holds f1.x=a+x & f1.x >0 & f2.x=a-x & f2.x >0;
  for y being object st y in Z holds y in dom (f1/f2) by A1,FUNCT_1:11;
  then Z c= dom (f1/f2) by TARSKI:def 3;
  then
A3: Z c= dom f1 /\ (dom f2 \ f2"{0}) by RFUNCT_1:def 1;
  then
A4: Z c= dom f1 by XBOOLE_1:18;
A5: for x st x in Z holds f1.x=1*x+a by A2;
  then
A6: f1 is_differentiable_on Z by A4,FDIFF_1:23;
A7: for x st x in Z holds f2.x =(-1)*x+a
  proof
    let x;
    assume x in Z;
    then f2.x =a-x by A2;
    hence thesis;
  end;
A8: Z c= dom f2 by A3,XBOOLE_1:1;
  then
A9: f2 is_differentiable_on Z by A7,FDIFF_1:23;
  for x st x in Z holds f2.x <> 0 by A2;
  then
A10: f1/f2 is_differentiable_on Z by A6,A9,FDIFF_2:21;
A11: for x st x in Z holds ((f1/f2)`|Z).x = (2*a)/(a-x)^2
  proof
    let x;
    assume
A12: x in Z;
    then
A13: f2.x <>0 by A2;
A14: f1.x=a+x & f2.x=a-x by A2,A12;
    f1 is_differentiable_in x & f2 is_differentiable_in x by A6,A9,A12,
FDIFF_1:9;
    then diff(f1/f2,x) =(diff(f1,x) * f2.x - diff(f2,x) * f1.x)/(f2.x)^2 by A13
,FDIFF_2:14
      .=((f1`|Z).x * f2.x-diff(f2,x) * f1.x)/(f2.x)^2 by A6,A12,FDIFF_1:def 7
      .= ((f1`|Z).x * f2.x-(f2`|Z).x * f1.x)/(f2.x)^2 by A9,A12,FDIFF_1:def 7
      .=(1* f2.x-(f2`|Z).x * f1.x)/(f2.x)^2 by A4,A5,A12,FDIFF_1:23
      .=(1* f2.x-(-1)* f1.x)/(f2.x)^2 by A8,A7,A12,FDIFF_1:23
      .=(2*a)/(a-x)^2 by A14;
    hence thesis by A10,A12,FDIFF_1:def 7;
  end;
A15: for x st x in Z holds (f1/f2).x >0
  proof
    let x;
    assume
A16: x in Z;
    then x in dom (f1/f2) by A1,FUNCT_1:11;
    then
A17: (f1/f2).x=f1.x * (f2.x)" by RFUNCT_1:def 1
      .=f1.x / f2.x by XCMPLX_0:def 9;
    f1.x >0 & f2.x >0 by A2,A16;
    hence thesis by A17,XREAL_1:139;
  end;
A18: for x st x in Z holds ln*(f1/f2) is_differentiable_in x
  proof
    let x;
    assume x in Z;
    then f1/f2 is_differentiable_in x & (f1/f2).x >0 by A10,A15,FDIFF_1:9;
    hence thesis by TAYLOR_1:20;
  end;
  then
A19: ln*(f1/f2) is_differentiable_on Z by A1,FDIFF_1:9;
  for x st x in Z holds ((ln*(f1/f2))`|Z).x = (2*a)/(a^2-x^2)
  proof
    let x;
    assume
A20: x in Z;
    then
A21: f2.x=a-x & f2.x>0 by A2;
A22: f1.x=a+x & f2.x=a-x by A2,A20;
A23: x in dom (f1/f2) by A1,A20,FUNCT_1:11;
    (f1/f2) is_differentiable_in x & (f1/f2).x >0 by A10,A15,A20,FDIFF_1:9;
    then diff(ln*(f1/f2),x) =diff((f1/f2),x)/((f1/f2).x) by TAYLOR_1:20
      .=((f1/f2)`|Z).x/((f1/f2).x) by A10,A20,FDIFF_1:def 7
      .=((2*a)/(a-x)^2)/((f1/f2).x) by A11,A20
      .=((2*a)/(a-x)^2)/(f1.x * (f2.x)") by A23,RFUNCT_1:def 1
      .=((2*a)/((a-x)*(a-x)))/((a+x)/(a-x)) by A22,XCMPLX_0:def 9
      .=((2*a)/(a-x)/(a-x))/((a+x)/(a-x)) by XCMPLX_1:78
      .=((2*a)/(a-x))/((a+x)/(a-x))/(a-x) by XCMPLX_1:48
      .=(2*a)/(a+x)/(a-x) by A21,XCMPLX_1:55
      .=(2*a)/((a+x)*(a-x)) by XCMPLX_1:78
      .=(2*a)/(a^2-x^2);
    hence thesis by A19,A20,FDIFF_1:def 7;
  end;
  hence thesis by A1,A18,FDIFF_1:9;
end;
