environ vocabulary SEQ_1, FDIFF_1, SEQM_3, PRE_TOPC, PARTFUN1, ARYTM_1, SEQ_2, ORDINAL2, FUNCT_1, ARYTM, ABSVALUE, SQUARE_1, RELAT_1, RCOMP_1, ARYTM_3, FCONT_1, BOOLE, FINSEQ_1, PARTFUN2, LIMFUNC1, SUBSET_1, RFUNCT_2, PROB_1; notation TARSKI, XBOOLE_0, SUBSET_1, ORDINAL1, NUMBERS, XCMPLX_0, XREAL_0, REAL_1, NAT_1, FUNCT_1, FUNCT_2, SEQ_1, RELSET_1, SEQ_2, ABSVALUE, PARTFUN1, SQUARE_1, PARTFUN2, RFUNCT_1, RCOMP_1, RFUNCT_2, FCONT_1, FDIFF_1, LIMFUNC1, SEQM_3; constructors REAL_1, NAT_1, SEQ_2, SEQM_3, ABSVALUE, PROB_1, PARTFUN1, PARTFUN2, RFUNCT_1, RCOMP_1, RFUNCT_2, FCONT_1, FDIFF_1, LIMFUNC1, MEMBERED, XBOOLE_0; clusters RCOMP_1, FDIFF_1, FCONT_3, RELSET_1, RFUNCT_2, PARTFUN2, XREAL_0, SEQ_1, SEQM_3, ARYTM_3, MEMBERED, ZFMISC_1, XBOOLE_0, NUMBERS, ORDINAL2; requirements REAL, NUMERALS, SUBSET, BOOLE, ARITHM; begin reserve x for set; reserve x0,r,r1,r2,g,g1,g2,p for Real; reserve n,m,k,l for Nat; reserve a,b,d for Real_Sequence; reserve h,h1,h2 for convergent_to_0 Real_Sequence; reserve c,c1 for constant Real_Sequence; reserve A for open Subset of REAL; reserve f,f1,f2 for PartFunc of REAL,REAL; reserve L for LINEAR; reserve R for REST; definition let h; cluster -h -> convergent_to_0; end; theorem :: FDIFF_2:1 a is convergent & b is convergent & lim a = lim b & (for n holds d.(2*n) = a.n & d.(2*n + 1) = b.n) implies d is convergent & lim d = lim a; theorem :: FDIFF_2:2 (for n holds a.n = 2*n) implies a is increasing natural-yielding; theorem :: FDIFF_2:3 (for n holds a.n = 2*n + 1) implies a is increasing natural-yielding; theorem :: FDIFF_2:4 rng c = {x0} implies c is convergent & lim c = x0 & h + c is convergent & lim(h + c) = x0; theorem :: FDIFF_2:5 rng a = {r} & rng b = {r} implies a = b; theorem :: FDIFF_2:6 a is_subsequence_of h implies a is convergent_to_0 Real_Sequence; theorem :: FDIFF_2:7 (for h,c st rng c = {g} & rng (h + c) c= dom f & {g} c= dom f holds h"(#)(f*(h + c) - f*c) is convergent) implies (for h1,h2,c st rng c = {g} & rng (h1 + c) c= dom f & rng (h2 + c) c= dom f & {g} c= dom f holds lim (h1"(#)(f*(h1 + c) - f*c)) = lim(h2"(#)(f*(h2 + c) - f*c))); theorem :: FDIFF_2:8 (ex N be Neighbourhood of r st N c= dom f) implies ex h,c st rng c = {r} & rng (h+c) c= dom f & {r} c= dom f; theorem :: FDIFF_2:9 rng a c= dom (f2*f1) implies rng a c= dom f1 & rng (f1*a) c= dom f2; scheme ExInc_Seq_of_Nat{ s()->Real_Sequence,P[set] }: ex q being increasing Seq_of_Nat st (for n holds P[(s()*q).n]) & for n st (for r st r = s().n holds P[r]) ex m st n = q.m provided for n ex m st n <= m & P[s().m]; theorem :: FDIFF_2:10 f.x0 <> r & f is_differentiable_in x0 implies ex N be Neighbourhood of x0 st N c= dom f & for g st g in N holds f.g <> r; theorem :: FDIFF_2:11 f is_differentiable_in x0 iff (ex N be Neighbourhood of x0 st N c= dom f) & for h,c st rng c = {x0} & rng (h + c) c= dom f holds h"(#)(f*(h + c) - f*c) is convergent; theorem :: FDIFF_2:12 f is_differentiable_in x0 & diff(f,x0) = g iff (ex N be Neighbourhood of x0 st N c= dom f) & for h,c st rng c = {x0} & rng (h + c) c= dom f holds h"(#)(f*(h + c) - f*c) is convergent & lim (h"(#)(f*(h + c) - f*c)) = g; theorem :: FDIFF_2:13 f1 is_differentiable_in x0 & f2 is_differentiable_in f1.x0 implies f2*f1 is_differentiable_in x0 & diff(f2*f1,x0) = diff(f2,f1.x0)*diff(f1,x0); theorem :: FDIFF_2:14 f2.x0 <> 0 & f1 is_differentiable_in x0 & f2 is_differentiable_in x0 implies f1/f2 is_differentiable_in x0 & diff(f1/f2,x0) = (diff(f1,x0) * f2.x0 - diff(f2,x0) * f1.x0)/(f2.x0)^2; theorem :: FDIFF_2:15 f.x0 <> 0 & f is_differentiable_in x0 implies f^ is_differentiable_in x0 & diff(f^,x0) = - diff(f,x0)/(f.x0)^2; theorem :: FDIFF_2:16 f is_differentiable_on A implies f|A is_differentiable_on A & f`|A = (f|A)`|A ; theorem :: FDIFF_2:17 f1 is_differentiable_on A & f2 is_differentiable_on A implies f1 + f2 is_differentiable_on A & (f1 + f2)`|A = f1`|A + f2`|A; theorem :: FDIFF_2:18 f1 is_differentiable_on A & f2 is_differentiable_on A implies f1 - f2 is_differentiable_on A & (f1 - f2)`|A = f1`|A - f2`|A; theorem :: FDIFF_2:19 f is_differentiable_on A implies r(#)f is_differentiable_on A & (r(#)f)`|A = r(#)(f`|A); theorem :: FDIFF_2:20 f1 is_differentiable_on A & f2 is_differentiable_on A implies f1 (#) f2 is_differentiable_on A & (f1(#)f2)`|A = (f1`|A)(#)f2 + f1(#)(f2`|A); theorem :: FDIFF_2:21 f1 is_differentiable_on A & f2 is_differentiable_on A & (for x0 st x0 in A holds f2.x0 <> 0) implies f1/f2 is_differentiable_on A & (f1/f2)`|A = (f1`|A (#) f2 - f2`|A (#) f1)/(f2 (#) f2); theorem :: FDIFF_2:22 f is_differentiable_on A & (for x0 st x0 in A holds f.x0 <> 0) implies f^ is_differentiable_on A & (f^)`|A = - (f`|A)/ (f (#) f); theorem :: FDIFF_2:23 f1 is_differentiable_on A & (f1.:A) is open Subset of REAL & f2 is_differentiable_on (f1.:A) implies f2*f1 is_differentiable_on A & (f2*f1)`|A = ((f2`|(f1.:A))*f1) (#) (f1`|A); theorem :: FDIFF_2:24 A c= dom f & (for r,p st r in A & p in A holds abs(f.r - f.p) <= (r - p)^2) implies f is_differentiable_on A & for x0 st x0 in A holds diff(f,x0) = 0; theorem :: FDIFF_2:25 (for r1,r2 st r1 in ].p,g.[ & r2 in ].p,g.[ holds abs(f.r1 - f.r2) <= (r1 - r2)^2) & p < g & ].p,g.[ c= dom f implies f is_differentiable_on ].p,g.[ & f is_constant_on ].p,g.[; theorem :: FDIFF_2:26 left_open_halfline(r) c= dom f & (for r1,r2 st r1 in left_open_halfline(r) & r2 in left_open_halfline(r) holds abs(f.r1 - f.r2) <= (r1 - r2)^2) implies f is_differentiable_on left_open_halfline(r) & f is_constant_on left_open_halfline(r); theorem :: FDIFF_2:27 right_open_halfline(r) c= dom f & (for r1,r2 st r1 in right_open_halfline(r) & r2 in right_open_halfline(r) holds abs(f.r1 - f.r2) <= (r1 - r2)^2) implies f is_differentiable_on right_open_halfline(r) & f is_constant_on right_open_halfline(r); theorem :: FDIFF_2:28 f is total & (for r1,r2 holds abs(f.r1 - f.r2) <= (r1 - r2)^2) implies f is_differentiable_on [#](REAL) & f is_constant_on [#](REAL); theorem :: FDIFF_2:29 f is_differentiable_on left_open_halfline(r) & (for x0 st x0 in left_open_halfline(r) holds 0 < diff(f,x0)) implies f is_increasing_on left_open_halfline(r) & f|left_open_halfline(r) is one-to-one; theorem :: FDIFF_2:30 f is_differentiable_on left_open_halfline(r) & (for x0 st x0 in left_open_halfline(r) holds diff(f,x0) < 0) implies f is_decreasing_on left_open_halfline(r) & f|left_open_halfline(r) is one-to-one; theorem :: FDIFF_2:31 f is_differentiable_on left_open_halfline(r) & (for x0 st x0 in left_open_halfline(r) holds 0 <= diff(f,x0)) implies f is_non_decreasing_on left_open_halfline(r); theorem :: FDIFF_2:32 f is_differentiable_on left_open_halfline(r) & (for x0 st x0 in left_open_halfline(r) holds diff(f,x0) <= 0) implies f is_non_increasing_on left_open_halfline(r); theorem :: FDIFF_2:33 f is_differentiable_on right_open_halfline(r) & (for x0 st x0 in right_open_halfline(r) holds 0 < diff(f,x0)) implies f is_increasing_on right_open_halfline(r) & f|right_open_halfline(r) is one-to-one; theorem :: FDIFF_2:34 f is_differentiable_on right_open_halfline(r) & (for x0 st x0 in right_open_halfline(r) holds diff(f,x0) < 0) implies f is_decreasing_on right_open_halfline(r) & f|right_open_halfline(r) is one-to-one; theorem :: FDIFF_2:35 f is_differentiable_on right_open_halfline(r) & (for x0 st x0 in right_open_halfline(r) holds 0 <= diff(f,x0)) implies f is_non_decreasing_on right_open_halfline(r); theorem :: FDIFF_2:36 f is_differentiable_on right_open_halfline(r) & (for x0 st x0 in right_open_halfline(r) holds diff(f,x0) <= 0) implies f is_non_increasing_on right_open_halfline(r); theorem :: FDIFF_2:37 f is_differentiable_on [#](REAL) & (for x0 holds 0 < diff(f,x0)) implies f is_increasing_on [#](REAL) & f is one-to-one; theorem :: FDIFF_2:38 f is_differentiable_on [#](REAL) & (for x0 holds diff(f,x0) < 0) implies f is_decreasing_on [#](REAL) & f is one-to-one; theorem :: FDIFF_2:39 f is_differentiable_on [#](REAL) & (for x0 holds 0 <= diff(f,x0)) implies f is_non_decreasing_on [#](REAL); theorem :: FDIFF_2:40 f is_differentiable_on [#](REAL) & (for x0 holds diff(f,x0) <= 0) implies f is_non_increasing_on [#](REAL); theorem :: FDIFF_2:41 f is_differentiable_on ].p,g.[ & ((for x0 st x0 in ].p,g.[ holds 0 < diff(f,x0)) or for x0 st x0 in ].p,g.[ holds diff(f,x0) < 0) implies rng (f|].p,g.[) is open; theorem :: FDIFF_2:42 f is_differentiable_on left_open_halfline(p) & ((for x0 st x0 in left_open_halfline(p) holds 0 < diff(f,x0)) or for x0 st x0 in left_open_halfline(p) holds diff(f,x0) < 0) implies rng (f|left_open_halfline(p)) is open; theorem :: FDIFF_2:43 f is_differentiable_on right_open_halfline(p) & ((for x0 st x0 in right_open_halfline(p) holds 0 < diff(f,x0)) or for x0 st x0 in right_open_halfline(p) holds diff(f,x0) < 0) implies rng (f|right_open_halfline(p)) is open; theorem :: FDIFF_2:44 f is_differentiable_on [#](REAL) & ((for x0 holds 0 < diff(f,x0)) or for x0 holds diff(f,x0) < 0) implies rng f is open; theorem :: FDIFF_2:45 for f be one-to-one PartFunc of REAL,REAL st f is_differentiable_on [#](REAL) & ((for x0 holds 0 < diff(f,x0)) or for x0 holds diff(f,x0) < 0) holds f is one-to-one & f" is_differentiable_on dom (f") & for x0 st x0 in dom (f") holds diff(f",x0) = 1/diff(f,(f").x0); theorem :: FDIFF_2:46 for f be one-to-one PartFunc of REAL,REAL st f is_differentiable_on left_open_halfline(p) & ((for x0 st x0 in left_open_halfline(p) holds 0 < diff(f,x0)) or for x0 st x0 in left_open_halfline(p) holds diff(f,x0) < 0) holds f|left_open_halfline(p) is one-to-one & (f|left_open_halfline(p))" is_differentiable_on dom ((f|left_open_halfline(p))") & for x0 st x0 in dom ((f|left_open_halfline(p))") holds diff((f|left_open_halfline(p))",x0) = 1/diff(f,((f|left_open_halfline(p))").x0) ; theorem :: FDIFF_2:47 for f be one-to-one PartFunc of REAL,REAL st f is_differentiable_on right_open_halfline(p) & ((for x0 st x0 in right_open_halfline(p) holds 0 < diff(f,x0)) or for x0 st x0 in right_open_halfline(p) holds diff(f,x0) < 0) holds f|right_open_halfline(p) is one-to-one & (f|right_open_halfline(p))" is_differentiable_on dom ((f|right_open_halfline(p))") & for x0 st x0 in dom ((f|right_open_halfline(p))") holds diff((f|right_open_halfline(p))",x0) = 1/diff(f,((f|right_open_halfline(p))").x0); theorem :: FDIFF_2:48 for f be one-to-one PartFunc of REAL,REAL st f is_differentiable_on ].p,g.[ & ((for x0 st x0 in ].p,g.[ holds 0 < diff(f,x0)) or for x0 st x0 in ].p,g.[ holds diff(f,x0) < 0) holds f|].p,g.[ is one-to-one & (f|].p,g.[)" is_differentiable_on dom ((f|].p,g.[)") & for x0 st x0 in dom ((f|].p,g.[)") holds diff((f|].p,g.[)",x0) = 1/diff(f,((f|].p,g.[)").x0); theorem :: FDIFF_2:49 f is_differentiable_in x0 implies for h,c st rng c = {x0} & rng (h + c) c= dom f & rng (-h + c) c= dom f holds (2(#)h)"(#)(f*(c + h) - f*(c - h)) is convergent & lim((2(#)h)"(#)(f*(c + h) - f*(c - h))) = diff(f,x0);