src/sml/IsacKnowledge/Biegelinie.ML
author wneuper
Fri, 01 Sep 2006 19:14:43 +0200
branchstart_Take
changeset 641 29c5e20735ba
parent 639 1bcaf23cb178
child 642 d7eff76dcc1e
permissions -rw-r--r--
Biegelinie2, intermediate state (fun eval_sameFunId .. required for currying in filter)
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@641
   159
		  Thm ("hd_thm", num_str hd_thm)
wneuper@641
   160
		  ],
wneuper@641
   161
	 scr = EmptyScr};
wneuper@641
   162
    
wneuper@351
   163
store_met
wneuper@597
   164
    (prep_met Biegelinie.thy "met_biege" [] e_metID
wneuper@351
   165
	      (["IntegrierenUndKonstanteBestimmen"],
wneuper@356
   166
	       [("#Given" ,["Traegerlaenge l_", "Streckenlast q_",
wneuper@356
   167
			    "FunktionsVariable v_"]),
wneuper@351
   168
		(*("#Where",["0 < l_"]), ...wait for &lt; and handling Arbfix*)
wneuper@351
   169
		("#Find"  ,["Biegelinie b_"]),
wneuper@351
   170
		("#Relate",["RandbedingungenBiegung rb_",
wneuper@351
   171
			    "RandbedingungenMoment rm_"])
wneuper@351
   172
		],
wneuper@448
   173
	       {rew_ord'="tless_true", 
wneuper@448
   174
		rls' = append_rls "erls_IntegrierenUndK.." e_rls 
wneuper@448
   175
				  [Calc ("Atools.ident",eval_ident "#ident_"),
wneuper@448
   176
				   Thm ("not_true",num_str not_true),
wneuper@637
   177
				   Thm ("not_false",num_str not_false)], 
wneuper@448
   178
		calc = [], srls = srls, prls = Erls,
wneuper@448
   179
		crls = Atools_erls, nrls = Erls},
wneuper@401
   180
"Script BiegelinieScript                                                  \
wneuper@401
   181
\(l_::real) (q_::real) (v_::real) (b_::real=>real)                        \
wneuper@401
   182
\(rb_::bool list) (rm_::bool list) =                                      \
wneuper@401
   183
\  (let q__ = Take (q v_ = q_);                                           \
wneuper@401
   184
\       q__ = ((Rewrite sym_real_minus_eq_cancel True) @@                 \
wneuper@401
   185
\              (Rewrite Belastung_Querkraft True)) q__;                   \
wneuper@401
   186
\      (Q__:: bool) =                                                     \
wneuper@401
   187
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@356
   188
\                          [Diff,integration,named])                      \
wneuper@400
   189
\                          [real_ (rhs q__), real_ v_, real_real_ Q]);    \
wneuper@401
   190
\       Q__ = Rewrite Querkraft_Moment True Q__;                          \
wneuper@401
   191
\      (M__::bool) =                                                      \
wneuper@401
   192
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@401
   193
\                          [Diff,integration,named])                      \
wneuper@400
   194
\                          [real_ (rhs Q__), real_ v_, real_real_ M_b]);  \
wneuper@401
   195
\       e1__ = nth_ 1 rm_;                                                \
wneuper@401
   196
\      (x1__::real) = argument_in (lhs e1__);                             \
wneuper@401
   197
\      (M1__::bool) = (Substitute [v_ = x1__]) M__;                       \
wneuper@401
   198
\       M1__        = (Substitute [e1__]) M1__ ;                          \
wneuper@401
   199
\       M2__ = Take M__;                                                  "^
wneuper@448
   200
(*without this Take 'Substitute [v_ = x2__]' takes _last formula from ctree_*)
wneuper@401
   201
"       e2__ = nth_ 2 rm_;                                                \
wneuper@401
   202
\      (x2__::real) = argument_in (lhs e2__);                             \
wneuper@401
   203
