src/sml/IsacKnowledge/Integrate.thy
author wneuper
Sun, 28 Aug 2005 13:47:10 +0200
branchstart_Take
changeset 346 08ec9d7553ac
child 347 d55ea685a8af
permissions -rw-r--r--
prohibit "FF + c = x ^^^ 3 / 3 + x + c", intermediate state
wneuper@346
     1
(* integration over the reals
wneuper@346
     2
   author: Walther Neuper
wneuper@346
     3
   050814, 08:51
wneuper@346
     4
   (c) due to copyright terms
wneuper@346
     5
wneuper@346
     6
remove_thy"Integrate";
wneuper@346
     7
use_thy"~/proto2/isac/src/sml/IsacKnowledge/Integrate";
wneuper@346
     8
use_thy_only"~/proto2/isac/src/sml/IsacKnowledge/Integrate";
wneuper@346
     9
wneuper@346
    10
remove_thy"Typefix";
wneuper@346
    11
use_thy"~/proto2/isac/src/sml/IsacKnowledge/Isac";
wneuper@346
    12
*)
wneuper@346
    13
wneuper@346
    14
Integrate = Diff +
wneuper@346
    15
wneuper@346
    16
consts
wneuper@346
    17
wneuper@346
    18
  Integral            :: "[real, real]=> real" ("Integral _ D _" 91)
wneuper@346
    19
  new'_c	      :: "real => real"        ("new'_c _" 66)
wneuper@346
    20
  is'_f'_x            :: "real => bool"        ("_ is'_f'_x" 10)
wneuper@346
    21
wneuper@346
    22
  (*new Descriptions in the problem*)
wneuper@346
    23
  integrateBy         :: real => una
wneuper@346
    24
  antiDerivative      :: real => una
wneuper@346
    25
wneuper@346
    26
  (*the CAS-command*)
wneuper@346
    27
  Integrate           :: "[real * real] => real"  (*"integrate (2*x^^^3, x)"*)
wneuper@346
    28
wneuper@346
    29
  (*Script-names*)
wneuper@346
    30
  IntegrationScript      :: "[real,real,  real] => real"
wneuper@346
    31
                  ("((Script IntegrationScript (_ _ =))// (_))" 9)
wneuper@346
    32
  NamedIntegrationScript :: "[real,real,real,  bool] => bool"
wneuper@346
    33
                  ("((Script NamedIntegrationScript (_ _ _=))// (_))" 9)
wneuper@346
    34
wneuper@346
    35
rules 
wneuper@346
    36
(*stated as axioms, todo: prove as theorems
wneuper@346
    37
  'bdv' is a constant handled on the meta-level 
wneuper@346
    38
   specifically as a 'bound variable'            *)
wneuper@346
    39
wneuper@346
    40
  integral_const    "Not (bdv occurs_in u) ==> Integral u D bdv = u * bdv"
wneuper@346
    41
  integral_var      "Integral bdv D bdv = bdv ^^^ 2 / 2"
wneuper@346
    42
wneuper@346
    43
  integral_add      "Integral (u + v) D bdv = \
wneuper@346
    44
		    \(Integral u D bdv) + (Integral v D bdv)"
wneuper@346
    45
  integral_mult     "[| Not (bdv occurs_in u); bdv occurs_in v |] ==> \
wneuper@346
    46
		    \Integral (u * v) D bdv = u * (Integral v D bdv)"
wneuper@346
    47
  call_for_new_c    "[| Not (matches (u + new_c v) a); Not (a is_f_x) |] ==> \
wneuper@346
    48
		    \a = a + new_c a"
wneuper@346
    49
wneuper@346
    50
  integral_pow      "Integral bdv ^^^ n D bdv = bdv ^^^ (n+1) / (n + 1)"
wneuper@346
    51
wneuper@346
    52
end