1 (* integration over the reals
4 (c) due to copyright terms
7 use_thy"~/proto2/isac/src/sml/IsacKnowledge/Integrate";
8 use_thy_only"~/proto2/isac/src/sml/IsacKnowledge/Integrate";
11 use_thy"~/proto2/isac/src/sml/IsacKnowledge/Isac";
18 Integral :: "[real, real]=> real" ("Integral _ D _" 91)
19 new'_c :: "real => real" ("new'_c _" 66)
21 (*new Descriptions in the problem*)
22 integrateBy :: real => una
23 antiDerivative :: real => una
26 Integrate :: "[real * real] => real" (* "integrate (2*x^^^3, x)" *)
29 IntegrationScript :: "[real,real, real] => real"
30 ("((Script IntegrationScript (_ _ =))// (_))" 9)
31 NamedIntegrationScript :: "[real,real,real, bool] => bool"
32 ("((Script NamedIntegrationScript (_ _ _=))// (_))" 9)
35 (*stated as axioms, todo: prove as theorems
36 'bdv' is a constant handled on the meta-level
37 specifically as a 'bound variable' *)
39 integral_const "Not (bdv occurs_in u) ==> Integral u D bdv = u * bdv"
40 integral_var "Integral bdv D bdv = bdv ^^^ 2 / 2"
42 integral_add "Integral (u + v) D bdv = \
43 \(Integral u D bdv) + (Integral v D bdv)"
44 integral_mult "[| Not (bdv occurs_in u); bdv occurs_in v |] ==> \
45 \Integral (u * v) D bdv = u * (Integral v D bdv)"
46 call_for_new_c "Not (matches (u + new_c v) a) ==> a = a + new_c a"
48 integral_pow "Integral bdv ^^^ n D bdv = bdv ^^^ (n+1) / (n + 1)"