src/smltest/IsacKnowledge/biegelinie.sml
author wneuper
Fri, 08 Sep 2006 20:33:59 +0200
branchstart_Take
changeset 658 dc08aec656e1
parent 656 d557fbec30b6
child 660 c58b3d2ee7a9
permissions -rw-r--r--
bugfix for autoCalculate CompleteCalc with subpbl as fst tac;
intermediate state within ["normalize", "4x4", "linear", "system"]
wneuper@344
     1
(* tests on biegelinie
wneuper@383
     2
   author: Walther Neuper 050826
wneuper@344
     3
   (c) due to copyright terms
wneuper@344
     4
wneuper@358
     5
use"../smltest/IsacKnowledge/biegelinie.sml";
wneuper@383
     6
use"biegelinie.sml";
wneuper@344
     7
*)
wneuper@344
     8
val thy = Biegelinie.thy;
wneuper@344
     9
wneuper@344
    10
"-----------------------------------------------------------------";
wneuper@344
    11
"table of contents -----------------------------------------------";
wneuper@344
    12
"-----------------------------------------------------------------";
wneuper@344
    13
"----------- the rules -------------------------------------------";
wneuper@352
    14
"----------- Script [IntegrierenUndKonstanteBestimmen] -----------";
wneuper@448
    15
"----------- IntegrierenUndKonstanteBestimmen by rewriting -------";
wneuper@392
    16
"----------- simplify_leaf for this script -----------------------";
wneuper@458
    17
"----------- Bsp 7.27 me -----------------------------------------";
wneuper@458
    18
"----------- Bsp 7.27 autoCalculate ------------------------------";
wneuper@656
    19
"----------- SubProblem (_,[vonBelastungZu,Biegelinien] ----------";
wneuper@638
    20
"----------- SubProblem (_,[setzeRandbedingungen,Biegelinien] ----";
wneuper@641
    21
"----------- method [Biegelinien,setzeRandbedingungenEin] + exec -";
wneuper@636
    22
"----------- IntegrierenUndKonstanteBestimmen2 -------------------";
wneuper@656
    23
"----------- investigate normalforms in biegelinien --------------";
wneuper@344
    24
"-----------------------------------------------------------------";
wneuper@344
    25
"-----------------------------------------------------------------";
wneuper@344
    26
"-----------------------------------------------------------------";
wneuper@344
    27
wneuper@344
    28
wneuper@344
    29
"----------- the rules -------------------------------------------";
wneuper@344
    30
"----------- the rules -------------------------------------------";
wneuper@344
    31
"----------- the rules -------------------------------------------";
wneuper@344
    32
fun str2t str = (term_of o the o (parse Biegelinie.thy)) str;
wneuper@344
    33
fun term2s t = Sign.string_of_term (sign_of Biegelinie.thy) t;
wneuper@344
    34
fun rewrit thm str = 
wneuper@344
    35
    fst (the (rewrite_ Biegelinie.thy tless_true e_rls true thm str));
wneuper@344
    36
wneuper@344
    37
val t = rewrit Belastung_Querkraft (str2t "- q x = - q_0"); term2s t;
wneuper@344
    38
if term2s t = "Q' x = - q_0" then ()
wneuper@344
    39
else raise error  "/biegelinie.sml: Belastung_Querkraft";
wneuper@344
    40
wneuper@344
    41
val t = rewrit Querkraft_Moment (str2t "Q x = - q_0 * x + c"); term2s t;
wneuper@344
    42
if term2s t = "M_b' x = - q_0 * x + c" then ()
wneuper@344
    43
else raise error  "/biegelinie.sml: Querkraft_Moment";
wneuper@344
    44
wneuper@448
    45
val t = rewrit Moment_Neigung (str2t "M_b x = -q_0 * x^^^2/2 + q_0/2 *L*x");
wneuper@344
    46
    term2s t;
wneuper@457
    47
if term2s t = "- EI * y'' x = - q_0 * x ^^^ 2 / 2 + q_0 / 2 * L * x" then ()
wneuper@448
    48
else raise error  "biegelinie.sml: Moment_Neigung";
wneuper@352
    49
wneuper@352
    50
wneuper@352
    51
"----------- Script [IntegrierenUndKonstanteBestimmen] -----------";
wneuper@352
    52
"----------- Script [IntegrierenUndKonstanteBestimmen] -----------";
wneuper@352
    53
"----------- Script [IntegrierenUndKonstanteBestimmen] -----------";
wneuper@457
    54
val str =
wneuper@448
    55
"Script BiegelinieScript                                                  \
wneuper@448
    56
\(l_::real) (q_::real) (v_::real) (b_::real=>real)                        \
wneuper@448
    57
\(rb_::bool list) (rm_::bool list) =                                      \
wneuper@448
    58
\  (let q__ = Take (q v_ = q_);                                           \
wneuper@448
    59
\       q__ = ((Rewrite sym_real_minus_eq_cancel True) @@                 \
wneuper@448
    60
\              (Rewrite Belastung_Querkraft True)) q__;                   \
wneuper@448
    61
\      (Q__:: bool) =                                                     \
wneuper@448
    62
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@448
    63
\                          [Diff,integration,named])                      \
wneuper@448
    64
\                          [real_ (rhs q__), real_ v_, real_real_ Q]);    \
wneuper@448
    65
\       Q__ = Rewrite Querkraft_Moment True Q__;                          \
wneuper@448
    66
\      (M__::bool) =                                                      \
wneuper@448
    67
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@448
    68
\                          [Diff,integration,named])                      \
wneuper@448
    69
\                          [real_ (rhs Q__), real_ v_, real_real_ M_b]);  \
wneuper@448
    70
\       e1__ = nth_ 1 rm_;                                                \
wneuper@448
    71
\      (x1__::real) = argument_in (lhs e1__);                             \
wneuper@448
    72
\      (M1__::bool) = (Substitute [v_ = x1__]) M__;                       \
wneuper@448
    73
\       M1__        = (Substitute [e1__]) M1__ ;                          \
wneuper@448
    74
\       M2__ = Take M__;                                                  "^
wneuper@448
    75
(*without this Take 'Substitute [v_ = x2__]' takes _last formula from ctree_*)
wneuper@448
    76
"       e2__ = nth_ 2 rm_;                                                \
wneuper@448
    77
\      (x2__::real) = argument_in (lhs e2__);                             \
wneuper@448
    78
\      (M2__::bool) = ((Substitute [v_ = x2__]) @@                        \
wneuper@448
    79
\                      (Substitute [e2__])) M2__;                         \
wneuper@448
    80
\      (c_1_2__::bool list) =                                             \
wneuper@448
    81
\             (SubProblem (Biegelinie_,[linear,system],[no_met])          \
wneuper@448
    82
\                          [booll_ [M1__, M2__], reall [c,c_2]]);         \
wneuper@448
    83
\       M__ = Take  M__;                                                  \
wneuper@448
    84
\       M__ = ((Substitute c_1_2__) @@                                    \
wneuper@457
    85
\              (Try (Rewrite_Set_Inst [(bdv_1, c),(bdv_2, c_2)]\
wneuper@457
    86
\                                   simplify_System False)) @@ \
wneuper@457
    87
\              (Rewrite Moment_Neigung False) @@ \
wneuper@457
    88
\              (Rewrite make_fun_explicit False)) M__;                    "^
wneuper@448
    89
(*----------------------- and the same once more ------------------------*)
wneuper@448
    90
