src/Tools/isac/Knowledge/Biegelinie.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/Biegelinie.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
(* chapter 'Biegelinie' from the textbook: 
neuper@37906
     2
   Timischl, Kaiser. Ingenieur-Mathematik 3. Wien 1999. p.268-271.
neuper@37906
     3
   authors: Walther Neuper 2005
neuper@37906
     4
   (c) due to copyright terms
neuper@37906
     5
neuper@37947
     6
use"Knowledge/Biegelinie.ML";
neuper@37906
     7
use"Biegelinie.ML";
neuper@37906
     8
neuper@37906
     9
remove_thy"Typefix";
neuper@37906
    10
remove_thy"Biegelinie";
neuper@37947
    11
use_thy"Knowledge/Isac";
neuper@37906
    12
*)
neuper@37906
    13
neuper@37906
    14
(** interface isabelle -- isac **)
neuper@37906
    15
neuper@37906
    16
theory' := overwritel (!theory', [("Biegelinie.thy",Biegelinie.thy)]);
neuper@37906
    17
neuper@37906
    18
(** theory elements **)
neuper@37906
    19
neuper@37906
    20
store_isa ["IsacKnowledge"] [];
neuper@37906
    21
store_thy Biegelinie.thy 
neuper@37906
    22
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37906
    23
store_isa ["IsacKnowledge", theory2thyID Biegelinie.thy, "Theorems"] 
neuper@37906
    24
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37906
    25
store_thm Biegelinie.thy ("Belastung_Querkraft", Belastung_Querkraft)
neuper@37906
    26
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37906
    27
store_thm Biegelinie.thy ("Moment_Neigung", Moment_Neigung)
neuper@37906
    28
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37906
    29
store_thm Biegelinie.thy ("Moment_Querkraft", Moment_Querkraft)
neuper@37906
    30
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37906
    31
store_thm Biegelinie.thy ("Neigung_Moment", Neigung_Moment)
neuper@37906
    32
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37906
    33
store_thm Biegelinie.thy ("Querkraft_Belastung", Querkraft_Belastung)
neuper@37906
    34
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37906
    35
store_thm Biegelinie.thy ("Querkraft_Moment", Querkraft_Moment)
neuper@37906
    36
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37906
    37
store_thm Biegelinie.thy ("make_fun_explicit", make_fun_explicit)
neuper@37906
    38
	  ["Walther Neuper 2005 supported by a grant from NMI Austria"];
neuper@37906
    39
neuper@37906
    40
neuper@37906
    41
(** problems **)
neuper@37906
    42
neuper@37906
    43
store_pbt
neuper@37906
    44
 (prep_pbt Biegelinie.thy "pbl_bieg" [] e_pblID
neuper@37906
    45
 (["Biegelinien"],
neuper@37906
    46
  [("#Given" ,["Traegerlaenge l_", "Streckenlast q__"]),
neuper@37906
    47
   (*("#Where",["0 < l_"]), ...wait for &lt; and handling Arbfix*)
neuper@37906
    48
   ("#Find"  ,["Biegelinie b_"]),
neuper@37906
    49
   ("#Relate",["Randbedingungen rb_"])
neuper@37906
    50
  ],
neuper@37906
    51
  append_rls "e_rls" e_rls [], 
neuper@37926
    52
  NONE, 
neuper@37906
    53
  [["IntegrierenUndKonstanteBestimmen2"]]));
neuper@37906
    54
neuper@37906
    55
store_pbt 
neuper@37906
    56
 (prep_pbt Biegelinie.thy "pbl_bieg_mom" [] e_pblID
neuper@37906
    57
 (["MomentBestimmte","Biegelinien"],
neuper@37906
    58
  [("#Given" ,["Traegerlaenge l_", "Streckenlast q__"]),
neuper@37906
    59
   (*("#Where",["0 < l_"]), ...wait for &lt; and handling Arbfix*)
neuper@37906
    60
   ("#Find"  ,["Biegelinie b_"]),
neuper@37906
    61
   ("#Relate",["RandbedingungenBiegung rb_","RandbedingungenMoment rm_"])
neuper@37906
    62
  ],
neuper@37906
    63
  append_rls "e_rls" e_rls [], 
neuper@37926
    64
  NONE, 
neuper@37906
    65
  [["IntegrierenUndKonstanteBestimmen"]]));
