neuper@37906
|
1 |
(* tests on systems of equations
|
neuper@42391
|
2 |
author: Walther Neuper 050826,
|
neuper@37906
|
3 |
(c) due to copyright terms
|
neuper@37906
|
4 |
*)
|
neuper@37906
|
5 |
|
neuper@52070
|
6 |
trace_rewrite := false;
|
neuper@37906
|
7 |
"-----------------------------------------------------------------";
|
neuper@37906
|
8 |
"table of contents -----------------------------------------------";
|
neuper@37906
|
9 |
"-----------------------------------------------------------------";
|
neuper@37906
|
10 |
"----------- occur_exactly_in ------------------------------------";
|
neuper@37906
|
11 |
"----------- problems --------------------------------------------";
|
neuper@37906
|
12 |
"----------- rewrite-order ord_simplify_System -------------------";
|
neuper@37906
|
13 |
"----------- rewrite in [EqSystem,normalize,2x2] -----------------";
|
neuper@37906
|
14 |
"----------- rewrite example from 2nd [EqSystem,normalize,2x2] ---";
|
neuper@37906
|
15 |
"----------- rewrite in [EqSystem,top_down_substitution,2x2] -----";
|
neuper@37906
|
16 |
"----------- rewrite in [EqSystem,normalize,4x4] -----------------";
|
neuper@37906
|
17 |
"----------- script [EqSystem,top_down_substitution,2x2] Vers.1 --";
|
neuper@37906
|
18 |
"----------- refine [linear,system]-------------------------------";
|
neuper@37906
|
19 |
"----------- refine [2x2,linear,system] search error--------------";
|
neuper@37906
|
20 |
"----------- me [EqSystem,normalize,2x2] -------------------------";
|
neuper@37906
|
21 |
"----------- me [linear,system] ..normalize..top_down_sub..-------";
|
neuper@37906
|
22 |
"----------- all systems from Biegelinie -------------------------";
|
neuper@37906
|
23 |
"----------- 4x4 systems from Biegelinie -------------------------";
|
neuper@37906
|
24 |
"-----------------------------------------------------------------";
|
neuper@37906
|
25 |
"-----------------------------------------------------------------";
|
neuper@37906
|
26 |
"-----------------------------------------------------------------";
|
neuper@37906
|
27 |
|
t@42166
|
28 |
val thy = @{theory "EqSystem"};
|
neuper@48761
|
29 |
val ctxt = Proof_Context.init_global thy;
|
neuper@37906
|
30 |
|
neuper@37906
|
31 |
"----------- occur_exactly_in ------------------------------------";
|
neuper@37906
|
32 |
"----------- occur_exactly_in ------------------------------------";
|
neuper@37906
|
33 |
"----------- occur_exactly_in ------------------------------------";
|
neuper@37906
|
34 |
val all = [str2term"c", str2term"c_2", str2term"c_3"];
|
neuper@37906
|
35 |
val t = str2term"0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2";
|
neuper@37906
|
36 |
|
neuper@37906
|
37 |
if occur_exactly_in [str2term"c", str2term"c_2"] all t
|
neuper@38031
|
38 |
then () else error "eqsystem.sml occur_exactly_in 1";
|
neuper@37906
|
39 |
|
neuper@37906
|
40 |
if not (occur_exactly_in [str2term"c", str2term"c_2", str2term"c_3"] all t)
|
neuper@38031
|
41 |
then () else error "eqsystem.sml occur_exactly_in 2";
|
neuper@37906
|
42 |
|
neuper@37906
|
43 |
if not (occur_exactly_in [str2term"c_2"] all t)
|
neuper@38031
|
44 |
then () else error "eqsystem.sml occur_exactly_in 3";
|
neuper@37906
|
45 |
|
neuper@42390
|
46 |
val t = str2term"[c,c_2] from [c,c_2,c_3] occur_exactly_in -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2";
|
neuper@42390
|
47 |
eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
|
neuper@42390
|
48 |
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
|
neuper@42390
|
49 |
if str = "[c, c_2] from [c, c_2,\n" ^
|
neuper@42390
|
50 |
" c_3] occur_exactly_in -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2 = True"
|
neuper@42390
|
51 |
then () else error "eval_occur_exactly_in [c, c_2]";
|
neuper@37906
|
52 |
|
neuper@42390
|
53 |
val t = str2term ("[c,c_2,c_3] from [c,c_2,c_3] occur_exactly_in " ^
|
neuper@42390
|
54 |
"-1 * q_0 * L ^^^ 2 / 2 + L * c + c_2");
|
neuper@37926
|
55 |
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
|
neuper@42390
|
56 |
if str = "[c, c_2,\n c_3] from [c, c_2,\n" ^
|
neuper@42390
|
57 |
" c_3] occur_exactly_in -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2 = False"
|
neuper@42390
|
58 |
then () else error "eval_occur_exactly_in [c, c_2, c_3]";
|
neuper@37906
|
59 |
|
neuper@42168
|
60 |
val t = str2term"[c_2] from [c,c_2,c_3] occur_exactly_in \
|
neuper@37906
|
61 |
\-1 * q_0 * L ^^^ 2 / 2 + L * c + c_2";
|
neuper@37926
|
62 |
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
|
neuper@42390
|
63 |
if str = "[c_2] from [c, c_2,\n" ^
|
neuper@42390
|
64 |
" c_3] occur_exactly_in -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2 = False"
|
neuper@42390
|
65 |
then () else error "eval_occur_exactly_in [c, c_2, c_3]";
|
neuper@37906
|
66 |
|
neuper@42168
|
67 |
val t = str2term"[] from [c,c_2,c_3] occur_exactly_in 0";
|
neuper@37926
|
68 |
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
|
neuper@42390
|
69 |
if str = "[] from [c, c_2, c_3] occur_exactly_in 0 = True" then ()
|
neuper@38031
|
70 |
else error "eval_occur_exactly_in [c, c_2, c_3]";
|
neuper@37906
|
71 |
|
neuper@37906
|
72 |
val t =
|
neuper@37906
|
73 |
str2term
|
neuper@42168
|
74 |
"[] from [c, c_2, c_3, c_4] occur_exactly_in -1 * (q_0 * L ^^^ 2) /2";
|
neuper@37926
|
75 |
val SOME (str, t') = eval_occur_exactly_in 0 "EqSystem.occur'_exactly'_in" t 0;
|
neuper@42390
|
76 |
if str = "[] from [c, c_2, c_3, c_4] occur_exactly_in \
|
neuper@37906
|
77 |
\-1 * (q_0 * L ^^^ 2) / 2 = True" then ()
|
neuper@38031
|
78 |
else error "eval_occur_exactly_in [c, c_2, c_3, c_4]";
|
neuper@37906
|
79 |
|
neuper@37906
|
80 |
"----------- problems --------------------------------------------";
|
neuper@37906
|
81 |
"----------- problems --------------------------------------------";
|
neuper@37906
|
82 |
"----------- problems --------------------------------------------";
|
neuper@42168
|
83 |
val t = str2term "LENGTH [x+y=1,y=2] = 2";
|
neuper@37906
|
84 |
atomty t;
|
neuper@37906
|
85 |
val testrls = append_rls "testrls" e_rls
|
neuper@42390
|
86 |
[(Thm ("LENGTH_NIL",num_str @{thm LENGTH_NIL})),
|
neuper@42390
|
87 |
(Thm ("LENGTH_CONS",num_str @{thm LENGTH_CONS})),
|
neuper@38014
|
88 |
Calc ("Groups.plus_class.plus", eval_binop "#add_"),
|
neuper@41922
|
89 |
Calc ("HOL.eq",eval_equal "#equal_")
|
neuper@37906
|
90 |
];
|
neuper@37926
|
91 |
val SOME (t',_) = rewrite_set_ thy false testrls t;
|
neuper@42390
|
92 |
if term2str t' = "True" then ()
|
neuper@38031
|
93 |
else error "eqsystem.sml: length_ [x+y=1,y=2] = 2";
|
neuper@37906
|
94 |
|
neuper@42391
|
95 |
val SOME t = parse thy "solution LL";
|
neuper@37906
|
96 |
atomty (term_of t);
|
neuper@42391
|
97 |
val SOME t = parse thy "solution LL";
|
neuper@37906
|
98 |
atomty (term_of t);
|
neuper@37906
|
99 |
|
neuper@37906
|
100 |
val t = str2term
|
neuper@42390
|
101 |
"(tl (tl (tl v_s))) from v_s occur_exactly_in (NTH 1 (e_s::bool list))";
|
neuper@37906
|
102 |
atomty t;
|
neuper@42390
|
103 |
val t = str2term ("(tl (tl (tl [c, c_2, c_3, c_4]))) from [c, c_2, c_3, c_4] occur_exactly_in " ^
|
neuper@42390
|
104 |
"(NTH 1 [c_4 = 1, 2 = 2, 3 = 3, 4 = 4])");
|
neuper@37926
|
105 |
val SOME (t,_) =
|
neuper@37906
|
106 |
rewrite_set_ thy true
|
neuper@37906
|
107 |
(append_rls "prls_" e_rls
|
neuper@42390
|
108 |
[Thm ("NTH_CONS",num_str @{thm NTH_CONS}),
|
neuper@42390
|
109 |
Thm ("NTH_NIL",num_str @{thm NTH_NIL}),
|
neuper@42390
|
110 |
Thm ("TL_CONS",num_str @{thm tl_Cons}),
|
neuper@42390
|
111 |
Thm ("TL_NIL",num_str @{thm tl_Nil}),
|
neuper@42390
|
112 |
Calc ("EqSystem.occur'_exactly'_in", eval_occur_exactly_in "#eval_occur_exactly_in_")
|
neuper@37906
|
113 |
]) t;
|
neuper@48760
|
114 |
if t = @{term True} then ()
|
neuper@38031
|
115 |
else error "eqsystem.sml ..occur_exactly_in (nth_ 1 [c_4..";
|
neuper@37906
|
116 |
|
neuper@37906
|
117 |
"----------- rewrite-order ord_simplify_System -------------------";
|
neuper@37906
|
118 |
"----------- rewrite-order ord_simplify_System -------------------";
|
neuper@37906
|
119 |
"----------- rewrite-order ord_simplify_System -------------------";
|
neuper@37906
|
120 |
"M_b x = c * x + -1 * q_0 * (x ^^^ 2 / 2) + c_2";
|
neuper@37906
|
121 |
"--- add_commute ---";
|
neuper@37906
|
122 |
if ord_simplify_System false thy [] (str2term"-1 * q_0 * (x ^^^ 2 / 2)",
|
neuper@37906
|
123 |
str2term"c * x") then ()
|
neuper@38031
|
124 |
else error "integrate.sml, (-1 * q_0 * (x ^^^ 2 / 2)) < (c * x) not#1";
|
neuper@37906
|
125 |
|
neuper@37906
|
126 |
if ord_simplify_System false thy [] (str2term"-1 * q_0 * (x ^^^ 2 / 2)",
|
neuper@37906
|
127 |
str2term"c_2") then ()
|
neuper@38031
|
128 |
else error "integrate.sml, (-1 * q_0 * (x ^^^ 2 / 2)) < (c_2) not#2";
|
neuper@37906
|
129 |
|
neuper@37906
|
130 |
if ord_simplify_System false thy [] (str2term"c * x",
|
neuper@37906
|
131 |
str2term"c_2") then ()
|
neuper@38031
|
132 |
else error "integrate.sml, (c * x) < (c_2) not#3";
|
neuper@37906
|
133 |
|
neuper@37906
|
134 |
"--- mult_commute ---";
|
neuper@37906
|
135 |
if ord_simplify_System false thy [] (str2term"x * c",
|
neuper@37906
|
136 |
str2term"c * x") then ()
|
neuper@38031
|
137 |
else error "integrate.sml, (x * c) < (c * x) not#4";
|
neuper@37906
|
138 |
|
neuper@37906
|
139 |
if ord_simplify_System false thy [] (str2term"-1 * q_0 * (x ^^^ 2 / 2) * c",
|
neuper@37906
|
140 |
str2term"-1 * q_0 * c * (x ^^^ 2 / 2)")
|
neuper@38031
|
141 |
then () else error "integrate.sml, (. * .) < (. * .) not#5";
|
neuper@37906
|
142 |
|
neuper@37906
|
143 |
if ord_simplify_System false thy [] (str2term"-1 * q_0 * (x ^^^ 2 / 2) * c",
|
neuper@37906
|
144 |
str2term"c * -1 * q_0 * (x ^^^ 2 / 2)")
|
neuper@38031
|
145 |
then () else error "integrate.sml, (. * .) < (. * .) not#6";
|
neuper@37906
|
146 |
|
neuper@37906
|
147 |
|
neuper@37906
|
148 |
"----------- rewrite in [EqSystem,normalize,2x2] -----------------";
|
neuper@37906
|
149 |
"----------- rewrite in [EqSystem,normalize,2x2] -----------------";
|
neuper@37906
|
150 |
"----------- rewrite in [EqSystem,normalize,2x2] -----------------";
|
neuper@37906
|
151 |
val t = str2term"[0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2,\
|
neuper@37906
|
152 |
\0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2]";
|
neuper@37906
|
153 |
val bdvs = [(str2term"bdv_1",str2term"c"),
|
neuper@37906
|
154 |
(str2term"bdv_2",str2term"c_2")];
|
neuper@37926
|
155 |
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System_parenthesized t;
|
neuper@37906
|
156 |
if term2str t = "[0 = -1 * q_0 * L ^^^ 2 / 2 + (L * c + c_2), 0 = c_2]"
|
neuper@38031
|
157 |
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.1";
|
neuper@37906
|
158 |
|
neuper@37926
|
159 |
val SOME (t,_) = rewrite_set_inst_ thy true bdvs isolate_bdvs t;
|
t@42197
|
160 |
if term2str t = "[L * c + c_2 = 0 + -1 * (-1 * q_0 * L ^^^ 2 / 2), c_2 = 0]"then () else error "eqsystem.sml rewrite in 2x2 isolate_bdvs";
|
neuper@37906
|
161 |
|
neuper@37926
|
162 |
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System t;
|
neuper@37906
|
163 |
if term2str t = "[L * c + c_2 = q_0 * L ^^^ 2 / 2, c_2 = 0]"
|
neuper@38031
|
164 |
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.2";
|
neuper@37906
|
165 |
|
t@42197
|
166 |
"--- 3--- see EqSystem.thy (*..if replaced by 'and' ...";
|
neuper@37926
|
167 |
val SOME (t,_) = rewrite_set_ thy true order_system t;
|
neuper@37906
|
168 |
if term2str t = "[c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]"
|
neuper@38031
|
169 |
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.3";
|
t@42197
|
170 |
"--- 4---";
|
neuper@37906
|
171 |
|
neuper@37906
|
172 |
"----------- rewrite example from 2nd [EqSystem,normalize,2x2] ---";
|
neuper@37906
|
173 |
"----------- rewrite example from 2nd [EqSystem,normalize,2x2] ---";
|
neuper@37906
|
174 |
"----------- rewrite example from 2nd [EqSystem,normalize,2x2] ---";
|
t@42166
|
175 |
val thy = @{theory "Isac"} (*because of Undeclared constant "Biegelinie.EI*);
|
neuper@37906
|
176 |
val t =
|
neuper@37906
|
177 |
str2term"[0 = c_2 + c * 0 + 1 / EI * (L * q_0 / 12 * 0 ^^^ 3 + \
|
neuper@37906
|
178 |
\ -1 * q_0 / 24 * 0 ^^^ 4),\
|
neuper@37906
|
179 |
\ 0 = c_2 + c * L + 1 / EI * (L * q_0 / 12 * L ^^^ 3 + \
|
neuper@37906
|
180 |
\ -1 * q_0 / 24 * L ^^^ 4)]";
|
neuper@37926
|
181 |
val SOME (t,_) = rewrite_set_ thy true norm_Rational t;
|
neuper@37906
|
182 |
if term2str t="[0 = c_2, 0 = c_2 + L * c + L ^^^ 4 * q_0 / (EI * 24)]"
|
neuper@38031
|
183 |
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.0b";
|
neuper@37906
|
184 |
|
neuper@37926
|
185 |
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System_parenthesized t;
|
neuper@37906
|
186 |
if term2str t = "[0 = c_2, 0 = q_0 * L ^^^ 4 / (24 * EI) + (L * c + c_2)]"
|
neuper@38031
|
187 |
then () else error "eqsystem.sml rewrite in 2x2 simplify_System_par.1b";
|
neuper@37906
|
188 |
|
neuper@37926
|
189 |
val SOME (t,_) = rewrite_set_inst_ thy true bdvs isolate_bdvs t;
|
neuper@37906
|
190 |
if term2str t = "[c_2 = 0, L * c + c_2 = 0 + -1 * (q_0 * L ^^^ 4 / (24 * EI))]"
|
neuper@38031
|
191 |
then () else error "eqsystem.sml rewrite in 2x2 isolate_bdvs b";
|
neuper@37906
|
192 |
|
neuper@37926
|
193 |
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System t;
|
neuper@37906
|
194 |
if term2str t = "[c_2 = 0, L * c + c_2 = -1 * q_0 * L ^^^ 4 / (24 * EI)]"
|
neuper@38031
|
195 |
then () else error "eqsystem.sml rewrite in 2x2 simplify_System.2b";
|
neuper@37906
|
196 |
|
neuper@37906
|
197 |
val xxx = rewrite_set_ thy true order_system t;
|
neuper@37906
|
198 |
if is_none xxx
|
neuper@38031
|
199 |
then () else error "eqsystem.sml rewrite in 2x2 simplify_System.3b";
|
neuper@37906
|
200 |
|
neuper@37906
|
201 |
|
neuper@37906
|
202 |
"----------- rewrite in [EqSystem,top_down_substitution,2x2] -----";
|
neuper@37906
|
203 |
"----------- rewrite in [EqSystem,top_down_substitution,2x2] -----";
|
neuper@37906
|
204 |
"----------- rewrite in [EqSystem,top_down_substitution,2x2] -----";
|
neuper@37906
|
205 |
val e1__ = str2term "c_2 = 77";
|
neuper@37906
|
206 |
val e2__ = str2term "L * c + c_2 = q_0 * L ^^^ 2 / 2";
|
neuper@37906
|
207 |
val bdvs = [(str2term"bdv_1",str2term"c"),
|
neuper@37906
|
208 |
(str2term"bdv_2",str2term"c_2")];
|
neuper@37926
|
209 |
val SOME (e2__,_) = rewrite_terms_ thy dummy_ord Erls [e1__] e2__;
|
neuper@37906
|
210 |
if term2str e2__ = "L * c + 77 = q_0 * L ^^^ 2 / 2" then ()
|
neuper@38031
|
211 |
else error "eqsystem.sml top_down_substitution,2x2] subst";
|
neuper@37906
|
212 |
|
neuper@37926
|
213 |
val SOME (e2__,_) =
|
neuper@37906
|
214 |
rewrite_set_inst_ thy true bdvs simplify_System_parenthesized e2__;
|
neuper@37906
|
215 |
if term2str e2__ = "77 + L * c = q_0 * L ^^^ 2 / 2" then ()
|
neuper@38031
|
216 |
else error "eqsystem.sml top_down_substitution,2x2] simpl_par";
|
neuper@37906
|
217 |
|
neuper@37926
|
218 |
val SOME (e2__,_) = rewrite_set_inst_ thy true bdvs isolate_bdvs e2__;
|
neuper@37906
|
219 |
if term2str e2__ = "c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L" then ()
|
neuper@38031
|
220 |
else error "eqsystem.sml top_down_substitution,2x2] isolate";
|
neuper@37906
|
221 |
|
neuper@37906
|
222 |
val t = str2term "[c_2 = 77, c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L]";
|
neuper@37926
|
223 |
val SOME (t,_) = rewrite_set_ thy true order_system t;
|
neuper@37906
|
224 |
if term2str t = "[c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L, c_2 = 77]" then ()
|
neuper@38031
|
225 |
else error "eqsystem.sml top_down_substitution,2x2] order_system";
|
neuper@37906
|
226 |
|
neuper@37906
|
227 |
if not (ord_simplify_System
|
neuper@37906
|
228 |
false thy []
|
neuper@37906
|
229 |
(str2term"[c_2 = 77, c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L]",
|
neuper@37906
|
230 |
str2term"[c = (q_0 * L ^^^ 2 / 2 + -1 * 77) / L, c_2 = 77]"))
|
neuper@38031
|
231 |
then () else error "eqsystem.sml, order_result rew_ord";
|
neuper@37906
|
232 |
|
neuper@37906
|
233 |
trace_rewrite:=true;
|
neuper@37906
|
234 |
trace_rewrite:=false;
|
neuper@37906
|
235 |
|
neuper@37906
|
236 |
|
neuper@37906
|
237 |
"----------- rewrite in [EqSystem,normalize,4x4] -----------------";
|
neuper@37906
|
238 |
"----------- rewrite in [EqSystem,normalize,4x4] -----------------";
|
neuper@37906
|
239 |
"----------- rewrite in [EqSystem,normalize,4x4] -----------------";
|
neuper@41977
|
240 |
(*STOPPED.WN06?: revise rewrite in [EqSystem,normalize,4x4] from before 0609*)
|
neuper@37906
|
241 |
val t = str2term"[0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c_3 + c_4,\
|
neuper@37906
|
242 |
\0 = -1 * q_0 * L ^^^ 2 / 2 + L * c_3 + c_4,\
|
neuper@37906
|
243 |
\c + c_2 + c_3 + c_4 = 0,\
|
neuper@37906
|
244 |
\c_2 + c_3 + c_4 = 0]";
|
neuper@37906
|
245 |
val bdvs = [(str2term"bdv_1",str2term"c"),
|
neuper@37906
|
246 |
(str2term"bdv_2",str2term"c_2"),
|
neuper@37906
|
247 |
(str2term"bdv_3",str2term"c_3"),
|
neuper@37906
|
248 |
(str2term"bdv_4",str2term"c_4")];
|
neuper@37926
|
249 |
val SOME (t,_) =
|
neuper@37906
|
250 |
rewrite_set_inst_ thy true bdvs simplify_System_parenthesized t;
|
neuper@37906
|
251 |
if term2str t = "[0 = c_4, 0 = -1 * q_0 * L ^^^ 2 / 2 + (L * c_3 + c_4),\n\
|
neuper@37906
|
252 |
\ c + (c_2 + (c_3 + c_4)) = 0, c_2 + (c_3 + c_4) = 0]"
|
neuper@38031
|
253 |
then () else error "eqsystem.sml rewrite in 4x4 simplify_System_paren";
|
neuper@37906
|
254 |
|
neuper@37926
|
255 |
val SOME (t,_) = rewrite_set_inst_ thy true bdvs isolate_bdvs t;
|
neuper@37906
|
256 |
if term2str t = "[c_4 = 0, \
|
neuper@37906
|
257 |
\L * c_3 + c_4 = 0 + -1 * (-1 * q_0 * L ^^^ 2 / 2),\n \
|
neuper@37906
|
258 |
\c + (c_2 + (c_3 + c_4)) = 0, c_2 + (c_3 + c_4) = 0]"
|
neuper@38031
|
259 |
then () else error "eqsystem.sml rewrite in 4x4 isolate_bdvs";
|
neuper@37906
|
260 |
|
neuper@37926
|
261 |
val SOME(t,_)= rewrite_set_inst_ thy true bdvs simplify_System_parenthesized t;
|
neuper@37906
|
262 |
if term2str t = "[c_4 = 0,\
|
neuper@37906
|
263 |
\ L * c_3 + c_4 = q_0 * L ^^^ 2 / 2,\
|
neuper@37906
|
264 |
\ c + (c_2 + (c_3 + c_4)) = 0,\n\
|
neuper@37906
|
265 |
\ c_2 + (c_3 + c_4) = 0]"
|
neuper@38031
|
266 |
then () else error "eqsystem.sml rewrite in 4x4 simplify_System_p..2";
|
neuper@37906
|
267 |
|
neuper@37926
|
268 |
val SOME (t,_) = rewrite_set_ thy true order_system t;
|
neuper@37906
|
269 |
if term2str t = "[c_4 = 0,\
|
neuper@37906
|
270 |
\ L * c_3 + c_4 = q_0 * L ^^^ 2 / 2,\
|
neuper@37906
|
271 |
\ c_2 + (c_3 + c_4) = 0,\n\
|
neuper@37906
|
272 |
\ c + (c_2 + (c_3 + c_4)) = 0]"
|
neuper@38031
|
273 |
then () else error "eqsystem.sml rewrite in 4x4 order_system";
|
neuper@37906
|
274 |
|
neuper@37906
|
275 |
"----------- refine [linear,system]-------------------------------";
|
neuper@37906
|
276 |
"----------- refine [linear,system]-------------------------------";
|
neuper@37906
|
277 |
"----------- refine [linear,system]-------------------------------";
|
neuper@42391
|
278 |
val fmz =
|
neuper@42391
|
279 |
["equalities [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2," ^
|
neuper@42391
|
280 |
"0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + (c_2::real)]",
|
neuper@42391
|
281 |
"solveForVars [c, c_2]", "solution LL"];
|
neuper@42391
|
282 |
|
neuper@42391
|
283 |
(*WN120313 in "solution L" above "refine fmz ["linear","system"]" caused an error...*)
|
neuper@42391
|
284 |
"~~~~~ fun refine, args:"; val ((fmz:fmz_), (pblID:pblID)) = (fmz, ["linear","system"]);
|
neuper@42391
|
285 |
"~~~~~ fun refin', args:"; val ((pblRD: pblRD), fmz, pbls, ((Ptyp (pI, [py], [])): pbt ptyp)) =
|
neuper@42391
|
286 |
((rev o tl) pblID, fmz, [(*match list*)],
|
neuper@42391
|
287 |
((Ptyp ("linear", [get_pbt ["linear","system"]], [])): pbt ptyp));
|
neuper@42391
|
288 |
val {thy, ppc, where_, prls, ...} = py ;
|
neuper@42391
|
289 |
"~~~~~ fun prep_ori, args:"; val (fmz, thy, pbt) = (fmz, thy, ppc);
|
neuper@48761
|
290 |
(* val ctxt = Proof_Context.init_global thy |> fold declare_constraints fmz;*)
|
neuper@48761
|
291 |
val ctxt = Proof_Context.init_global thy;
|
neuper@42391
|
292 |
"~~~~~ fun declare_constraints, args:"; val (t, ctxt) = (nth 1 fmz, ctxt);
|
neuper@42391
|
293 |
fun get_vars ((v,T)::vs) = (case raw_explode v |> Library.read_int of
|
neuper@42391
|
294 |
(_, _::_) => (Free (v,T)::get_vars vs)
|
neuper@42391
|
295 |
| (_, [] ) => get_vars vs) (*filter out nums as long as
|
neuper@42391
|
296 |
we have Free ("123",_)*)
|
neuper@42391
|
297 |
| get_vars [] = [];
|
neuper@42391
|
298 |
t = "equalities [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,"^
|
neuper@42391
|
299 |
"0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + (c_2::real)]";
|
neuper@42391
|
300 |
val ts = Term.add_frees (Syntax.read_term ctxt t) [] |> get_vars;
|
neuper@42391
|
301 |
val ctxt = Variable.declare_constraints (nth 1 ts) ctxt;
|
neuper@42391
|
302 |
val ctxt = Variable.declare_constraints (nth 2 ts) ctxt;
|
neuper@42391
|
303 |
val ctxt = Variable.declare_constraints (nth 3 ts) ctxt;
|
neuper@42391
|
304 |
val ctxt = Variable.declare_constraints (nth 4 ts) ctxt;
|
neuper@42391
|
305 |
val t = nth 2 fmz; t = "solveForVars [c, c_2]";
|
neuper@42391
|
306 |
val ts = Term.add_frees (Syntax.read_term ctxt t) [] |> get_vars;
|
neuper@42391
|
307 |
val ctxt = Variable.declare_constraints (nth 1 ts) ctxt;
|
neuper@42391
|
308 |
val t = nth 3 fmz; t = "solution LL";
|
neuper@42391
|
309 |
(*(Syntax.read_term ctxt t);
|
neuper@42391
|
310 |
Type unification failed: Clash of types "real" and "_ list"
|
neuper@42391
|
311 |
Type error in application: incompatible operand type
|
neuper@42391
|
312 |
|
neuper@42391
|
313 |
Operator: solution :: bool list \<Rightarrow> toreall
|
neuper@42391
|
314 |
Operand: L :: real ========== L was already present in equalities ========== *)
|
neuper@42391
|
315 |
|
neuper@42391
|
316 |
"===== case 1 =====";
|
neuper@37906
|
317 |
val matches = refine fmz ["linear","system"];
|
neuper@42391
|
318 |
case matches of
|
neuper@42391
|
319 |
[Matches (["linear", "system"], _),
|
neuper@42391
|
320 |
Matches (["2x2", "linear", "system"], _),
|
neuper@42391
|
321 |
NoMatch (["triangular", "2x2", "linear", "system"], _),
|
neuper@42391
|
322 |
Matches (["normalize", "2x2", "linear", "system"],
|
neuper@42391
|
323 |
{Find = [Correct "solution LL"],
|
neuper@42391
|
324 |
With = [],
|
neuper@42391
|
325 |
Given =
|
neuper@42391
|
326 |
[Correct
|
neuper@37906
|
327 |
"equalities\n [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,\n 0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]",
|
neuper@42391
|
328 |
Correct "solveForVars [c, c_2]"],
|
neuper@42391
|
329 |
Where = [],
|
neuper@42391
|
330 |
Relate = []})] => ()
|
neuper@42391
|
331 |
| _ => error "eqsystem.sml refine ['normalize','2x2'...]";
|
neuper@37906
|
332 |
|
neuper@42391
|
333 |
"===== case 2 =====";
|
neuper@37906
|
334 |
val fmz = ["equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]",
|
neuper@42391
|
335 |
"solveForVars [c, c_2]", "solution LL"];
|
neuper@37906
|
336 |
val matches = refine fmz ["linear","system"];
|
neuper@37906
|
337 |
case matches of [_,_,
|
neuper@42391
|
338 |
Matches
|
neuper@42391
|
339 |
(["triangular", "2x2", "linear", "system"],
|
neuper@42391
|
340 |
{Find = [Correct "solution LL"],
|
neuper@37906
|
341 |
With = [],
|
neuper@37906
|
342 |
Given =
|
neuper@42391
|
343 |
[Correct "equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]",
|
neuper@42391
|
344 |
Correct "solveForVars [c, c_2]"],
|
neuper@42391
|
345 |
Where = [Correct
|
neuper@42391
|
346 |
"tl [c, c_2] from [c, c_2] occur_exactly_in NTH 1\n [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]",
|
neuper@42391
|
347 |
Correct
|
neuper@42391
|
348 |
"[c, c_2] from [c, c_2] occur_exactly_in NTH 2\n [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]"],
|
neuper@37906
|
349 |
Relate = []})] => ()
|
neuper@42391
|
350 |
| _ => error "eqsystem.sml refine ['triangular','2x2'...]";
|
neuper@37906
|
351 |
|
neuper@37906
|
352 |
(*WN051014----------------------------------------------------------------
|
neuper@37906
|
353 |
the above 'val matches = refine fmz ["linear","system"]'
|
neuper@37906
|
354 |
didn't work anymore; we investigated in these steps:*)
|
neuper@37906
|
355 |
val fmz = ["equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]",
|
neuper@42391
|
356 |
"solveForVars [c, c_2]", "solution LL"];
|
neuper@37906
|
357 |
val matches = refine fmz ["triangular", "2x2", "linear","system"];
|
neuper@37906
|
358 |
(*... resulted in
|
neuper@37906
|
359 |
False "[c, c_2] from_ [c, c_2] occur_exactly_in nth_ 2\n
|
neuper@37906
|
360 |
[c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]"]*)
|
neuper@42391
|
361 |
val t = str2term ("[c, c_2] from [c, c_2] occur_exactly_in NTH 2" ^
|
neuper@42391
|
362 |
"[c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]");
|
neuper@52101
|
363 |
trace_rewrite := false;
|
neuper@37926
|
364 |
val SOME (t',_) = rewrite_set_ thy false prls_triangular t;
|
neuper@37906
|
365 |
(*found:...
|
neuper@42390
|
366 |
## try thm: NTH_CONS
|
neuper@37906
|
367 |
### eval asms: 1 < 2 + - 1
|
neuper@37906
|
368 |
==> nth_ (2 + - 1) [L * c + c_2 = q_0 * L ^^^ 2 / 2] =
|
neuper@37906
|
369 |
nth_ (2 + - 1 + - 1) []
|
neuper@37906
|
370 |
#### rls: erls_prls_triangular on: 1 < 2 + - 1
|
neuper@37906
|
371 |
##### try calc: op <'
|
neuper@37906
|
372 |
### asms accepted: ["1 < 2 + - 1"] stored: ["1 < 2 + -1"]
|
neuper@37906
|
373 |
|
neuper@38014
|
374 |
... i.e Calc ("Groups.plus_class.plus", eval_binop "#add_") was missing in erls_prls_triangular*)
|
neuper@37906
|
375 |
trace_rewrite:=false;
|
t@42166
|
376 |
|
neuper@42391
|
377 |
"===== case 3: relaxed preconditions for triangular system =====";
|
neuper@42391
|
378 |
val fmz = ["equalities [L * q_0 = c, \
|
neuper@42391
|
379 |
\ 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2,\
|
neuper@42391
|
380 |
\ 0 = c_4, \
|
neuper@42391
|
381 |
\ 0 = c_3]",
|
neuper@42391
|
382 |
"solveForVars [c, c_2, c_3, c_4]", "solution LL"];
|
neuper@42391
|
383 |
(*============ inhibit exn WN120314 TODO: investigate type error (same) in these 2 cases:
|
neuper@42391
|
384 |
probably exn thrown by fun declare_constraints
|
neuper@42391
|
385 |
/-------------------------------------------------------\
|
neuper@42391
|
386 |
Type unification failed
|
neuper@42391
|
387 |
Type error in application: incompatible operand type
|
neuper@37906
|
388 |
|
neuper@42391
|
389 |
Operator: op # c_3 :: 'a list \<Rightarrow> 'a list
|
neuper@42391
|
390 |
Operand: [c_4] :: 'b list
|
neuper@42391
|
391 |
\-------------------------------------------------------/
|
neuper@37906
|
392 |
val matches = refine fmz ["linear","system"];
|
neuper@37906
|
393 |
case matches of
|
neuper@37906
|
394 |
[Matches (["linear", "system"], _),
|
neuper@37906
|
395 |
NoMatch (["2x2", "linear", "system"], _),
|
neuper@37906
|
396 |
NoMatch (["3x3", "linear", "system"], _),
|
neuper@37906
|
397 |
Matches (["4x4", "linear", "system"], _),
|
neuper@37906
|
398 |
NoMatch (["triangular", "4x4", "linear", "system"], _),
|
neuper@37906
|
399 |
Matches (["normalize", "4x4", "linear", "system"], _)] => ()
|
neuper@38031
|
400 |
| _ => error "eqsystem.sml: refine relaxed triangular sys NoMatch";
|
neuper@37906
|
401 |
(*WN060914 does NOT match, because 3rd and 4th equ are not ordered*)
|
neuper@37906
|
402 |
|
neuper@42391
|
403 |
"===== case 4 =====";
|
neuper@37906
|
404 |
val fmz = ["equalities [L * q_0 = c, \
|
neuper@37906
|
405 |
\ 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2,\
|
neuper@37906
|
406 |
\ 0 = c_3, \
|
neuper@37906
|
407 |
\ 0 = c_4]",
|
neuper@42391
|
408 |
"solveForVars [c, c_2, c_3, c_4]", "solution LL"];
|
neuper@37906
|
409 |
val matches = refine fmz ["triangular", "4x4", "linear","system"];
|
neuper@37906
|
410 |
case matches of
|
neuper@37906
|
411 |
[Matches (["triangular", "4x4", "linear", "system"], _)] => ()
|
neuper@38031
|
412 |
| _ => error "eqsystem.sml: refine relaxed triangular sys Matches";
|
neuper@37906
|
413 |
val matches = refine fmz ["linear","system"];
|
neuper@42391
|
414 |
============ inhibit exn WN120314 ==============================================*)
|
neuper@37906
|
415 |
|
neuper@37906
|
416 |
"----------- refine [2x2,linear,system] search error--------------";
|
neuper@37906
|
417 |
"----------- refine [2x2,linear,system] search error--------------";
|
neuper@37906
|
418 |
"----------- refine [2x2,linear,system] search error--------------";
|
neuper@37906
|
419 |
(*didn't go into ["2x2", "linear", "system"];
|
neuper@37906
|
420 |
we investigated in these steps:*)
|
neuper@37906
|
421 |
val fmz = ["equalities [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,\
|
neuper@37906
|
422 |
\0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]",
|
neuper@42391
|
423 |
"solveForVars [c, c_2]", "solution LL"];
|
neuper@52101
|
424 |
trace_rewrite := false;
|
neuper@37906
|
425 |
val matches = refine fmz ["2x2", "linear","system"];
|
neuper@37906
|
426 |
trace_rewrite:=false;
|
neuper@37906
|
427 |
print_depth 11; matches; print_depth 3;
|
neuper@37906
|
428 |
(*brought: 'False "length_ es_ = 2"'*)
|
neuper@37906
|
429 |
|
neuper@37906
|
430 |
(*-----fun refin' (pblRD:pblRD) fmz pbls ((Ptyp (pI,[py],[])):pbt ptyp) =
|
neuper@37906
|
431 |
(* val ((pblRD:pblRD), fmz, pbls, ((Ptyp (pI,[py],[])):pbt ptyp)) =
|
neuper@37906
|
432 |
(rev ["linear","system"], fmz, [(*match list*)],
|
neuper@37906
|
433 |
((Ptyp ("2x2",[get_pbt ["2x2","linear","system"]],[])):pbt ptyp));
|
neuper@37906
|
434 |
*)
|
neuper@37906
|
435 |
> show_types:=true; term2str (hd where_); show_types:=false;
|
neuper@37906
|
436 |
val it = "length_ (es_::real list) = (2::real)" : string
|
neuper@37906
|
437 |
|
neuper@37906
|
438 |
=========================================================================\
|
neuper@37906
|
439 |
-------fun prep_pbt
|
neuper@37906
|
440 |
(* val (thy, (pblID, dsc_dats: (string * (string list)) list,
|
neuper@37906
|
441 |
ev:rls, ca: string option, metIDs:metID list)) =
|
neuper@37906
|
442 |
(EqSystem.thy, (["system"],
|
neuper@37995
|
443 |
[("#Given" ,["equalities es_", "solveForVars v_s"]),
|
neuper@37906
|
444 |
("#Find" ,["solution ss___"](*___ is copy-named*))
|
neuper@37906
|
445 |
],
|
neuper@37906
|
446 |
append_rls "e_rls" e_rls [(*for preds in where_*)],
|
neuper@37995
|
447 |
SOME "solveSystem es_ v_s",
|
neuper@37906
|
448 |
[]));
|
neuper@37906
|
449 |
*)
|
neuper@37995
|
450 |
> val [("#Given", [equalities_es_, "solveForVars v_s"])] = gi;
|
neuper@37906
|
451 |
val equalities_es_ = "equalities es_" : string
|
neuper@37906
|
452 |
> val (dd, ii) = (split_did o term_of o the o (parse thy)) equalities_es_;
|
neuper@37906
|
453 |
> show_types:=true; term2str ii; show_types:=false;
|
neuper@37906
|
454 |
val it = "es_::bool list" : string
|
neuper@37906
|
455 |
~~~~~~~~~~~~~~~^^^^^^^^^ OK~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
neuper@37906
|
456 |
|
neuper@37906
|
457 |
> val {where_,...} = get_pbt ["2x2", "linear","system"];
|
neuper@37906
|
458 |
> show_types:=true; term2str (hd where_); show_types:=false;
|
neuper@37906
|
459 |
|
neuper@37906
|
460 |
=========================================================================/
|
neuper@37906
|
461 |
|
neuper@37906
|
462 |
-----fun refin' ff:
|
neuper@42393
|
463 |
> (writeln o (itms2str_ (thy2ctxt @{theory Isac}))) itms;
|
neuper@37906
|
464 |
[
|
neuper@37906
|
465 |
(1 ,[1] ,true ,#Given ,Cor equalities
|
neuper@37906
|
466 |
[0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,
|
neuper@37906
|
467 |
0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2] ,(es_, [[0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,
|
neuper@37906
|
468 |
0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]])),
|
neuper@37995
|
469 |
(2 ,[1] ,true ,#Given ,Cor solveForVars [c, c_2] ,(v_s, [[c, c_2]])),
|
neuper@37906
|
470 |
(3 ,[1] ,true ,#Find ,Cor solution L ,(ss___, [L]))]
|
neuper@37906
|
471 |
|
neuper@37906
|
472 |
> (writeln o pres2str) pre';
|
neuper@37906
|
473 |
[
|
neuper@37906
|
474 |
(false, length_ es_ = 2),
|
neuper@37906
|
475 |
(true, length_ [c, c_2] = 2)]
|
neuper@37906
|
476 |
|
neuper@37906
|
477 |
----- fun match_oris':
|
neuper@42393
|
478 |
> (writeln o (itms2str_ (thy2ctxt @{theory Isac}))) itms;
|
neuper@37906
|
479 |
> (writeln o pres2str) pre';
|
neuper@37906
|
480 |
..as in refin'
|
neuper@37906
|
481 |
|
neuper@37906
|
482 |
----- fun check_preconds'
|
neuper@37906
|
483 |
> (writeln o env2str) env;
|
neuper@37906
|
484 |
["
|
neuper@37906
|
485 |
(es_, [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,
|
neuper@37906
|
486 |
0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2])","
|
neuper@37995
|
487 |
(v_s, [c, c_2])","
|
neuper@37906
|
488 |
(ss___, L)"]
|
neuper@37906
|
489 |
|
neuper@37906
|
490 |
> val es_ = (fst o hd) env;
|
neuper@37906
|
491 |
val es_ = Free ("es_", "bool List.list") : Term.term
|
neuper@37906
|
492 |
|
neuper@37906
|
493 |
> val pre1 = hd pres;
|
neuper@37906
|
494 |
atomty pre1;
|
neuper@37906
|
495 |
***
|
neuper@37906
|
496 |
*** Const (op =, [real, real] => bool)
|
neuper@37906
|
497 |
*** . Const (ListG.length_, real list => real)
|
neuper@37906
|
498 |
*** . . Free (es_, real list)
|
neuper@37906
|
499 |
~~~~~~~~~~~~~~~~~~~^^^^^^^^^ should be bool list~~~~~~~~~~~~~~~~~~~
|
neuper@37906
|
500 |
*** . Free (2, real)
|
neuper@37906
|
501 |
***
|
neuper@37906
|
502 |
|
neuper@37906
|
503 |
THE REASON WAS A non-type-constrained variable IN #WHERE OF PROBLEM
|
neuper@37906
|
504 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
neuper@37906
|
505 |
*)
|
neuper@37906
|
506 |
|
neuper@37906
|
507 |
"----------- me [EqSystem,normalize,2x2] -------------------------";
|
neuper@37906
|
508 |
"----------- me [EqSystem,normalize,2x2] -------------------------";
|
neuper@37906
|
509 |
"----------- me [EqSystem,normalize,2x2] -------------------------";
|
neuper@37906
|
510 |
val fmz = ["equalities [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,\
|
neuper@37906
|
511 |
\0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]",
|
neuper@42391
|
512 |
"solveForVars [c, c_2]", "solution LL"];
|
neuper@37906
|
513 |
val (dI',pI',mI') =
|
neuper@37991
|
514 |
("Biegelinie",["normalize", "2x2", "linear", "system"],
|
neuper@37906
|
515 |
["EqSystem","normalize","2x2"]);
|
neuper@37906
|
516 |
val p = e_pos'; val c = [];
|
neuper@37906
|
517 |
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
|
neuper@37906
|
518 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
519 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
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;
|
neuper@37906
|
522 |
case nxt of ("Specify_Method",_) => ()
|
neuper@38031
|
523 |
| _ => error "eqsystem.sml [EqSystem,normalize,2x2] specify";
|
neuper@37906
|
524 |
|
neuper@37906
|
525 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
526 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
527 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f(*["(bdv_1, c)", "(bdv_2, hd (tl [c, c_2] ... corrected srls; ran only AFTER use"RCODE-root.sml", store_met was NOT SUFFICIENT*);
|
neuper@37906
|
528 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
529 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
530 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
531 |
case nxt of
|
neuper@37991
|
532 |
(_, Subproblem ("Biegelinie", ["triangular", "2x2", "linear",_])) => ()
|
neuper@38031
|
533 |
| _ => error "eqsystem.sml me [EqSystem,normalize,2x2] SubProblem";
|
neuper@37906
|
534 |
|
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;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
537 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
538 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
539 |
case nxt of
|
neuper@37906
|
540 |
(_, Specify_Method ["EqSystem", "top_down_substitution", "2x2"]) => ()
|
neuper@38031
|
541 |
| _ => error "eqsystem.sml me [EqSys...2x2] top_down_substitution";
|
neuper@37906
|
542 |
|
neuper@37906
|
543 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37924
|
544 |
val PblObj {probl,...} = get_obj I pt [5];
|
neuper@42391
|
545 |
(writeln o (itms2str_ (thy2ctxt @{theory Isac}))) probl;
|
neuper@37906
|
546 |
(*[
|
neuper@37906
|
547 |
(1 ,[1] ,true ,#Given ,Cor equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2] ,(es_, [[c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]])),
|
neuper@37995
|
548 |
(2 ,[1] ,true ,#Given ,Cor solveForVars [c, c_2] ,(v_s, [[c, c_2]])),
|
neuper@37906
|
549 |
(3 ,[1] ,true ,#Find ,Cor solution ss___ ,(ss___, [ss___]))]
|
neuper@37906
|
550 |
*)
|
neuper@37906
|
551 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
552 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
553 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
554 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
555 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
556 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
557 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
558 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
559 |
case nxt of
|
neuper@37906
|
560 |
(_, Check_Postcond ["triangular", "2x2", "linear", "system"]) => ()
|
neuper@38031
|
561 |
| _ => error "eqsystem.sml me Subpbl .[EqSys...2x2] finished";
|
neuper@37906
|
562 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
563 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
564 |
if f2str f = "[c = L * q_0 / 2, c_2 = 0]" then ()
|
neuper@38031
|
565 |
else error "eqsystem.sml me [EqSys...2x2] finished f2str f";
|
neuper@37906
|
566 |
case nxt of
|
neuper@37906
|
567 |
(_, End_Proof') => ()
|
neuper@38031
|
568 |
| _ => error "eqsystem.sml me [EqSys...2x2] finished End_Proof'";
|
neuper@37906
|
569 |
|
neuper@37906
|
570 |
"----------- me [linear,system] ..normalize..top_down_sub..-------";
|
neuper@37906
|
571 |
"----------- me [linear,system] ..normalize..top_down_sub..-------";
|
neuper@37906
|
572 |
"----------- me [linear,system] ..normalize..top_down_sub..-------";
|
neuper@37906
|
573 |
val fmz =
|
neuper@37906
|
574 |
["equalities\
|
neuper@37906
|
575 |
\[0 = c_2 + c * 0 + 1 / EI * (L * q_0 / 12 * 0 ^^^ 3 + \
|
neuper@37906
|
576 |
\ -1 * q_0 / 24 * 0 ^^^ 4),\
|
neuper@37906
|
577 |
\ 0 = c_2 + c * L + 1 / EI * (L * q_0 / 12 * L ^^^ 3 + \
|
neuper@37906
|
578 |
\ -1 * q_0 / 24 * L ^^^ 4)]",
|
neuper@42391
|
579 |
"solveForVars [c, c_2]", "solution LL"];
|
neuper@37906
|
580 |
val (dI',pI',mI') =
|
neuper@37991
|
581 |
("Biegelinie",["linear", "system"], ["no_met"]);
|
neuper@37906
|
582 |
val p = e_pos'; val c = [];
|
neuper@37906
|
583 |
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
|
neuper@37906
|
584 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
585 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
586 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
587 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
588 |
case nxt of (_,Specify_Method ["EqSystem", "normalize", "2x2"]) => ()
|
neuper@38031
|
589 |
| _ => error "eqsystem.sml [linear,system] specify b";
|
neuper@37906
|
590 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
591 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
592 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
593 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
594 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
595 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
596 |
if f2str f =
|
neuper@37906
|
597 |
"[c_2 = 0, L * c + c_2 = -1 * q_0 * L ^^^ 4 / (24 * EI)]"
|
neuper@38031
|
598 |
then () else error "eqsystem.sml me simpl. before SubProblem b";
|
neuper@37906
|
599 |
case nxt of
|
neuper@37991
|
600 |
(_, Subproblem ("Biegelinie", ["triangular", "2x2", "linear",_])) => ()
|
neuper@38031
|
601 |
| _ => error "eqsystem.sml me [linear,system] SubProblem b";
|
neuper@37906
|
602 |
|
neuper@37906
|
603 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
604 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
605 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
606 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
607 |
case nxt of
|
neuper@37906
|
608 |
(_, Specify_Method ["EqSystem", "top_down_substitution", "2x2"]) => ()
|
neuper@38031
|
609 |
| _ => error "eqsystem.sml me [EqSys...2x2] top_down_substitution b";
|
neuper@37906
|
610 |
|
neuper@37906
|
611 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37924
|
612 |
val PblObj {probl,...} = get_obj I pt [5];
|
neuper@42391
|
613 |
(writeln o (itms2str_ (thy2ctxt @{theory Isac}))) probl;
|
neuper@37906
|
614 |
(*[
|
neuper@37906
|
615 |
(1 ,[1] ,true ,#Given ,Cor equalities [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2] ,(es_, [[c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]])),
|
neuper@37995
|
616 |
(2 ,[1] ,true ,#Given ,Cor solveForVars [c, c_2] ,(v_s, [[c, c_2]])),
|
neuper@37906
|
617 |
(3 ,[1] ,true ,#Find ,Cor solution ss___ ,(ss___, [ss___]))]
|
neuper@37906
|
618 |
*)
|
neuper@37906
|
619 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
620 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
621 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
622 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
623 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
624 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
625 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
626 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
627 |
case nxt of
|
neuper@37906
|
628 |
(_, Check_Postcond ["triangular", "2x2", "linear", "system"]) => ()
|
neuper@38031
|
629 |
| _ => error "eqsystem.sml me Subpbl .[EqSys...2x2] finished b";
|
neuper@37906
|
630 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
631 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
|
neuper@37906
|
632 |
if f2str f =
|
neuper@37906
|
633 |
"[c = -1 * q_0 * L ^^^ 4 / (24 * EI * L), c_2 = 0]"
|
neuper@38031
|
634 |
then () else error "eqsystem.sml me [EqSys...2x2] finished f2str f b";
|
neuper@37906
|
635 |
case nxt of
|
neuper@37906
|
636 |
(_, End_Proof') => ()
|
neuper@42391
|
637 |
| _ => error "eqsystem.sml me [EqSys...2x2] finished End_Proof'";
|
neuper@37906
|
638 |
|
neuper@37906
|
639 |
|
neuper@37906
|
640 |
"----------- all systems from Biegelinie -------------------------";
|
neuper@37906
|
641 |
"----------- all systems from Biegelinie -------------------------";
|
neuper@37906
|
642 |
"----------- all systems from Biegelinie -------------------------";
|
neuper@37906
|
643 |
val subst = [(str2term "bdv_1", str2term "c"),
|
neuper@37906
|
644 |
(str2term "bdv_2", str2term "c_2"),
|
neuper@37906
|
645 |
(str2term "bdv_3", str2term "c_3"),
|
neuper@37906
|
646 |
(str2term "bdv_4", str2term "c_4")];
|
neuper@37906
|
647 |
"------- Bsp 7.27";
|
neuper@37906
|
648 |
states:=[];
|
neuper@37906
|
649 |
CalcTree [(["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
|
neuper@37906
|
650 |
"Randbedingungen [y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]",
|
neuper@37906
|
651 |
"FunktionsVariable x"],
|
neuper@37991
|
652 |
("Biegelinie", ["Biegelinien"],
|
neuper@37906
|
653 |
["IntegrierenUndKonstanteBestimmen2"]))];
|
neuper@37906
|
654 |
moveActiveRoot 1;
|
neuper@37906
|
655 |
(*
|
neuper@37906
|
656 |
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
|
neuper@37906
|
657 |
##7.27## ordered substs
|
neuper@37906
|
658 |
c_4 c_2
|
neuper@37906
|
659 |
c c_2 c_3 c_4 c c_2 1->2: c
|
neuper@37906
|
660 |
c_2 c_4
|
neuper@37906
|
661 |
c c_2 c c_2 c_3 c_4 [2':c, 1:c_2, 3:c_4] -> 4:c_3*)
|
neuper@37906
|
662 |
val t = str2term"[0 = c_4, \
|
neuper@37906
|
663 |
\ 0 = c_4 + L * c_3 +(12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI), \
|
neuper@37906
|
664 |
\ 0 = c_2, \
|
neuper@37906
|
665 |
\ 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2]";
|
neuper@37926
|
666 |
val SOME (t',_) = rewrite_set_ thy false isolate_bdvs_4x4 t;
|
neuper@37906
|
667 |
term2str t';
|
neuper@37906
|
668 |
"[c_4 = 0,\n (12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI) =\n 0 + -1 * (c_4 + L * c_3),\n c_2 = 0, (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2 = 0]";
|
neuper@37906
|
669 |
|
neuper@37906
|
670 |
"----- 7.27 go through the rewrites in met_eqsys_norm_4x4";
|
neuper@37906
|
671 |
val t = str2term "0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2";
|
neuper@37926
|
672 |
val NONE = rewrite_set_ thy false norm_Rational t;
|
neuper@37926
|
673 |
val SOME (t,_) =
|
neuper@37906
|
674 |
rewrite_set_inst_ thy false subst simplify_System_parenthesized t;
|
neuper@37906
|
675 |
term2str t = "0 = -1 * q_0 * L ^^^ 2 / 2 + (L * c + c_2)";
|
neuper@37906
|
676 |
"--- isolate_bdvs_4x4";
|
neuper@37906
|
677 |
(*
|
neuper@37926
|
678 |
val SOME (t,_) = rewrite_set_inst_ thy false subst isolate_bdvs_4x4 t;
|
neuper@37906
|
679 |
term2str t;
|
neuper@37926
|
680 |
val SOME (t,_) = rewrite_set_inst_ thy false subst simplify_System t;
|
neuper@37906
|
681 |
term2str t;
|
neuper@37926
|
682 |
val SOME (t,_) = rewrite_set_ thy false order_system t;
|
neuper@37906
|
683 |
term2str t;
|
neuper@37906
|
684 |
*)
|
neuper@37906
|
685 |
|
neuper@37906
|
686 |
"------- Bsp 7.28 ---------------vvvvvvvvvvvvv Momentenlinie postponed";
|
neuper@37906
|
687 |
states:=[];
|
neuper@37906
|
688 |
CalcTree [(["Traegerlaenge L","Momentenlinie (-q_0 / L * x^3 / 6)",
|
neuper@37906
|
689 |
"Biegelinie y",
|
neuper@37906
|
690 |
"Randbedingungen [y L = 0, y' L = 0]",
|
neuper@37906
|
691 |
"FunktionsVariable x"],
|
neuper@37991
|
692 |
("Biegelinie", ["vonMomentenlinieZu","Biegelinien"],
|
neuper@37906
|
693 |
["Biegelinien", "AusMomentenlinie"]))];
|
neuper@37906
|
694 |
moveActiveRoot 1;
|
neuper@37906
|
695 |
(*
|
neuper@37906
|
696 |
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
|
neuper@37906
|
697 |
*)
|
neuper@37906
|
698 |
|
neuper@37906
|
699 |
"------- Bsp 7.69";
|
neuper@37906
|
700 |
states:=[];
|
neuper@37906
|
701 |
CalcTree [(["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
|
neuper@37906
|
702 |
"Randbedingungen [y 0 = 0, y L = 0, y' 0 = 0, y' L = 0]",
|
neuper@37906
|
703 |
"FunktionsVariable x"],
|
neuper@37991
|
704 |
("Biegelinie", ["Biegelinien"],
|
neuper@37906
|
705 |
["IntegrierenUndKonstanteBestimmen2"] ))];
|
neuper@37906
|
706 |
moveActiveRoot 1;
|
neuper@37906
|
707 |
(*
|
neuper@37906
|
708 |
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
|
neuper@37906
|
709 |
##7.69## ordered subst 2x2
|
neuper@37906
|
710 |
c_4 c_3
|
neuper@37906
|
711 |
c c_2 c_3 c_4 c c_2 c_3 1:c_3 -> 2:c c_2 2: c c_2
|
neuper@37906
|
712 |
c_3 c_4
|
neuper@37906
|
713 |
c c_2 c_3 c c_2 c_3 c_4 3:c_4 -> 4:c c_2 c_3 1:c_3 -> 4:c c_2*)
|
neuper@37906
|
714 |
val t = str2term"[0 = c_4 + 0 / (-1 * EI), \
|
neuper@37906
|
715 |
\ 0 = c_4 + L * c_3 + (12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI), \
|
neuper@37906
|
716 |
\ 0 = c_3 + 0 / (-1 * EI), \
|
neuper@37906
|
717 |
\ 0 = c_3 + (6 * L * c_2 + 3 * L ^^^ 2 * c + -1 * L ^^^ 3 * q_0) / (-6 * EI)]";
|
neuper@37906
|
718 |
|
neuper@37906
|
719 |
"------- Bsp 7.70";
|
neuper@37906
|
720 |
states:=[];
|
neuper@37906
|
721 |
CalcTree [(["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
|
neuper@37906
|
722 |
"Randbedingungen [Q 0 = q_0 * L, M_b L = 0, y 0 = 0, y' 0 = 0]",
|
neuper@37906
|
723 |
"FunktionsVariable x"],
|
neuper@37991
|
724 |
("Biegelinie", ["Biegelinien"],
|
neuper@37906
|
725 |
["IntegrierenUndKonstanteBestimmen2"] ))];
|
neuper@37906
|
726 |
moveActiveRoot 1;
|
neuper@37906
|
727 |
(*
|
neuper@37906
|
728 |
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
|
neuper@37906
|
729 |
##7.70## |subst
|
neuper@37906
|
730 |
c |
|
neuper@37906
|
731 |
c c_2 |1:c -> 2:c_2
|
neuper@37906
|
732 |
c_3 |
|
neuper@41977
|
733 |
c_4 | STOPPED.WN06? test methods @@@@@@@@@@@@@@@@@@@@@@@*)
|
neuper@37906
|
734 |
|
neuper@42391
|
735 |
|
neuper@37906
|
736 |
"----- 7.70 go through the rewrites in met_eqsys_norm_4x4";
|
neuper@37906
|
737 |
val t = str2term"[L * q_0 = c, \
|
neuper@37906
|
738 |
\ 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2,\
|
neuper@37906
|
739 |
\ 0 = c_4, \
|
neuper@37906
|
740 |
\ 0 = c_3]";
|
neuper@37926
|
741 |
val SOME (t,_) =
|
neuper@37970
|
742 |
rewrite_ thy e_rew_ord e_rls false (num_str @{thm commute_0_equality}) t;
|
neuper@37926
|
743 |
val SOME (t,_) =
|
neuper@37970
|
744 |
rewrite_ thy e_rew_ord e_rls false (num_str @{thm commute_0_equality}) t;
|
neuper@37926
|
745 |
val SOME (t,_) =
|
neuper@37970
|
746 |
rewrite_ thy e_rew_ord e_rls false (num_str @{thm commute_0_equality}) t;
|
neuper@37906
|
747 |
term2str t =
|
neuper@37906
|
748 |
"[L * q_0 = c, (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2 = 0, c_4 = 0,\n c_3 = 0]";
|
neuper@37926
|
749 |
val SOME (t,_) =
|
neuper@37906
|
750 |
rewrite_set_inst_ thy false subst simplify_System_parenthesized t;
|
neuper@37906
|
751 |
term2str t =
|
neuper@37906
|
752 |
"[L * q_0 = c, -1 * q_0 * L ^^^ 2 / 2 + (L * c + c_2) = 0, c_4 = 0, c_3 = 0]";
|
neuper@37926
|
753 |
val SOME (t,_) = rewrite_set_inst_ thy false subst isolate_bdvs_4x4 t;
|
neuper@37906
|
754 |
term2str t =
|
neuper@37906
|
755 |
"[c = (-1 * (L * q_0) + 0) / -1,\n L * c + c_2 = -1 * (-1 * q_0 * L ^^^ 2 / 2) + 0, c_4 = 0, c_3 = 0]";
|
neuper@37926
|
756 |
val SOME (t,_) =
|
neuper@37906
|
757 |
rewrite_set_inst_ thy false subst simplify_System_parenthesized t;
|
neuper@37906
|
758 |
|
neuper@37906
|
759 |
term2str t ="[c = L * q_0, L * c + c_2 = q_0 * L ^^^ 2 / 2, c_4 = 0, c_3 = 0]";
|
neuper@37926
|
760 |
val SOME (t,_) = rewrite_set_ thy false order_system t;
|
neuper@37906
|
761 |
if term2str t ="[c = L * q_0, L * c + c_2 = q_0 * L ^^^ 2 / 2, c_3 = 0, c_4 = 0]" then ()
|
neuper@38031
|
762 |
else error "eqsystem.sml: exp 7.70 normalize 4x4 by rewrite changed";
|
neuper@37906
|
763 |
|
neuper@37906
|
764 |
|
neuper@37906
|
765 |
"----- 7.70 with met normalize: ";
|
neuper@37906
|
766 |
val fmz = ["equalities \
|
neuper@37906
|
767 |
\[L * q_0 = c, \
|
neuper@37906
|
768 |
\ 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2,\
|
neuper@37906
|
769 |
\ 0 = c_4, \
|
neuper@37906
|
770 |
\ 0 = c_3]",
|
neuper@42391
|
771 |
"solveForVars [c, c_2, c_3, c_4]", "solution LL"];
|
neuper@42391
|
772 |
val (dI',pI',mI') =
|
neuper@42391
|
773 |
("Biegelinie",["linear", "system"],["no_met"]);
|
neuper@42391
|
774 |
val p = e_pos'; val c = [];
|
neuper@42391
|
775 |
(*============ inhibit exn WN120314 TODO: investigate type error (same as above)==
|
neuper@42391
|
776 |
in next but one test below the same type error.
|
neuper@42391
|
777 |
/-------------------------------------------------------\
|
neuper@42391
|
778 |
Type unification failed
|
neuper@42391
|
779 |
Type error in application: incompatible operand type
|
neuper@42391
|
780 |
|
neuper@42391
|
781 |
Operator: op # c_3 :: 'a list \<Rightarrow> 'a list
|
neuper@42391
|
782 |
Operand: [c_4] :: 'b list
|
neuper@42391
|
783 |
\-------------------------------------------------------/
|
neuper@42391
|
784 |
|
neuper@42391
|
785 |
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
|
neuper@42391
|
786 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@42391
|
787 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@42391
|
788 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@42391
|
789 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@42391
|
790 |
case nxt of (_,Apply_Method ["EqSystem", "normalize", "4x4"]) => ()
|
neuper@42391
|
791 |
| _ => error "eqsystem.sml [EqSystem,normalize,4x4] specify";
|
neuper@42391
|
792 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@42391
|
793 |
"----- outcommented before Isabelle2002 --> 2011 -------------------------";
|
neuper@42391
|
794 |
(*vvvWN080102 Exception- Match raised
|
neuper@42391
|
795 |
since assod Rewrite .. Rewrite'_Set
|
neuper@42391
|
796 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@42391
|
797 |
|
neuper@42391
|
798 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@42391
|
799 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@42391
|
800 |
|
neuper@42391
|
801 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@42391
|
802 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@42391
|
803 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@42391
|
804 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@42391
|
805 |
if f2str f ="[c = L * q_0, L * c + c_2 = q_0 * L ^^^ 2 / 2, c_3 = 0, c_4 = 0]"
|
neuper@42391
|
806 |
then () else error "eqsystem.sml: exp 7.70 normalize 4x4 by met changed";
|
neuper@42391
|
807 |
--------------------------------------------------------------------------*)
|
neuper@42391
|
808 |
|
neuper@42391
|
809 |
"----- 7.70 with met top_down_: me";
|
neuper@42391
|
810 |
val fmz = ["equalities \
|
neuper@42391
|
811 |
\[c = L * q_0, L * c + c_2 = q_0 * L ^^^ 2 / 2, c_3 = 0, c_4 = 0]",
|
neuper@42391
|
812 |
"solveForVars [c, c_2, c_3, c_4]", "solution LL"];
|
neuper@37906
|
813 |
val (dI',pI',mI') =
|
neuper@37991
|
814 |
("Biegelinie",["linear", "system"],["no_met"]);
|
neuper@37906
|
815 |
val p = e_pos'; val c = [];
|
neuper@37906
|
816 |
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
|
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 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
819 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
820 |
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
821 |
case nxt of (_,Apply_Method ["EqSystem", "top_down_substitution", "4x4"]) => ()
|
neuper@38031
|
822 |
| _ => error "eqsystem.sml [EqSystem,top_down_,4x4] specify";
|
neuper@37906
|
823 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
824 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
825 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
826 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
827 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
828 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
829 |
if nxt = ("End_Proof'", End_Proof') andalso
|
neuper@37906
|
830 |
f2str f = "[c = L * q_0, c_2 = -1 * L ^^^ 2 * q_0 / 2, c_3 = 0, c_4 = 0]"
|
neuper@38031
|
831 |
then () else error "eqsystem.sml: 7.70 with met top_down_: me";
|
neuper@42391
|
832 |
============ inhibit exn WN120314 ==============================================*)
|
neuper@37906
|
833 |
|
neuper@37906
|
834 |
"------- Bsp 7.71";
|
neuper@37906
|
835 |
states:=[];
|
neuper@37906
|
836 |
CalcTree [(["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
|
neuper@37906
|
837 |
"Randbedingungen [M_b L = 0, y 0 = 0, y L = 0, y' 0 = 0]",
|
neuper@37906
|
838 |
"FunktionsVariable x"],
|
neuper@37991
|
839 |
("Biegelinie", ["Biegelinien"],
|
neuper@37906
|
840 |
["IntegrierenUndKonstanteBestimmen2"] ))];
|
neuper@37906
|
841 |
moveActiveRoot 1;
|
neuper@37906
|
842 |
(*
|
neuper@37906
|
843 |
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
|
neuper@37906
|
844 |
##7.71## |ordered |subst.singles (recurs) |2x2 |diagonal
|
neuper@37906
|
845 |
c c_2 |c c_2 |1' |1': c c_2 |
|
neuper@37906
|
846 |
c_4 | c_3 |2:c_3 -> 4' :c c_2 c_4 | |
|
neuper@37906
|
847 |
c c_2 c_3 c_4 | c_4 |3' | |
|
neuper@37906
|
848 |
c_3 |c c_2 c_3 c_4 |3:c_4 -> 4'':c c_2 |4'':c c_2 | *)
|
neuper@37906
|
849 |
val t = str2term"[0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2, \
|
neuper@37906
|
850 |
\ 0 = c_4 + 0 / (-1 * EI), \
|
neuper@37906
|
851 |
\ 0 = c_4 + L * c_3 +(12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) /(-24 * EI),\
|
neuper@37906
|
852 |
\ 0 = c_3 + 0 / (-1 * EI)]";
|
neuper@37906
|
853 |
|
neuper@37906
|
854 |
"------- Bsp 7.72a ---------------vvvvvvvvvvvvv Momentenlinie postponed";
|
neuper@37906
|
855 |
states:=[];
|
neuper@37906
|
856 |
CalcTree [(["Traegerlaenge L",
|
neuper@37906
|
857 |
"Momentenlinie ((q_0 * L)/ 6 * x - q_0 /(6 * L) * x^3)",
|
neuper@37906
|
858 |
"Biegelinie y",
|
neuper@37906
|
859 |
"Randbedingungen [y 0 = 0, y L = 0]",
|
neuper@37906
|
860 |
"FunktionsVariable x"],
|
neuper@37991
|
861 |
("Biegelinie", ["vonMomentenlinieZu","Biegelinien"],
|
neuper@37906
|
862 |
["Biegelinien", "AusMomentenlinie"]))];
|
neuper@37906
|
863 |
moveActiveRoot 1;
|
neuper@37906
|
864 |
(*
|
neuper@37906
|
865 |
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
|
neuper@37906
|
866 |
*)
|
neuper@37906
|
867 |
|
neuper@37906
|
868 |
"------- Bsp 7.72b";
|
neuper@37906
|
869 |
states:=[];
|
neuper@37906
|
870 |
CalcTree [(["Traegerlaenge L","Streckenlast (q_0 / L * x)","Biegelinie y",
|
neuper@37906
|
871 |
"Randbedingungen [M_b 0 = 0, M_b L = 0, y 0 = 0, y L = 0]",
|
neuper@37906
|
872 |
"FunktionsVariable x"],
|
neuper@37991
|
873 |
("Biegelinie", ["Biegelinien"],
|
neuper@37906
|
874 |
["IntegrierenUndKonstanteBestimmen2"] ))];
|
neuper@37906
|
875 |
moveActiveRoot 1;
|
neuper@37906
|
876 |
(*
|
neuper@37906
|
877 |
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
|
neuper@37906
|
878 |
##7.72b## |ord. |subst.singles |ord.triang.
|
neuper@37906
|
879 |
c_2 | | |c_2
|
neuper@37906
|
880 |
c c_2 | |1:c_2 -> 2':c |c_2 c
|
neuper@37906
|
881 |
c_4 | | |
|
neuper@37906
|
882 |
c c_2 c_3 c_4 | |3:c_4 -> 4':c c_2 c_3 |c_2 c c_3*)
|
neuper@37906
|
883 |
val t = str2term"[0 = c_2, \
|
neuper@37906
|
884 |
\ 0 = (6 * c_2 + 6 * L * c + -1 * L ^^^ 2 * q_0) / 6, \
|
neuper@37906
|
885 |
\ 0 = c_4 + 0 / (-1 * EI), \
|
neuper@37906
|
886 |
\ 0 = c_4 + L * c_3 + (60 * L ^^^ 2 * c_2 + 20 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-120 * EI)]";
|
neuper@37906
|
887 |
|
neuper@37906
|
888 |
"------- Bsp 7.73 ---------------vvvvvvvvvvvvv Momentenlinie postponed";
|
neuper@37906
|
889 |
states:=[];
|
neuper@37906
|
890 |
CalcTree [(["Traegerlaenge L","Momentenlinie ???",(*description unclear*)
|
neuper@37906
|
891 |
"Biegelinie y",
|
neuper@37906
|
892 |
"Randbedingungen [y L = 0, y' L = 0]",
|
neuper@37906
|
893 |
"FunktionsVariable x"],
|
neuper@37991
|
894 |
("Biegelinie", ["vonMomentenlinieZu","Biegelinien"],
|
neuper@37906
|
895 |
["Biegelinien", "AusMomentenlinie"]))];
|
neuper@37906
|
896 |
moveActiveRoot 1;
|
neuper@37906
|
897 |
(*
|
neuper@37906
|
898 |
trace_script := true; autoCalculate 1 CompleteCalc; trace_script := false;
|
neuper@37906
|
899 |
*)
|
neuper@37906
|
900 |
|
neuper@37906
|
901 |
"----------- 4x4 systems from Biegelinie -------------------------";
|
neuper@37906
|
902 |
"----------- 4x4 systems from Biegelinie -------------------------";
|
neuper@37906
|
903 |
"----------- 4x4 systems from Biegelinie -------------------------";
|
neuper@41977
|
904 |
(*STOPPED.WN08?? replace this test with 7.70 *)
|
neuper@37906
|
905 |
"----- Bsp 7.27";
|
neuper@37906
|
906 |
val fmz = ["equalities \
|
neuper@37906
|
907 |
\[0 = c_4, \
|
neuper@37906
|
908 |
\ 0 = c_4 + L * c_3 +(12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI), \
|
neuper@37906
|
909 |
\ 0 = c_2, \
|
neuper@37906
|
910 |
\ 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2]",
|
neuper@42391
|
911 |
"solveForVars [c, c_2, c_3, c_4]", "solution LL"];
|
neuper@37906
|
912 |
val (dI',pI',mI') =
|
neuper@37991
|
913 |
("Biegelinie",["normalize", "4x4", "linear", "system"],
|
neuper@37906
|
914 |
["EqSystem","normalize","4x4"]);
|
neuper@37906
|
915 |
val p = e_pos'; val c = [];
|
neuper@37906
|
916 |
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
|
neuper@37906
|
917 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
918 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
919 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
920 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; val (p,_,f,nxt,_,pt) = me nxt p c pt;
|
neuper@37906
|
921 |
"------------------------------------------- Apply_Method...";
|
neuper@37906
|
922 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
923 |
"[0 = c_4, \
|
neuper@37906
|
924 |
\ 0 = c_4 + L * c_3 +\n (12 * L ^^^ 2 * c_2 + 4 * L ^^^ 3 * c + -1 * L ^^^ 4 * q_0) / (-24 * EI), \
|
neuper@37906
|
925 |
\ 0 = c_2, \
|
neuper@37906
|
926 |
\ 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2]";
|
neuper@37906
|
927 |
(*vvvWN080102 Exception- Match raised
|
neuper@37906
|
928 |
since assod Rewrite .. Rewrite'_Set
|
neuper@37906
|
929 |
"------------------------------------------- simplify_System_parenthesized...";
|
neuper@37906
|
930 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
931 |
"[0 = c_4, \
|
neuper@37906
|
932 |
\ 0 = -1 * q_0 * L ^^^ 4 / (-24 * EI) + \
|
neuper@37906
|
933 |
\ (4 * L ^^^ 3 * c / (-24 * EI) + \
|
neuper@37906
|
934 |
\ (12 * L ^^^ 2 * c_2 / (-24 * EI) + \
|
neuper@37906
|
935 |
\ (L * c_3 + c_4))), \
|
neuper@37906
|
936 |
\ 0 = c_2, \
|
neuper@37906
|
937 |
\ 0 = -1 * q_0 * L ^^^ 2 / 2 + (L * c + c_2)]";
|
neuper@37906
|
938 |
(*? "(4 * L ^^^ 3 / (-24 * EI) * c" statt "(4 * L ^^^ 3 * c / (-24 * EI)" ?*)
|
neuper@37906
|
939 |
"------------------------------------------- isolate_bdvs...";
|
neuper@37906
|
940 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
941 |
"[c_4 = 0,\
|
neuper@37906
|
942 |
\ c_4 = 0 + -1 * (-1 * q_0 * L ^^^ 4 / (-24 * EI)) + -1 * (4 * L ^^^ 3 * c / (-24 * EI)) + -1 * (12 * L ^^^ 2 * c_2 / (-24 * EI)) + -1 * (L * c_3),\
|
neuper@37906
|
943 |
\ c_2 = 0, \
|
neuper@37906
|
944 |
\ c_2 = 0 + -1 * (-1 * q_0 * L ^^^ 2 / 2) + -1 * (L * c)]";
|
neuper@37906
|
945 |
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
|
neuper@37906
|
946 |
|
neuper@37906
|
947 |
---------------------------------------------------------------------*)
|