src/Tools/isac/Knowledge/AlgEin.ML
author Walther Neuper <neuper@ist.tugraz.at>
Wed, 25 Aug 2010 16:20:07 +0200
branchisac-update-Isa09-2
changeset 37947 22235e4dbe5f
parent 37926 src/Tools/isac/IsacKnowledge/AlgEin.ML@e6fc98fbcb85
child 37952 9ddd1000b900
permissions -rw-r--r--
renamed isac's directories and Build_Isac.thy

Scripts --> ProgLang
ME --> Interpret
IsacKnowledge --> Knowledge
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@37947
     5
use"Knowledge/AlgEin.ML";
neuper@37906
     6
use"AlgEin.ML";
neuper@37906
     7
neuper@37906
     8
remove_thy"Typefix";
neuper@37906
     9
remove_thy"AlgEin";
neuper@37947
    10
use_thy"Knowledge/Isac";
neuper@37906
    11
*)
neuper@37906
    12
neuper@37906
    13
(** interface isabelle -- isac **)
neuper@37906
    14
neuper@37906
    15
theory' := overwritel (!theory', [("AlgEin.thy",AlgEin.thy)]);
neuper@37906
    16
neuper@37906
    17
(** problems **)
neuper@37906
    18
neuper@37906
    19
store_pbt
neuper@37906
    20
 (prep_pbt AlgEin.thy "pbl_algein" [] e_pblID
neuper@37926
    21
 (["Berechnung"], [], e_rls, NONE, 
neuper@37906
    22
  []));
neuper@37906
    23
(* WN070405
neuper@37906
    24
store_pbt
neuper@37906
    25
 (prep_pbt AlgEin.thy "pbl_algein_num" [] e_pblID
neuper@37906
    26
 (["numerische", "Berechnung"],
neuper@37906
    27
  [("#Given" ,["KantenUnten u_", "KantenSenkrecht s_", "KantenOben o_"]),
neuper@37906
    28
   ("#Find"  ,["GesamtLaenge l_"])
neuper@37906
    29
  ],
neuper@37906
    30
  append_rls "e_rls" e_rls [], 
neuper@37926
    31
  NONE, 
neuper@37906
    32
  []));
neuper@37906
    33
*)
neuper@37906
    34
store_pbt
neuper@37906
    35
 (prep_pbt AlgEin.thy "pbl_algein_numsym" [] e_pblID
neuper@37906
    36
 (["numerischSymbolische", "Berechnung"],
neuper@37906
    37
  [("#Given" ,["KantenLaenge k_","Querschnitt q__"(*q_ in Biegelinie.thy*),
neuper@37906
    38
	       "KantenUnten u_", "KantenSenkrecht s_", "KantenOben o_"]),
neuper@37906
    39
   ("#Find"  ,["GesamtLaenge l_"])
neuper@37906
    40
  ],
neuper@37906
    41
  e_rls, 
neuper@37926
    42
  NONE, 
neuper@37906
    43
  [["Berechnung","erstNumerisch"],["Berechnung","erstSymbolisch"]]));
neuper@37906
    44
neuper@37906
    45
(* show_ptyps();
neuper@37906
    46
   *)
neuper@37906
    47
neuper@37906
    48
neuper@37906
    49
(** methods **)
neuper@37906
    50
neuper@37906
    51
store_met
neuper@37906
    52
    (prep_met AlgEin.thy "met_algein" [] e_metID
neuper@37906
    53
	      (["Berechnung"],
neuper@37906
    54
	       [],
neuper@37906
    55
	       {rew_ord'="tless_true", rls'= Erls, calc = [], 
neuper@37906
    56
		srls = Erls, prls = Erls,
neuper@37906
    57
		crls =Erls , nrls = Erls},
neuper@37906
    58
"empty_script"
neuper@37906
    59
));
neuper@37906
    60
neuper@37906
    61
store_met
neuper@37906
    62
    (prep_met AlgEin.thy "met_algein_numsym" [] e_metID
neuper@37906
    63
	      (["Berechnung","erstNumerisch"],
neuper@37906
    64
	       [],
neuper@37906
    65
	       {rew_ord'="tless_true", rls'= Erls, calc = [], 
neuper@37906
    66
		srls = Erls, prls = Erls,
neuper@37906
    67
		crls =Erls , nrls = Erls},
neuper@37906
    68
"empty_script"
neuper@37906
    69
));
neuper@37906
    70
neuper@37906
    71