neuper@37906
    66
neuper@37906
    67
store_pbt
neuper@37906
    68
 (prep_pbt Biegelinie.thy "pbl_bieg_momg" [] e_pblID
neuper@37906
    69
 (["MomentGegebene","Biegelinien"],
neuper@37906
    70
  [],
neuper@37906
    71
  append_rls "e_rls" e_rls [], 
neuper@37926
    72
  NONE, 
neuper@37906
    73
  [["IntegrierenUndKonstanteBestimmen","2xIntegrieren"]]));
neuper@37906
    74
neuper@37906
    75
store_pbt
neuper@37906
    76
 (prep_pbt Biegelinie.thy "pbl_bieg_einf" [] e_pblID
neuper@37906
    77
 (["einfache","Biegelinien"],
neuper@37906
    78
  [],
neuper@37906
    79
  append_rls "e_rls" e_rls [], 
neuper@37926
    80
  NONE, 
neuper@37906
    81
  [["IntegrierenUndKonstanteBestimmen","4x4System"]]));
neuper@37906
    82
neuper@37906
    83
store_pbt
neuper@37906
    84
 (prep_pbt Biegelinie.thy "pbl_bieg_momquer" [] e_pblID
neuper@37906
    85
 (["QuerkraftUndMomentBestimmte","Biegelinien"],
neuper@37906
    86
  [],
neuper@37906
    87
  append_rls "e_rls" e_rls [], 
neuper@37926
    88
  NONE, 
neuper@37906
    89
  [["IntegrierenUndKonstanteBestimmen","1xIntegrieren"]]));
neuper@37906
    90
neuper@37906
    91
store_pbt
neuper@37906
    92
 (prep_pbt Biegelinie.thy "pbl_bieg_vonq" [] e_pblID
neuper@37906
    93
 (["vonBelastungZu","Biegelinien"],
neuper@37906
    94
  [("#Given" ,["Streckenlast q__","FunktionsVariable v_"]),
neuper@37906
    95
   ("#Find"  ,["Funktionen funs___"])],
neuper@37906
    96
  append_rls "e_rls" e_rls [], 
neuper@37926
    97
  NONE, 
neuper@37906
    98
  [["Biegelinien","ausBelastung"]]));
neuper@37906
    99
neuper@37906
   100
store_pbt
neuper@37906
   101
 (prep_pbt Biegelinie.thy "pbl_bieg_randbed" [] e_pblID
neuper@37906
   102
 (["setzeRandbedingungen","Biegelinien"],
neuper@37906
   103
  [("#Given" ,["Funktionen funs_","Randbedingungen rb_"]),
neuper@37906
   104
   ("#Find"  ,["Gleichungen equs___"])],
neuper@37906
   105
  append_rls "e_rls" e_rls [], 
neuper@37926
   106
  NONE, 
neuper@37906
   107
  [["Biegelinien","setzeRandbedingungenEin"]]));
neuper@37906
   108
neuper@37906
   109
store_pbt
neuper@37906
   110
 (prep_pbt Biegelinie.thy "pbl_equ_fromfun" [] e_pblID
neuper@37906
   111
 (["makeFunctionTo","equation"],
neuper@37906
   112
  [("#Given" ,["functionEq fun_","substitution sub_"]),
neuper@37906
   113
   ("#Find"  ,["equality equ___"])],
neuper@37906
   114
  append_rls "e_rls" e_rls [], 
neuper@37926
   115
  NONE, 
neuper@37906
   116
  [["Equation","fromFunction"]]));
neuper@37906
   117
neuper@37906
   118
neuper@37906
   119
neuper@37906
   120
(** methods **)
neuper@37906
   121
neuper@37906
   122
