src/Tools/isac/Knowledge/AlgEin.thy
author Mathias Lehnfeld <s1210629013@students.fh-hagenberg.at>
Mon, 27 Jan 2014 21:49:27 +0100
changeset 55359 73dc85c025ab
parent 55339 cccd24e959ba
child 55363 d78bc1342183
permissions -rw-r--r--
cleanup, naming: 'KEStore_Elems' in Tests now 'Test_KEStore_Elems', 'store_pbts' now 'add_pbts'
neuper@37906
     1
(* Algebra Einf"uhrung, Unterrichtsversuch IMST-Projekt
neuper@37906
     2
   author: Walther Neuper 2007
neuper@37906
     3
   (c) due to copyright terms
neuper@37906
     4
*)
neuper@37906
     5
neuper@37954
     6
theory AlgEin imports Rational begin
neuper@38000
     7
(*Poly + ..shouldbe sufficient, but norm_Poly required*)
neuper@37906
     8
neuper@37906
     9
consts
neuper@37906
    10
neuper@37906
    11
  (*new Descriptions in the related problems*)
neuper@38000
    12
  KantenUnten     :: "bool list => una"
neuper@38000
    13
  KantenSenkrecht :: "bool list => una"
neuper@38000
    14
  KantenOben      :: "bool list => una"
neuper@38000
    15
  KantenLaenge    :: "bool => una"
neuper@38000
    16
  Querschnitt     :: "bool => una"
neuper@38000
    17
  GesamtLaenge    :: "real => una"
neuper@37906
    18
neuper@37906
    19
  (*Script-names*)
neuper@37906
    20
  RechnenSymbolScript :: "[bool,bool,bool list,bool list,bool list,real,
neuper@37906
    21
				bool] => bool"
neuper@37906
    22
	      ("((Script RechnenSymbolScript (_ _ _ _ _ _ =))// (_))" 9)
neuper@37906
    23
neuper@37954
    24
ML {*
neuper@37972
    25
val thy = @{theory};
neuper@37972
    26
neuper@37954
    27
(** problems **)
neuper@37954
    28
neuper@37954
    29
store_pbt
neuper@37972
    30
 (prep_pbt thy "pbl_algein" [] e_pblID
neuper@37954
    31
 (["Berechnung"], [], e_rls, NONE, 
neuper@37954
    32
  []));
neuper@37954
    33
(* WN070405
neuper@37954
    34
store_pbt
neuper@37972
    35
 (prep_pbt thy "pbl_algein_num" [] e_pblID
neuper@37954
    36
 (["numerische", "Berechnung"],
neuper@38000
    37
  [("#Given" ,["KantenUnten u_u", "KantenSenkrecht s_s", "KantenOben o_o"]),
neuper@38000
    38
   ("#Find"  ,["GesamtLaenge l_l"])
neuper@37954
    39
  ],
neuper@37954
    40
  append_rls "e_rls" e_rls [], 
neuper@37954
    41
  NONE, 
neuper@37954
    42
  []));
neuper@37906
    43
*)
neuper@37954
    44
store_pbt
neuper@37972
    45
 (prep_pbt thy "pbl_algein_numsym" [] e_pblID
neuper@37954
    46
 (["numerischSymbolische", "Berechnung"],
neuper@38000
    47
  [("#Given" ,["KantenLaenge k_k","Querschnitt q__q"(*q_ in Biegelinie.thy*),
neuper@38000
    48
	       "KantenUnten u_u", "KantenSenkrecht s_s", "KantenOben o_o"]),
neuper@38000
    49
   ("#Find"  ,["GesamtLaenge l_l"])
neuper@37954
    50
  ],
neuper@37954
    51
  e_rls, 
neuper@37954
    52
  NONE, 
neuper@37954
    53
  [["Berechnung","erstNumerisch"],["Berechnung","erstSymbolisch"]]));
neuper@37954
    54
neuper@37954
    55
(* show_ptyps();
neuper@37954
    56
   *)
neuper@38000
    57
*}
s1210629013@55359
    58
