wneuper@2858
|
1 |
(* tests on integration over the reals
|
wneuper@2858
|
2 |
author: Walther Neuper
|
wneuper@2858
|
3 |
050814, 08:51
|
wneuper@2858
|
4 |
(c) due to copyright terms
|
wneuper@2858
|
5 |
|
wneuper@2858
|
6 |
use"~/proto2/isac/src/smltest/IsacKnowledge/integrate.sml";
|
wneuper@2858
|
7 |
*)
|
wneuper@2858
|
8 |
|
wneuper@2858
|
9 |
"-----------------------------------------------------------------";
|
wneuper@2858
|
10 |
"table of contents -----------------------------------------------";
|
wneuper@2858
|
11 |
"-----------------------------------------------------------------";
|
wneuper@2858
|
12 |
"----------- parsing ---------------------------------------------";
|
wneuper@2858
|
13 |
"----------- set up rewriting ------------------------------------";
|
wneuper@2858
|
14 |
"----------- integrate by rewriting ------------------------------";
|
wneuper@2858
|
15 |
"----------- set up ruleset --------------------------------------";
|
wneuper@2858
|
16 |
"----------- integrate by ruleset --------------------------------";
|
wneuper@2858
|
17 |
"-----------------------------------------------------------------";
|
wneuper@2858
|
18 |
"-----------------------------------------------------------------";
|
wneuper@2858
|
19 |
"-----------------------------------------------------------------";
|
wneuper@2858
|
20 |
|
wneuper@2858
|
21 |
"----------- parsing ---------------------------------------------";
|
wneuper@2858
|
22 |
"----------- parsing ---------------------------------------------";
|
wneuper@2858
|
23 |
"----------- parsing ---------------------------------------------";
|
wneuper@2858
|
24 |
fun str2t thy str = (term_of o the o (parse thy )) str;
|
wneuper@2858
|
25 |
fun term2s thy t = Sign.string_of_term (sign_of thy) t;
|
wneuper@2858
|
26 |
|
wneuper@2858
|
27 |
val t = str2t Integrate.thy "Integral x D x";
|
wneuper@2858
|
28 |
val t = str2t Integrate.thy "Integral x^^^2 D x";
|
wneuper@2858
|
29 |
atomty thy t;
|
wneuper@2858
|
30 |
|
wneuper@2858
|
31 |
"----------- set up rewriting ------------------------------------";
|
wneuper@2858
|
32 |
"----------- set up rewriting ------------------------------------";
|
wneuper@2858
|
33 |
"----------- set up rewriting ------------------------------------";
|
wneuper@2858
|
34 |
val conditions_in_integration_rules =
|
wneuper@2858
|
35 |
prep_rls (Rls {id="conditions_in_integration_rules", preconds = [],
|
wneuper@2858
|
36 |
rew_ord = ("termlessI",termlessI),
|
wneuper@2858
|
37 |
erls = Erls,
|
wneuper@2858
|
38 |
srls = Erls, calc = [],
|
wneuper@2858
|
39 |
rules = [Calc ("Atools.occurs'_in",
|
wneuper@2858
|
40 |
eval_occurs_in "#occurs_in_"),
|
wneuper@2858
|
41 |
Thm ("not_true",num_str not_true),
|
wneuper@2858
|
42 |
Thm ("not_false",not_false)
|
wneuper@2858
|
43 |
],
|
wneuper@2858
|
44 |
scr = EmptyScr});
|
wneuper@2858
|
45 |
ruleset' := overwritel (!ruleset', [("conditions_in_integration_rules",
|
wneuper@2858
|
46 |
conditions_in_integration_rules)]);
|
wneuper@2858
|
47 |
|
wneuper@2858
|
48 |
"----------- integrate by rewriting ------------------------------";
|
wneuper@2858
|
49 |
"----------- integrate by rewriting ------------------------------";
|
wneuper@2858
|
50 |
"----------- integrate by rewriting ------------------------------";
|
wneuper@2858
|
51 |
fun rewrit subs thm str =
|
wneuper@2858
|
52 |
fst (the (rewrite_inst "Integrate.thy" "tless_true"
|
wneuper@2858
|
53 |
"conditions_in_integration_rules"
|
wneuper@2858
|
54 |
true subs thm str));
|
wneuper@2858
|
55 |
val thm = ("integral_const","");
|
wneuper@2858
|
56 |
val str = rewrit [("bdv","x::real")] thm "Integral 1 D x";
|
wneuper@2858
|
57 |
val str = rewrit [("bdv","x::real")] thm "Integral M'/EJ D x";
|
wneuper@2858
|
58 |
val str = (rewrit [("bdv","x::real")] thm "Integral x D x")
|
wneuper@2858
|
59 |
handle OPTION => "no rewrite -- OK";
|
wneuper@2858
|
60 |
|
wneuper@2858
|
61 |
val thm = ("integral_var","");
|
wneuper@2858
|
62 |
val str = rewrit [("bdv","x::real")] thm "Integral x D x";
|
wneuper@2858
|
63 |
val str = (rewrit [("bdv","x::real")] thm "Integral a D x")
|
wneuper@2858
|
64 |
handle OPTION => "no rewrite -- OK";
|
wneuper@2858
|
65 |
|
wneuper@2858
|
66 |
val thm = ("integral_add","");
|
wneuper@2858
|
67 |
val str = rewrit [("bdv","x::real")] thm "Integral x + 1 D x";
|
wneuper@2858
|
68 |
|
wneuper@2858
|
69 |
val thm = ("integral_mult","");
|
wneuper@2858
|
70 |
val str = rewrit [("bdv","x::real")] thm "Integral M'/EJ * x^^^3 D x";
|
wneuper@2858
|
71 |
val str = (rewrit [("bdv","x::real")] thm "Integral x * x D x")
|
wneuper@2858
|
72 |
handle OPTION => "no rewrite -- OK";
|
wneuper@2858
|
73 |
|
wneuper@2858
|
74 |
val thm = ("integral_pow","");
|
wneuper@2858
|
75 |
val str = rewrit [("bdv","x::real")] thm "Integral x^^^3 D x";
|
wneuper@2858
|
76 |
|
wneuper@2858
|
77 |
"----------- set up ruleset --------------------------------------";
|
wneuper@2858
|
78 |
"----------- set up ruleset --------------------------------------";
|
wneuper@2858
|
79 |
"----------- set up ruleset --------------------------------------";
|
wneuper@2858
|
80 |
val integration_rules =
|
wneuper@2858
|
81 |
prep_rls (Rls {id="integration_rules", preconds = [],
|
wneuper@2858
|
82 |
rew_ord = ("termlessI",termlessI),
|
wneuper@2858
|
83 |
erls = conditions_in_integration_rules,
|
wneuper@2858
|
84 |
srls = Erls, calc = [],
|
wneuper@2858
|
85 |
rules = [
|
wneuper@2858
|
86 |
Thm ("integral_const",num_str integral_const),
|
wneuper@2858
|
87 |
Thm ("integral_var",num_str integral_var),
|
wneuper@2858
|
88 |
Thm ("integral_add",num_str integral_add),
|
wneuper@2858
|
89 |
Thm ("integral_mult",num_str integral_mult),
|
wneuper@2858
|
90 |
Thm ("integral_pow",num_str integral_pow),
|
wneuper@2858
|
91 |
Rls_ make_polynomial
|
wneuper@2858
|
92 |
],
|
wneuper@2858
|
93 |
scr = EmptyScr});
|
wneuper@2858
|
94 |
ruleset' := overwritel (!ruleset', [("integration_rules", integration_rules)]);
|
wneuper@2858
|
95 |
|
wneuper@2858
|
96 |
"----------- integrate by ruleset --------------------------------";
|
wneuper@2858
|
97 |
"----------- integrate by ruleset --------------------------------";
|
wneuper@2858
|
98 |
"----------- integrate by ruleset --------------------------------";
|
wneuper@2858
|
99 |
fun rewrite_se subs rls str =
|
wneuper@2858
|
100 |
fst (the (rewrite_set_inst "Integrate.thy" true subs rls str));
|
wneuper@2858
|
101 |
val subs = [("bdv","x::real")];
|
wneuper@2858
|
102 |
val rls = "integration_rules";
|
wneuper@2858
|
103 |
val str = rewrite_se subs rls "Integral 1 D x";
|