val srls = Rls {id="srls_IntegrierenUnd..", 
neuper@37906
   123
		preconds = [], 
neuper@37906
   124
		rew_ord = ("termlessI",termlessI), 
neuper@37906
   125
		erls = append_rls "erls_in_srls_IntegrierenUnd.." e_rls
neuper@37906
   126
				  [(*for asm in nth_Cons_ ...*)
neuper@37906
   127
				   Calc ("op <",eval_equ "#less_"),
neuper@37906
   128
				   (*2nd nth_Cons_ pushes n+-1 into asms*)
neuper@37906
   129
				   Calc("op +", eval_binop "#add_")
neuper@37906
   130
				   ], 
neuper@37906
   131
		srls = Erls, calc = [],
neuper@37906
   132
		rules = [Thm ("nth_Cons_",num_str nth_Cons_),
neuper@37906
   133
			 Calc("op +", eval_binop "#add_"),
neuper@37906
   134
			 Thm ("nth_Nil_",num_str nth_Nil_),
neuper@37906
   135
			 Calc("Tools.lhs", eval_lhs"eval_lhs_"),
neuper@37906
   136
			 Calc("Tools.rhs", eval_rhs"eval_rhs_"),
neuper@37906
   137
			 Calc("Atools.argument'_in",
neuper@37906
   138
			      eval_argument_in "Atools.argument'_in")
neuper@37906
   139
			 ],
neuper@37906
   140
		scr = EmptyScr};
neuper@37906
   141
    
neuper@37906
   142
val srls2 = 
neuper@37906
   143
    Rls {id="srls_IntegrierenUnd..", 
neuper@37906
   144
	 preconds = [], 
neuper@37906
   145
	 rew_ord = ("termlessI",termlessI), 
neuper@37906
   146
	 erls = append_rls "erls_in_srls_IntegrierenUnd.." e_rls
neuper@37906
   147
			   [(*for asm in nth_Cons_ ...*)
neuper@37906
   148
			    Calc ("op <",eval_equ "#less_"),
neuper@37906
   149
			    (*2nd nth_Cons_ pushes n+-1 into asms*)
neuper@37906
   150
			    Calc("op +", eval_binop "#add_")
neuper@37906
   151
			    ], 
neuper@37906
   152
	 srls = Erls, calc = [],
neuper@37906
   153
	 rules = [Thm ("nth_Cons_",num_str nth_Cons_),
neuper@37906
   154
		  Calc("op +", eval_binop "#add_"),
neuper@37906
   155
		  Thm ("nth_Nil_", num_str nth_Nil_),
neuper@37906
   156
		  Calc("Tools.lhs", eval_lhs "eval_lhs_"),
neuper@37906
   157
		  Calc("Atools.filter'_sameFunId",
neuper@37906
   158
		       eval_filter_sameFunId "Atools.filter'_sameFunId"),
neuper@37906
   159
		  (*WN070514 just for smltest/../biegelinie.sml ...*)
neuper@37906
   160
		  Calc("Atools.sameFunId", eval_sameFunId "Atools.sameFunId"),
neuper@37906
   161
		  Thm ("filter_Cons", num_str filter_Cons),
neuper@37906
   162
		  Thm ("filter_Nil", num_str filter_Nil),
neuper@37906
   163
		  Thm ("if_True", num_str if_True),
neuper@37906
   164
		  Thm ("if_False", num_str if_False),
neuper@37906
   165
		  Thm ("hd_thm", num_str hd_thm)
neuper@37906
   166
		  ],
neuper@37906
   167
	 scr = EmptyScr};
neuper@37906
   168
(*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*)
neuper@37947
   169
(* use"Knowledge/Biegelinie.ML";
neuper@37906
   170
   *)
neuper@37906
   171
 
neuper@37906
   172