setup {* KEStore_Elems.add_pbts
s1210629013@55339
    59
  [(prep_pbt thy "pbl_algein" [] e_pblID (["Berechnung"], [], e_rls, NONE, [])),
s1210629013@55339
    60
    (prep_pbt thy "pbl_algein_numsym" [] e_pblID
s1210629013@55339
    61
      (["numerischSymbolische", "Berechnung"],
s1210629013@55339
    62
        [("#Given",
s1210629013@55339
    63
            ["KantenLaenge k_k","Querschnitt q__q"(*q_ in Biegelinie.thy*), "KantenUnten u_u",
s1210629013@55339
    64
              "KantenSenkrecht s_s", "KantenOben o_o"]),
s1210629013@55339
    65
          ("#Find", ["GesamtLaenge l_l"])],
s1210629013@55339
    66
        e_rls, NONE, [["Berechnung","erstNumerisch"], ["Berechnung","erstSymbolisch"]]))]; *}
s1210629013@55339
    67
neuper@38000
    68
ML {*
neuper@37954
    69
(** methods **)
neuper@37954
    70
neuper@37954
    71
store_met
neuper@37972
    72
    (prep_met thy "met_algein" [] e_metID
neuper@37954
    73
	      (["Berechnung"],
neuper@37954
    74
	       [],
neuper@37954
    75
	       {rew_ord'="tless_true", rls'= Erls, calc = [], 
neuper@37954
    76
		srls = Erls, prls = Erls,
neuper@42425
    77
		crls =Erls , errpats = [], nrls = Erls},
neuper@37954
    78
"empty_script"
neuper@37954
    79
));
neuper@37954
    80
neuper@37954
    81
store_met
neuper@37972
    82
    (prep_met thy "met_algein_numsym" [] e_metID
neuper@37954
    83
	      (["Berechnung","erstNumerisch"],
neuper@37954
    84
	       [],
neuper@37954
    85
	       {rew_ord'="tless_true", rls'= Erls, calc = [], 
neuper@37954
    86
		srls = Erls, prls = Erls,
neuper@42425
    87
		crls =Erls , errpats = [], nrls = Erls},
neuper@37954
    88
"empty_script"
neuper@37954
    89
));
neuper@37954
    90
neuper@38000
    91
*}
neuper@38000
    92
ML {*
neuper@37954
    93
store_met
neuper@37972
    94
    (prep_met thy "met_algein_numsym" [] e_metID
neuper@37954
    95
	      (["Berechnung","erstNumerisch"],
neuper@38000
    96
	       [("#Given" ,["KantenLaenge k_k","Querschnitt q__q",
neuper@38000
    97
			    "KantenUnten u_u", "KantenSenkrecht s_s", 
neuper@38000
    98
			    "KantenOben o_o"]),
neuper@38000
    99
		("#Find"  ,["GesamtLaenge l_l"])
neuper@37954
   100
		],
neuper@37954
   101
	       {rew_ord'="tless_true", rls'= e_rls, calc = [], 
neuper@37954
   102
		srls = append_rls "srls_..Berechnung-erstSymbolisch" e_rls 
neuper@37954
   103
				  [Calc ("Atools.boollist2sum",
neuper@37954
   104
					 eval_boollist2sum "")], 
neuper@42425
   105
		prls = e_rls, crls =e_rls , errpats = [], nrls = norm_Rational},
neuper@38000
   106
"Script RechnenSymbolScript (k_k::bool) (q__q::bool)           " ^
neuper@38000
   107
"(u_u::bool list) (s_s::bool list) (o_o::bool list) (l_l::real) =" ^
neuper@38000
   108
" (let t_t = Take (l_l = oben + senkrecht + unten);            " ^
neuper@38000
   109
"      su_m = boollist2sum o_o;                               " ^
neuper@38000
   110
"      t_t = Substitute [oben = su_m] t_t;                     " ^
neuper@38000
   111
"      t_t = Substitute o_o t_t;                                " ^
neuper@38000
   112
"      t_t = Substitute [k_k, q__q] t_t;                         " ^
neuper@38000
   113
"      t_t = (Repeat (Try (Rewrite_Set norm_Poly False))) t_t; " ^
neuper@38000
   114
"      su_m = boollist2sum s_s;                               " ^
neuper@38000
   115
"      t_t = Substitute [senkrecht = su_m] t_t;                " ^
neuper@38000
   116
"      t_t = Substitute s_s t_t;                                " ^
neuper@38000
   117
"      t_t = Substitute [k_k, q__q] t_t;                         " ^
neuper@38000
   118
"      t_t = (Repeat (Try (Rewrite_Set norm_Poly False))) t_t; " ^
neuper@38000
   119
"      su_m = boollist2sum u_u;                               " ^
neuper@38000
   120
"      t_t = Substitute [unten = su_m] t_t;                    " ^
neuper@38000
   121
"      t_t = Substitute u_u t_t;                                " ^
neuper@38000
   122
"      t_t = Substitute [k_k, q__q] t_t;                         " ^
neuper@38000
   123
"      t_t = (Repeat (Try (Rewrite_Set norm_Poly False))) t_t  " ^
neuper@38000
   124
" in (Try (Rewrite_Set norm_Poly False)) t_t)                  "
neuper@37954
   125
));
neuper@37954
   126
neuper@38000
   127
*}
neuper@38000
   128
