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