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