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