"      (N__:: bool) =                                                     \
wneuper@448
    91
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@448
    92
\                          [Diff,integration,named])                      \
wneuper@457
    93
\                          [real_ (rhs M__), real_ v_, real_real_ y']);   \
wneuper@457
    94
\      (B__:: bool) =                                                     \
wneuper@448
    95
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@448
    96
\                          [Diff,integration,named])                      \
wneuper@457
    97
\                          [real_ (rhs N__), real_ v_, real_real_ y]);    \
wneuper@457
    98
\       e1__ = nth_ 1 rb_;                                                \
wneuper@448
    99
\      (x1__::real) = argument_in (lhs e1__);                             \
wneuper@457
   100
\      (B1__::bool) = (Substitute [v_ = x1__]) B__;                       \
wneuper@457
   101
\       B1__        = (Substitute [e1__]) B1__ ;                          \
wneuper@457
   102
\       B2__ = Take B__;                                                  \
wneuper@457
   103
\       e2__ = nth_ 2 rb_;                                                \
wneuper@448
   104
\      (x2__::real) = argument_in (lhs e2__);                             \
wneuper@457
   105
\      (B2__::bool) = ((Substitute [v_ = x2__]) @@                        \
wneuper@457
   106
\                      (Substitute [e2__])) B2__;                         \
wneuper@448
   107
\      (c_1_2__::bool list) =                                             \
wneuper@448
   108
\             (SubProblem (Biegelinie_,[linear,system],[no_met])          \
wneuper@457
   109
\                          [booll_ [B1__, B2__], reall [c,c_2]]);         \
wneuper@457
   110
\       B__ = Take  B__;                                                  \
wneuper@457
   111
\       B__ = ((Substitute c_1_2__) @@                                    \
wneuper@457
   112
\              (Rewrite_Set_Inst [(bdv, x)] make_ratpoly_in False)) B__   \
wneuper@457
   113
\ in B__)"
wneuper@448
   114
;
wneuper@448
   115
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@448
   116
(*---^^^-OK-----------------------------------------------------------------*)
wneuper@457
   117
(*---vvv-NOTok--------------------------------------------------------------*)
wneuper@365
   118
atomty sc;
wneuper@383
   119
atomt sc;
wneuper@354
   120
wneuper@448
   121
(* use"../smltest/IsacKnowledge/biegelinie.sml";
wneuper@448
   122
   *)
wneuper@378
   123
wneuper@448
   124
"----------- IntegrierenUndKonstanteBestimmen by rewriting -------";
wneuper@448
   125
"----------- IntegrierenUndKonstanteBestimmen by rewriting -------";
wneuper@448
   126
"----------- IntegrierenUndKonstanteBestimmen by rewriting -------";
wneuper@448
   127
val t = str2t "M_b x = L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2";
wneuper@448
   128
val t = rewrit Moment_Neigung t; term2s t;
wneuper@448
   129
(*was "EI * ?y'' x = L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2"
wneuper@448
   130
           ### before declaring "y''" as a constant *)
wneuper@448
   131
val t = rewrit make_fun_explicit t; term2s t;
wneuper@448
   132
wneuper@352
   133
wneuper@392
   134
"----------- simplify_leaf for this script -----------------------";
wneuper@392
   135
"----------- simplify_leaf for this script -----------------------";
wneuper@392
   136
"----------- simplify_leaf for this script -----------------------";
wneuper@392
   137
val rm_ = str2term"[M_b 0 = 0, M_b L = 0]";
wneuper@392
   138
val M__ = str2term"M_b x = -1 * x ^^^ 2 / 2 + x * c + c_2";
wneuper@392
   139
val Some (e1__,_) = 
wneuper@392
   140
    rewrite_set_ thy false srls 
wneuper@392
   141
		 (str2term"(nth_::[real,bool list]=>bool) 1 " $ rm_);
wneuper@392
   142
if term2str e1__ = "M_b 0 = 0" then ()
wneuper@392
   143
else raise error "biegelinie.sml simplify nth_ 1 rm_";
wneuper@392
   144
wneuper@392
   145
val Some (x1__,_) = 
wneuper@392
   146
    rewrite_set_ thy false srls 
wneuper@392
   147
		 (str2term"argument_in (lhs (M_b 0 = 0))");
wneuper@392
   148
if term2str x1__ = "0" then ()
wneuper@392
   149
else raise error "biegelinie.sml simplify argument_in (lhs (M_b 0 = 0)";
wneuper@392
   150
wneuper@392
   151
trace_rewrite:=true;
wneuper@392
   152
trace_rewrite:=false;
wneuper@392
   153
wneuper@392
   154
wneuper@392
   155
wneuper@458
   156
"----------- Bsp 7.27 me -----------------------------------------";
wneuper@458
   157
"----------- Bsp 7.27 me -----------------------------------------";
wneuper@458
   158
"----------- Bsp 7.27 me -----------------------------------------";
wneuper@356
   159
val fmz = ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@352
   160
	   "RandbedingungenBiegung [y 0 = 0, y L = 0]",
wneuper@356
   161
	   "RandbedingungenMoment [M_b 0 = 0, M_b L = 0]",
wneuper@356
   162
	   "FunktionsVariable x"];
wneuper@352
   163