\      (M2__::bool) = ((Substitute [v_ = x2__]) @@                        \
wneuper@448
   204
\                      (Substitute [e2__])) M2__;                         \
wneuper@448
   205
\      (c_1_2__::bool list) =                                             \
wneuper@448
   206
\             (SubProblem (Biegelinie_,[linear,system],[no_met])          \
wneuper@448
   207
\                          [booll_ [M1__, M2__], reall [c,c_2]]);         \
wneuper@448
   208
\       M__ = Take  M__;                                                  \
wneuper@448
   209
\       M__ = ((Substitute c_1_2__) @@                                    \
wneuper@454
   210
\              (Try (Rewrite_Set_Inst [(bdv_1, c),(bdv_2, c_2)]\
wneuper@454
   211
\                                   simplify_System False)) @@ \
wneuper@448
   212
\              (Rewrite Moment_Neigung False) @@ \
wneuper@448
   213
\              (Rewrite make_fun_explicit False)) M__;                    "^
wneuper@448
   214
(*----------------------- and the same once more ------------------------*)
wneuper@448
   215
"      (N__:: bool) =                                                     \
wneuper@448
   216
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@448
   217
\                          [Diff,integration,named])                      \
wneuper@448
   218
\                          [real_ (rhs M__), real_ v_, real_real_ y']);   \
wneuper@457
   219
\      (B__:: bool) =                                                     \
wneuper@448
   220
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@448
   221
\                          [Diff,integration,named])                      \
wneuper@457
   222
\                          [real_ (rhs N__), real_ v_, real_real_ y]);    \
wneuper@457
   223
\       e1__ = nth_ 1 rb_;                                                \
wneuper@448
   224
\      (x1__::real) = argument_in (lhs e1__);                             \
wneuper@457
   225
\      (B1__::bool) = (Substitute [v_ = x1__]) B__;                       \
wneuper@457
   226
\       B1__        = (Substitute [e1__]) B1__ ;                          \
wneuper@457
   227
\       B2__ = Take B__;                                                  \
wneuper@457
   228
\       e2__ = nth_ 2 rb_;                                                \
wneuper@448
   229
\      (x2__::real) = argument_in (lhs e2__);                             \
wneuper@457
   230
\      (B2__::bool) = ((Substitute [v_ = x2__]) @@                        \
wneuper@457
   231
\                      (Substitute [e2__])) B2__;                         \
wneuper@448
   232
\      (c_1_2__::bool list) =                                             \
wneuper@448
   233
\             (SubProblem (Biegelinie_,[linear,system],[no_met])          \
wneuper@457
   234
\                          [booll_ [B1__, B2__], reall [c,c_2]]);         \
wneuper@457
   235
\       B__ = Take  B__;                                                  \
wneuper@457
   236
\       B__ = ((Substitute c_1_2__) @@                                    \
wneuper@457
   237
\              (Rewrite_Set_Inst [(bdv, x)] make_ratpoly_in False)) B__   \
wneuper@457
   238
\ in B__)"
wneuper@351
   239
));
wneuper@351
   240
wneuper@351
   241