store_met
neuper@37906
   173
    (prep_met Biegelinie.thy "met_biege" [] e_metID
neuper@37906
   174
	      (["IntegrierenUndKonstanteBestimmen"],
neuper@37906
   175
	       [("#Given" ,["Traegerlaenge l_", "Streckenlast q__",
neuper@37906
   176
			    "FunktionsVariable v_"]),
neuper@37906
   177
		(*("#Where",["0 < l_"]), ...wait for &lt; and handling Arbfix*)
neuper@37906
   178
		("#Find"  ,["Biegelinie b_"]),
neuper@37906
   179
		("#Relate",["RandbedingungenBiegung rb_",
neuper@37906
   180
			    "RandbedingungenMoment rm_"])
neuper@37906
   181
		],
neuper@37906
   182
	       {rew_ord'="tless_true", 
neuper@37906
   183
		rls' = append_rls "erls_IntegrierenUndK.." e_rls 
neuper@37906
   184
				  [Calc ("Atools.ident",eval_ident "#ident_"),
neuper@37906
   185
				   Thm ("not_true",num_str not_true),
neuper@37906
   186
				   Thm ("not_false",num_str not_false)], 
neuper@37906
   187
		calc = [], srls = srls, prls = Erls,
neuper@37906
   188
		crls = Atools_erls, nrls = Erls},
neuper@37906
   189
"Script BiegelinieScript                                                  \
neuper@37906
   190
\(l_::real) (q__::real) (v_::real) (b_::real=>real)                        \
neuper@37906
   191
\(rb_::bool list) (rm_::bool list) =                                      \
neuper@37906
   192
\  (let q___ = Take (q_ v_ = q__);                                           \
neuper@37906
   193
\       q___ = ((Rewrite sym_real_minus_eq_cancel True) @@                 \
neuper@37906
   194
\              (Rewrite Belastung_Querkraft True)) q___;                   \
neuper@37906
   195
\      (Q__:: bool) =                                                     \
neuper@37906
   196
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
neuper@37906
   197
\                          [diff,integration,named])                      \
neuper@37906
   198
\                          [real_ (rhs q___), real_ v_, real_real_ Q]);    \
neuper@37906
   199
\       Q__ = Rewrite Querkraft_Moment True Q__;                          \
neuper@37906
   200
\      (M__::bool) =                                                      \
neuper@37906
   201
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
neuper@37906
   202
\                          [diff,integration,named])                      \
neuper@37906
   203
\                          [real_ (rhs Q__), real_ v_, real_real_ M_b]);  \
neuper@37906
   204
\       e1__ = nth_ 1 rm_;                                                \
neuper@37906
   205
\      (x1__::real) = argument_in (lhs e1__);                             \
neuper@37906
   206
\      (M1__::bool) = (Substitute [v_ = x1__]) M__;                       \
neuper@37906
   207
\       M1__        = (Substitute [e1__]) M1__ ;                          \
neuper@37906
   208
\       M2__ = Take M__;                                                  "^
neuper@37906
   209
(*without this Take 'Substitute [v_ = x2__]' takes _last formula from ctree_*)
neuper@37906
   210
"       e2__ = nth_ 2 rm_;                                                \
neuper@37906
   211
\      (x2__::real) = argument_in (lhs e2__);                             \
neuper@37906
   212
\      (M2__::bool) = ((Substitute [v_ = x2__]) @@                        \
neuper@37906
   213
\                      (Substitute [e2__])) M2__;                         \
neuper@37906
   214
\      (c_1_2__::bool list) =                                             \
neuper@37906
   215
\             (SubProblem (Biegelinie_,[linear,system],[no_met])          \
neuper@37906
   216
\                          [booll_ [M1__, M2__], reall [c,c_2]]);         \
neuper@37906
   217
\       M__ = Take  M__;                                                  \
neuper@37906
   218
\       M__ = ((Substitute c_1_2__) @@                                    \
neuper@37906
   219
\              (Try (Rewrite_Set_Inst [(bdv_1, c),(bdv_2, c_2)]\
neuper@37906
   220
\                                   simplify_System False)) @@ \
neuper@37906
   221
\              (Rewrite Moment_Neigung False) @@ \
neuper@37906
   222
\              (Rewrite make_fun_explicit False)) M__;                    "^
neuper@37906
   223
(*----------------------- and the same once more ------------------------*)
neuper@37906
   224
"      (N__:: bool) =                                                     \
neuper@37906
   225
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
neuper@37906
   226
\                          [diff,integration,named])                      \
neuper@37906
   227
\                          [real_ (rhs M__), real_ v_, real_real_ y']);   \
neuper@37906
   228
\      (B__:: bool) =                                                     \
neuper@37906
   229
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
neuper@37906
   230
\                          [diff,integration,named])                      \
neuper@37906
   231
\                          [real_ (rhs N__), real_ v_, real_real_ y]);    \
neuper@37906
   232
\       e1__ = nth_ 1 rb_;                                                \
neuper@37906
   233
