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