reserve m,n for non zero Element of NAT;
reserve i,j,k for Element of NAT;
reserve Z for set;

theorem Th68:
for X be Subset of REAL m, f,g be PartFunc of REAL m,REAL st
  X is open & 1 <= i & i <= m
  & f is_partial_differentiable_on X,i & g is_partial_differentiable_on X,i
holds
    f(#)g is_partial_differentiable_on X,i
  & (f(#)g)`partial|(X,i) =(f`partial|(X,i))(#)g + f(#)(g`partial|(X,i))
  & for x be Element of REAL m st x in X holds
     (f(#)g)`partial|(X,i)/.x = partdiff(f,x,i)*(g.x) + (f.x)* partdiff(g,x,i)
proof
   let X be Subset of REAL m, f,g be PartFunc of REAL m,REAL;
   assume A1: X is open & 1 <= i & i <= m
    & f is_partial_differentiable_on X,i & g is_partial_differentiable_on X,i;
A2:X c=dom f & X c=dom g by A1;
A3:dom (f`partial|(X,i)) = X & dom (g`partial|(X,i)) = X by Def6,A1;
   dom (f(#)g) = dom f /\ dom g by VALUED_1:def 4; then
A4:X c= dom (f(#)g) by A1,XBOOLE_1:19;
A5:
   now let x be Element of REAL m;
    assume x in X; then
    f is_partial_differentiable_in x,i &
    g is_partial_differentiable_in x,i by A1,Th60;
    hence f(#)g is_partial_differentiable_in x,i
     & partdiff(f(#)g,x,i) = partdiff(f,x,i)*(g.x) + (f.x)* partdiff(g,x,i)
       by Th64;
   end; then
A6:for x be Element of REAL m st x in X
     holds f(#)g is_partial_differentiable_in x,i; then
A7:f(#)g is_partial_differentiable_on X,i by A4,Th60,A1; then
A8:dom ((f(#)g)`partial|(X,i)) = X by Def6;
A9:
   now let x be Element of REAL m;
    assume A10:x in X; then
    ((f(#)g) `partial|(X,i))/.x = partdiff((f(#)g),x,i) by A7,Def6;
    hence ((f(#)g)`partial|(X,i))/.x
      = partdiff(f,x,i)*(g.x) + (f.x)*partdiff(g,x,i) by A5,A10;
   end;
   dom (f`partial|(X,i)(#)g) = dom (f`partial|(X,i)) /\  dom g &
   dom (f(#)(g`partial|(X,i))) = dom f /\ dom (g`partial|(X,i))
                       by VALUED_1:def 4; then
A11:
   dom (f`partial|(X,i)(#)g) = X &
   dom (f(#)(g`partial|(X,i))) = X by A3,A2,XBOOLE_1:28;
A12:dom ((f`partial|(X,i))(#)g + f(#)(g`partial|(X,i)))
    = dom ((f`partial|(X,i))(#)g) /\ dom(f(#)(g`partial|(X,i)))
        by VALUED_1:def 1;
   now let x be Element of REAL m;
    assume A13: x in X;
    thus ((f(#)g)`partial|(X,i)).x
     = ((f(#)g)`partial|(X,i))/.x by A13,A8,PARTFUN1:def 6
    .= partdiff(f,x,i)*(g.x) + (f.x)*partdiff(g,x,i) by A9,A13
    .= ((f`partial|(X,i))/.x)*(g.x) + (f.x)*partdiff(g,x,i)
                by A13,Def6,A1
    .= ((f`partial|(X,i))/.x)*(g.x) + (f.x)*((g`partial|(X,i))/.x)
                 by A13,Def6,A1
    .= ((f`partial|(X,i)).x)*(g.x) + (f.x)*((g`partial|(X,i))/.x)
              by A13,A3,PARTFUN1:def 6
    .= ((f`partial|(X,i)).x)*(g.x) + (f.x)*((g`partial|(X,i)).x)
              by A13,A3,PARTFUN1:def 6
    .= ((f`partial|(X,i))(#)g).x + (f.x)*((g`partial|(X,i)).x)
              by VALUED_1:5
    .= ((f`partial|(X,i))(#)g).x + (f(#)(g`partial|(X,i))).x
              by VALUED_1:5
    .= ( (f`partial|(X,i)(#)g) + f(#)(g`partial|(X,i)) ).x
                 by A13,A12,A11,VALUED_1:def 1;
   end;
   hence thesis by A6,A9,A4,Th60,A1,A8,A11,A12,PARTFUN1:5;
end;