\      (x1__::real) = argument_in (lhs e1__);                             \
neuper@37906
   234
\      (B1__::bool) = (Substitute [v_ = x1__]) B__;                       \
neuper@37906
   235
\       B1__        = (Substitute [e1__]) B1__ ;                          \
neuper@37906
   236
\       B2__ = Take B__;                                                  \
neuper@37906
   237
\       e2__ = nth_ 2 rb_;                                                \
neuper@37906
   238
\      (x2__::real) = argument_in (lhs e2__);                             \
neuper@37906
   239
\      (B2__::bool) = ((Substitute [v_ = x2__]) @@                        \
neuper@37906
   240
\                      (Substitute [e2__])) B2__;                         \
neuper@37906
   241
\      (c_1_2__::bool list) =                                             \
neuper@37906
   242
\             (SubProblem (Biegelinie_,[linear,system],[no_met])          \
neuper@37906
   243
\                          [booll_ [B1__, B2__], reall [c,c_2]]);         \
neuper@37906
   244
\       B__ = Take  B__;                                                  \
neuper@37906
   245
\       B__ = ((Substitute c_1_2__) @@                                    \
neuper@37906
   246
\              (Rewrite_Set_Inst [(bdv, x)] make_ratpoly_in False)) B__   \
neuper@37906
   247
\ in B__)"
neuper@37906
   248
));
neuper@37906
   249
neuper@37906
   250
store_met
neuper@37906
   251
    (prep_met Biegelinie.thy "met_biege_2" [] e_metID
neuper@37906
   252
	      (["IntegrierenUndKonstanteBestimmen2"],
neuper@37906
   253
	       [("#Given" ,["Traegerlaenge l_", "Streckenlast q__",
neuper@37906
   254
			    "FunktionsVariable v_"]),
neuper@37906
   255
		(*("#Where",["0 < l_"]), ...wait for &lt; and handling Arbfix*)
neuper@37906
   256
		("#Find"  ,["Biegelinie b_"]),
neuper@37906
   257
		("#Relate",["Randbedingungen rb_"])
neuper@37906
   258
		],
neuper@37906
   259
	       {rew_ord'="tless_true", 
neuper@37906
   260
		rls' = append_rls "erls_IntegrierenUndK.." e_rls 
neuper@37906
   261
				  [Calc ("Atools.ident",eval_ident "#ident_"),
neuper@37906
   262
				   Thm ("not_true",num_str not_true),
neuper@37906
   263
				   Thm ("not_false",num_str not_false)], 
neuper@37906
   264
		calc = [], 
neuper@37906
   265
		srls = append_rls "erls_IntegrierenUndK.." e_rls 
neuper@37906
   266
				  [Calc("Tools.rhs", eval_rhs"eval_rhs_"),
neuper@37906
   267
				   Calc ("Atools.ident",eval_ident "#ident_"),
neuper@37906
   268
				   Thm ("last_thmI",num_str last_thmI),
neuper@37906
   269
				   Thm ("if_True",num_str if_True),
neuper@37906
   270
				   Thm ("if_False",num_str if_False)
neuper@37906
   271
				   ],
neuper@37906
   272
		prls = Erls, crls = Atools_erls, nrls = Erls},
neuper@37906
   273
"Script Biegelinie2Script                                                 \
neuper@37906
   274
\(l_::real) (q__::real) (v_::real) (b_::real=>real) (rb_::bool list) =    \
neuper@37906
   275
\  (let                                                                   \
neuper@37906
   276
\      (funs_:: bool list) =                                              \
neuper@37906
   277
\             (SubProblem (Biegelinie_,[vonBelastungZu,Biegelinien],      \
neuper@37906
   278
\                          [Biegelinien,ausBelastung])                    \
neuper@37906
   279
\                          [real_ q__, real_ v_]);                        \
neuper@37906
   280
\      (equs_::bool list) =                                               \
neuper@37906
   281
\             (SubProblem (Biegelinie_,[setzeRandbedingungen,Biegelinien],\
neuper@37906
   282
\                          [Biegelinien,setzeRandbedingungenEin])         \
neuper@37906
   283
\                          [booll_ funs_, booll_ rb_]);                   \
neuper@37906
   284
\      (cons_::bool list) =                                               \
neuper@37906
   285
\             (SubProblem (Biegelinie_,[linear,system],[no_met])          \
neuper@37906
   286
\                          [booll_ equs_, reall [c,c_2,c_3,c_4]]);        \
neuper@37906
   287
\       B_ = Take (lastI funs_);                                          \
neuper@37906
   288
\       B_ = ((Substitute cons_) @@                                       \
neuper@37906
   289
\              (Rewrite_Set_Inst [(bdv, v_)] make_ratpoly_in False)) B_   \
neuper@37906
   290
\ in B_)"
neuper@37906
   291
));
neuper@37906
   292