store_met
wneuper@636
   242
    (prep_met Biegelinie.thy "met_biege_2" [] e_metID
wneuper@636
   243
	      (["IntegrierenUndKonstanteBestimmen2"],
wneuper@636
   244
	       [("#Given" ,["Traegerlaenge l_", "Streckenlast q_",
wneuper@636
   245
			    "FunktionsVariable v_"]),
wneuper@636
   246
		(*("#Where",["0 < l_"]), ...wait for &lt; and handling Arbfix*)
wneuper@636
   247
		("#Find"  ,["Biegelinie b_"]),
wneuper@637
   248
		("#Relate",["Randbedingungen rb_"])
wneuper@636
   249
		],
wneuper@636
   250
	       {rew_ord'="tless_true", 
wneuper@636
   251
		rls' = append_rls "erls_IntegrierenUndK.." e_rls 
wneuper@636
   252
				  [Calc ("Atools.ident",eval_ident "#ident_"),
wneuper@636
   253
				   Thm ("not_true",num_str not_true),
wneuper@637
   254
				   Thm ("not_false",num_str not_false)], 
wneuper@637
   255
		calc = [], 
wneuper@637
   256
		srls = append_rls "erls_IntegrierenUndK.." e_rls 
wneuper@637
   257
				  [Calc("Tools.rhs", eval_rhs"eval_rhs_")],
wneuper@637
   258
		prls = Erls, crls = Atools_erls, nrls = Erls},
wneuper@636
   259
"Script Biegelinie2Script                                                 \
wneuper@636
   260
\(l_::real) (q_::real) (v_::real) (b_::real=>real) (rb_::bool list) =     \
wneuper@636
   261
\  (let                                                                   \
wneuper@636
   262
\      (funs_:: bool list) =                                              \
wneuper@636
   263
\             (SubProblem (Biegelinie_,[vonBelastungZu,Biegelinien],      \
wneuper@636
   264
\                          [Biegelinien,ausBelastung])                    \
wneuper@636
   265
\                          [real_ q_, real_ v_]);                         \
wneuper@636
   266
\      (equs_::bool list) =                                               \
wneuper@636
   267
\             (SubProblem (Biegelinie_,[setzeRandbedingungen,Biegelinien],\
wneuper@636
   268
\                          [Biegelinien,setzeRandbedingungenEin])         \
wneuper@638
   269
\                          [booll_ funs_, booll_ rb_]);                     \
wneuper@636
   270
\      (cons_::bool list) =                                               \
wneuper@636
   271
\             (SubProblem (Biegelinie_,[linear,system],[no_met])          \
wneuper@636
   272
\                          [booll_ equs_, reall [c,c_2,c_3,c_4]]);        \
wneuper@636
   273
\       B_ = Take (last_elem funs_);                                      \
wneuper@636
   274
\       B_ = ((Substitute cons_) @@                                       \
wneuper@636
   275
\              (Rewrite_Set_Inst [(bdv, x)] make_ratpoly_in False)) B_    \
wneuper@636
   276
\ in B_)"
wneuper@636
   277
));
wneuper@636
   278
wneuper@636
   279
store_met
wneuper@597
   280
    (prep_met Biegelinie.thy "met_biege_intconst_2" [] e_metID
wneuper@351
   281
	      (["IntegrierenUndKonstanteBestimmen","2xIntegrieren"],
wneuper@351
   282
	       [],
wneuper@351
   283
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
wneuper@351
   284
		srls = e_rls, 
wneuper@351
   285
		prls=e_rls,
wneuper@351
   286
	     crls = Atools_erls, nrls = e_rls},
wneuper@351
   287
"empty_script"
wneuper@351
   288
));
wneuper@351
   289
wneuper@351
   290
store_met
wneuper@597
   291
    (prep_met Biegelinie.thy "met_biege_intconst_4" [] e_metID
wneuper@351
   292
	      (["IntegrierenUndKonstanteBestimmen","4x4System"],
wneuper@351
   293
	       [],
wneuper@351
   294
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
wneuper@351
   295
		srls = e_rls, 
wneuper@351
   296
		prls=e_rls,
wneuper@351
   297
	     crls = Atools_erls, nrls = e_rls},
wneuper@351
   298
"empty_script"
wneuper@351
   299
));
wneuper@351
   300
wneuper@351
   301
store_met
wneuper@597
   302
    (prep_met Biegelinie.thy "met_biege_intconst_1" [] e_metID
wneuper@351
   303
	      (["IntegrierenUndKonstanteBestimmen","1xIntegrieren"],
wneuper@351
   304
	       [],
wneuper@351
   305
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
wneuper@351
   306
		srls = e_rls, 
wneuper@351
   307
		prls=e_rls,
wneuper@351
   308
	     crls = Atools_erls, nrls = e_rls},
wneuper@351
   309
"empty_script"
wneuper@351
   310
));
wneuper@350
   311