val (dI',pI',mI') =
wneuper@511
   164
  ("Biegelinie.thy",["MomentBestimmte","Biegelinien"],
wneuper@352
   165
   ["IntegrierenUndKonstanteBestimmen"]);
wneuper@359
   166
val p = e_pos'; val c = [];
wneuper@352
   167
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@378
   168
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   169
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   170
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   171
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   172
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   173
wneuper@356
   174
val pits = get_obj g_pbl pt (fst p);writeln (itms2str thy pits);
wneuper@360
   175
(*if itms2str thy pits = ... all 5 model-items*)
wneuper@356
   176
val mits = get_obj g_met pt (fst p); writeln (itms2str thy mits);
wneuper@356
   177
if itms2str thy mits = "[]" then ()
wneuper@356
   178
else raise error  "biegelinie.sml: Bsp 7.27 #2";
wneuper@457
   179
wneuper@457
   180
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@356
   181
case nxt of (_,Add_Given "FunktionsVariable x") => ()
wneuper@378
   182
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #4a";
wneuper@457
   183
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@356
   184
val mits = get_obj g_met pt (fst p);writeln (itms2str thy mits);
wneuper@360
   185
(*if itms2str thy mits = ... all 6 guard-items*)
wneuper@378
   186
case nxt of (_, Apply_Method ["IntegrierenUndKonstanteBestimmen"]) => ()
wneuper@378
   187
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #4b";
wneuper@360
   188
wneuper@378
   189
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@464
   190
case pt of Nd (PblObj _, [Nd _]) => ((*Apply_Method + Take*))
wneuper@464
   191
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #4c";
wneuper@378
   192
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@360
   193
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@360
   194
wneuper@457
   195
case nxt of 
wneuper@457
   196
    (_,Subproblem ("Biegelinie.thy", ["named", "integrate", "function"])) => ()
wneuper@457
   197
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #4c";
wneuper@378
   198
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   199
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   200
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   201
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@370
   202
case nxt of (_, Apply_Method ["Diff", "integration", "named"]) => ()
wneuper@370
   203
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #5";
wneuper@378
   204
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   205
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   206
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   207
case nxt of 
wneuper@457
   208
    ("Check_Postcond", Check_Postcond ["named", "integrate", "function"]) => ()
wneuper@457
   209
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #5a";
wneuper@370
   210
wneuper@375
   211
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   212
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   213
case nxt of 
wneuper@457
   214
    (_, Subproblem ("Biegelinie.thy", ["named", "integrate", "function"]))=>()
wneuper@457
   215
  | _ => raise error "biegelinie.sml: Bsp 7.27 #5b";
wneuper@457
   216
wneuper@378
   217
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   218
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   219
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   220
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@378
   221
case nxt of (_, Apply_Method ["Diff", "integration","named"]) => ()
wneuper@378
   222
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #6";
wneuper@397
   223
wneuper@392
   224
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@392
   225
val (p,_,f,nxt,_,pt) = me nxt p c pt(*nxt = Check_Postcond ["named", "int..*);
wneuper@448
   226
f2str f;
wneuper@375
   227
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@392
   228
case nxt of (_, Substitute ["x = 0"]) => ()
wneuper@392
   229
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #7";
wneuper@448
   230
wneuper@392
   231
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@392
   232
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@451
   233
if f2str f = "0 = c_2 + c * 0 + -1 * q_0 / 2 * 0 ^^^ 2" then ()
wneuper@392
   234
else raise error  "biegelinie.sml: Bsp 7.27 #8";
wneuper@392
   235
wneuper@397
   236
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@397
   237
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@397
   238
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@451
   239
if f2str f = "0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2" then ()
wneuper@401
   240
else raise error  "biegelinie.sml: Bsp 7.27 #9";
wneuper@401
   241
wneuper@448
   242
(*val nxt = (+, Subproblem ("Biegelinie.thy", ["normalize", ..lin..sys]))*)
wneuper@448
   243
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   244
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   245
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   246
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   247
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   248
case nxt of (_, Apply_Method ["EqSystem", "normalize", "2x2"]) => ()
wneuper@448
   249
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #10";
wneuper@401
   250
wneuper@448
   251
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   252
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   253
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   254
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   255
(*val nxt = Subproblem ["triangular", "2x2", "linear", "system"]*)
wneuper@448
   256
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   257
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   258
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   259
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   260
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   261
case nxt of (_, Apply_Method["EqSystem", "top_down_substitution", "2x2"]) => ()
wneuper@448
   262
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #11";
wneuper@448
   263
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   264
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   265
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   266
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   267
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   268
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   269
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   270
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   271
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   272
case nxt of (_, Check_Postcond ["normalize", "2x2", "linear", "system"]) => ()
wneuper@448
   273
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #12";
wneuper@448
   274
wneuper@448
   275
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   276
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   277
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   278
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   279
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@448
   280
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   281
case nxt of
wneuper@457
   282
    (_, Subproblem ("Biegelinie.thy", ["named", "integrate", "function"]))=>()
wneuper@457
   283
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #13";
wneuper@448
   284
wneuper@448
   285
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   286
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   287
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   288
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@448
   289
case nxt of (_, Apply_Method ["Diff", "integration", "named"]) => ()
wneuper@457
   290
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #14";
wneuper@448
   291
wneuper@448
   292
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   293
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   294
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   295
case nxt of
wneuper@457
   296
    (_, Check_Postcond ["named", "integrate", "function"]) => ()
wneuper@457
   297
  | _ => raise error  "biegelinie.sml: Bsp 7.27 #15";
wneuper@401
   298
wneuper@397
   299
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   300
if f2str f =
wneuper@457
   301
  "y' x = c + 1 / (-1 * EI) * (L * q_0 / 4 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3)"
wneuper@457
   302
then () else raise error  "biegelinie.sml: Bsp 7.27 #16 f";
wneuper@457
   303
case nxt of
wneuper@457
   304
    (_, Subproblem ("Biegelinie.thy", ["named", "integrate", "function"]))=>()
wneuper@457
   305
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #16";
wneuper@389
   306
wneuper@457
   307
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   308
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   309
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   310
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   311
case nxt of (_, Apply_Method ["Diff", "integration", "named"]) => ()
wneuper@457
   312
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #17";
wneuper@457
   313
wneuper@457
   314
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   315
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   316
if f2str f = 
wneuper@457
   317
   "y x =\nc_2 + c * x +\n\
wneuper@457
   318
   \1 / (-1 * EI) * (L * q_0 / 12 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)"
wneuper@457
   319
then () else raise error  "biegelinie.sml: Bsp 7.27 #18 f";
wneuper@457
   320
case nxt of
wneuper@457
   321
    (_, Check_Postcond ["named", "integrate", "function"]) => ()
wneuper@457
   322
  | _ => raise error  "biegelinie.sml: Bsp 7.27 #18";
wneuper@457
   323
wneuper@457
   324
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   325
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   326
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   327
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   328
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   329
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   330
case nxt of
wneuper@457
   331
    (_, Subproblem
wneuper@457
   332
            ("Biegelinie.thy", ["normalize", "2x2", "linear", "system"])) => ()
wneuper@457
   333
  | _ => raise error  "biegelinie.sml: Bsp 7.27 #19";
wneuper@457
   334
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   335
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   336
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   337
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   338
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   339
case nxt of (_, Apply_Method ["EqSystem", "normalize", "2x2"]) => ()
wneuper@457
   340
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #20";
wneuper@457
   341
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   342
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   343
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   344
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   345
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   346
if f2str f = "[c_2 = 0, L * c + c_2 = -1 * q_0 * L ^^^ 4 / (-24 * EI)]" then ()
wneuper@457
   347
else raise error  "biegelinie.sml: Bsp 7.27 #21 f";
wneuper@457
   348
case nxt of
wneuper@457
   349
    (_, Subproblem
wneuper@457
   350
            ("Biegelinie.thy", ["triangular", "2x2", "linear", "system"])) =>()
wneuper@457
   351
  | _ => raise error  "biegelinie.sml: Bsp 7.27 #21";
wneuper@457
   352
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   353
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   354
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   355
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   356
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@457
   357
case nxt of (_, Apply_Method["EqSystem", "top_down_substitution", "2x2"]) => ()
wneuper@457
   358
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #22";
wneuper@457
   359
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   360
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   361
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   362
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   363
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   364
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   365
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   366
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   367
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   368
case nxt of (_, Check_Postcond ["normalize", "2x2", "linear", "system"]) => ()
wneuper@457
   369
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #23";
wneuper@457
   370
wneuper@457
   371
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   372
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   373
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   374
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   375
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@457
   376
if f2str f = "y x =\n-1 * q_0 * L ^^^ 4 / (-24 * EI * L) * x +\n\
wneuper@457
   377
	     \(2 * L * q_0 / (-24 * EI) * x ^^^ 3 + \
wneuper@457
   378
	     \-1 * q_0 / (-24 * EI) * x ^^^ 4)" then ()
wneuper@457
   379
else raise error  "biegelinie.sml: Bsp 7.27 #24 f";
wneuper@457
   380
case nxt of ("End_Proof'", End_Proof') => ()
wneuper@457
   381
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 #24";
wneuper@389
   382
wneuper@448
   383
(* use"../smltest/IsacKnowledge/biegelinie.sml";
wneuper@448
   384
   *)
wneuper@449
   385
show_pt pt;
wneuper@511
   386
(*(([], Frm), Problem (Biegelinie.thy, [MomentBestimmte, Biegelinien])),
wneuper@449
   387
(([1], Frm), q x = q_0),
wneuper@449
   388
(([1], Res), - q x = - q_0),
wneuper@449
   389
(([2], Res), Q' x = - q_0),
wneuper@449
   390
(([3], Pbl), Integrate (- q_0, x)),
wneuper@449
   391
(([3,1], Frm), Q x = Integral - q_0 D x),
wneuper@449
   392
(([3,1], Res), Q x = -1 * q_0 * x + c),
wneuper@449
   393
(([3], Res), Q x = -1 * q_0 * x + c),
wneuper@449
   394
(([4], Res), M_b' x = -1 * q_0 * x + c),
wneuper@449
   395
(([5], Pbl), Integrate (-1 * q_0 * x + c, x)),
wneuper@449
   396
(([5,1], Frm), M_b x = Integral -1 * q_0 * x + c D x),
wneuper@449
   397
(([5,1], Res), M_b x = -1 * q_0 * x ^^^ 2 / 2 + x * c + c_2),
wneuper@449
   398
(([5], Res), M_b x = -1 * q_0 * x ^^^ 2 / 2 + x * c + c_2),
wneuper@449
   399
(([6], Res), M_b 0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2),
wneuper@449
   400
(([7], Res), 0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2),
wneuper@449
   401
(([8], Res), M_b L = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2),
wneuper@449
   402
(([9], Res), 0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2),
wneuper@449
   403
(([10], Pbl), solveSystem [0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2] [c_2]),
wneuper@449
   404
(([10,1], Frm), [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,
wneuper@449
   405
 0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]),
wneuper@449
   406
(([10,1], Res), [0 = c_2, 0 = -1 * (q_0 * L ^^^ 2) / 2 + (L * c + c_2)]),
wneuper@449
   407
(([10,2], Res), [c_2 = 0, L * c + c_2 = 0 + -1 * (-1 * (q_0 * L ^^^ 2) / 2)]),
wneuper@449
   408
(([10,3], Res), [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]),
wneuper@449
   409
(([10,4], Pbl), solveSystem [L * c + c_2 = q_0 * L ^^^ 2 / 2] [c_2]),
wneuper@449
   410
(([10,4,1], Frm), L * c + c_2 = q_0 * L ^^^ 2 / 2),
wneuper@449
   411
(([10,4,1], Res), L * c + 0 = q_0 * L ^^^ 2 / 2),
wneuper@449
   412
(([10,4,2], Res), L * c = q_0 * L ^^^ 2 / 2),
wneuper@449
   413
(([10,4,3], Res), c = q_0 * L ^^^ 2 / 2 / L),
wneuper@449
   414
(([10,4,4], Res), c = L * q_0 / 2),
wneuper@449
   415
(([10,4,5], Res), [c = L * q_0 / 2, c_2 = 0]),
wneuper@449
   416
(([10,4], Res), [c = L * q_0 / 2, c_2 = 0]),
wneuper@449
   417
(([10], Res), [c = L * q_0 / 2, c_2 = 0]),
wneuper@449
   418
(([11], Res), M_b x = -1 * q_0 * x ^^^ 2 / 2 + x * (L * q_0 / 2) + 0),
wneuper@449
   419
(([12], Res), M_b x = L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2),
wneuper@449
   420
(([13], Res), EI * y'' x = L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2),
wneuper@449
   421
(([14], Res), y'' x = 1 / EI * (L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2)),
wneuper@449
   422
(([15], Pbl), Integrate (1 / EI * (L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2), x)),
wneuper@449
   423
(([15,1], Frm), y' x = Integral 1 / EI * (L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2) D x),
wneuper@449
   424
(([15,1], Res), y' x =
wneuper@449
   425
(Integral L * q_0 * x / 2 D x + Integral -1 * q_0 * x ^^^ 2 / 2 D x) / EI +
wneuper@458
   426
c)]*)
wneuper@458
   427
wneuper@458
   428
"----------- Bsp 7.27 autoCalculate ------------------------------";
wneuper@458
   429
"----------- Bsp 7.27 autoCalculate ------------------------------";
wneuper@458
   430
"----------- Bsp 7.27 autoCalculate ------------------------------";
wneuper@458
   431
 states:=[];
wneuper@458
   432
 CalcTree [(["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@458
   433
	     "RandbedingungenBiegung [y 0 = 0, y L = 0]",
wneuper@458
   434
	     "RandbedingungenMoment [M_b 0 = 0, M_b L = 0]",
wneuper@458
   435
	     "FunktionsVariable x"],
wneuper@458
   436
	    ("Biegelinie.thy",
wneuper@511
   437
	     ["MomentBestimmte","Biegelinien"],
wneuper@458
   438
	     ["IntegrierenUndKonstanteBestimmen"]))];
wneuper@458
   439
 moveActiveRoot 1;
wneuper@464
   440
 autoCalculate 1 CompleteCalcHead; 
wneuper@464
   441
wneuper@464
   442
 fetchProposedTactic 1 (*->"Apply_Method" IntegrierenUndKonstanteBestimmen*);
wneuper@467
   443
(*
wneuper@467
   444
> val (_,Apply_Method' (_, None, ScrState is), _)::_ = tacis;
wneuper@467
   445
> is = e_scrstate;
wneuper@467
   446
val it = true : bool
wneuper@467
   447
*)
wneuper@464
   448
 autoCalculate 1 (Step 1) (*->GENERATED ([1], Frm)*);
wneuper@464
   449
 val ((pt,_),_) = get_calc 1;
wneuper@464
   450
 case pt of Nd (PblObj _, [Nd _]) => ((*Apply_Method + Take*))
wneuper@464
   451
	  | _ => raise error  "biegelinie.sml: Bsp 7.27 autoCalculate#4c";
wneuper@464
   452
wneuper@464
   453
 autoCalculate 1 CompleteCalc;  
wneuper@656
   454
val ((pt,p),_) = get_calc 1;
wneuper@656
   455
if p = ([], Res) andalso length (children pt) = 23 andalso 
wneuper@656
   456
term2str (get_obj g_res pt (fst p)) = "y x =\n-1 * q_0 * L ^^^ 4 / (-24 * EI * L) * x +\n(2 * L * q_0 / (-24 * EI) * x ^^^ 3 + -1 * q_0 / (-24 * EI) * x ^^^ 4)"then () else raise error "biegelinie.sml: 1st biegelin.7.27 changed";
wneuper@656
   457
wneuper@458
   458
 val (unc, del, gen) = (([],Pbl), ([],Pbl), ([],Res));
wneuper@478
   459
 getFormulaeFromTo 1 unc gen 1 (*only level 1*) false;
wneuper@463
   460
 show_pt pt;
wneuper@530
   461
wneuper@539
   462
(*check all formulae for getTactic*)
wneuper@539
   463
 getTactic 1 ([1],Frm) (*see smltest/../reverse-rew.sml*);
wneuper@539
   464
 getTactic 1 ([5],Res) (*tac2xml: not impl. for Substitute ["x = 0"]*);
wneuper@539
   465
 getTactic 1 ([6],Res) (* ---"---                      ["M_b 0 = 0"]*);
wneuper@539
   466
 getTactic 1 ([7],Res) (*!!!!!Take!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*);
wneuper@539
   467
 getTactic 1 ([8],Frm) (*tac2xml: not impl. for Substitute ["x = L"]*);
wneuper@539
   468
 getTactic 1 ([8],Res) (* ---"---                      ["M_b L = 0"]*);
wneuper@636
   469
wneuper@636
   470
wneuper@656
   471
"----------- SubProblem (_,[vonBelastungZu,Biegelinien] ----------";
wneuper@656
   472
"----------- SubProblem (_,[vonBelastungZu,Biegelinien] ----------";
wneuper@656
   473
"----------- SubProblem (_,[vonBelastungZu,Biegelinien] ----------";
wneuper@656
   474
val fmz = 
wneuper@656
   475
    ["Streckenlast q_0","FunktionsVariable x",
wneuper@656
   476
     "Funktionen [Q x = c + -1 * q_0 * x, \
wneuper@656
   477
     \M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2,\
wneuper@656
   478
     \ y' x = c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3),\
wneuper@656
   479
     \ y x = c_4 + c_3 * x + 1 / (-1 * EI) * (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)]"];
wneuper@656
   480
val (dI',pI',mI') = ("Biegelinie.thy", ["vonBelastungZu","Biegelinien"],
wneuper@656
   481
		     ["Biegelinien","ausBelastung"]);
wneuper@656
   482
val p = e_pos'; val c = [];
wneuper@656
   483
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@656
   484
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   485
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   486
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   487
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   488
if nxt = ("Apply_Method", Apply_Method ["Biegelinien", "ausBelastung"])
wneuper@656
   489
then () else raise error "biegelinie.sml met2 b";
wneuper@656
   490
wneuper@656
   491
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =   "q x = q_0";
wneuper@656
   492
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "- q x = - q_0";
wneuper@656
   493
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =  "Q' x = - q_0";
wneuper@656
   494
case nxt of (_, Subproblem (_, ["named", "integrate", "function"])) => ()
wneuper@656
   495
| _ => raise error "biegelinie.sml met2 c";
wneuper@656
   496
wneuper@656
   497
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   498
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   499
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   500
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   501
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   502
wneuper@656
   503
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "Q x = c + -1 * q_0 * x";
wneuper@656
   504
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "Q x = c + -1 * q_0 * x";
wneuper@656
   505
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "M_b' x = c + -1 * q_0 * x";
wneuper@656
   506
case nxt of (_,Subproblem (_, ["named", "integrate", "function"])) => ()
wneuper@656
   507
| _ => raise error "biegelinie.sml met2 d";
wneuper@656
   508
wneuper@656
   509
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   510
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   511
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   512
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   513
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@656
   514
		   "M_b x = Integral c + -1 * q_0 * x D x";
wneuper@656
   515
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@656
   516
		   "M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@656
   517
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   518
		   "M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@656
   519
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   520
		   "- EI * y'' x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@656
   521
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   522
		   "y'' x = 1 / - EI * (c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2)";
wneuper@656
   523
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   524
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   525
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   526
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   527
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   528
    "y' x = Integral 1 / - EI * (c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) D x";
wneuper@656
   529
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   530
"y' x = Integral 1 / (-1 * EI) * (c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) D x";
wneuper@656
   531
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   532
"y' x =\nc_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3)";
wneuper@656
   533
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   534
"y' x =\nc_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3)";
wneuper@656
   535
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   536
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   537
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   538
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   539
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   540
"y x =\nIntegral c_3 +\n         1 / (-1 * EI) *\n         (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3) D x";
wneuper@656
   541
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   542
"y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
wneuper@656
   543
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   544
   "y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
wneuper@656
   545
val (p,_,f,nxt,_,pt) = me nxt p c pt; 
wneuper@656
   546
if nxt = ("End_Proof'", End_Proof') andalso f2str f =
wneuper@656
   547
   "[Q x = c + -1 * q_0 * x, M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2,\n y' x =\n c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3),\n y x =\n c_4 + c_3 * x +\n 1 / (-1 * EI) *\n (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)]" then ()
wneuper@656
   548
else raise error "biegelinie.sml met2 e";
wneuper@656
   549
wneuper@656
   550
wneuper@656
   551
wneuper@638
   552
"----------- SubProblem (_,[setzeRandbedingungen,Biegelinien] ----";
wneuper@638
   553
"----------- SubProblem (_,[setzeRandbedingungen,Biegelinien] ----";
wneuper@638
   554
"----------- SubProblem (_,[setzeRandbedingungen,Biegelinien] ----";
wneuper@639
   555
val str =
wneuper@639
   556
"Script Function2Equality (fun_::bool) (sub_::bool) =\
wneuper@639
   557
\(equ___::bool)"
wneuper@639
   558
;
wneuper@639
   559
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@639
   560
val str =
wneuper@639
   561
"Script Function2Equality (fun_::bool) (sub_::bool) =\
wneuper@639
   562
\ (let v_ = argument_in (lhs fun_)\
wneuper@639
   563
\ in (equ___::bool))"
wneuper@639
   564
;
wneuper@639
   565
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@639
   566
val str =
wneuper@639
   567
"Script Function2Equality (fun_::bool) (sub_::bool) =\
wneuper@639
   568
\ (let v_ = argument_in (lhs fun_);\
wneuper@639
   569
\     (equ_) = (Substitute [sub_]) fun_\
wneuper@639
   570
\ in (equ_::bool))"
wneuper@639
   571
;
wneuper@639
   572
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@639
   573
val str =
wneuper@639
   574
"Script Function2Equality (fun_::bool) (sub_::bool) =\
wneuper@639
   575
\ (let v_ = argument_in (lhs fun_);\
wneuper@639
   576
\      equ_ = (Substitute [sub_]) fun_\
wneuper@639
   577
\ in (Rewrite_Set_Inst [(bdv, v_)] make_ratpoly_in False) equ_)"
wneuper@639
   578
;
wneuper@639
   579
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@639
   580
(*---^^^-OK-----------------------------------------------------------------*)
wneuper@639
   581
val str =
wneuper@639
   582
(*(M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) (M_b L = 0) -->
wneuper@639
   583
       0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2*)
wneuper@639
   584
"Script Function2Equality (fun_::bool) (sub_::bool) =\
wneuper@639
   585
\ (let bdv_ = argument_in (lhs fun_);\
wneuper@639
   586
\      val_ = argument_in (lhs sub_);\
wneuper@639
   587
\      equ_ = (Substitute [bdv_ = val_]) fun_;\
wneuper@639
   588
\      equ_ = (Substitute [sub_]) fun_\
wneuper@639
   589
\ in (Rewrite_Set_Inst [(bdv_, v_)] make_ratpoly_in False) equ_)"
wneuper@639
   590
;
wneuper@639
   591
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@639
   592
(*---vvv-NOTok--------------------------------------------------------------*)
wneuper@639
   593
atomty sc;
wneuper@638
   594
wneuper@639
   595
val fmz = ["functionEq (M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2)", 
wneuper@639
   596
	   "substitution (M_b L = 0)", 
wneuper@639
   597
	   "equality equ___"];
wneuper@639
   598
val (dI',pI',mI') = ("Biegelinie.thy", ["makeFunctionTo","equation"],
wneuper@639
   599
		     ["Equation","fromFunction"]);
wneuper@639
   600
val p = e_pos'; val c = [];
wneuper@639
   601
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@639
   602
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@639
   603
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@639
   604
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@639
   605
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@638
   606
wneuper@639
   607
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@639
   608
			"M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@639
   609
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@639
   610
                        "M_b L = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2";
wneuper@639
   611
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@639
   612
			"0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2";
wneuper@639
   613
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@639
   614
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@639
   615
if nxt = ("End_Proof'", End_Proof') andalso
wneuper@642
   616
(*   f2str f = "0 = c_2 + L * c + -1 * q_0 / 2 * L ^^^ 2"
wneuper@642
   617
CHANGE NOT considered, already on leave*)
wneuper@642
   618
   f2str f = "0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2"
wneuper@639
   619
then () else raise error "biegelinie.sml: SubProblem (_,[setzeRandbed";
wneuper@638
   620
wneuper@638
   621
wneuper@641
   622
"----------- method [Biegelinien,setzeRandbedingungenEin] + exec -";
wneuper@641
   623
"----------- method [Biegelinien,setzeRandbedingungenEin] + exec -";
wneuper@641
   624
"----------- method [Biegelinien,setzeRandbedingungenEin] + exec -";
wneuper@642
   625
"----- check the scripts syntax";
wneuper@641
   626
val str =
wneuper@641
   627
"Script SetzeRandbedScript (funs_::bool list) (beds_::bool list) =\
wneuper@641
   628
\ (let b1 = Take (nth_ 1 beds_)\
wneuper@641
   629
\ in (equs_::bool list))"
wneuper@641
   630
;
wneuper@641
   631
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@641
   632
val str =
wneuper@641
   633
"Script SetzeRandbedScript (funs_::bool list) (beds_::bool list) =\
wneuper@641
   634
\ (let b1_ = Take (nth_ 1 beds_);   \
wneuper@642
   635
\      fs_ = filter (sameFunId (lhs b1_)) funs_;  \
wneuper@641
   636
\      f1_ = hd fs_             \
wneuper@641
   637
\ in (equs_::bool list))"
wneuper@641
   638
;
wneuper@641
   639
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@641
   640
wneuper@641
   641
val ttt = str2term "sameFunId (lhs b1_) fun___"; atomty ttt;
wneuper@641
   642
val ttt = str2term "filter"; atomty ttt;
wneuper@641
   643
val ttt = str2term "filter::[real => bool, real list] => real list";atomty ttt;
wneuper@641
   644
val ttt = str2term "filter::[bool => bool, bool list] => bool list";
wneuper@641
   645
val ttt = str2term "filter (sameFunId (lhs b1_)) funs_"; atomty ttt;
wneuper@641
   646
wneuper@641
   647
val str =
wneuper@641
   648
"Script SetzeRandbedScript (funs_::bool list) (rb_::bool list) =\
wneuper@641
   649
\ (let beds_ = rev beds_;                                       \
wneuper@641
   650
\      b1_ = Take (nth_ 1 beds_);                               \
wneuper@641
   651
\      fs_ = filter (sameFunId (lhs b1_)) funs_;              \
wneuper@641
   652
\      f1_ = hd fs_                                           \
wneuper@641
   653
\ in (equs_::bool list))"
wneuper@641
   654
;
wneuper@641
   655
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@642
   656
val str =
wneuper@642
   657
"Script SetzeRandbedScript (funs_::bool list) (rb_::bool list) =\
wneuper@642
   658
\ (let b1_ = Take (nth_ 1 rb_);                               \
wneuper@642
   659
\      fs_ = filter (sameFunId (lhs b1_)) funs_;                \
wneuper@642
   660
\      (equ_::bool) =                                               \
wneuper@642
   661
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
wneuper@642
   662
\                          [Equation,fromFunction])         \
wneuper@642
   663
\                          [bool_ (hd fs_), bool_ b1_])                    \
wneuper@642
   664
\ in [equ_])"
wneuper@642
   665
;
wneuper@642
   666
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@642
   667
val str =
wneuper@642
   668
"Script SetzeRandbedScript (funs_::bool list) (rb_::bool list) =\
wneuper@642
   669
\ (let b1_ = Take (nth_ 1 rb_);                               \
wneuper@642
   670
\      fs_ = filter (sameFunId (lhs b1_)) funs_;                \
wneuper@642
   671
\      (e1_::bool) =                                               \
wneuper@642
   672
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
wneuper@642
   673
\                          [Equation,fromFunction])         \
wneuper@642
   674
\                          [bool_ (hd fs_), bool_ b1_]);                    \
wneuper@642
   675
\      b2_ = Take (nth_ 2 rb_);                               \
wneuper@642
   676
\      fs_ = filter (sameFunId (lhs b2_)) funs_;                \
wneuper@642
   677
\      (e2_::bool) =                                               \
wneuper@642
   678
\             (SubProblem (Biegelinie_,[makeFunctionTo,equation],\
wneuper@642
   679
\                          [Equation,fromFunction])         \
wneuper@642
   680
\                          [bool_ (hd fs_), bool_ b2_])                    \
wneuper@642
   681
\ in [e1_,e1_])"
wneuper@642
   682
;
wneuper@642
   683
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@642
   684
(*---vvv-NOTok--------------------------------------------------------------*)
wneuper@642
   685
(*---^^^-OK-----------------------------------------------------------------*)
wneuper@642
   686
atomty sc;
wneuper@642
   687
wneuper@642
   688
"----- execute script by manual rewriting";
wneuper@642
   689
(*show_types := true;*)
wneuper@642
   690
val funs_ = str2term "funs_::bool list";
wneuper@642
   691
val funs = str2term
wneuper@642
   692
    "[Q x = c + -1 * q_0 * x,\
wneuper@642
   693
    \M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2,\
wneuper@642
   694
    \y' x = c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3),\
wneuper@642
   695
    \y x = c_4 + c_3 * x + 1 / (-1 * EI) * (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)]";
wneuper@642
   696
val rb_ = str2term "rb_::bool list";
wneuper@642
   697
val rb = str2term "[y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]";
wneuper@642
   698
wneuper@642
   699
"--- script expression 1";
wneuper@642
   700
val screxp1_ = str2term "Take (nth_ 1 (rb_::bool list))";
wneuper@642
   701
val screxp1  = subst_atomic [(rb_, rb)] screxp1_; term2str screxp1;
wneuper@642
   702
val Some (b1,_) = rewrite_set_ Isac.thy false srls2 screxp1; term2str b1;
wneuper@642
   703
if term2str b1 = "Take (y 0 = 0)" then ()
wneuper@642
   704
else raise error "biegelinie.sml: rew. Bieglie2 --1";
wneuper@642
   705
val b1 = str2term "(y 0 = 0)";
wneuper@642
   706
wneuper@642
   707
"--- script expression 2";
wneuper@642
   708
val screxp2_ = str2term "filter (sameFunId (lhs b1_)) funs_";
wneuper@642
   709
val b1_ = str2term "b1_::bool";
wneuper@642
   710
val screxp2 = subst_atomic [(b1_,b1),(funs_,funs)] screxp2_; term2str screxp2;
wneuper@642
   711
val Some (fs,_) = rewrite_set_ Isac.thy false srls2 screxp2; term2str fs;
wneuper@642
   712
if term2str fs =  "[y x =\n c_4 + c_3 * x +\n 1 / (-1 * EI) *\n (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)]" then ()
wneuper@642
   713
else raise error "biegelinie.sml: rew. Bieglie2 --2";
wneuper@642
   714
wneuper@642
   715
"--- script expression 3";
wneuper@642
   716
val screxp3_ = str2term "SubProblem (Biegelinie_,[makeFunctionTo,equation],\
wneuper@642
   717
\                          [Equation,fromFunction])         \
wneuper@642
   718
\                          [bool_ (hd fs_), bool_ b1_]";
wneuper@642
   719
val fs_ = str2term "fs_::bool list";
wneuper@642
   720
val screxp3 = subst_atomic [(fs_,fs),(b1_,b1)] screxp3_; 
wneuper@642
   721
writeln (term2str screxp3);
wneuper@642
   722
val Some (equ,_) = rewrite_set_ Isac.thy false srls2 screxp3; 
wneuper@642
   723
if term2str equ = "SubProblem\n (Biegelinie_, [makeFunctionTo, equation], [Equation, fromFunction])\n [bool_\n   (y x =\n    c_4 + c_3 * x +\n    1 / (-1 * EI) *\n    (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)),\n  bool_ (y 0 = 0)]" then ()
wneuper@642
   724
else raise error "biegelinie.sml: rew. Bieglie2 --3";
wneuper@642
   725
writeln (term2str equ);
wneuper@642
   726
(*SubProblem
wneuper@642
   727
 (Biegelinie_, [makeFunctionTo, equation], [Equation, fromFunction])
wneuper@642
   728
 [bool_
wneuper@642
   729
   (y x =
wneuper@642
   730
    c_4 + c_3 * x +
wneuper@642
   731
    1 / (-1 * EI) *
wneuper@642
   732
    (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)),
wneuper@642
   733
  bool_ (y 0 = 0)]*)
wneuper@642
   734
show_types := false;
wneuper@642
   735
wneuper@642
   736
wneuper@656
   737
"----- execute script by interpreter: setzeRandbedingungenEin";
wneuper@642
   738
val fmz = ["Funktionen [Q x = c + -1 * q_0 * x,\
wneuper@642
   739
    \M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2,\
wneuper@642
   740
    \y' x = c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3),\
wneuper@642
   741
    \y x = c_4 + c_3 * x + 1 / (-1 * EI) * (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)]",
wneuper@642
   742
	   "Randbedingungen [y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]",
wneuper@642
   743
	   "Gleichungen equs___"];
wneuper@642
   744
val (dI',pI',mI') = ("Biegelinie.thy", ["setzeRandbedingungen","Biegelinien"],
wneuper@642
   745
		     ["Biegelinien","setzeRandbedingungenEin"]);
wneuper@642
   746
val p = e_pos'; val c = [];
wneuper@642
   747
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@642
   748
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@642
   749
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@642
   750
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   751
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   752
wneuper@656
   753
"--- before 1.subpbl [Equation, fromFunction]";
wneuper@656
   754
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@648
   755
case nxt of (_, Apply_Method ["Biegelinien", "setzeRandbedingungenEin"])=>()
wneuper@656
   756
| _ => raise error "biegelinie.sml: met setzeRandbed*Ein aa";
wneuper@656
   757
"----- Randbedingung y 0 = 0 in SUBpbl with met [Equation, fromFunction]";
wneuper@648
   758
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   759
if (#1 o (get_obj g_fmz pt)) (fst p) =
wneuper@656
   760
   ["functionEq\n (y x =\n  c_4 + c_3 * x +\n  1 / (-1 * EI) *\n  (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4))",
wneuper@656
   761
      "substitution (y 0 = 0)", "equality equ___"] then ()
wneuper@656
   762
else raise error "biegelinie.sml met setzeRandbed*Ein bb";
wneuper@656
   763
(writeln o istate2str) (get_istate pt p);
wneuper@656
   764
"--- after 1.subpbl [Equation, fromFunction]";
wneuper@642
   765
wneuper@642
   766
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   767
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   768
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   769
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   770
case nxt of (_, Apply_Method["Equation", "fromFunction"]) => ()
wneuper@656
   771
| _ => raise error "biegelinie.sml met2 ff";
wneuper@656
   772
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@656
   773
   "y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
wneuper@656
   774
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   775
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   776
case nxt of (_, Check_Postcond ["makeFunctionTo", "equation"]) => ()
wneuper@656
   777
| _ => raise error "biegelinie.sml met2 gg";
wneuper@642
   778
wneuper@656
   779
"--- before 2.subpbl [Equation, fromFunction]";
wneuper@656
   780
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 = c_4 + 0 / (-1 * EI)" ;
wneuper@656
   781
case nxt of (_,Subproblem (_, ["makeFunctionTo", "equation"])) => ()
wneuper@656
   782
| _ => raise error "biegelinie.sml met2 hh";
wneuper@656
   783
"--- after 1st arrival at 2.subpbl [Equation, fromFunction]";
wneuper@642
   784
wneuper@656
   785
val (p,_,f,nxt,_,pt) = me nxt p c pt; 
wneuper@656
   786
if (#1 o (get_obj g_fmz pt)) (fst p) =
wneuper@656
   787
    ["functionEq\n (y x =\n  c_4 + c_3 * x +\n  1 / (-1 * EI) *\n  (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4))",
wneuper@656
   788
      "substitution (y L = 0)", "equality equ___"] then ()
wneuper@656
   789
else raise error "biegelinie.sml metsetzeRandbed*Ein bb ";
wneuper@656
   790
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   791
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   792
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   793
wneuper@656
   794
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   795
case nxt of (_, Apply_Method["Equation", "fromFunction"]) => ()
wneuper@656
   796
| _ => raise error "biegelinie.sml met2 ii";
wneuper@656
   797
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
wneuper@656
   798
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "y L =\nc_4 + c_3 * L +\n1 / (-1 * EI) *\n(c_2 / 2 * L ^^^ 2 + c / 6 * L ^^^ 3 + -1 * q_0 / 24 * L ^^^ 4)";
wneuper@656
   799
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 =\nc_4 + c_3 * L +\n1 / (-1 * EI) *\n(c_2 / 2 * L ^^^ 2 + c / 6 * L ^^^ 3 + -1 * q_0 / 24 * L ^^^ 4)";
wneuper@656
   800
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 =\nc_4 + L * c_3 +\n(12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI)" ;
wneuper@656
   801
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 =\nc_4 + L * c_3 +\n(12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI)";
wneuper@656
   802
case nxt of (_,Subproblem (_, ["makeFunctionTo", "equation"])) => ()
wneuper@656
   803
| _ => raise error "biegelinie.sml met2 jj";
wneuper@656
   804
wneuper@656
   805
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   806
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   807
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   808
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   809
case nxt of (_, Apply_Method ["Equation", "fromFunction"])=>()
wneuper@656
   810
| _ => raise error "biegelinie.sml met2 kk";
wneuper@656
   811
wneuper@656
   812
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2"(*true*);
wneuper@656
   813
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 = c_2 + c * 0 + -1 * q_0 / 2 * 0 ^^^ 2";
wneuper@656
   814
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 = c_2";
wneuper@656
   815
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 = c_2";
wneuper@656
   816
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   817
case nxt of (_,Subproblem (_, ["makeFunctionTo", "equation"])) => ()
wneuper@656
   818
| _ => raise error "biegelinie.sml met2 ll";
wneuper@656
   819
wneuper@656
   820
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   821
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   822
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   823
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@656
   824
case nxt of (_, Apply_Method ["Equation", "fromFunction"])=>()
wneuper@656
   825
| _ => raise error "biegelinie.sml met2 mm";
wneuper@656
   826
wneuper@656
   827
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@656
   828
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "M_b L = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2";
wneuper@656
   829
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2";
wneuper@656
   830
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2";
wneuper@656
   831
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2";
wneuper@656
   832
case nxt of (_, Check_Postcond ["setzeRandbedingungen", "Biegelinien"]) => ()
wneuper@656
   833
| _ => raise error "biegelinie.sml met2 nn";
wneuper@656
   834
val (p,_,f,nxt,_,pt) = me nxt p c pt; 
wneuper@656
   835
if nxt = ("End_Proof'", End_Proof') andalso f2str f =
wneuper@656
   836
   "[0 = c_4 + 0 / (-1 * EI),\n 0 =\n c_4 + L * c_3 +\n (12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI),\n 0 = c_2, 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2]" then ()
wneuper@656
   837
else raise error "biegelinie.sml met2 oo";
wneuper@656
   838
wneuper@656
   839
(*
wneuper@642
   840
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@642
   841
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@642
   842
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@642
   843
*)
wneuper@642
   844
wneuper@642
   845
"----------- IntegrierenUndKonstanteBestimmen2 -------------------";
wneuper@642
   846
"----------- IntegrierenUndKonstanteBestimmen2 -------------------";
wneuper@642
   847
"----------- IntegrierenUndKonstanteBestimmen2 -------------------";
wneuper@642
   848
"----- script ";
wneuper@642
   849
val str = 
wneuper@642
   850
"Script Belastung2BiegelScript (q_::real) (v_::real) =                    \
wneuper@642
   851
\  (let q__ = Take (q v_ = q_);                                           \
wneuper@642
   852
\       q__ = ((Rewrite sym_real_minus_eq_cancel True) @@                 \
wneuper@642
   853
\              (Rewrite Belastung_Querkraft True)) q__;                   \
wneuper@642
   854
\      (Q__:: bool) =                                                     \
wneuper@642
   855
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@642
   856
\                          [Diff,integration,named])                      \
wneuper@642
   857
\                          [real_ (rhs q__), real_ v_, real_real_ Q]);    \
wneuper@642
   858
\       M__ = Rewrite Querkraft_Moment True Q__;                          \
wneuper@642
   859
\      (M__::bool) =                                                      \
wneuper@642
   860
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@642
   861
\                          [Diff,integration,named])                      \
wneuper@642
   862
\                          [real_ (rhs M__), real_ v_, real_real_ M_b]);  \
wneuper@642
   863
\       N__ = ((Rewrite Moment_Neigung False) @@                          \
wneuper@642
   864
\              (Rewrite make_fun_explicit False)) M__;                    \
wneuper@642
   865
\      (N__:: bool) =                                                     \
wneuper@642
   866
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@642
   867
\                          [Diff,integration,named])                      \
wneuper@642
   868
\                          [real_ (rhs N__), real_ v_, real_real_ y']);   \
wneuper@642
   869
\      (B__:: bool) =                                                     \
wneuper@642
   870
\             (SubProblem (Biegelinie_,[named,integrate,function],        \
wneuper@642
   871
\                          [Diff,integration,named])                      \
wneuper@642
   872
\                          [real_ (rhs N__), real_ v_, real_real_ y])    \
wneuper@642
   873
\ in [Q__, M__, N__, B__])"
wneuper@642
   874
;
wneuper@642
   875
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
wneuper@641
   876
(*---^^^-OK-----------------------------------------------------------------*)
wneuper@641
   877
(*---vvv-NOTok--------------------------------------------------------------*)
wneuper@641
   878
wneuper@641
   879
wneuper@658
   880
"----- Bsp 7.27 with me";
wneuper@637
   881
val fmz = ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@636
   882
	     "Randbedingungen [y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]",
wneuper@637
   883
	     "FunktionsVariable x"];
wneuper@637
   884
val (dI',pI',mI') = ("Biegelinie.thy", ["Biegelinien"],
wneuper@637
   885
		     ["IntegrierenUndKonstanteBestimmen2"]);
wneuper@637
   886
val p = e_pos'; val c = [];
wneuper@637
   887
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@637
   888
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@637
   889
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@637
   890
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@637
   891
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@637
   892
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@637
   893
if nxt = ("Apply_Method", Apply_Method ["IntegrierenUndKonstanteBestimmen2"])
wneuper@637
   894
then () else raise error "biegelinie.sml met2 a";
wneuper@642
   895
wneuper@637
   896
(*** actual arg(s) missing for '["(#Find, (Funktionen, funs_))"]' i.e. should be 'copy-named' by '*_._'
wneuper@637
   897
... THIS MEANS: 
wneuper@637
   898
#a# "Script Biegelinie2Script ..
wneuper@637
   899
\         ... (SubProblem (Biegelinie_,[vonBelastungZu,Biegelinien],      \
wneuper@637
   900
\                          [Biegelinien,ausBelastung])                    \
wneuper@637
   901
\                          [real_ q_, real_ v_]);                         \
wneuper@636
   902
wneuper@637
   903
#b# prep_met ... (["Biegelinien","ausBelastung"],
wneuper@637
   904
              ... ("#Given" ,["Streckenlast q_","FunktionsVariable v_"]),
wneuper@637
   905
   "Script Belastung2BiegelScript (q_::real) (v_::real) =                 \
wneuper@636
   906
wneuper@637
   907
#a#b# BOTH HAVE 2 ARGUMENTS q_ and v_ ...OK
wneuper@637
   908
##########################################################################
wneuper@637
   909
BUT THE (#Find, (Funktionen, funs_)) IS NOT COPYNAMED BY funs___ !!!3*_!!!
wneuper@637
   910
##########################################################################*)
wneuper@656
   911
"further 'me' see ----- SubProblem (_,[vonBelastungZu,Biegelinien] -------\
wneuper@656
   912
\                 ----- SubProblem (_,[setzeRandbedingungen,Biegelinien] -";
wneuper@642
   913
wneuper@658
   914
"----- Bsp 7.27 with autoCalculate";
wneuper@658
   915
states:=[];
wneuper@658
   916
CalcTree [(["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@658
   917
	     "Randbedingungen [y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]",
wneuper@658
   918
	     "FunktionsVariable x"],
wneuper@658
   919
	    ("Biegelinie.thy", ["Biegelinien"],
wneuper@658
   920
		     ["IntegrierenUndKonstanteBestimmen2"]))];
wneuper@658
   921
moveActiveRoot 1;
wneuper@658
   922
trace_script := true;
wneuper@658
   923
autoCalculate 1 CompleteCalcHead;val ((pt,_),_) = get_calc 1;show_pt pt;
wneuper@658
   924
(*
wneuper@658
   925
autoCalculate 1 CompleteCalc; 
wneuper@658
   926
*)
wneuper@658
   927
trace_script := false;
wneuper@636
   928
wneuper@636
   929
wneuper@656
   930
"----------- investigate normalforms in biegelinien --------------";
wneuper@656
   931
"----------- investigate normalforms in biegelinien --------------";
wneuper@656
   932
"----------- investigate normalforms in biegelinien --------------";
wneuper@642
   933
"----- coming from integration:";
wneuper@642
   934
val Q = str2term "Q x = c + -1 * q_0 * x";
wneuper@642
   935
val M_b = str2term "M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@642
   936
val y' = str2term "y' x = c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3)";
wneuper@642
   937
val y = str2term "y x = c_4 + c_3 * x +\n1 / (-1 * EI) * (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
wneuper@642
   938
(*^^^  1 / (-1 * EI) NOT distributed - ok! ^^^^^^^^^^^^^^^^^^^^^^^*)
wneuper@642
   939
wneuper@642
   940
"----- functions comming from:";