neuper@37906
   293
store_met
neuper@37906
   294
    (prep_met Biegelinie.thy "met_biege_intconst_2" [] e_metID
neuper@37906
   295
	      (["IntegrierenUndKonstanteBestimmen","2xIntegrieren"],
neuper@37906
   296
	       [],
neuper@37906
   297
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37906
   298
		srls = e_rls, 
neuper@37906
   299
		prls=e_rls,
neuper@37906
   300
	     crls = Atools_erls, nrls = e_rls},
neuper@37906
   301
"empty_script"
neuper@37906
   302
));
neuper@37906
   303
neuper@37906
   304
store_met
neuper@37906
   305
    (prep_met Biegelinie.thy "met_biege_intconst_4" [] e_metID
neuper@37906
   306
	      (["IntegrierenUndKonstanteBestimmen","4x4System"],
neuper@37906
   307
	       [],
neuper@37906
   308
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37906
   309
		srls = e_rls, 
neuper@37906
   310
		prls=e_rls,
neuper@37906
   311
	     crls = Atools_erls, nrls = e_rls},
neuper@37906
   312
"empty_script"
neuper@37906
   313
));
neuper@37906
   314
neuper@37906
   315
store_met
neuper@37906
   316
    (prep_met Biegelinie.thy "met_biege_intconst_1" [] e_metID
neuper@37906
   317
	      (["IntegrierenUndKonstanteBestimmen","1xIntegrieren"],
neuper@37906
   318
	       [],
neuper@37906
   319
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37906
   320
		srls = e_rls, 
neuper@37906
   321
		prls=e_rls,
neuper@37906
   322
	     crls = Atools_erls, nrls = e_rls},
neuper@37906
   323
"empty_script"
neuper@37906
   324
));
neuper@37906
   325
neuper@37906
   326
store_met
neuper@37906
   327
    (prep_met Biegelinie.thy "met_biege2" [] e_metID
neuper@37906
   328
	      (["Biegelinien"],
neuper@37906
   329
	       [],
neuper@37906
   330
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37906
   331
		srls = e_rls, 
neuper@37906
   332
		prls=e_rls,
neuper@37906
   333
	     crls = Atools_erls, nrls = e_rls},
neuper@37906
   334
"empty_script"
neuper@37906
   335
));
neuper@37906
   336
neuper@37906
   337
store_met
neuper@37906
   338
    (prep_met Biegelinie.thy "met_biege_ausbelast" [] e_metID
neuper@37906
   339
	      (["Biegelinien","ausBelastung"],
neuper@37906
   340
	       [("#Given" ,["Streckenlast q__","FunktionsVariable v_"]),
neuper@37906
   341
		("#Find"  ,["Funktionen funs_"])],
neuper@37906
   342
	       {rew_ord'="tless_true", 
neuper@37906
   343
		rls' = append_rls "erls_ausBelastung" e_rls 
neuper@37906
   344
				  [Calc ("Atools.ident",eval_ident "#ident_"),
neuper@37906
   345
				   Thm ("not_true",num_str not_true),
neuper@37906
   346
				   Thm ("not_false",num_str not_false)], 
neuper@37906
   347
		calc = [], 
neuper@37906
   348
		srls = append_rls "srls_ausBelastung" e_rls 
neuper@37906
   349
				  [Calc("Tools.rhs", eval_rhs"eval_rhs_")], 
neuper@37906
   350
		prls = e_rls, crls = Atools_erls, nrls = e_rls},
neuper@37906
   351
"Script Belastung2BiegelScript (q__::real) (v_::real) =                    \
neuper@37906
   352
\  (let q___ = Take (q_ v_ = q__);                                           \
neuper@37906
   353
\       q___ = ((Rewrite sym_real_minus_eq_cancel True) @@                 \
neuper@37906
   354
\              (Rewrite Belastung_Querkraft True)) q___;                   \
neuper@37906
   355
\      (Q__:: bool) =                                                     \
neuper@37906
   356
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
neuper@37906
   357
\                          [diff,integration,named])                      \
neuper@37906
   358
\                          [real_ (rhs q___), real_ v_, real_real_ Q]);    \
neuper@37906
   359
\       M__ = Rewrite Querkraft_Moment True Q__;                          \
neuper@37906
   360
\      (M__::bool) =                                                      \
neuper@37906
   361
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
neuper@37906
   362
\                          [diff,integration,named])                      \
neuper@37906
   363