wneuper@636
   312
store_met
wneuper@636
   313
    (prep_met Biegelinie.thy "met_biege2" [] e_metID
wneuper@636
   314
	      (["Biegelinien"],
wneuper@636
   315
	       [],
wneuper@636
   316
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
wneuper@636
   317
		srls = e_rls, 
wneuper@636
   318
		prls=e_rls,
wneuper@636
   319
	     crls = Atools_erls, nrls = e_rls},
wneuper@636
   320
"empty_script"
wneuper@636
   321
));
wneuper@636
   322
wneuper@636
   323
store_met
wneuper@636
   324
    (prep_met Biegelinie.thy "met_biege_ausbelast" [] e_metID
wneuper@636
   325
	      (["Biegelinien","ausBelastung"],
wneuper@636
   326
	       [("#Given" ,["Streckenlast q_","FunktionsVariable v_"]),
wneuper@636
   327
		("#Find"  ,["Funktionen funs_"])],
wneuper@637
   328
	       {rew_ord'="tless_true", 
wneuper@637
   329
		rls' = append_rls "erls_ausBelastung" e_rls 
wneuper@637
   330
				  [Calc ("Atools.ident",eval_ident "#ident_"),
wneuper@637
   331
				   Thm ("not_true",num_str not_true),
wneuper@637
   332
				   Thm ("not_false",num_str not_false)], 
wneuper@637
   333
		calc = [], 
wneuper@637
   334
		srls = append_rls "srls_ausBelastung" e_rls 
wneuper@637
   335
				  [Calc("Tools.rhs", eval_rhs"eval_rhs_")], 
wneuper@637
   336
		prls = e_rls, crls = Atools_erls, nrls = e_rls},
wneuper@637
   337
"Script Belastung2BiegelScript (q_::real) (v_::real) =                    \
wneuper@637
   338
\  (let q__ = Take (q v_ = q_);                                           \
wneuper@637
   339
\       q__ = ((Rewrite sym_real_minus_eq_cancel True) @@                 \
wneuper@637
   340
\              (Rewrite Belastung_Querkraft True)) q__;                   \
wneuper@637
   341
\      (Q__:: bool) =                                                     \
wneuper@637
   342
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@637
   343
\                          [Diff,integration,named])                      \
wneuper@637
   344
\                          [real_ (rhs q__), real_ v_, real_real_ Q]);    \
wneuper@637
   345
\       Q__ = Rewrite Querkraft_Moment True Q__;                          \
wneuper@637
   346
\      (M__::bool) =                                                      \
wneuper@637
   347
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@637
   348
\                          [Diff,integration,named])                      \
wneuper@637
   349
\                          [real_ (rhs Q__), real_ v_, real_real_ M_b]);  \
wneuper@637
   350
\       M__ = ((Rewrite Moment_Neigung False) @@                          \
wneuper@637
   351
\              (Rewrite make_fun_explicit False)) M__;                    \
wneuper@637
   352
\      (N__:: bool) =                                                     \
wneuper@637
   353
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@637
   354
\                          [Diff,integration,named])                      \
wneuper@637
   355
\                          [real_ (rhs M__), real_ v_, real_real_ y']);   \
wneuper@637
   356
\      (B__:: bool) =                                                     \
wneuper@637
   357
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@637
   358
\                          [Diff,integration,named])                      \
wneuper@637
   359
\                          [real_ (rhs N__), real_ v_, real_real_ y])    \
wneuper@637
   360
\ in [q__, Q__, M__, N__, B__])"
wneuper@636
   361
));
wneuper@636
   362
wneuper@636
   363