ML {*
neuper@37954
   129
store_met
neuper@37972
   130
    (prep_met thy "met_algein_symnum" [] e_metID
neuper@37954
   131
	      (["Berechnung","erstSymbolisch"],
neuper@38000
   132
	       [("#Given" ,["KantenLaenge k_k","Querschnitt q__q",
neuper@38000
   133
			    "KantenUnten u_u", "KantenSenkrecht s_s", 
neuper@38000
   134
			    "KantenOben o_o"]),
neuper@38000
   135
		("#Find"  ,["GesamtLaenge l_l"])
neuper@37954
   136
		],
neuper@37954
   137
	       {rew_ord'="tless_true", rls'= e_rls, calc = [], 
neuper@37954
   138
		srls = append_rls "srls_..Berechnung-erstSymbolisch" e_rls 
neuper@37954
   139
				  [Calc ("Atools.boollist2sum",
neuper@37954
   140
					 eval_boollist2sum "")], 
neuper@37954
   141
		prls = e_rls,
neuper@42425
   142
		crls =e_rls , errpats = [], nrls = norm_Rational},
neuper@38000
   143
"Script RechnenSymbolScript (k_k::bool) (q__q::bool)           " ^
neuper@38000
   144
"(u_u::bool list) (s_s::bool list) (o_o::bool list) (l_l::real) =" ^
neuper@38000
   145
" (let t_t = Take (l_l = oben + senkrecht + unten);            " ^
neuper@38000
   146
"      su_m = boollist2sum o_o;                               " ^
neuper@38000
   147
"      t_t = Substitute [oben = su_m] t_t;                     " ^
neuper@38000
   148
"      t_t = Substitute o_o t_t;                                " ^
neuper@38000
   149
"      t_t = (Repeat (Try (Rewrite_Set norm_Poly False))) t_t; " ^
neuper@38000
   150
"      su_m = boollist2sum s_s;                               " ^
neuper@38000
   151
"      t_t = Substitute [senkrecht = su_m] t_t;                " ^
neuper@38000
   152
"      t_t = Substitute s_s t_t;                                " ^
neuper@38000
   153
"      t_t = (Repeat (Try (Rewrite_Set norm_Poly False))) t_t; " ^
neuper@38000
   154
"      su_m = boollist2sum u_u;                               " ^
neuper@38000
   155
"      t_t = Substitute [unten = su_m] t_t;                    " ^
neuper@38000
   156
"      t_t = Substitute u_u t_t;                                " ^
neuper@38000
   157
"      t_t = (Repeat (Try (Rewrite_Set norm_Poly False))) t_t; " ^
neuper@38000
   158
"      t_t = Substitute [k_k, q__q] t_t                          " ^
neuper@38000
   159
" in (Try (Rewrite_Set norm_Poly False)) t_t)                 "
neuper@37954
   160
));
neuper@37954
   161
*}
neuper@37906
   162
neuper@37906
   163
end