\                          [real_ (rhs M__), real_ v_, real_real_ M_b]);  \
neuper@37906
   364
\       N__ = ((Rewrite Moment_Neigung False) @@                          \
neuper@37906
   365
\              (Rewrite make_fun_explicit False)) M__;                    \
neuper@37906
   366
\      (N__:: bool) =                                                     \
neuper@37906
   367
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
neuper@37906
   368
\                          [diff,integration,named])                      \
neuper@37906
   369
\                          [real_ (rhs N__), real_ v_, real_real_ y']);   \
neuper@37906
   370
\      (B__:: bool) =                                                     \
neuper@37906
   371
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
neuper@37906
   372
\                          [diff,integration,named])                      \
neuper@37906
   373
\                          [real_ (rhs N__), real_ v_, real_real_ y])    \
neuper@37906
   374
\ in [Q__, M__, N__, B__])"
neuper@37906
   375
));
neuper@37906
   376
neuper@37906
   377
store_met
neuper@37906
   378
    (prep_met Biegelinie.thy "met_biege_setzrand" [] e_metID
neuper@37906
   379
	      (["Biegelinien","setzeRandbedingungenEin"],
neuper@37906
   380
	       [("#Given" ,["Funktionen funs_","Randbedingungen rb_"]),
neuper@37906
   381
		("#Find"  ,["Gleichungen equs___"])],
neuper@37906
   382
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37906
   383
		srls = srls2, 
neuper@37906
   384
		prls=e_rls,
neuper@37906
   385
	     crls = Atools_erls, nrls = e_rls},
neuper@37906
   386
"Script SetzeRandbedScript (funs_::bool list) (rb_::bool list) = \
neuper@37906
   387
\ (let b1_ = nth_ 1 rb_;                                         \
neuper@37906
   388
\      fs_ = filter_sameFunId (lhs b1_) funs_;                   \
neuper@37906
   389
\      (e1_::bool) =                                             \
neuper@37906
   390
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
neuper@37906
   391
\                          [Equation,fromFunction])              \
neuper@37906
   392
\                          [bool_ (hd fs_), bool_ b1_]);         \
neuper@37906
   393
\      b2_ = nth_ 2 rb_;                                         \
neuper@37906
   394
\      fs_ = filter_sameFunId (lhs b2_) funs_;                   \
neuper@37906
   395
\      (e2_::bool) =                                             \
neuper@37906
   396
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
neuper@37906
   397
\                          [Equation,fromFunction])              \
neuper@37906
   398
\                          [bool_ (hd fs_), bool_ b2_]);         \
neuper@37906
   399
\      b3_ = nth_ 3 rb_;                                         \
neuper@37906
   400
\      fs_ = filter_sameFunId (lhs b3_) funs_;                   \
neuper@37906
   401
\      (e3_::bool) =                                             \
neuper@37906
   402
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
neuper@37906
   403
\                          [Equation,fromFunction])              \
neuper@37906
   404
\                          [bool_ (hd fs_), bool_ b3_]);         \
neuper@37906
   405
\      b4_ = nth_ 4 rb_;                                         \
neuper@37906
   406
\      fs_ = filter_sameFunId (lhs b4_) funs_;                   \
neuper@37906
   407
\      (e4_::bool) =                                             \
neuper@37906
   408
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
neuper@37906
   409