store_met
wneuper@636
   364
    (prep_met Biegelinie.thy "met_biege_setzrand" [] e_metID
wneuper@636
   365
	      (["Biegelinien","setzeRandbedingungenEin"],
wneuper@638
   366
	       [("#Given" ,["Funktionen funs_","Randbedingungen rb_"]),
wneuper@638
   367
		("#Find"  ,["Gleichungen equs___"])],
wneuper@636
   368
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
wneuper@641
   369
		srls = srls2, 
wneuper@636
   370
		prls=e_rls,
wneuper@636
   371
	     crls = Atools_erls, nrls = e_rls},
wneuper@641
   372
(*rev [Q, M_b, y', y] --> [y, ..., Q] because "matches_lhs (y L)" 
wneuper@641
   373
  matches all funs_ (while Q, M_b, y' defined as Consts do NOT match)*)
wneuper@636
   374
"empty_script"
wneuper@641
   375
(*
wneuper@641
   376
"Script SetzeRandbedScript (funs_::bool list) (rb_::bool list) =\
wneuper@641
   377
\ (let funs_ = rev funs_;                                       \
wneuper@641
   378
\      b1_ = Take (nth_ 1 beds_);                               \
wneuper@641
   379
\      fs_ = filter (sameFunId (lhs b1_)) funs_;                \
wneuper@641
   380
\      f1_ = hd fs_                                           \
wneuper@641
   381
\ in (equs_::bool list))"
wneuper@641
   382
*)
wneuper@641
   383
(*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*)
wneuper@636
   384
));
wneuper@636
   385
wneuper@639
   386
store_met
wneuper@639
   387
    (prep_met Biegelinie.thy "met_equ" [] e_metID
wneuper@639
   388
	      (["Equation"],
wneuper@639
   389
	       [],
wneuper@639
   390
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
wneuper@639
   391
		srls = e_rls, 
wneuper@639
   392
		prls=e_rls,
wneuper@639
   393
	     crls = Atools_erls, nrls = e_rls},
wneuper@639
   394
"empty_script"
wneuper@639
   395
));
wneuper@639
   396
wneuper@639
   397
store_met
wneuper@639
   398
    (prep_met Biegelinie.thy "met_equ_fromfun" [] e_metID
wneuper@639
   399
	      (["Equation","fromFunction"],
wneuper@639
   400
	       [("#Given" ,["functionEq fun_","substitution sub_"]),
wneuper@639
   401
		("#Find"  ,["equality equ___"])],
wneuper@639
   402
	       {rew_ord'="tless_true", rls'=Erls, calc = [], 
wneuper@639
   403
		srls = append_rls "srls_in_EquationfromFunc" e_rls
wneuper@639
   404
				  [Calc("Tools.lhs", eval_lhs"eval_lhs_"),
wneuper@639
   405
				   Calc("Atools.argument'_in",
wneuper@639
   406
					eval_argument_in
wneuper@639
   407
					    "Atools.argument'_in")], 
wneuper@639
   408
		prls=e_rls,
wneuper@639
   409
	     crls = Atools_erls, nrls = e_rls},
wneuper@639
   410
(*(M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) (M_b L = 0) -->
wneuper@639
   411
       0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2*)
wneuper@639
   412
"Script Function2Equality (fun_::bool) (sub_::bool) =\
wneuper@639
   413
\ (let fun_ = Take fun_;                             \
wneuper@639
   414
\      bdv_ = argument_in (lhs fun_);                \
wneuper@639
   415
\      val_ = argument_in (lhs sub_);                \
wneuper@639
   416
\      equ_ = (Substitute [bdv_ = val_]) fun_;       \
wneuper@639
   417
\      equ_ = (Substitute [sub_]) fun_               \
wneuper@639
   418
\ in (Rewrite_Set norm_Poly False) equ_)             "
wneuper@639
   419
(*FIXME.WN060901.ERROR in nxt_tac without Take above !?!*)
wneuper@639
   420
));
wneuper@639
   421
wneuper@639
   422
wneuper@639
   423
wneuper@636
   424
(* use"Biegelinie.ML";
wneuper@636
   425
   *)