src/HOL/Hyperreal/Lim.thy
changeset 13810 c3fbfd472365
parent 12018 ec054019c910
child 14269 502a7c95de73
equal deleted inserted replaced
13809:a4cd9057d2ee 13810:c3fbfd472365
    21 
    21 
    22   NSLIM :: [real=>real,real,real] => bool
    22   NSLIM :: [real=>real,real,real] => bool
    23 			      ("((_)/ -- (_)/ --NS> (_))" [60, 0, 60] 60)
    23 			      ("((_)/ -- (_)/ --NS> (_))" [60, 0, 60] 60)
    24   "f -- a --NS> L == (ALL x. (x ~= hypreal_of_real a & 
    24   "f -- a --NS> L == (ALL x. (x ~= hypreal_of_real a & 
    25 		      x @= hypreal_of_real a -->
    25 		      x @= hypreal_of_real a -->
    26 		      (*f* f) x @= hypreal_of_real L))"   
    26 		      ( *f* f) x @= hypreal_of_real L))"   
    27 
    27 
    28   isCont :: [real=>real,real] => bool
    28   isCont :: [real=>real,real] => bool
    29   "isCont f a == (f -- a --> (f a))"        
    29   "isCont f a == (f -- a --> (f a))"        
    30 
    30 
    31   (* NS definition dispenses with limit notions *)
    31   (* NS definition dispenses with limit notions *)
    32   isNSCont :: [real=>real,real] => bool
    32   isNSCont :: [real=>real,real] => bool
    33   "isNSCont f a == (ALL y. y @= hypreal_of_real a --> 
    33   "isNSCont f a == (ALL y. y @= hypreal_of_real a --> 
    34 			   (*f* f) y @= hypreal_of_real (f a))"
    34 			   ( *f* f) y @= hypreal_of_real (f a))"
    35 
    35 
    36   (* differentiation: D is derivative of function f at x *)
    36   (* differentiation: D is derivative of function f at x *)
    37   deriv:: [real=>real,real,real] => bool
    37   deriv:: [real=>real,real,real] => bool
    38 			    ("(DERIV (_)/ (_)/ :> (_))" [60, 0, 60] 60)
    38 			    ("(DERIV (_)/ (_)/ :> (_))" [60, 0, 60] 60)
    39   "DERIV f x :> D == ((%h. (f(x + h) + -f(x))/h) -- 0 --> D)"
    39   "DERIV f x :> D == ((%h. (f(x + h) + -f(x))/h) -- 0 --> D)"
    40 
    40 
    41   nsderiv :: [real=>real,real,real] => bool
    41   nsderiv :: [real=>real,real,real] => bool
    42 			    ("(NSDERIV (_)/ (_)/ :> (_))" [60, 0, 60] 60)
    42 			    ("(NSDERIV (_)/ (_)/ :> (_))" [60, 0, 60] 60)
    43   "NSDERIV f x :> D == (ALL h: Infinitesimal - {0}. 
    43   "NSDERIV f x :> D == (ALL h: Infinitesimal - {0}. 
    44 			((*f* f)(hypreal_of_real x + h) + 
    44 			(( *f* f)(hypreal_of_real x + h) + 
    45 			 - hypreal_of_real (f x))/h @= hypreal_of_real D)"
    45 			 - hypreal_of_real (f x))/h @= hypreal_of_real D)"
    46 
    46 
    47   differentiable :: [real=>real,real] => bool   (infixl 60)
    47   differentiable :: [real=>real,real] => bool   (infixl 60)
    48   "f differentiable x == (EX D. DERIV f x :> D)"
    48   "f differentiable x == (EX D. DERIV f x :> D)"
    49 
    49 
    50   NSdifferentiable :: [real=>real,real] => bool   (infixl 60)
    50   NSdifferentiable :: [real=>real,real] => bool   (infixl 60)
    51   "f NSdifferentiable x == (EX D. NSDERIV f x :> D)"
    51   "f NSdifferentiable x == (EX D. NSDERIV f x :> D)"
    52 
    52 
    53   increment :: [real=>real,real,hypreal] => hypreal
    53   increment :: [real=>real,real,hypreal] => hypreal
    54   "increment f x h == (@inc. f NSdifferentiable x & 
    54   "increment f x h == (@inc. f NSdifferentiable x & 
    55 		       inc = (*f* f)(hypreal_of_real x + h) + -hypreal_of_real (f x))"
    55 		       inc = ( *f* f)(hypreal_of_real x + h) + -hypreal_of_real (f x))"
    56 
    56 
    57   isUCont :: (real=>real) => bool
    57   isUCont :: (real=>real) => bool
    58   "isUCont f ==  (ALL r. 0 < r --> 
    58   "isUCont f ==  (ALL r. 0 < r --> 
    59 		      (EX s. 0 < s & (ALL x y. abs(x + -y) < s
    59 		      (EX s. 0 < s & (ALL x y. abs(x + -y) < s
    60 			    --> abs(f x + -f y) < r)))"
    60 			    --> abs(f x + -f y) < r)))"
    61 
    61 
    62   isNSUCont :: (real=>real) => bool
    62   isNSUCont :: (real=>real) => bool
    63   "isNSUCont f == (ALL x y. x @= y --> (*f* f) x @= (*f* f) y)"
    63   "isNSUCont f == (ALL x y. x @= y --> ( *f* f) x @= ( *f* f) y)"
    64 
    64 
    65 
    65 
    66 (*Used in the proof of the Bolzano theorem*)
    66 (*Used in the proof of the Bolzano theorem*)
    67 consts
    67 consts
    68   Bolzano_bisect :: "[real*real=>bool, real, real, nat] => (real*real)"
    68   Bolzano_bisect :: "[real*real=>bool, real, real, nat] => (real*real)"