\                          [Equation,fromFunction])              \
neuper@37906
   410
\                          [bool_ (hd fs_), bool_ b4_])          \
neuper@37906
   411
\ in [e1_,e2_,e3_,e4_])"
neuper@37906
   412
(* filter requires more than 1 sec !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
neuper@37906
   413
"Script SetzeRandbedScript (funs_::bool list) (rb_::bool list) = \
neuper@37906
   414
\ (let b1_ = nth_ 1 rb_;                                         \
neuper@37906
   415
\      fs_ = filter (sameFunId (lhs b1_)) funs_;                 \
neuper@37906
   416
\      (e1_::bool) =                                             \
neuper@37906
   417
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
neuper@37906
   418
\                          [Equation,fromFunction])              \
neuper@37906
   419
\                          [bool_ (hd fs_), bool_ b1_]);         \
neuper@37906
   420
\      b2_ = nth_ 2 rb_;                                         \
neuper@37906
   421
\      fs_ = filter (sameFunId (lhs b2_)) funs_;                 \
neuper@37906
   422
\      (e2_::bool) =                                             \
neuper@37906
   423
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
neuper@37906
   424
\                          [Equation,fromFunction])              \
neuper@37906
   425
\                          [bool_ (hd fs_), bool_ b2_]);         \
neuper@37906
   426
\      b3_ = nth_ 3 rb_;                                         \
neuper@37906
   427
\      fs_ = filter (sameFunId (lhs b3_)) funs_;                 \
neuper@37906
   428
\      (e3_::bool) =                                             \
neuper@37906
   429
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
neuper@37906
   430
\                          [Equation,fromFunction])              \
neuper@37906
   431
\                          [bool_ (hd fs_), bool_ b3_]);         \
neuper@37906
   432
\      b4_ = nth_ 4 rb_;                                         \
neuper@37906
   433
\      fs_ = filter (sameFunId (lhs b4_)) funs_;                 \
neuper@37906
   434
\      (e4_::bool) =                                             \
neuper@37906
   435
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
neuper@37906
   436
\                          [Equation,fromFunction])              \
neuper@37906
   437
\                          [bool_ (hd fs_), bool_ b4_])          \
neuper@37906
   438
\ in [e1_,e2_,e3_,e4_])"*)
neuper@37906
   439
));
neuper@37906
   440
neuper@37906
   441
store_met
neuper@37906
   442
    (prep_met Biegelinie.thy "met_equ_fromfun" [] e_metID
neuper@37906
   443
	      (["Equation","fromFunction"],
neuper@37906
   444
	       [("#Given" ,["functionEq fun_","substitution sub_"]),
neuper@37906
   445
		("#Find"  ,["equality equ___"])],
neuper@37906
   446
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
neuper@37906
   447
		srls = append_rls "srls_in_EquationfromFunc" e_rls
neuper@37906
   448
				  [Calc("Tools.lhs", eval_lhs"eval_lhs_"),
neuper@37906
   449
				   Calc("Atools.argument'_in",
neuper@37906
   450
					eval_argument_in
neuper@37906
   451
					    "Atools.argument'_in")], 
neuper@37906
   452
		prls=e_rls,
neuper@37906
   453
	     crls = Atools_erls, nrls = e_rls},
neuper@37906
   454
(*(M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) (M_b L = 0) -->
neuper@37906
   455
       0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2*)
neuper@37906
   456
"Script Function2Equality (fun_::bool) (sub_::bool) =\
neuper@37906
   457
\ (let fun_ = Take fun_;                             \
neuper@37906
   458
\      bdv_ = argument_in (lhs fun_);                \
neuper@37906
   459
\      val_ = argument_in (lhs sub_);                \
neuper@37906
   460
\      equ_ = (Substitute [bdv_ = val_]) fun_;       \
neuper@37906
   461
\      equ_ = (Substitute [sub_]) fun_               \
neuper@37906
   462
\ in (Rewrite_Set norm_Rational False) equ_)             "
neuper@37906
   463
));
neuper@37906
   464
neuper@37906
   465
neuper@37906
   466
neuper@37947
   467
(* use"Knowledge/Biegelinie.ML";
neuper@37906
   468
   *)