neuper@37906
|
1 |
(* simplification of terms
|
neuper@37906
|
2 |
author: Walther Neuper 050912
|
neuper@37906
|
3 |
(c) due to copyright terms
|
neuper@37906
|
4 |
*)
|
neuper@37906
|
5 |
|
neuper@37950
|
6 |
theory Simplify imports Atools begin
|
neuper@37906
|
7 |
|
neuper@37906
|
8 |
consts
|
neuper@37906
|
9 |
|
neuper@37906
|
10 |
(*descriptions in the related problem*)
|
neuper@38083
|
11 |
Term :: "real => una"
|
neuper@38083
|
12 |
(*TERM --> Const ("Pure.term", "RealDef.real => prop") (*!!!*) $
|
neuper@38083
|
13 |
Free ("ttt", "RealDef.real")
|
neuper@38083
|
14 |
term --> Free ("term", "RealDef.real => RealDef.real") $
|
neuper@38083
|
15 |
Free ("ttt", "RealDef.real")
|
neuper@38083
|
16 |
but 'term' is a keyword in *.thy*)
|
neuper@37950
|
17 |
normalform :: "real => una"
|
neuper@37906
|
18 |
|
neuper@37906
|
19 |
(*the CAS-command*)
|
neuper@37906
|
20 |
Simplify :: "real => real" (*"Simplify (1+2a+3+4a)*)
|
neuper@37906
|
21 |
Vereinfache :: "real => real" (*"Vereinfache (1+2a+3+4a)*)
|
neuper@37906
|
22 |
|
neuper@37906
|
23 |
(*Script-name*)
|
neuper@37906
|
24 |
SimplifyScript :: "[real, real] => real"
|
neuper@37906
|
25 |
("((Script SimplifyScript (_ =))// (_))" 9)
|
neuper@37906
|
26 |
|
neuper@37950
|
27 |
ML {*
|
neuper@37972
|
28 |
val thy = @{theory};
|
neuper@37950
|
29 |
|
neuper@37950
|
30 |
(** problems **)
|
neuper@37950
|
31 |
store_pbt
|
neuper@37972
|
32 |
(prep_pbt thy "pbl_simp" [] e_pblID
|
neuper@37950
|
33 |
(["simplification"],
|
neuper@38083
|
34 |
[("#Given" ,["Term t_t"]),
|
neuper@37968
|
35 |
("#Find" ,["normalform n_n"])
|
neuper@37950
|
36 |
],
|
neuper@37950
|
37 |
append_rls "e_rls" e_rls [(*for preds in where_*)],
|
neuper@37968
|
38 |
SOME "Simplify t_t",
|
neuper@37950
|
39 |
[]));
|
neuper@37950
|
40 |
|
neuper@37950
|
41 |
store_pbt
|
neuper@37972
|
42 |
(prep_pbt thy "pbl_vereinfache" [] e_pblID
|
neuper@37950
|
43 |
(["vereinfachen"],
|
neuper@38083
|
44 |
[("#Given" ,["Term t_t"]),
|
neuper@37968
|
45 |
("#Find" ,["normalform n_n"])
|
neuper@37950
|
46 |
],
|
neuper@37950
|
47 |
append_rls "e_rls" e_rls [(*for preds in where_*)],
|
neuper@37968
|
48 |
SOME "Vereinfache t_t",
|
neuper@37950
|
49 |
[]));
|
neuper@42425
|
50 |
*}
|
s1210629013@55359
|
51 |
setup {* KEStore_Elems.add_pbts
|
s1210629013@55339
|
52 |
[(prep_pbt thy "pbl_simp" [] e_pblID
|
s1210629013@55339
|
53 |
(["simplification"],
|
s1210629013@55339
|
54 |
[("#Given" ,["Term t_t"]),
|
s1210629013@55339
|
55 |
("#Find" ,["normalform n_n"])],
|
s1210629013@55339
|
56 |
append_rls "e_rls" e_rls [(*for preds in where_*)], SOME "Simplify t_t", [])),
|
s1210629013@55339
|
57 |
(prep_pbt thy "pbl_vereinfache" [] e_pblID
|
s1210629013@55339
|
58 |
(["vereinfachen"],
|
s1210629013@55339
|
59 |
[("#Given", ["Term t_t"]),
|
s1210629013@55339
|
60 |
("#Find", ["normalform n_n"])],
|
s1210629013@55339
|
61 |
append_rls "e_rls" e_rls [(*for preds in where_*)], SOME "Vereinfache t_t", []))] *}
|
neuper@42425
|
62 |
ML {*
|
neuper@48763
|
63 |
@{thm mult_commute}
|
neuper@48763
|
64 |
*}
|
neuper@48763
|
65 |
ML {*
|
neuper@37950
|
66 |
|
neuper@37950
|
67 |
(** methods **)
|
neuper@37950
|
68 |
|
neuper@37950
|
69 |
store_met
|
neuper@42425
|
70 |
(prep_met thy "met_tsimp" [] e_metID
|
neuper@42425
|
71 |
(["simplification"],
|
neuper@42425
|
72 |
[("#Given" ,["Term t_t"]),
|
neuper@42425
|
73 |
("#Find" ,["normalform n_n"])],
|
neuper@42425
|
74 |
{rew_ord'="tless_true", rls'= e_rls, calc = [], srls = e_rls, prls=e_rls,
|
neuper@42425
|
75 |
crls = e_rls, errpats = [], nrls = e_rls},
|
neuper@42425
|
76 |
"empty_script"));
|
neuper@42425
|
77 |
*}
|
neuper@42425
|
78 |
ML {*
|
neuper@37950
|
79 |
|
neuper@37950
|
80 |
(** CAS-command **)
|
neuper@37950
|
81 |
|
neuper@37950
|
82 |
(*.function for handling the cas-input "Simplify (2*a + 3*a)":
|
neuper@37950
|
83 |
make a model which is already in ptree-internal format.*)
|
neuper@37950
|
84 |
(* val (h,argl) = strip_comb (str2term "Simplify (2*a + 3*a)");
|
neuper@40836
|
85 |
val (h,argl) = strip_comb ((term_of o the o (parse (Thy_Info.get_theory "Simplify")))
|
neuper@37950
|
86 |
"Simplify (2*a + 3*a)");
|
neuper@37950
|
87 |
*)
|
neuper@37950
|
88 |
fun argl2dtss t =
|
neuper@38083
|
89 |
[((term_of o the o (parse thy)) "Term", t),
|
neuper@37972
|
90 |
((term_of o the o (parse thy)) "normalform",
|
neuper@37972
|
91 |
[(term_of o the o (parse thy)) "N"])
|
neuper@37950
|
92 |
]
|
s1210629013@52170
|
93 |
(*| argl2dtss _ = error "Simplify.ML: wrong argument for argl2dtss"*);
|
neuper@37950
|
94 |
*}
|
s1210629013@52170
|
95 |
setup {* KEStore_Elems.add_cas
|
s1210629013@52170
|
96 |
[((term_of o the o (parse thy)) "Simplify",
|
s1210629013@52170
|
97 |
(("Isac", ["simplification"], ["no_met"]), argl2dtss)),
|
s1210629013@52170
|
98 |
((term_of o the o (parse thy)) "Vereinfache",
|
s1210629013@52170
|
99 |
(("Isac", ["vereinfachen"], ["no_met"]), argl2dtss))]*}
|
neuper@37906
|
100 |
|
neuper@37906
|
101 |
end |