102 \<close> ML \<open> |
102 \<close> ML \<open> |
103 \<close> ML \<open> |
103 \<close> ML \<open> |
104 \<close> ML \<open> |
104 \<close> ML \<open> |
105 \<close> |
105 \<close> |
106 |
106 |
107 section \<open>====== comment simplification of numerals =========================================\<close> |
107 section \<open>===================================================================================\<close> |
108 ML \<open> |
|
109 \<close> ML \<open> (* \<longrightarrow> test/../base-definitions.sml NEW FILE *) |
|
110 "----------- note on new realpow ------- -------------------------------------------------------"; |
|
111 "----------- note on new realpow ------- -------------------------------------------------------"; |
|
112 "----------- note on new realpow ------- -------------------------------------------------------"; |
|
113 |
|
114 (* this and other numeral calculations have been accomplished by Simplifier.rewrite so far *) |
|
115 |
|
116 val t = calcul @{theory} @{term "4 * - 1 * 4 ::real"}; |
|
117 if UnparseC.term_in_ctxt @{context} t = "- 16" |
|
118 then () else error "calcul 4 * - 1 * 4 \<longrightarrow> - 16"; |
|
119 \<close> ML \<open> |
|
120 |
|
121 (* guess: simp_ctxt is not sufficient for simplifying the conditions in the definition *) |
|
122 (* |
|
123 if-then-else \<and> < \<ge> even_real odd_real are possible reasons for insufficiency. |
|
124 *) |
|
125 val t = calcul @{theory} @{term "4 \<up> 2 ::real"}; |
|
126 if UnparseC.term_in_ctxt @{context} t = "16" |
|
127 then () else error "calcul 4 \<up> 2 \<longrightarrow> 16"; |
|
128 \<close> ML \<open> |
|
129 val t = calcul @{theory} @{term "(- 1) \<up> 2"}; |
|
130 if UnparseC.term_in_ctxt @{context} t = "1" |
|
131 then () else error "calcul (- 1) \<up> 2 \<longrightarrow> 1"; |
|
132 |
|
133 (* note on example "4 * - 1 * 4 \<up> 2 \<le> 8 * (- 1) \<up> 2" *) |
|
134 (* |
|
135 fun calcul should simplify both sides of the inequality. |
|
136 Afterwards the inequality - 64 \<le> 8 should evaluate to True. |
|
137 |
|
138 But we get the error: |
|
139 rew_once: |
|
140 Eval.get_pair for "BaseDefinitions.realpow" \<longrightarrow> SOME (_, "4 \<up> 2 = 4 \<up> 2") |
|
141 but rewrite__ on "4 * - 1 * 4 \<up> 2 \<le> 8 * (- 1) \<up> 2" \<longrightarrow> NONE |
|
142 |
|
143 The error occurs while rewriting and expecting \<longrightarrow> SOME (_, "4 \<up> 2 = 16"); |
|
144 the rewriter takes the rhs 4 \<up> 2, the same as the lhs, |
|
145 and assumes to be able to simplify, but we have lhs = rhs \<longrightarrow> NONE, |
|
146 which is recognised by the rewriter as an error. |
|
147 |
|
148 Eval.get_pair ensures, that only pairs of numerals are passed to fun calcul, |
|
149 such that single-stepping is realised, although Simplifier.rewrite could do all at once. |
|
150 |
|
151 \<le> is a binary operator, too, but has another signature as algebraic operations. |
|
152 So \<le> is handled separately and not by fun calcul. |
|
153 *) |
|
154 \<close> ML \<open> |
|
155 \<close> |
|
156 |
|
157 section \<open>====== check Knowledge/polyeq-1.sml ===============================================\<close> |
|
158 ML \<open> |
108 ML \<open> |
159 \<close> ML \<open> |
109 \<close> ML \<open> |
160 (* Title: Knowledge/polyeq-1.sml |
|
161 testexamples for PolyEq, poynomial equations and equational systems |
|
162 Author: Richard Lang 2003 |
|
163 (c) due to copyright terms |
|
164 |
|
165 Separation into polyeq-1.sml and polyeq-1a.sml due to |
|
166 *) |
|
167 |
|
168 "-----------------------------------------------------------------"; |
|
169 "table of contents -----------------------------------------------"; |
|
170 "-----------------------------------------------------------------"; |
|
171 "------ polyeq-1.sml ---------------------------------------------"; |
|
172 "----------- tests on predicates in problems ---------------------"; |
|
173 "----------- test matching problems ------------------------------"; |
|
174 "----------- prep. for introduction of Matthias Goldgruber 2003 trials on rewrite orders -----"; |
|
175 "----------- open local of fun ord_make_polynomial_in ------------------------------------------"; |
|
176 "----------- Matthias Goldgruber 2003 trials on rewrite orders -------------------------------"; |
|
177 "----------- lin.eq degree_0 -------------------------------------"; |
|
178 "----------- test thm's d2_pq_formulsxx[_neg]---------------------"; |
|
179 "----------- equality (2 +(- 1)*x + x \<up> 2 = (0::real)) ----------------------------------------"; |
|
180 "----------- equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0) ---------------------------------------------"; |
|
181 "----------- equality (- 2 + x + x \<up> 2 = 0) ---------------------------------------------------"; |
|
182 "----------- equality (2 + x + x \<up> 2 = 0) ----------------------------------------------------"; |
|
183 "----------- equality (- 2 + x + 1*x \<up> 2 = 0)) ------------------------------------------------"; |
|
184 "----------- equality (1*x + x \<up> 2 = 0) ----------------------------------------------------"; |
|
185 "----------- equality (1*x + 1*x \<up> 2 = 0) ----------------------------------------------------"; |
|
186 "----------- equality (x + x \<up> 2 = 0) ------------------------------------------------------"; |
|
187 "----------- equality (x + 1*x \<up> 2 = 0) ------------------------------------------------------"; |
|
188 "----------- equality (-4 + x \<up> 2 = 0) -------------------------------------------------------"; |
|
189 "----------- equality (4 + 1*x \<up> 2 = 0) -------------------------------------------------------"; |
|
190 "----------- equality (1 +(- 1)*x + 2*x \<up> 2 = 0) ----------------------------------------------"; |
|
191 "----------- equality (- 1 + x + 2*x \<up> 2 = 0) -------------------------------------------------"; |
|
192 "----------- equality (1 + x + 2*x \<up> 2 = 0) --------------------------------------------------"; |
|
193 "----------- (-8 - 2*x + x \<up> 2 = 0), (*Schalk 2, S.67 Nr.31.b----"; |
|
194 "----------- (-8 - 2*x + x \<up> 2 = 0), by rewriting ---------------"; |
|
195 "----------- (- 16 + 4*x + 2*x \<up> 2 = 0), --------------------------"; |
|
196 "-----------------------------------------------------------------"; |
|
197 "------ polyeq-2.sml ---------------------------------------------"; |
|
198 "----------- (a*b - (a+b)*x + x \<up> 2 = 0), (*Schalk 2,S.68Nr.44.a*)"; |
|
199 "----------- (-64 + x \<up> 2 = 0), (*Schalk 2, S.66 Nr.1.a~--------*)"; |
|
200 "----------- (- 147 + 3*x \<up> 2 = 0), (*Schalk 2, S.66 Nr.1.b------*)"; |
|
201 "----------- (3*x - 1 - (5*x - (2 - 4*x)) = - 11),(*Schalk Is86Bsp5"; |
|
202 "----------- ((x+1)*(x+2) - (3*x - 2) \<up> 2=.. Schalk II s.68 Bsp 37"; |
|
203 "----------- rls make_polynomial_in ------------------------------"; |
|
204 "----------- interSteps ([1],Res); on Schalk Is86Bsp5-------------"; |
|
205 "----------- rls d2_polyeq_bdv_only_simplify ---------------------"; |
|
206 "-----------------------------------------------------------------"; |
|
207 "-----------------------------------------------------------------"; |
|
208 |
|
209 \<close> ML \<open> |
|
210 Rewrite.trace_on := false (*false true*); |
|
211 "----------- tests on predicates in problems ---------------------"; |
|
212 "----------- tests on predicates in problems ---------------------"; |
|
213 "----------- tests on predicates in problems ---------------------"; |
|
214 val thy = @{theory}; |
|
215 Rewrite.trace_on:=false; (*true false*) |
|
216 |
|
217 val t1 = (Thm.term_of o the o (TermC.parse thy)) "lhs (-8 - 2*x + x \<up> 2 = 0)"; |
|
218 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t1; |
|
219 if ((UnparseC.term t) = "- 8 - 2 * x + x \<up> 2") then () |
|
220 else error "polyeq.sml: diff.behav. in lhs"; |
|
221 |
|
222 \<close> ML \<open> |
|
223 val t2 = (Thm.term_of o the o (TermC.parse thy)) "(-8 - 2*x + x \<up> 2) is_expanded_in x"; |
|
224 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t2; |
|
225 if (UnparseC.term t) = "True" then () |
|
226 else error "polyeq.sml: diff.behav. 1 in is_expended_in"; |
|
227 |
|
228 val t0 = (Thm.term_of o the o (TermC.parse thy)) "(sqrt(x)) is_poly_in x"; |
|
229 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t0; |
|
230 if (UnparseC.term t) = "False" then () |
|
231 else error "polyeq.sml: diff.behav. 2 in is_poly_in"; |
|
232 |
|
233 val t3 = (Thm.term_of o the o (TermC.parse thy)) "(-8 + (- 1)*2*x + x \<up> 2) is_poly_in x"; |
|
234 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t3; |
|
235 if (UnparseC.term t) = "True" then () |
|
236 else error "polyeq.sml: diff.behav. 3 in is_poly_in"; |
|
237 |
|
238 val t4 = (Thm.term_of o the o (TermC.parse thy)) "(lhs (-8 + (- 1)*2*x + x \<up> 2 = 0)) is_expanded_in x"; |
|
239 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t4; |
|
240 if (UnparseC.term t) = "True" then () |
|
241 else error "polyeq.sml: diff.behav. 4 in is_expended_in"; |
|
242 |
|
243 val t6 = (Thm.term_of o the o (TermC.parse thy)) "(lhs (-8 - 2*x + x \<up> 2 = 0)) is_expanded_in x"; |
|
244 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t6; |
|
245 if (UnparseC.term t) = "True" then () |
|
246 else error "polyeq.sml: diff.behav. 5 in is_expended_in"; |
|
247 |
|
248 val t3 = (Thm.term_of o the o (TermC.parse thy))"((-8 - 2*x + x \<up> 2) has_degree_in x) = 2"; |
|
249 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t3; |
|
250 if (UnparseC.term t) = "True" then () |
|
251 else error "polyeq.sml: diff.behav. in has_degree_in_in"; |
|
252 |
|
253 val t3 = (Thm.term_of o the o (TermC.parse thy)) "((sqrt(x)) has_degree_in x) = 2"; |
|
254 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t3; |
|
255 if (UnparseC.term t) = "False" then () |
|
256 else error "polyeq.sml: diff.behav. 6 in has_degree_in_in"; |
|
257 |
|
258 val t4 = (Thm.term_of o the o (TermC.parse thy)) |
|
259 "((-8 - 2*x + x \<up> 2) has_degree_in x) = 1"; |
|
260 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t4; |
|
261 if (UnparseC.term t) = "False" then () |
|
262 else error "polyeq.sml: diff.behav. 7 in has_degree_in_in"; |
|
263 |
|
264 val t5 = (Thm.term_of o the o (TermC.parse thy)) |
|
265 "((-8 - 2*x + x \<up> 2) has_degree_in x) = 2"; |
|
266 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t5; |
|
267 if (UnparseC.term t) = "True" then () |
|
268 else error "polyeq.sml: diff.behav. 8 in has_degree_in_in"; |
|
269 |
|
270 \<close> ML \<open> |
|
271 "----------- test matching problems --------------------------0---"; |
|
272 "----------- test matching problems --------------------------0---"; |
|
273 "----------- test matching problems --------------------------0---"; |
|
274 val fmz = ["equality (-8 - 2*x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
275 if M_Match.match_pbl fmz (Problem.from_store ["expanded", "univariate", "equation"]) = |
|
276 M_Match.Matches' {Find = [Correct "solutions L"], |
|
277 With = [], |
|
278 Given = [Correct "equality (- 8 - 2 * x + x \<up> 2 = 0)", Correct "solveFor x"], |
|
279 Where = [Correct "matches (?a = 0) (- 8 - 2 * x + x \<up> 2 = 0)", |
|
280 Correct "lhs (- 8 - 2 * x + x \<up> 2 = 0) is_expanded_in x"], |
|
281 Relate = []} |
|
282 then () else error "M_Match.match_pbl [expanded,univariate,equation]"; |
|
283 |
|
284 if M_Match.match_pbl fmz (Problem.from_store ["degree_2", "expanded", "univariate", "equation"]) = |
|
285 M_Match.Matches' {Find = [Correct "solutions L"], |
|
286 With = [], |
|
287 Given = [Correct "equality (- 8 - 2 * x + x \<up> 2 = 0)", Correct "solveFor x"], |
|
288 Where = [Correct "lhs (- 8 - 2 * x + x \<up> 2 = 0) has_degree_in x = 2"], |
|
289 Relate = []} (*before WN110906 was: has_degree_in x =!= 2"]*) |
|
290 then () else error "M_Match.match_pbl [degree_2,expanded,univariate,equation]"; |
|
291 |
|
292 |
|
293 \<close> ML \<open> |
|
294 "----------- prep. for introduction of Matthias Goldgruber 2003 trials on rewrite orders -----"; |
|
295 "----------- prep. for introduction of Matthias Goldgruber 2003 trials on rewrite orders -----"; |
|
296 "----------- prep. for introduction of Matthias Goldgruber 2003 trials on rewrite orders -----"; |
|
297 (*################################################################################## |
|
298 ----------- 28.2.03: war nicht upgedatet und ausgeklammert in ROOT.ML-->Test_Isac.thy |
|
299 |
|
300 (*Aufgabe zum Einstieg in die Arbeit...*) |
|
301 val t = (Thm.term_of o the o (TermC.parse thy)) "a*b - (a+b)*x + x \<up> 2 = 0"; |
|
302 (*ein 'ruleset' aus Poly.ML wird angewandt...*) |
|
303 val SOME (t,_) = rewrite_set_ thy Poly_erls false make_polynomial t; |
|
304 UnparseC.term t; |
|
305 "a * b + (- 1 * (a * x) + (- 1 * (b * x) + x \<up> 2)) = 0"; |
|
306 val SOME (t,_) = |
|
307 rewrite_set_inst_ thy Poly_erls false [("bdv", "a")] make_polynomial_in t; |
|
308 UnparseC.term t; |
|
309 "x \<up> 2 + (- 1 * (b * x) + (- 1 * (x * a) + b * a)) = 0"; |
|
310 (* bei Verwendung von "size_of-term" nach MG :*) |
|
311 (*"x \<up> 2 + (- 1 * (b * x) + (b * a + - 1 * (x * a))) = 0" !!! *) |
|
312 |
|
313 (*wir holen 'a' wieder aus der Klammerung heraus...*) |
|
314 val SOME (t,_) = rewrite_set_ thy Poly_erls false discard_parentheses t; |
|
315 UnparseC.term t; |
|
316 "x \<up> 2 + - 1 * b * x + - 1 * x * a + b * a = 0"; |
|
317 (* "x \<up> 2 + - 1 * b * x + b * a + - 1 * x * a = 0" !!! *) |
|
318 |
|
319 val SOME (t,_) = |
|
320 rewrite_set_inst_ thy Poly_erls false [("bdv", "a")] make_polynomial_in t; |
|
321 UnparseC.term t; |
|
322 "x \<up> 2 + (- 1 * (b * x) + a * (b + - 1 * x)) = 0"; |
|
323 (*da sind wir fast am Ziel: make_polynomial_in 'a' sollte ergeben |
|
324 "x \<up> 2 + (- 1 * (b * x)) + (b + - 1 * x) * a = 0"*) |
|
325 |
|
326 (*das rewriting l"asst sich beobachten mit |
|
327 Rewrite.trace_on := false; (*true false*) |
|
328 *) |
|
329 |
|
330 "------ 15.11.02 --------------------------"; |
|
331 val t = (Thm.term_of o the o (TermC.parse thy)) "1 + a * x + b * x"; |
|
332 val bdv = (Thm.term_of o the o (TermC.parse thy)) "bdv"; |
|
333 val a = (Thm.term_of o the o (TermC.parse thy)) "a"; |
|
334 |
|
335 Rewrite.trace_on := false; (*true false*) |
|
336 (* Anwenden einer Regelmenge aus Termorder.ML: *) |
|
337 val SOME (t,_) = |
|
338 rewrite_set_inst_ thy false [(bdv,a)] make_polynomial_in t; |
|
339 UnparseC.term t; |
|
340 val SOME (t,_) = |
|
341 rewrite_set_ thy false discard_parentheses t; |
|
342 UnparseC.term t; |
|
343 "1 + b * x + x * a"; |
|
344 |
|
345 val t = (Thm.term_of o the o (TermC.parse thy)) "1 + a * (x + b * x) + a \<up> 2"; |
|
346 val SOME (t,_) = |
|
347 rewrite_set_inst_ thy false [(bdv,a)] make_polynomial_in t; |
|
348 UnparseC.term t; |
|
349 val SOME (t,_) = |
|
350 rewrite_set_ thy false discard_parentheses t; |
|
351 UnparseC.term t; |
|
352 "1 + (x + b * x) * a + a \<up> 2"; |
|
353 |
|
354 val t = (Thm.term_of o the o (TermC.parse thy)) "1 + a \<up> 2 * x + b * a + 7*a \<up> 2"; |
|
355 val SOME (t,_) = |
|
356 rewrite_set_inst_ thy false [(bdv,a)] make_polynomial_in t; |
|
357 UnparseC.term t; |
|
358 val SOME (t,_) = |
|
359 rewrite_set_ thy false discard_parentheses t; |
|
360 UnparseC.term t; |
|
361 "1 + b * a + (7 + x) * a \<up> 2"; |
|
362 |
|
363 (* MG2003 |
|
364 Prog_Expr.thy grundlegende Algebra |
|
365 Poly.thy Polynome |
|
366 Rational.thy Br"uche |
|
367 Root.thy Wurzeln |
|
368 RootRat.thy Wurzen + Br"uche |
|
369 Termorder.thy BITTE NUR HIERHER SCHREIBEN (...WN03) |
|
370 |
|
371 get_thm Termorder.thy "bdv_n_collect"; |
|
372 get_thm (theory "Isac_Knowledge") "bdv_n_collect"; |
|
373 *) |
|
374 val t = (Thm.term_of o the o (TermC.parse thy)) "a \<up> 2 * x + 7 * a \<up> 2"; |
|
375 val SOME (t,_) = |
|
376 rewrite_set_inst_ thy false [(bdv,a)] make_polynomial_in t; |
|
377 UnparseC.term t; |
|
378 val SOME (t,_) = |
|
379 rewrite_set_ thy false discard_parentheses t; |
|
380 UnparseC.term t; |
|
381 "(7 + x) * a \<up> 2"; |
|
382 |
|
383 val t = (Thm.term_of o the o (TermC.parse Termorder.thy)) "Pi"; |
|
384 |
|
385 val t = (Thm.term_of o the o (parseold thy)) "7"; |
|
386 ##################################################################################*) |
|
387 |
|
388 |
|
389 \<close> ML \<open> |
|
390 "----------- open local of fun ord_make_polynomial_in ------------------------------------------"; |
|
391 "----------- open local of fun ord_make_polynomial_in ------------------------------------------"; |
|
392 "----------- open local of fun ord_make_polynomial_in ------------------------------------------"; |
|
393 (* termorder hacked by MG, adapted later by WN *) |
|
394 (** )local ( *. for make_polynomial_in .*) |
|
395 |
|
396 open Term; (* for type order = EQUAL | LESS | GREATER *) |
|
397 |
|
398 fun pr_ord EQUAL = "EQUAL" |
|
399 | pr_ord LESS = "LESS" |
|
400 | pr_ord GREATER = "GREATER"; |
|
401 |
|
402 fun dest_hd' _ (Const (a, T)) = (((a, 0), T), 0) |
|
403 | dest_hd' x (t as Free (a, T)) = |
|
404 if x = t then ((("|||||||||||||", 0), T), 0) (*WN*) |
|
405 else (((a, 0), T), 1) |
|
406 | dest_hd' _ (Var v) = (v, 2) |
|
407 | dest_hd' _ (Bound i) = ((("", i), dummyT), 3) |
|
408 | dest_hd' _ (Abs (_, T, _)) = ((("", 0), T), 4) |
|
409 | dest_hd' _ _ = raise ERROR "dest_hd': uncovered case in fun.def."; |
|
410 |
|
411 fun size_of_term' i pr x (t as Const (\<^const_name>\<open>realpow\<close>, _) $ |
|
412 Free (var, _) $ Free (pot, _)) = |
|
413 (if pr then tracing (idt "#" i ^ "size_of_term' realpow: " ^ UnparseC.term t) else (); |
|
414 case x of (*WN*) |
|
415 (Free (xstr, _)) => |
|
416 if xstr = var |
|
417 then (if pr then tracing (idt "#" i ^ "xstr = var --> " ^ string_of_int (1000 * (the (TermC.int_opt_of_string pot)))) else (); |
|
418 1000 * (the (TermC.int_opt_of_string pot))) |
|
419 else (if pr then tracing (idt "#" i ^ "x <> Free --> " ^ "3") else (); 3) |
|
420 | _ => raise ERROR ("size_of_term' called with subst = " ^ UnparseC.term x)) |
|
421 | size_of_term' i pr x (t as Abs (_, _, body)) = |
|
422 (if pr then tracing (idt "#" i ^ "size_of_term' Abs: " ^ UnparseC.term t) else (); |
|
423 1 + size_of_term' (i + 1) pr x body) |
|
424 | size_of_term' i pr x (f $ t) = |
|
425 let |
|
426 val _ = if pr then tracing (idt "#" i ^ "size_of_term' $$$: " ^ UnparseC.term f ^ " $$$ " ^ UnparseC.term t) else (); |
|
427 val s1 = size_of_term' (i + 1) pr x f |
|
428 val s2 = size_of_term' (i + 1) pr x t |
|
429 val _ = if pr then tracing (idt "#" i ^ "size_of_term' $$$-->: " ^ string_of_int s1 ^ " + " ^ string_of_int s2 ^ " = " ^ string_of_int(s1 + s2)) else (); |
|
430 in (s1 + s2) end |
|
431 | size_of_term' i pr x t = |
|
432 (if pr then tracing (idt "#" i ^ "size_of_term' bot: " ^ UnparseC.term t) else (); |
|
433 case t of |
|
434 Free (subst, _) => |
|
435 (case x of |
|
436 Free (xstr, _) => |
|
437 if xstr = subst |
|
438 then (if pr then tracing (idt "#" i ^ "xstr = var --> " ^ "1000") else (); 1000) |
|
439 else (if pr then tracing (idt "#" i ^ "x <> Free --> " ^ "1") else (); 1) |
|
440 | _ => raise ERROR ("size_of_term' called with subst = " ^ UnparseC.term x)) |
|
441 | _ => (if pr then tracing (idt "#" i ^ "bot --> " ^ "1") else (); 1)); |
|
442 |
|
443 fun term_ord' i pr x thy (Abs (_, T, t), Abs(_, U, u)) = (* ~ term.ML *) |
|
444 let |
|
445 val _ = if pr then tracing (idt "#" i ^ "term_ord' Abs") else (); |
|
446 val ord = |
|
447 case term_ord' (i + 1) pr x thy (t, u) of EQUAL => Term_Ord.typ_ord (T, U) | ord => ord |
|
448 val _ = if pr then tracing (idt "#" i ^ "term_ord' Abs --> " ^ pr_ord ord) else () |
|
449 in ord end |
|
450 | term_ord' i pr x _ (t, u) = |
|
451 let |
|
452 val _ = if pr then tracing (idt "#" i ^ "term_ord' bot (" ^ UnparseC.term t ^ ", " ^ UnparseC.term u ^ ")") else (); |
|
453 val ord = |
|
454 case int_ord (size_of_term' (i + 1) pr x t, size_of_term' (i + 1) pr x u) of |
|
455 EQUAL => |
|
456 let val (f, ts) = strip_comb t and (g, us) = strip_comb u |
|
457 in |
|
458 (case hd_ord (i + 1) pr x (f, g) of |
|
459 EQUAL => (terms_ord x (i + 1) pr) (ts, us) |
|
460 | ord => ord) |
|
461 end |
|
462 | ord => ord |
|
463 val _ = if pr then tracing (idt "#" i ^ "term_ord' bot --> " ^ pr_ord ord) else () |
|
464 in ord end |
|
465 and hd_ord i pr x (f, g) = (* ~ term.ML *) |
|
466 let |
|
467 val _ = if pr then tracing (idt "#" i ^ "hd_ord (" ^ UnparseC.term f ^ ", " ^ UnparseC.term g ^ ")") else (); |
|
468 val ord = prod_ord |
|
469 (prod_ord Term_Ord.indexname_ord Term_Ord.typ_ord) int_ord |
|
470 (dest_hd' x f, dest_hd' x g) |
|
471 val _ = if pr then tracing (idt "#" i ^ "hd_ord --> " ^ pr_ord ord) else (); |
|
472 in ord end |
|
473 and terms_ord x i pr (ts, us) = |
|
474 let |
|
475 val _ = if pr then tracing (idt "#" i ^ "terms_ord (" ^ UnparseC.terms ts ^ ", " ^ UnparseC.terms us ^ ")") else (); |
|
476 val ord = list_ord (term_ord' (i + 1) pr x (ThyC.get_theory "Isac_Knowledge"))(ts, us); |
|
477 val _ = if pr then tracing (idt "#" i ^ "terms_ord --> " ^ pr_ord ord) else (); |
|
478 in ord end |
|
479 |
|
480 (** )in( *local*) |
|
481 |
|
482 fun ord_make_polynomial_in (pr:bool) thy subst (ts, us) = |
|
483 ((** )tracing ("*** subs variable is: " ^ Env.subst2str subst); ( **) |
|
484 case subst of |
|
485 (_, x) :: _ => |
|
486 term_ord' 1 pr x thy (TermC.numerals_to_Free ts, TermC.numerals_to_Free us) = LESS |
|
487 | _ => raise ERROR ("ord_make_polynomial_in called with subst = " ^ Env.subst2str subst)) |
|
488 |
|
489 (** )end;( *local*) |
|
490 |
|
491 val subs = [(TermC.str2term "bdv::real", TermC.str2term "x::real")]; |
|
492 if ord_make_polynomial_in false(*true*) @{theory} subs (t1, t2) then () else error "still GREATER?"; |
|
493 |
|
494 val x = TermC.str2term "x ::real"; |
|
495 |
|
496 val t1 = TermC.numerals_to_Free (TermC.str2term "L * q_0 * x \<up> 2 / 4 ::real"); |
|
497 if 2006 = size_of_term' 1 false(*true*) x t1 |
|
498 then () else error "size_of_term' (L * q_0 * x \<up> 2) CHANGED)"; |
|
499 |
|
500 val t2 = TermC.numerals_to_Free (TermC.str2term "- 1 * (q_0 * x \<up> 3) :: real"); |
|
501 if 3004 = size_of_term' 1 false(*true*) x t2 |
|
502 then () else error "size_of_term' (- 1 * (q_0 * x \<up> 3)) CHANGED"; |
|
503 |
|
504 |
|
505 \<close> ML \<open> |
|
506 "----------- Matthias Goldgruber 2003 trials on rewrite orders -------------------------------"; |
|
507 "----------- Matthias Goldgruber 2003 trials on rewrite orders -------------------------------"; |
|
508 "----------- Matthias Goldgruber 2003 trials on rewrite orders -------------------------------"; |
|
509 val substa = [(TermC.empty, (Thm.term_of o the o (TermC.parse thy)) "a")]; |
|
510 val substb = [(TermC.empty, (Thm.term_of o the o (TermC.parse thy)) "b")]; |
|
511 val substx = [(TermC.empty, (Thm.term_of o the o (TermC.parse thy)) "x")]; |
|
512 |
|
513 val x1 = (Thm.term_of o the o (TermC.parse thy)) "a + b + x"; |
|
514 val x2 = (Thm.term_of o the o (TermC.parse thy)) "a + x + b"; |
|
515 val x3 = (Thm.term_of o the o (TermC.parse thy)) "a + x + b"; |
|
516 val x4 = (Thm.term_of o the o (TermC.parse thy)) "x + a + b"; |
|
517 |
|
518 if ord_make_polynomial_in false(*true*) thy substx (x1,x2) = true(*LESS *) then () |
|
519 else error "termorder.sml diff.behav ord_make_polynomial_in #1"; |
|
520 |
|
521 if ord_make_polynomial_in false(*true*) thy substa (x1,x2) = true(*LESS *) then () |
|
522 else error "termorder.sml diff.behav ord_make_polynomial_in #2"; |
|
523 |
|
524 if ord_make_polynomial_in false(*true*) thy substb (x1,x2) = false(*GREATER*) then () |
|
525 else error "termorder.sml diff.behav ord_make_polynomial_in #3"; |
|
526 |
|
527 val aa = (Thm.term_of o the o (TermC.parse thy)) "- 1 * a * x"; |
|
528 val bb = (Thm.term_of o the o (TermC.parse thy)) "x \<up> 3"; |
|
529 ord_make_polynomial_in false(*true*) thy substx (aa, bb); |
|
530 true; (* => LESS *) |
|
531 |
|
532 val aa = (Thm.term_of o the o (TermC.parse thy)) "- 1 * a * x"; |
|
533 val bb = (Thm.term_of o the o (TermC.parse thy)) "x \<up> 3"; |
|
534 ord_make_polynomial_in false(*true*) thy substa (aa, bb); |
|
535 false; (* => GREATER *) |
|
536 |
|
537 (* und nach dem Re-engineering der Termorders in den 'rulesets' |
|
538 kannst Du die 'gr"osste' Variable frei w"ahlen: *) |
|
539 val bdv= TermC.str2term "bdv ::real"; |
|
540 val x = TermC.str2term "x ::real"; |
|
541 val a = TermC.str2term "a ::real"; |
|
542 val b = TermC.str2term "b ::real"; |
|
543 val SOME (t',_) = rewrite_set_inst_ thy false [(bdv,a)] make_polynomial_in x2; |
|
544 if UnparseC.term t' = "b + x + a" then () |
|
545 else error "termorder.sml diff.behav ord_make_polynomial_in #11"; |
|
546 |
|
547 val NONE = rewrite_set_inst_ thy false [(bdv,b)] make_polynomial_in x2; |
|
548 |
|
549 val SOME (t',_) = rewrite_set_inst_ thy false [(bdv,x)] make_polynomial_in x2; |
|
550 if UnparseC.term t' = "a + b + x" then () |
|
551 else error "termorder.sml diff.behav ord_make_polynomial_in #13"; |
|
552 |
|
553 val ppp' = "-6 + -5*x + x \<up> 3 + - 1*x \<up> 2 + - 1*x \<up> 3 + - 14*x \<up> 2"; |
|
554 val ppp = (Thm.term_of o the o (TermC.parse thy)) ppp'; |
|
555 val SOME (t', _) = rewrite_set_inst_ thy false [(bdv,x)] make_polynomial_in ppp; |
|
556 if UnparseC.term t' = "- 6 + - 5 * x + - 15 * x \<up> 2" then () |
|
557 else error "termorder.sml diff.behav ord_make_polynomial_in #15"; |
|
558 |
|
559 val ttt' = "(3*x + 5)/18 ::real"; |
|
560 val ttt = (Thm.term_of o the o (TermC.parse thy)) ttt'; |
|
561 val SOME (uuu,_) = rewrite_set_inst_ thy false [(bdv,x)] make_polynomial_in ttt; |
|
562 if UnparseC.term uuu = "(5 + 3 * x) / 18" then () |
|
563 else error "termorder.sml diff.behav ord_make_polynomial_in #16a"; |
|
564 |
|
565 val SOME (uuu,_) = rewrite_set_ thy false make_polynomial ttt; |
|
566 if UnparseC.term uuu = "(5 + 3 * x) / 18" then () |
|
567 else error "termorder.sml diff.behav ord_make_polynomial_in #16b"; |
|
568 |
|
569 \<close> ML \<open> |
|
570 "----------- lin.eq degree_0 -------------------------------------"; |
|
571 "----------- lin.eq degree_0 -------------------------------------"; |
|
572 "----------- lin.eq degree_0 -------------------------------------"; |
|
573 "----- d0_false ------"; |
|
574 val fmz = ["equality (1 = (0::real))", "solveFor x", "solutions L"]; |
|
575 val (dI',pI',mI') = ("PolyEq",["degree_0", "polynomial", "univariate", "equation"], |
|
576 ["PolyEq", "solve_d0_polyeq_equation"]); |
|
577 (*=== inhibit exn WN110914: declare_constraints doesnt work with ThmC.numerals_to_Free ======== |
|
578 TODO: change to "equality (x + - 1*x = (0::real))" |
|
579 and search for an appropriate problem and method. |
|
580 |
|
581 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
582 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
583 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
584 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
585 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
586 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
587 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
588 case f of Form' (Test_Out.FormKF (~1,EdUndef,0,Nundef,"[]")) => () |
|
589 | _ => error "polyeq.sml: diff.behav. in 1 = 0 -> []"; |
|
590 |
|
591 "----- d0_true ------"; |
|
592 val fmz = ["equality (0 = (0::real))", "solveFor x", "solutions L"]; |
|
593 val (dI',pI',mI') = ("PolyEq",["degree_0", "polynomial", "univariate", "equation"], |
|
594 ["PolyEq", "solve_d0_polyeq_equation"]); |
|
595 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
596 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
597 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
598 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
599 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
600 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
601 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
602 case f of Form' (Test_Out.FormKF (~1,EdUndef,0,Nundef,"UniversalList")) => () |
|
603 | _ => error "polyeq.sml: diff.behav. in 0 = 0 -> UniversalList"; |
|
604 ============ inhibit exn WN110914 ============================================*) |
|
605 |
|
606 \<close> text \<open> (*=====calcul: rhs = (- 1) \<up> 2 *) |
|
607 "----------- test thm's d2_pq_formulsxx[_neg]---------------------"; |
|
608 "----------- test thm's d2_pq_formulsxx[_neg]---------------------"; |
|
609 "----------- test thm's d2_pq_formulsxx[_neg]---------------------"; |
|
610 "----- d2_pqformula1 ------!!!!"; |
|
611 val fmz = ["equality (- 1/8 + (- 1/4)*z + z \<up> 2 = (0::real))", "solveFor z", "solutions L"]; |
|
612 val (dI',pI',mI') = |
|
613 ("Isac_Knowledge", ["pqFormula", "degree_2", "polynomial", "univariate", "equation"], ["no_met"]); |
|
614 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
615 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
616 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
617 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
618 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
619 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
620 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
621 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*Apply_Method ["PolyEq", "solve_d2_polyeq_pq_equation"]*) |
|
622 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
623 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
624 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
625 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
626 |
|
627 (*[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + - 1 * sqrt (9 / 16) / 2] TODO sqrt*) |
|
628 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt =..,Check_elementwise "Assumptions")*) |
|
629 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
630 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
631 |
|
632 if p = ([], Res) andalso |
|
633 f2str f = "[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + - 1 * sqrt (9 / 16) / 2]" then |
|
634 case nxt of End_Proof' => () | _ => error "(- 1/8 + (- 1/4)*z + z \<up> 2 = (0::real)) CHANGED 1" |
|
635 else error "(- 1/8 + (- 1/4)*z + z \<up> 2 = (0::real)) CHANGED 2"; |
|
636 |
|
637 \<close> text \<open> (*=====calcul: rhs = (- 1) \<up> 2 *) |
|
638 "----------- equality (2 +(- 1)*x + x \<up> 2 = (0::real)) ----------------------------------------"; |
|
639 "----------- equality (2 +(- 1)*x + x \<up> 2 = (0::real)) ----------------------------------------"; |
|
640 "----------- equality (2 +(- 1)*x + x \<up> 2 = (0::real)) ----------------------------------------"; |
|
641 "----- d2_pqformula1_neg ------"; |
|
642 val fmz = ["equality (2 +(- 1)*x + x \<up> 2 = (0::real))", "solveFor x", "solutions L"]; |
|
643 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
644 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
645 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
646 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
647 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
648 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
649 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
650 (*### or2list False |
|
651 ([1],Res) False Or_to_List)*) |
|
652 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
653 (*### or2list False |
|
654 ([2],Res) [] Check_elementwise "Assumptions"*) |
|
655 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
656 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
657 val asm = Ctree.get_assumptions pt p; |
|
658 if f2str f = "[]" andalso |
|
659 UnparseC.terms asm = "[\"lhs (2 + - 1 * x + x \<up> 2 = 0) is_poly_in x\", " ^ |
|
660 "\"lhs (2 + - 1 * x + x \<up> 2 = 0) has_degree_in x = 2\"]" then () |
|
661 else error "polyeq.sml: diff.behav. in 2 +(- 1)*x + x \<up> 2 = 0"; |
|
662 |
|
663 \<close> text \<open> (*=====calcul: rhs = (- 1) \<up> 2 *) |
|
664 "----------- equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0) ---------------------------------------------"; |
|
665 "----------- equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0) ---------------------------------------------"; |
|
666 "----------- equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0) ---------------------------------------------"; |
|
667 "----- d2_pqformula2 ------"; |
|
668 val fmz = ["equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
669 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
670 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
671 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
672 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
673 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
674 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
675 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
676 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
677 |
|
678 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
679 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
680 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
681 case f of Test_Out.FormKF "[x = 2, x = - 1]" => () |
|
682 | _ => error "polyeq.sml: diff.behav. in - 2 + (- 1)*x + x^2 = 0 -> [x = 2, x = - 1]"; |
|
683 |
|
684 |
|
685 \<close> ML \<open> |
|
686 "----------- equality (- 2 + x + x \<up> 2 = 0) ---------------------------------------------------"; |
|
687 "----------- equality (- 2 + x + x \<up> 2 = 0) ---------------------------------------------------"; |
|
688 "----------- equality (- 2 + x + x \<up> 2 = 0) ---------------------------------------------------"; |
|
689 "----- d2_pqformula3 ------"; |
|
690 (*EP-9*) |
|
691 val fmz = ["equality (- 2 + x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
692 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
693 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
694 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
695 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
696 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
697 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
698 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
699 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
700 |
|
701 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
702 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
703 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
704 case f of Test_Out.FormKF "[x = 1, x = - 2]" => () |
|
705 | _ => error "polyeq.sml: diff.behav. in - 2 + x + x^2 = 0-> [x = 1, x = - 2]"; |
|
706 |
|
707 |
|
708 \<close> ML \<open> |
|
709 "----------- equality (2 + x + x \<up> 2 = 0) ----------------------------------------------------"; |
|
710 "----------- equality (2 + x + x \<up> 2 = 0) ----------------------------------------------------"; |
|
711 "----------- equality (2 + x + x \<up> 2 = 0) ----------------------------------------------------"; |
|
712 "----- d2_pqformula3_neg ------"; |
|
713 val fmz = ["equality (2 + x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
714 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
715 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
716 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
717 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
718 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
719 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
720 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
721 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
722 |
|
723 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
724 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
725 "TODO 2 + x + x \<up> 2 = 0"; |
|
726 "TODO 2 + x + x \<up> 2 = 0"; |
|
727 "TODO 2 + x + x \<up> 2 = 0"; |
|
728 |
|
729 \<close> ML \<open> |
|
730 "----------- equality (- 2 + x + 1*x \<up> 2 = 0)) ------------------------------------------------"; |
|
731 "----------- equality (- 2 + x + 1*x \<up> 2 = 0)) ------------------------------------------------"; |
|
732 "----------- equality (- 2 + x + 1*x \<up> 2 = 0)) ------------------------------------------------"; |
|
733 "----- d2_pqformula4 ------"; |
|
734 val fmz = ["equality (- 2 + x + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
735 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
736 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
737 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
738 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
739 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
740 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
741 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
742 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
743 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
744 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
745 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
746 case f of Test_Out.FormKF "[x = 1, x = - 2]" => () |
|
747 | _ => error "polyeq.sml: diff.behav. in - 2 + x + 1*x \<up> 2 = 0 -> [x = 1, x = - 2]"; |
|
748 |
|
749 \<close> ML \<open> |
|
750 "----------- equality (1*x + x \<up> 2 = 0) ----------------------------------------------------"; |
|
751 "----------- equality (1*x + x \<up> 2 = 0) ----------------------------------------------------"; |
|
752 "----------- equality (1*x + x \<up> 2 = 0) ----------------------------------------------------"; |
|
753 "----- d2_pqformula5 ------"; |
|
754 val fmz = ["equality (1*x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
755 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
756 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
757 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
758 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
759 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
760 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
761 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
762 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
763 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
764 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
765 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
766 case f of Test_Out.FormKF "[x = 0, x = - 1]" => () |
|
767 | _ => error "polyeq.sml: diff.behav. in 1*x + x^2 = 0 -> [x = 0, x = - 1]"; |
|
768 |
|
769 \<close> ML \<open> |
|
770 "----------- equality (1*x + 1*x \<up> 2 = 0) ----------------------------------------------------"; |
|
771 "----------- equality (1*x + 1*x \<up> 2 = 0) ----------------------------------------------------"; |
|
772 "----------- equality (1*x + 1*x \<up> 2 = 0) ----------------------------------------------------"; |
|
773 "----- d2_pqformula6 ------"; |
|
774 val fmz = ["equality (1*x + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
775 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
776 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
777 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
778 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
779 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
780 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
781 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
782 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
783 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
784 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
785 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
786 case f of Test_Out.FormKF "[x = 0, x = - 1]" => () |
|
787 | _ => error "polyeq.sml: diff.behav. in 1*x + 1*x^2 = 0 -> [x = 0, x = - 1]"; |
|
788 |
|
789 \<close> ML \<open> (*=====calcul: rhs = (1::?'a) - (0::?'a) *) |
|
790 "----------- equality (x + x \<up> 2 = 0) ------------------------------------------------------"; |
|
791 "----------- equality (x + x \<up> 2 = 0) ------------------------------------------------------"; |
|
792 "----------- equality (x + x \<up> 2 = 0) ------------------------------------------------------"; |
|
793 "----- d2_pqformula7 ------"; |
|
794 (*EP- 10*) |
|
795 val fmz = ["equality ( x + x \<up> 2 = (0::real))", "solveFor x", "solutions L"]; |
|
796 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
797 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
798 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
799 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
800 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
801 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
802 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
803 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
804 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
805 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
806 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
807 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
808 case f of Test_Out.FormKF "[x = 0, x = - 1]" => () |
|
809 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1]"; |
|
810 |
|
811 |
|
812 \<close> ML \<open> (*=====calcul: rhs = (1::?'b) - (0::?'b) *) |
|
813 "----------- equality (x + 1*x \<up> 2 = 0) ------------------------------------------------------"; |
|
814 "----------- equality (x + 1*x \<up> 2 = 0) ------------------------------------------------------"; |
|
815 "----------- equality (x + 1*x \<up> 2 = 0) ------------------------------------------------------"; |
|
816 "----- d2_pqformula8 ------"; |
|
817 val fmz = ["equality (x + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
818 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
819 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
820 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
821 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
822 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
823 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
824 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
825 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
826 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
827 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
828 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
829 case f of Test_Out.FormKF "[x = 0, x = - 1]" => () |
|
830 | _ => error "polyeq.sml: diff.behav. in x + 1*x^2 = 0 -> [x = 0, x = - 1]"; |
|
831 |
|
832 \<close> ML \<open> |
|
833 "----------- equality (-4 + x \<up> 2 = 0) -------------------------------------------------------"; |
|
834 "----------- equality (-4 + x \<up> 2 = 0) -------------------------------------------------------"; |
|
835 "----------- equality (-4 + x \<up> 2 = 0) -------------------------------------------------------"; |
|
836 "----- d2_pqformula9 ------"; |
|
837 val fmz = ["equality (-4 + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
838 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
839 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
840 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
841 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
842 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
843 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
844 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
845 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
846 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
847 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
848 case f of Test_Out.FormKF "[x = 2, x = - 2]" => () |
|
849 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = - 2]"; |
|
850 |
|
851 |
|
852 \<close> ML \<open> |
|
853 "----------- equality (4 + 1*x \<up> 2 = 0) -------------------------------------------------------"; |
|
854 "----------- equality (4 + 1*x \<up> 2 = 0) -------------------------------------------------------"; |
|
855 "----------- equality (4 + 1*x \<up> 2 = 0) -------------------------------------------------------"; |
|
856 "----- d2_pqformula9_neg ------"; |
|
857 val fmz = ["equality (4 + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
858 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
859 ["PolyEq", "solve_d2_polyeq_pq_equation"]); |
|
860 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
861 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
862 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
863 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
864 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
865 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
866 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
867 "TODO 4 + 1*x \<up> 2 = 0"; |
|
868 "TODO 4 + 1*x \<up> 2 = 0"; |
|
869 "TODO 4 + 1*x \<up> 2 = 0"; |
|
870 |
|
871 \<close> text \<open> (*=====calcul: rhs = (- 1) \<up> 2 *) |
|
872 "-------------------- test thm's d2_abc_formulsxx[_neg]-----"; |
|
873 "-------------------- test thm's d2_abc_formulsxx[_neg]-----"; |
|
874 "-------------------- test thm's d2_abc_formulsxx[_neg]-----"; |
|
875 val fmz = ["equality (- 1 +(- 1)*x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
876 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
877 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
878 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
879 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
880 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
881 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
882 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
883 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
884 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
885 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
886 case f of Test_Out.FormKF "[x = 1, x = - 1 / 2]" => () |
|
887 | _ => error "polyeq.sml: diff.behav. in - 1 + (- 1)*x + 2*x^2 = 0 -> [x = 1, x = - 1/2]"; |
|
888 |
|
889 \<close> text \<open> (*=====calcul: rhs = (- 1) \<up> 2 *) |
|
890 "----------- equality (1 +(- 1)*x + 2*x \<up> 2 = 0) ----------------------------------------------"; |
|
891 "----------- equality (1 +(- 1)*x + 2*x \<up> 2 = 0) ----------------------------------------------"; |
|
892 "----------- equality (1 +(- 1)*x + 2*x \<up> 2 = 0) ----------------------------------------------"; |
|
893 val fmz = ["equality (1 +(- 1)*x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
894 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
895 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
896 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
897 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
898 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
899 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
900 |
|
901 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
902 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
903 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
904 "TODO 1 +(- 1)*x + 2*x \<up> 2 = 0"; |
|
905 "TODO 1 +(- 1)*x + 2*x \<up> 2 = 0"; |
|
906 "TODO 1 +(- 1)*x + 2*x \<up> 2 = 0"; |
|
907 |
|
908 |
|
909 \<close> ML \<open> |
|
910 "----------- equality (- 1 + x + 2*x \<up> 2 = 0) -------------------------------------------------"; |
|
911 "----------- equality (- 1 + x + 2*x \<up> 2 = 0) -------------------------------------------------"; |
|
912 "----------- equality (- 1 + x + 2*x \<up> 2 = 0) -------------------------------------------------"; |
|
913 (*EP- 11*) |
|
914 val fmz = ["equality (- 1 + x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
915 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
916 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
917 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
918 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
919 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
920 |
|
921 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
922 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
923 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
924 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
925 |
|
926 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
927 case f of Test_Out.FormKF "[x = 1 / 2, x = - 1]" => () |
|
928 | _ => error "polyeq.sml: diff.behav. in - 1 + x + 2*x^2 = 0 -> [x = 1/2, x = - 1]"; |
|
929 |
|
930 |
|
931 \<close> text \<open> (*=====calcul: rhs = (1::?'c) - (0::?'c) *) |
|
932 "----------- equality (1 + x + 2*x \<up> 2 = 0) --------------------------------------------------"; |
|
933 "----------- equality (1 + x + 2*x \<up> 2 = 0) --------------------------------------------------"; |
|
934 "----------- equality (1 + x + 2*x \<up> 2 = 0) --------------------------------------------------"; |
|
935 val fmz = ["equality (1 + x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
936 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
937 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
938 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
939 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
940 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
941 |
|
942 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
943 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
944 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
945 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
946 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
947 "TODO 1 + x + 2*x \<up> 2 = 0"; |
|
948 "TODO 1 + x + 2*x \<up> 2 = 0"; |
|
949 "TODO 1 + x + 2*x \<up> 2 = 0"; |
|
950 |
|
951 |
|
952 val fmz = ["equality (- 2 + 1*x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
953 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
954 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
955 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
956 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
957 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
958 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
959 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
960 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
961 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
962 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
963 case f of Test_Out.FormKF "[x = 1, x = - 2]" => () |
|
964 | _ => error "polyeq.sml: diff.behav. in - 2 + 1*x + x^2 = 0 -> [x = 1, x = - 2]"; |
|
965 |
|
966 val fmz = ["equality ( 2 + 1*x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
967 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
968 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
969 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
970 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
971 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
972 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
973 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
974 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
975 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
976 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
977 "TODO 2 + 1*x + x \<up> 2 = 0"; |
|
978 "TODO 2 + 1*x + x \<up> 2 = 0"; |
|
979 "TODO 2 + 1*x + x \<up> 2 = 0"; |
|
980 |
|
981 (*EP- 12*) |
|
982 val fmz = ["equality (- 2 + x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
983 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
984 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
985 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
986 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
987 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
988 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
989 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
990 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
991 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
992 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
993 case f of Test_Out.FormKF "[x = 1, x = - 2]" => () |
|
994 | _ => error "polyeq.sml: diff.behav. in - 2 + x + x^2 = 0 -> [x = 1, x = - 2]"; |
|
995 |
|
996 val fmz = ["equality ( 2 + x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
997 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
998 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
999 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1000 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1001 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1002 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1003 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1004 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1005 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1006 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1007 "TODO 2 + x + x \<up> 2 = 0"; |
|
1008 "TODO 2 + x + x \<up> 2 = 0"; |
|
1009 "TODO 2 + x + x \<up> 2 = 0"; |
|
1010 |
|
1011 (*EP- 13*) |
|
1012 val fmz = ["equality (-8 + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
1013 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
1014 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
1015 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1016 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1017 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1018 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1019 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1020 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1021 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1022 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1023 case f of Test_Out.FormKF "[x = 2, x = - 2]" => () |
|
1024 | _ => error "polyeq.sml: diff.behav. in -8 + 2*x^2 = 0 -> [x = 2, x = - 2]"; |
|
1025 |
|
1026 val fmz = ["equality ( 8+ 2*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
1027 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
1028 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
1029 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1030 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1031 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1032 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1033 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1034 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1035 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1036 "TODO 8+ 2*x \<up> 2 = 0"; |
|
1037 "TODO 8+ 2*x \<up> 2 = 0"; |
|
1038 "TODO 8+ 2*x \<up> 2 = 0"; |
|
1039 |
|
1040 (*EP- 14*) |
|
1041 val fmz = ["equality (-4 + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
1042 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
1043 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1044 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1045 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1046 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1047 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1048 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1049 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1050 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1051 case f of Test_Out.FormKF "[x = 2, x = - 2]" => () |
|
1052 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = - 2]"; |
|
1053 |
|
1054 |
|
1055 val fmz = ["equality ( 4+ x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
1056 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
1057 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1058 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1059 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1060 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1061 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1062 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1063 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1064 "TODO 4+ x \<up> 2 = 0"; |
|
1065 "TODO 4+ x \<up> 2 = 0"; |
|
1066 "TODO 4+ x \<up> 2 = 0"; |
|
1067 |
|
1068 (*EP- 15*) |
|
1069 val fmz = ["equality (2*x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
1070 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
1071 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
1072 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1073 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1074 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1075 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1076 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1077 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1078 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1079 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1080 case f of Test_Out.FormKF "[x = 0, x = - 1]" => () |
|
1081 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1]"; |
|
1082 |
|
1083 val fmz = ["equality (1*x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
1084 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
1085 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
1086 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1087 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1088 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1089 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1090 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1091 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1092 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1093 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1094 case f of Test_Out.FormKF "[x = 0, x = - 1]" => () |
|
1095 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1]"; |
|
1096 |
|
1097 (*EP- 16*) |
|
1098 val fmz = ["equality (x + 2 * x \<up> 2 = (0::real))", "solveFor (x::real)", "solutions L"]; |
|
1099 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
1100 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
1101 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1102 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1103 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1104 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1105 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1106 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1107 |
|
1108 (*+*)val Test_Out.FormKF "x + 2 * x \<up> 2 = 0" = f; |
|
1109 (*+*)val Rewrite_Set_Inst (["(''bdv'', x)"], "d2_polyeq_abcFormula_simplify") = nxt |
|
1110 |
|
1111 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*"x + 2 * x \<up> 2 = 0", d2_polyeq_abcFormula_simplify*) |
|
1112 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1113 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1114 case f of Test_Out.FormKF "[x = 0, x = - 1 / 2]" => () |
|
1115 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1 / 2]"; |
|
1116 |
|
1117 (*EP-//*) |
|
1118 val fmz = ["equality (x + x \<up> 2 = 0)", "solveFor x", "solutions L"]; |
|
1119 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], |
|
1120 ["PolyEq", "solve_d2_polyeq_abc_equation"]); |
|
1121 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1122 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1123 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1124 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1125 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1126 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1127 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1128 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1129 case f of Test_Out.FormKF "[x = 0, x = - 1]" => () |
|
1130 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1]"; |
|
1131 |
|
1132 |
|
1133 \<close> ML \<open> |
|
1134 "----------- (-8 - 2*x + x \<up> 2 = 0), (*Schalk 2, S.67 Nr.31.b----"; |
|
1135 "----------- (-8 - 2*x + x \<up> 2 = 0), (*Schalk 2, S.67 Nr.31.b----"; |
|
1136 "----------- (-8 - 2*x + x \<up> 2 = 0), (*Schalk 2, S.67 Nr.31.b----"; |
|
1137 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat |
|
1138 see --- val rls = calculate_RootRat > calculate_Rational --- |
|
1139 calculate_RootRat was a TODO with 2002, requires re-design. |
|
1140 see also --- (-8 - 2*x + x \<up> 2 = 0), by rewriting --- below |
|
1141 *) |
|
1142 val fmz = ["equality (-8 - 2*x + x \<up> 2 = 0)", (*Schalk 2, S.67 Nr.31.b*) |
|
1143 "solveFor x", "solutions L"]; |
|
1144 val (dI',pI',mI') = |
|
1145 ("PolyEq",["degree_2", "expanded", "univariate", "equation"], |
|
1146 ["PolyEq", "complete_square"]); |
|
1147 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1148 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1149 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1150 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1151 |
|
1152 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1153 (*Apply_Method ("PolyEq", "complete_square")*) |
|
1154 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1155 (*"-8 - 2 * x + x \<up> 2 = 0", nxt = Rewrite_Set_Inst ... "complete_square*) |
|
1156 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1157 (*"-8 + (2 / 2 - x) \<up> 2 = (2 / 2) \<up> 2", nxt = Rewrite("square_explicit1"*) |
|
1158 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1159 (*"(2 / 2 - x) \<up> 2 = (2 / 2) \<up> 2 - -8" nxt = Rewrite("root_plus_minus*) |
|
1160 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1161 (*"2 / 2 - x = sqrt ((2 / 2) \<up> 2 - -8) | |
|
1162 2 / 2 - x = - sqrt ((2 / 2) \<up> 2 - -8)" nxt = Rewr_Inst("bdv_explicit2"*) |
|
1163 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1164 (*"2 / 2 - x = sqrt ((2 / 2) \<up> 2 - -8) | |
|
1165 - 1*x = - (2 / 2) + - sqrt ((2 / 2) \<up> 2 - -8)"nxt = R_Inst("bdv_explt2"*) |
|
1166 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1167 (*"- 1 * x = - (2 / 2) + sqrt ((2 / 2) \<up> 2 - -8) | |
|
1168 - 1 * x = (- (2 / 2) + - sqrt ((2 / 2) \<up> 2 - -8))"nxt = bdv_explicit3*) |
|
1169 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1170 (*"- 1 * x = - (2 / 2) + sqrt ((2 / 2) \<up> 2 - -8) | |
|
1171 x = - 1 * (- (2 / 2) + - sqrt ((2 / 2) \<up> 2 - -8))" nxt = bdv_explicit3*) |
|
1172 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1173 (*"x = - 1 * (- (2 / 2) + sqrt ((2 / 2) \<up> 2 - -8)) | |
|
1174 x = - 1 * (- (2 / 2) + - sqrt ((2 / 2) \<up> 2 - -8))"nxt = calculate_Rational |
|
1175 NOT IMPLEMENTED SINCE 2002 ------------------------------ \<up> \<up> \<up> \<up> \<up> \<up> *) |
|
1176 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1177 (*"x = - 2 | x = 4" nxt = Or_to_List*) |
|
1178 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1179 (*"[x = - 2, x = 4]" nxt = Check_Postcond*) |
|
1180 val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f; |
|
1181 (* FIXXXME |
|
1182 case f of Form' (Test_Out.FormKF (~1,EdUndef,0,Nundef,"[x = - 2, x = 4]")) => () TODO |
|
1183 | _ => error "polyeq.sml: diff.behav. in [x = - 2, x = 4]"; |
|
1184 *) |
|
1185 if f2str f = |
|
1186 "[x = - 1 * - 1 + - 1 * sqrt (2 \<up> 2 / 2 \<up> 2 - - 8),\n x = - 1 * - 1 + - 1 * (- 1 * sqrt (2 \<up> 2 / 2 \<up> 2 - - 8))]" |
|
1187 (*"[x = - 1 * - 1 + - 1 * sqrt (1 \<up> 2 - -8),\n x = - 1 * - 1 + - 1 * (- 1 * sqrt (1 \<up> 2 - -8))]"*) |
|
1188 then () else error "polyeq.sml corrected?behav. in [x = - 2, x = 4]"; |
|
1189 |
|
1190 |
|
1191 "----------- (-8 - 2*x + x \<up> 2 = 0), by rewriting ---------------"; |
|
1192 "----------- (-8 - 2*x + x \<up> 2 = 0), by rewriting ---------------"; |
|
1193 "----------- (-8 - 2*x + x \<up> 2 = 0), by rewriting ---------------"; |
|
1194 (*stopped due to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat |
|
1195 see --- val rls = calculate_RootRat > calculate_Rational ---*) |
|
1196 val thy = @{theory PolyEq}; |
|
1197 val ctxt = Proof_Context.init_global thy; |
|
1198 val inst = [((the o (parseNEW ctxt)) "bdv::real", (the o (parseNEW ctxt)) "x::real")]; |
|
1199 val t = (the o (parseNEW ctxt)) "-8 - 2*x + x \<up> 2 = (0::real)"; |
|
1200 |
|
1201 val rls = complete_square; |
|
1202 val SOME (t,asm) = rewrite_set_inst_ thy true inst rls t; |
|
1203 if UnparseC.term t = "- 8 + (2 / 2 - x) \<up> 2 = (2 / 2) \<up> 2" |
|
1204 then () else error "rls complete_square CHANGED"; |
|
1205 |
|
1206 val thm = @{thm square_explicit1}; |
|
1207 val SOME (t,asm) = rewrite_ thy dummy_ord Rule_Set.Empty true thm t; |
|
1208 if UnparseC.term t = "(2 / 2 - x) \<up> 2 = (2 / 2) \<up> 2 - - 8" |
|
1209 then () else error "thm square_explicit1 CHANGED"; |
|
1210 |
|
1211 val thm = @{thm root_plus_minus}; |
|
1212 val SOME (t,asm) = rewrite_ thy dummy_ord PolyEq_erls true thm t; |
|
1213 if UnparseC.term t = |
|
1214 "2 / 2 - x = sqrt ((2 / 2) \<up> 2 - - 8) \<or>\n2 / 2 - x = - 1 * sqrt ((2 / 2) \<up> 2 - - 8)" |
|
1215 then () else error "thm root_plus_minus CHANGED"; |
|
1216 |
|
1217 (*the thm bdv_explicit2* here required to be constrained to ::real*) |
|
1218 val thm = @{thm bdv_explicit2}; |
|
1219 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Rule_Set.Empty true inst thm t; |
|
1220 if UnparseC.term t = |
|
1221 "2 / 2 - x = sqrt ((2 / 2) \<up> 2 - - 8) \<or>\n- 1 * x = - (2 / 2) + - 1 * sqrt ((2 / 2) \<up> 2 - - 8)" |
|
1222 then () else error "thm bdv_explicit2 CHANGED"; |
|
1223 |
|
1224 val thm = @{thm bdv_explicit3}; |
|
1225 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Rule_Set.Empty true inst thm t; |
|
1226 if UnparseC.term t = |
|
1227 "2 / 2 - x = sqrt ((2 / 2) \<up> 2 - - 8) \<or>\nx = - 1 * (- (2 / 2) + - 1 * sqrt ((2 / 2) \<up> 2 - - 8))" |
|
1228 then () else error "thm bdv_explicit3 CHANGED"; |
|
1229 |
|
1230 val thm = @{thm bdv_explicit2}; |
|
1231 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Rule_Set.Empty true inst thm t; |
|
1232 if UnparseC.term t = |
|
1233 "- 1 * x = - (2 / 2) + sqrt ((2 / 2) \<up> 2 - - 8) \<or>\nx = - 1 * (- (2 / 2) + - 1 * sqrt ((2 / 2) \<up> 2 - - 8))" |
|
1234 then () else error "thm bdv_explicit2 CHANGED"; |
|
1235 |
|
1236 val rls = calculate_RootRat; |
|
1237 val SOME (t,asm) = rewrite_set_ thy true rls t; |
|
1238 if UnparseC.term t = |
|
1239 "- 1 * x = - 1 + sqrt (2 \<up> 2 / 2 \<up> 2 - - 8) \<or>\nx = - 1 * - 1 + - 1 * (- 1 * sqrt (2 \<up> 2 / 2 \<up> 2 - - 8))" |
|
1240 (*"- 1 * x = - 1 + sqrt (2 \<up> 2 / 2 \<up> 2 - -8) |\nx = - 1 * - 1 + - 1 * (- 1 * sqrt (2 \<up> 2 / 2 \<up> 2 - -8))"..isabisac15*) |
|
1241 then () else error "(-8 - 2*x + x \<up> 2 = 0), by rewriting -- ERROR INDICATES IMPROVEMENT"; |
|
1242 (*SHOULD BE: UnparseC.term = "x = - 2 | x = 4;*) |
|
1243 |
|
1244 |
|
1245 "-------------------- (3 - 10*x + 3*x \<up> 2 = 0), ----------------------"; |
|
1246 "-------------------- (3 - 10*x + 3*x \<up> 2 = 0), ----------------------"; |
|
1247 "-------------------- (3 - 10*x + 3*x \<up> 2 = 0), ----------------------"; |
|
1248 "---- test the erls ----"; |
|
1249 val t1 = (Thm.term_of o the o (TermC.parse thy)) "0 <= (10/3/2) \<up> 2 - 1"; |
|
1250 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_erls t1; |
|
1251 val t' = UnparseC.term t; |
|
1252 (*if t'= \<^const_name>\<open>True\<close> then () |
|
1253 else error "polyeq.sml: diff.behav. in 'rewrite_set_.. PolyEq_erls";*) |
|
1254 (* *) |
|
1255 val fmz = ["equality (3 - 10*x + 3*x \<up> 2 = 0)", |
|
1256 "solveFor x", "solutions L"]; |
|
1257 val (dI',pI',mI') = |
|
1258 ("PolyEq",["degree_2", "expanded", "univariate", "equation"], |
|
1259 ["PolyEq", "complete_square"]); |
|
1260 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1261 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1262 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1263 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1264 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1265 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1266 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1267 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1268 (*Apply_Method ("PolyEq", "complete_square")*) |
|
1269 val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f; |
|
1270 |
|
1271 "----------- (- 16 + 4*x + 2*x \<up> 2 = 0), --------------------------"; |
|
1272 "----------- (- 16 + 4*x + 2*x \<up> 2 = 0), --------------------------"; |
|
1273 "----------- (- 16 + 4*x + 2*x \<up> 2 = 0), --------------------------"; |
|
1274 val fmz = ["equality (- 16 + 4*x + 2*x \<up> 2 = 0)", |
|
1275 "solveFor x", "solutions L"]; |
|
1276 val (dI',pI',mI') = |
|
1277 ("PolyEq",["degree_2", "expanded", "univariate", "equation"], |
|
1278 ["PolyEq", "complete_square"]); |
|
1279 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; |
|
1280 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1281 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1282 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1283 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1284 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1285 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1286 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1287 (*Apply_Method ("PolyEq", "complete_square")*) |
|
1288 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1289 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1290 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1291 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1292 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1293 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1294 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1295 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1296 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1297 val (p,_,f,nxt,_,pt) = me nxt p [] pt; |
|
1298 (* FIXXXXME n1., |
|
1299 case f of Form' (Test_Out.FormKF (~1,EdUndef,0,Nundef,"[x = 2, x = -4]")) => () TODO |
|
1300 | _ => error "polyeq.sml: diff.behav. in [x = 2, x = -4]"; |
|
1301 *) |
|
1302 |
|
1303 \<close> ML \<open> |
110 \<close> ML \<open> |
1304 \<close> ML \<open> |
111 \<close> ML \<open> |
1305 \<close> |
112 \<close> |
1306 |
|
1307 |
113 |
1308 section \<open>===================================================================================\<close> |
114 section \<open>===================================================================================\<close> |
1309 ML \<open> |
115 ML \<open> |
1310 \<close> ML \<open> |
116 \<close> ML \<open> |
1311 \<close> ML \<open> |
117 \<close> ML \<open> |