store_met
neuper@37906
    72
    (prep_met AlgEin.thy "met_algein_numsym" [] e_metID
neuper@37906
    73
	      (["Berechnung","erstNumerisch"],
neuper@37906
    74
	       [("#Given" ,["KantenLaenge k_","Querschnitt q__",
neuper@37906
    75
			    "KantenUnten u_", "KantenSenkrecht s_", 
neuper@37906
    76
			    "KantenOben o_"]),
neuper@37906
    77
		("#Find"  ,["GesamtLaenge l_"])
neuper@37906
    78
		],
neuper@37906
    79
	       {rew_ord'="tless_true", rls'= e_rls, calc = [], 
neuper@37906
    80
		srls = append_rls "srls_..Berechnung-erstSymbolisch" e_rls 
neuper@37906
    81
				  [Calc ("Atools.boollist2sum",
neuper@37906
    82
					 eval_boollist2sum "")], 
neuper@37906
    83
		prls = e_rls, crls =e_rls , nrls = norm_Rational},
neuper@37906
    84
"Script RechnenSymbolScript (k_::bool) (q__::bool)           \
neuper@37906
    85
\(u_::bool list) (s_::bool list) (o_::bool list) (l_::real) =\
neuper@37906
    86
\ (let t_ = Take (l_ = oben + senkrecht + unten);            \
neuper@37906
    87
\      sum_ = boollist2sum o_;\
neuper@37906
    88
\      t_ = Substitute [oben = sum_] t_;\
neuper@37906
    89
\      t_ = Substitute o_ t_;\
neuper@37906
    90
\      t_ = Substitute [k_, q__] t_;\
neuper@37906
    91
\      t_ = (Repeat (Try (Rewrite_Set norm_Poly False))) t_;\
neuper@37906
    92
\      sum_ = boollist2sum s_;\
neuper@37906
    93
\      t_ = Substitute [senkrecht = sum_] t_;\
neuper@37906
    94
\      t_ = Substitute s_ t_;\
neuper@37906
    95
\      t_ = Substitute [k_, q__] t_;\
neuper@37906
    96
\      t_ = (Repeat (Try (Rewrite_Set norm_Poly False))) t_;\
neuper@37906
    97
\      sum_ = boollist2sum u_;\
neuper@37906
    98
\      t_ = Substitute [unten = sum_] t_;\
neuper@37906
    99
\      t_ = Substitute u_ t_;\
neuper@37906
   100
\      t_ = Substitute [k_, q__] t_;\
neuper@37906
   101
\      t_ = (Repeat (Try (Rewrite_Set norm_Poly False))) t_\
neuper@37906
   102
\ in (Try (Rewrite_Set norm_Poly False)) t_)"
neuper@37906
   103
));
neuper@37906
   104
neuper@37906
   105
store_met
neuper@37906
   106
    (prep_met AlgEin.thy "met_algein_symnum" [] e_metID
neuper@37906
   107
	      (["Berechnung","erstSymbolisch"],
neuper@37906
   108
	       [("#Given" ,["KantenLaenge k_","Querschnitt q__",
neuper@37906
   109
			    "KantenUnten u_", "KantenSenkrecht s_", 
neuper@37906
   110
			    "KantenOben o_"]),
neuper@37906
   111
		("#Find"  ,["GesamtLaenge l_"])
neuper@37906
   112
		],
neuper@37906
   113
	       {rew_ord'="tless_true", rls'= e_rls, calc = [], 
neuper@37906
   114
		srls = append_rls "srls_..Berechnung-erstSymbolisch" e_rls 
neuper@37906
   115
				  [Calc ("Atools.boollist2sum",
neuper@37906
   116
					 eval_boollist2sum "")], 
neuper@37906
   117
		prls = e_rls,
neuper@37906
   118
		crls =e_rls , nrls = norm_Rational},
neuper@37906
   119
"Script RechnenSymbolScript (k_::bool) (q__::bool)           \
neuper@37906
   120
\(u_::bool list) (s_::bool list) (o_::bool list) (l_::real) =\
neuper@37906
   121
\ (let t_ = Take (l_ = oben + senkrecht + unten);            \
neuper@37906
   122
\      sum_ = boollist2sum o_;\
neuper@37906
   123
\      t_ = Substitute [oben = sum_] t_;\
neuper@37906
   124
\      t_ = Substitute o_ t_;\
neuper@37906
   125
\      t_ = (Repeat (Try (Rewrite_Set norm_Poly False))) t_;\
neuper@37906
   126
\      sum_ = boollist2sum s_;\
neuper@37906
   127
\      t_ = Substitute [senkrecht = sum_] t_;\
neuper@37906
   128
\      t_ = Substitute s_ t_;\
neuper@37906
   129
\      t_ = (Repeat (Try (Rewrite_Set norm_Poly False))) t_;\
neuper@37906
   130
\      sum_ = boollist2sum u_;\
neuper@37906
   131
\      t_ = Substitute [unten = sum_] t_;\
neuper@37906
   132
\      t_ = Substitute u_ t_;\
neuper@37906
   133
\      t_ = (Repeat (Try (Rewrite_Set norm_Poly False))) t_;\
neuper@37906
   134
\      t_ = Substitute [k_, q__] t_\
neuper@37906
   135
\ in (Try (Rewrite_Set norm_Poly False)) t_)"
neuper@37906
   136
));
neuper@37906
   137
neuper@37906
   138
(* show_mets();
neuper@37906
   139
   *)
neuper@37947
   140
(* use"Knowledge/AlgEin.ML";
neuper@37906
   141
   *)