1 (* Title: Knowledge/polyeq-1.sml
2 testexamples for PolyEq, poynomial equations and equational systems
3 Author: Richard Lang 2003
4 (c) due to copyright terms
6 Separation into polyeq-1.sml and polyeq-1a.sml due to
9 "-----------------------------------------------------------------";
10 "table of contents -----------------------------------------------";
11 "-----------------------------------------------------------------";
12 "------ polyeq-1.sml ---------------------------------------------";
13 "----------- tests on predicates in problems ---------------------";
14 "----------- test matching problems ------------------------------";
15 "----------- prep. for introduction of Matthias Goldgruber 2003 trials on rewrite orders -----";
16 "----------- open local of fun ord_make_polynomial_in ------------------------------------------";
17 "----------- Matthias Goldgruber 2003 trials on rewrite orders -------------------------------";
18 "----------- lin.eq degree_0 -------------------------------------";
19 "----------- test thm's d2_pq_formulsxx[_neg]---------------------";
20 "----------- equality (2 +(- 1)*x + x \<up> 2 = (0::real)) ----------------------------------------";
21 "----------- equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0) ---------------------------------------------";
22 "----------- equality (- 2 + x + x \<up> 2 = 0) ---------------------------------------------------";
23 "----------- equality (2 + x + x \<up> 2 = 0) ----------------------------------------------------";
24 "----------- equality (- 2 + x + 1*x \<up> 2 = 0)) ------------------------------------------------";
25 "----------- equality (1*x + x \<up> 2 = 0) ----------------------------------------------------";
26 "----------- equality (1*x + 1*x \<up> 2 = 0) ----------------------------------------------------";
27 "----------- equality (x + x \<up> 2 = 0) ------------------------------------------------------";
28 "----------- equality (x + 1*x \<up> 2 = 0) ------------------------------------------------------";
29 "----------- equality (-4 + x \<up> 2 = 0) -------------------------------------------------------";
30 "----------- equality (4 + 1*x \<up> 2 = 0) -------------------------------------------------------";
31 "----------- equality (1 +(- 1)*x + 2*x \<up> 2 = 0) ----------------------------------------------";
32 "----------- equality (- 1 + x + 2*x \<up> 2 = 0) -------------------------------------------------";
33 "----------- equality (1 + x + 2*x \<up> 2 = 0) --------------------------------------------------";
34 "----------- (-8 - 2*x + x \<up> 2 = 0), (*Schalk 2, S.67 Nr.31.b----";
35 "----------- (-8 - 2*x + x \<up> 2 = 0), by rewriting ---------------";
36 "----------- (- 16 + 4*x + 2*x \<up> 2 = 0), --------------------------";
37 "-----------------------------------------------------------------";
38 "------ polyeq-2.sml ---------------------------------------------";
39 "----------- (a*b - (a+b)*x + x \<up> 2 = 0), (*Schalk 2,S.68Nr.44.a*)";
40 "----------- (-64 + x \<up> 2 = 0), (*Schalk 2, S.66 Nr.1.a~--------*)";
41 "----------- (- 147 + 3*x \<up> 2 = 0), (*Schalk 2, S.66 Nr.1.b------*)";
42 "----------- (3*x - 1 - (5*x - (2 - 4*x)) = - 11),(*Schalk Is86Bsp5";
43 "----------- ((x+1)*(x+2) - (3*x - 2) \<up> 2=.. Schalk II s.68 Bsp 37";
44 "----------- rls make_polynomial_in ------------------------------";
45 "----------- interSteps ([1],Res); on Schalk Is86Bsp5-------------";
46 "----------- rls d2_polyeq_bdv_only_simplify ---------------------";
47 "-----------------------------------------------------------------";
48 "-----------------------------------------------------------------";
50 "----------- tests on predicates in problems ---------------------";
51 "----------- tests on predicates in problems ---------------------";
52 "----------- tests on predicates in problems ---------------------";
54 val ctxt = Proof_Context.init_global thy;
56 val t1 = ParseC.parse_test ctxt "lhs (-8 - 2*x + x \<up> 2 = 0)";
57 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t1;
58 if ((UnparseC.term @{context} t) = "- 8 - 2 * x + x \<up> 2") then ()
59 else error "polyeq.sml: diff.behav. in lhs";
61 val t2 = ParseC.parse_test ctxt "(-8 - 2*x + x \<up> 2) is_expanded_in x";
62 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t2;
63 if (UnparseC.term @{context} t) = "True" then ()
64 else error "polyeq.sml: diff.behav. 1 in is_expended_in";
66 val t0 = ParseC.parse_test ctxt "(sqrt(x)) is_poly_in x";
67 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t0;
68 if (UnparseC.term @{context} t) = "False" then ()
69 else error "polyeq.sml: diff.behav. 2 in is_poly_in";
71 val t3 = ParseC.parse_test ctxt "(-8 + (- 1)*2*x + x \<up> 2) is_poly_in x";
72 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t3;
73 if (UnparseC.term @{context} t) = "True" then ()
74 else error "polyeq.sml: diff.behav. 3 in is_poly_in";
76 val t4 = ParseC.parse_test ctxt "(lhs (-8 + (- 1)*2*x + x \<up> 2 = 0)) is_expanded_in x";
77 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t4;
78 if (UnparseC.term @{context} t) = "True" then ()
79 else error "polyeq.sml: diff.behav. 4 in is_expended_in";
81 val t6 = ParseC.parse_test ctxt "(lhs (-8 - 2*x + x \<up> 2 = 0)) is_expanded_in x";
82 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t6;
83 if (UnparseC.term @{context} t) = "True" then ()
84 else error "polyeq.sml: diff.behav. 5 in is_expended_in";
86 val t3 = ParseC.parse_test ctxt"((-8 - 2*x + x \<up> 2) has_degree_in x) = 2";
87 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t3;
88 if (UnparseC.term @{context} t) = "True" then ()
89 else error "polyeq.sml: diff.behav. in has_degree_in_in";
91 val t3 = ParseC.parse_test ctxt "((sqrt(x)) has_degree_in x) = 2";
92 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t3;
93 if (UnparseC.term @{context} t) = "False" then ()
94 else error "polyeq.sml: diff.behav. 6 in has_degree_in_in";
96 val t4 = ParseC.parse_test ctxt
97 "((-8 - 2*x + x \<up> 2) has_degree_in x) = 1";
98 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t4;
99 if (UnparseC.term @{context} t) = "False" then ()
100 else error "polyeq.sml: diff.behav. 7 in has_degree_in_in";
102 val t5 = ParseC.parse_test ctxt
103 "((-8 - 2*x + x \<up> 2) has_degree_in x) = 2";
104 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_prls t5;
105 if (UnparseC.term @{context} t) = "True" then ()
106 else error "polyeq.sml: diff.behav. 8 in has_degree_in_in";
108 "----------- test matching problems --------------------------0---";
109 "----------- test matching problems --------------------------0---";
110 "----------- test matching problems --------------------------0---";
111 val fmz = ["equality (-8 - 2*x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
112 if M_Match.match_pbl fmz (Problem.from_store @{context} ["expanded", "univariate", "equation"]) =
113 M_Match.Matches' {Find = [Correct "solutions L"],
115 Given = [Correct "equality (- 8 - 2 * x + x \<up> 2 = 0)", Correct "solveFor x"],
116 Where = [Correct "matches (?a = 0) (- 8 - 2 * x + x \<up> 2 = 0)",
117 Correct "lhs (- 8 - 2 * x + x \<up> 2 = 0) is_expanded_in x"],
119 then () else error "M_Match.match_pbl [expanded,univariate,equation]";
121 if M_Match.match_pbl fmz (Problem.from_store @{context} ["degree_2", "expanded", "univariate", "equation"]) =
122 M_Match.Matches' {Find = [Correct "solutions L"],
124 Given = [Correct "equality (- 8 - 2 * x + x \<up> 2 = 0)", Correct "solveFor x"],
125 Where = [Correct "lhs (- 8 - 2 * x + x \<up> 2 = 0) has_degree_in x = 2"],
126 Relate = []} (*before WN110906 was: has_degree_in x =!= 2"]*)
127 then () else error "M_Match.match_pbl [degree_2,expanded,univariate,equation]";
130 "----------- prep. for introduction of Matthias Goldgruber 2003 trials on rewrite orders -----";
131 "----------- prep. for introduction of Matthias Goldgruber 2003 trials on rewrite orders -----";
132 "----------- prep. for introduction of Matthias Goldgruber 2003 trials on rewrite orders -----";
133 (*##################################################################################
134 ----------- 28.2.03: war nicht upgedatet und ausgeklammert in ROOT.ML-->Test_Isac.thy
136 (*Aufgabe zum Einstieg in die Arbeit...*)
137 val t = ParseC.parse_test ctxt "a*b - (a+b)*x + x \<up> 2 = 0";
138 (*ein 'ruleset' aus Poly.ML wird angewandt...*)
139 val SOME (t,_) = rewrite_set_ thy Poly_erls false make_polynomial t;
140 UnparseC.term @{context} t;
141 "a * b + (- 1 * (a * x) + (- 1 * (b * x) + x \<up> 2)) = 0";
143 rewrite_set_inst_ thy Poly_erls false [("bdv", "a")] make_polynomial_in t;
144 UnparseC.term @{context} t;
145 "x \<up> 2 + (- 1 * (b * x) + (- 1 * (x * a) + b * a)) = 0";
146 (* bei Verwendung von "size_of-term" nach MG :*)
147 (*"x \<up> 2 + (- 1 * (b * x) + (b * a + - 1 * (x * a))) = 0" !!! *)
149 (*wir holen 'a' wieder aus der Klammerung heraus...*)
150 val SOME (t,_) = rewrite_set_ thy Poly_erls false discard_parentheses t;
151 UnparseC.term @{context} t;
152 "x \<up> 2 + - 1 * b * x + - 1 * x * a + b * a = 0";
153 (* "x \<up> 2 + - 1 * b * x + b * a + - 1 * x * a = 0" !!! *)
156 rewrite_set_inst_ thy Poly_erls false [("bdv", "a")] make_polynomial_in t;
157 UnparseC.term @{context} t;
158 "x \<up> 2 + (- 1 * (b * x) + a * (b + - 1 * x)) = 0";
159 (*da sind wir fast am Ziel: make_polynomial_in 'a' sollte ergeben
160 "x \<up> 2 + (- 1 * (b * x)) + (b + - 1 * x) * a = 0"*)
162 (*das rewriting l"asst sich beobachten mit
163 Rewrite.trace_on := false; (*true false*)
166 "------ 15.11.02 --------------------------";
167 val t = ParseC.parse_test ctxt "1 + a * x + b * x";
168 val bdv = ParseC.parse_test ctxt "bdv";
169 val a = ParseC.parse_test ctxt "a";
171 Rewrite.trace_on := false; (*true false*)
172 (* Anwenden einer Regelmenge aus Termorder.ML: *)
174 rewrite_set_inst_ thy false [(bdv,a)] make_polynomial_in t;
175 UnparseC.term @{context} t;
177 rewrite_set_ thy false discard_parentheses t;
178 UnparseC.term @{context} t;
181 val t = ParseC.parse_test ctxt "1 + a * (x + b * x) + a \<up> 2";
183 rewrite_set_inst_ thy false [(bdv,a)] make_polynomial_in t;
184 UnparseC.term @{context} t;
186 rewrite_set_ thy false discard_parentheses t;
187 UnparseC.term @{context} t;
188 "1 + (x + b * x) * a + a \<up> 2";
190 val t = ParseC.parse_test ctxt "1 + a \<up> 2 * x + b * a + 7*a \<up> 2";
192 rewrite_set_inst_ thy false [(bdv,a)] make_polynomial_in t;
193 UnparseC.term @{context} t;
195 rewrite_set_ thy false discard_parentheses t;
196 UnparseC.term @{context} t;
197 "1 + b * a + (7 + x) * a \<up> 2";
200 Prog_Expr.thy grundlegende Algebra
204 RootRat.thy Wurzen + Br"uche
205 Termorder.thy BITTE NUR HIERHER SCHREIBEN (...WN03)
207 get_thm Termorder.thy "bdv_n_collect";
208 get_thm (theory "Isac_Knowledge") "bdv_n_collect";
210 val t = ParseC.parse_test ctxt "a \<up> 2 * x + 7 * a \<up> 2";
212 rewrite_set_inst_ thy false [(bdv,a)] make_polynomial_in t;
213 UnparseC.term @{context} t;
215 rewrite_set_ thy false discard_parentheses t;
216 UnparseC.term @{context} t;
217 "(7 + x) * a \<up> 2";
219 val t = (Thm.term_of o the o (TermC.parse Termorder.thy)) "Pi";
221 val t = (Thm.term_of o the o (parseold thy)) "7";
222 ##################################################################################*)
225 "----------- open local of fun ord_make_polynomial_in ------------------------------------------";
226 "----------- open local of fun ord_make_polynomial_in ------------------------------------------";
227 "----------- open local of fun ord_make_polynomial_in ------------------------------------------";
228 (* termorder hacked by MG, adapted later by WN *)
229 (** )local ( *. for make_polynomial_in .*)
231 open Term; (* for type order = EQUAL | LESS | GREATER *)
233 fun pr_ord EQUAL = "EQUAL"
234 | pr_ord LESS = "LESS"
235 | pr_ord GREATER = "GREATER";
237 fun dest_hd' _ (Const (a, T)) = (((a, 0), T), 0)
238 | dest_hd' x (t as Free (a, T)) =
239 if x = t then ((("|||||||||||||", 0), T), 0) (*WN*)
240 else (((a, 0), T), 1)
241 | dest_hd' _ (Var v) = (v, 2)
242 | dest_hd' _ (Bound i) = ((("", i), dummyT), 3)
243 | dest_hd' _ (Abs (_, T, _)) = ((("", 0), T), 4)
244 | dest_hd' _ _ = raise ERROR "dest_hd': uncovered case in fun.def.";
246 fun size_of_term' i pr x (t as Const (\<^const_name>\<open>realpow\<close>, _) $
247 Free (var, _) $ Free (pot, _)) =
248 (if pr then tracing (idt "#" i ^ "size_of_term' realpow: " ^ UnparseC.term @{context} t) else ();
252 then (if pr then tracing (idt "#" i ^ "xstr = var --> " ^ string_of_int (1000 * (the (TermC.int_opt_of_string pot)))) else ();
253 1000 * (the (TermC.int_opt_of_string pot)))
254 else (if pr then tracing (idt "#" i ^ "x <> Free --> " ^ "3") else (); 3)
255 | _ => raise ERROR ("size_of_term' called with subst = " ^ UnparseC.term @{context} x))
256 | size_of_term' i pr x (t as Abs (_, _, body)) =
257 (if pr then tracing (idt "#" i ^ "size_of_term' Abs: " ^ UnparseC.term @{context} t) else ();
258 1 + size_of_term' (i + 1) pr x body)
259 | size_of_term' i pr x (f $ t) =
261 val _ = if pr then tracing (idt "#" i ^ "size_of_term' $$$: " ^ UnparseC.term @{context} f ^ " $$$ " ^ UnparseC.term @{context} t) else ();
262 val s1 = size_of_term' (i + 1) pr x f
263 val s2 = size_of_term' (i + 1) pr x t
264 val _ = if pr then tracing (idt "#" i ^ "size_of_term' $$$-->: " ^ string_of_int s1 ^ " + " ^ string_of_int s2 ^ " = " ^ string_of_int(s1 + s2)) else ();
266 | size_of_term' i pr x t =
267 (if pr then tracing (idt "#" i ^ "size_of_term' bot: " ^ UnparseC.term @{context} t) else ();
273 then (if pr then tracing (idt "#" i ^ "xstr = var --> " ^ "1000") else (); 1000)
274 else (if pr then tracing (idt "#" i ^ "x <> Free --> " ^ "1") else (); 1)
275 | _ => raise ERROR ("size_of_term' called with subst = " ^ UnparseC.term @{context} x))
276 | _ => (if pr then tracing (idt "#" i ^ "bot --> " ^ "1") else (); 1));
278 fun term_ord' i pr x thy (Abs (_, T, t), Abs(_, U, u)) = (* ~ term.ML *)
280 val _ = if pr then tracing (idt "#" i ^ "term_ord' Abs") else ();
282 case term_ord' (i + 1) pr x thy (t, u) of EQUAL => Term_Ord.typ_ord (T, U) | ord => ord
283 val _ = if pr then tracing (idt "#" i ^ "term_ord' Abs --> " ^ pr_ord ord) else ()
285 | term_ord' i pr x _ (t, u) =
287 val _ = if pr then tracing (idt "#" i ^ "term_ord' bot (" ^ UnparseC.term @{context} t ^ ", " ^ UnparseC.term @{context} u ^ ")") else ();
289 case int_ord (size_of_term' (i + 1) pr x t, size_of_term' (i + 1) pr x u) of
291 let val (f, ts) = strip_comb t and (g, us) = strip_comb u
293 (case hd_ord (i + 1) pr x (f, g) of
294 EQUAL => (terms_ord x (i + 1) pr) (ts, us)
298 val _ = if pr then tracing (idt "#" i ^ "term_ord' bot --> " ^ pr_ord ord) else ()
300 and hd_ord i pr x (f, g) = (* ~ term.ML *)
302 val _ = if pr then tracing (idt "#" i ^ "hd_ord (" ^ UnparseC.term @{context} f ^ ", " ^ UnparseC.term @{context} g ^ ")") else ();
304 (prod_ord Term_Ord.indexname_ord Term_Ord.typ_ord) int_ord
305 (dest_hd' x f, dest_hd' x g)
306 val _ = if pr then tracing (idt "#" i ^ "hd_ord --> " ^ pr_ord ord) else ();
308 and terms_ord x i pr (ts, us) =
310 val _ = if pr then tracing (idt "#" i ^ "terms_ord (" ^ UnparseC.terms @{context} ts ^ ", " ^ UnparseC.terms @{context} us ^ ")") else ();
311 val ord = list_ord (term_ord' (i + 1) pr x (ThyC.get_theory "Isac_Knowledge"))(ts, us);
312 val _ = if pr then tracing (idt "#" i ^ "terms_ord --> " ^ pr_ord ord) else ();
317 fun ord_make_polynomial_in (pr:bool) thy subst (ts, us) =
318 ((** )tracing ("*** subs variable is: " ^ Env.subst2str subst); ( **)
321 term_ord' 1 pr x thy (TermC.numerals_to_Free ts, TermC.numerals_to_Free us) = LESS
322 | _ => raise ERROR ("ord_make_polynomial_in called with subst = " ^ Env.subst2str subst))
326 val subs = [(ParseC.parse_test @{context} "bdv::real", ParseC.parse_test @{context} "x::real")];
327 if ord_make_polynomial_in false(*true*) @{theory} subs (t1, t2) then () else error "still GREATER?";
329 val x = ParseC.parse_test @{context} "x ::real";
331 val t1 = TermC.numerals_to_Free (ParseC.parse_test @{context} "L * q_0 * x \<up> 2 / 4 ::real");
332 if 2006 = size_of_term' 1 false(*true*) x t1
333 then () else error "size_of_term' (L * q_0 * x \<up> 2) CHANGED)";
335 val t2 = TermC.numerals_to_Free (ParseC.parse_test @{context} "- 1 * (q_0 * x \<up> 3) :: real");
336 if 3004 = size_of_term' 1 false(*true*) x t2
337 then () else error "size_of_term' (- 1 * (q_0 * x \<up> 3)) CHANGED";
340 "----------- Matthias Goldgruber 2003 trials on rewrite orders -------------------------------";
341 "----------- Matthias Goldgruber 2003 trials on rewrite orders -------------------------------";
342 "----------- Matthias Goldgruber 2003 trials on rewrite orders -------------------------------";
343 val substa = [(TermC.empty, ParseC.parse_test ctxt "a::real")];
344 val substb = [(TermC.empty, ParseC.parse_test ctxt "b::real")];
345 val substx = [(TermC.empty, ParseC.parse_test ctxt "x::real")];
347 val x1 = ParseC.parse_test ctxt "a + b + x::real";
348 val x2 = ParseC.parse_test ctxt "a + x + b::real";
349 val x3 = ParseC.parse_test ctxt "a + x + b::real";
350 val x4 = ParseC.parse_test ctxt "x + a + b::real";
352 if ord_make_polynomial_in false(*true*) thy substx (x1,x2) = true(*LESS *) then ()
353 else error "termorder.sml diff.behav ord_make_polynomial_in #1";
355 if ord_make_polynomial_in false(*true*) thy substa (x1,x2) = true(*LESS *) then ()
356 else error "termorder.sml diff.behav ord_make_polynomial_in #2";
358 if ord_make_polynomial_in false(*true*) thy substb (x1,x2) = false(*GREATER*) then ()
359 else error "termorder.sml diff.behav ord_make_polynomial_in #3";
361 val aa = ParseC.parse_test ctxt "- 1 * a * x::real";
362 val bb = ParseC.parse_test ctxt "x \<up> 3::real";
363 if ord_make_polynomial_in false(*true*) thy substx (aa, bb) = true(*LESS *) then ()
364 else error "termorder.sml diff.behav ord_make_polynomial_in #4";
366 val aa = ParseC.parse_test ctxt "- 1 * a * x";
367 val bb = ParseC.parse_test ctxt "x \<up> 3";
368 if ord_make_polynomial_in false(*true*) thy substa (aa, bb) = false(*GREATER*) then ()
369 else error "termorder.sml diff.behav ord_make_polynomial_in #5";
371 (* und nach dem Re-engineering der Termorders in den 'rulesets'
372 kannst Du die 'gr"osste' Variable frei w"ahlen: *)
373 val bdv= ParseC.parse_test ctxt "bdv ::real";
374 val x = ParseC.parse_test ctxt "x ::real";
375 val a = ParseC.parse_test ctxt "a ::real";
376 val b = ParseC.parse_test ctxt "b ::real";
377 val SOME (t',_) = rewrite_set_inst_ ctxt false [(bdv,a)] make_polynomial_in x2;
378 if UnparseC.term @{context} t' = "b + x + a" then ()
379 else error "termorder.sml diff.behav ord_make_polynomial_in #11";
381 val NONE = rewrite_set_inst_ ctxt false [(bdv,b)] make_polynomial_in x2;
383 val SOME (t',_) = rewrite_set_inst_ ctxt false [(bdv,x)] make_polynomial_in x2;
384 if UnparseC.term @{context} t' = "a + b + x" then ()
385 else error "termorder.sml diff.behav ord_make_polynomial_in #13";
387 val ppp' = "-6 + -5*x + x \<up> 3 + - 1*x \<up> 2 + - 1*x \<up> 3 + - 14*x \<up> 2";
388 val ppp = ParseC.parse_test ctxt ppp';
389 val SOME (t', _) = rewrite_set_inst_ ctxt false [(bdv,x)] make_polynomial_in ppp;
390 if UnparseC.term @{context} t' = "- 6 + - 5 * x + - 15 * x \<up> 2" then ()
391 else error "termorder.sml diff.behav ord_make_polynomial_in #15";
393 val ttt' = "(3*x + 5)/18 ::real";
394 val ttt = ParseC.parse_test ctxt ttt';
395 val SOME (uuu,_) = rewrite_set_inst_ ctxt false [(bdv,x)] make_polynomial_in ttt;
396 if UnparseC.term @{context} uuu = "(5 + 3 * x) / 18" then ()
397 else error "termorder.sml diff.behav ord_make_polynomial_in #16a";
399 val SOME (uuu,_) = rewrite_set_ ctxt false make_polynomial ttt;
400 if UnparseC.term @{context} uuu = "(5 + 3 * x) / 18" then ()
401 else error "termorder.sml diff.behav ord_make_polynomial_in #16b";
403 "----------- lin.eq degree_0 -------------------------------------";
404 "----------- lin.eq degree_0 -------------------------------------";
405 "----------- lin.eq degree_0 -------------------------------------";
406 "----- d0_false ------";
407 val fmz = ["equality (1 = (0::real))", "solveFor x", "solutions L"];
408 val (dI',pI',mI') = ("PolyEq",["degree_0", "polynomial", "univariate", "equation"],
409 ["PolyEq", "solve_d0_polyeq_equation"]);
410 (*=== inhibit exn WN110914: declare_constraints doesnt work with ThmC.numerals_to_Free ========
411 TODO: change to "equality (x + - 1*x = (0::real))"
412 and search for an appropriate problem and method.
414 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
415 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
416 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
417 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
418 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
419 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
420 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
421 case f of Form' (Test_Out.FormKF (~1,EdUndef,0,Nundef,"[]")) => ()
422 | _ => error "polyeq.sml: diff.behav. in 1 = 0 -> []";
424 "----- d0_true ------";
425 val fmz = ["equality (0 = (0::real))", "solveFor x", "solutions L"];
426 val (dI',pI',mI') = ("PolyEq",["degree_0", "polynomial", "univariate", "equation"],
427 ["PolyEq", "solve_d0_polyeq_equation"]);
428 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
429 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
430 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
431 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
432 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
433 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
434 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
435 case f of Form' (Test_Out.FormKF (~1,EdUndef,0,Nundef,"UniversalList")) => ()
436 | _ => error "polyeq.sml: diff.behav. in 0 = 0 -> UniversalList";
437 ============ inhibit exn WN110914 ============================================*)
439 "----------- test thm's d2_pq_formulsxx[_neg]---------------------";
440 "----------- test thm's d2_pq_formulsxx[_neg]---------------------";
441 "----------- test thm's d2_pq_formulsxx[_neg]---------------------";
442 "----- d2_pqformula1 ------!!!!";
443 val fmz = ["equality (- 1/8 + (- 1/4)*z + z \<up> 2 = (0::real))", "solveFor z", "solutions L"];
445 ("Isac_Knowledge", ["pqFormula", "degree_2", "polynomial", "univariate", "equation"], ["no_met"]);
446 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
447 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
448 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
449 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
450 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
451 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
452 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
453 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*Apply_Method ["PolyEq", "solve_d2_polyeq_pq_equation"]*)
454 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
455 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
456 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
457 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
459 (*[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + - 1 * sqrt (9 / 16) / 2] TODO sqrt*)
460 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt =..,Check_elementwise "Assumptions")*)
461 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
462 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
464 if p = ([], Res) andalso
465 f2str f = "[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + - 1 * sqrt (9 / 16) / 2]" then
466 case nxt of End_Proof' => () | _ => error "(- 1/8 + (- 1/4)*z + z \<up> 2 = (0::real)) CHANGED 1"
467 else error "(- 1/8 + (- 1/4)*z + z \<up> 2 = (0::real)) CHANGED 2";
469 "----------- equality (2 +(- 1)*x + x \<up> 2 = (0::real)) ----------------------------------------";
470 "----------- equality (2 +(- 1)*x + x \<up> 2 = (0::real)) ----------------------------------------";
471 "----------- equality (2 +(- 1)*x + x \<up> 2 = (0::real)) ----------------------------------------";
472 "----- d2_pqformula1_neg ------";
473 val fmz = ["equality (2 +(- 1)*x + x \<up> 2 = (0::real))", "solveFor x", "solutions L"];
474 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"], ["PolyEq", "solve_d2_polyeq_pq_equation"]);
475 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
476 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
477 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
478 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
479 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
480 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
482 ([1],Res) False Or_to_List)*)
483 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
485 ([2],Res) [] Check_elementwise "Assumptions"*)
486 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
487 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
488 val asm = Ctree.get_assumptions pt p;
489 if f2str f = "[]" andalso
490 UnparseC.terms @{context} asm = "[lhs (2 + - 1 * x + x \<up> 2 = 0) is_poly_in x, " ^
491 "lhs (2 + - 1 * x + x \<up> 2 = 0) has_degree_in x = 2]" then ()
492 else error "polyeq.sml: diff.behav. in 2 +(- 1)*x + x \<up> 2 = 0";
494 "----------- equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0) ---------------------------------------------";
495 "----------- equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0) ---------------------------------------------";
496 "----------- equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0) ---------------------------------------------";
497 "----- d2_pqformula2 ------";
498 val fmz = ["equality (- 2 +(- 1)*x + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"];
499 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
500 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
501 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
502 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
503 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
504 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
505 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
506 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
508 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
509 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
510 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
511 case f of Test_Out.FormKF "[x = 2, x = - 1]" => ()
512 | _ => error "polyeq.sml: diff.behav. in - 2 + (- 1)*x + x^2 = 0 -> [x = 2, x = - 1]";
515 "----------- equality (- 2 + x + x \<up> 2 = 0) ---------------------------------------------------";
516 "----------- equality (- 2 + x + x \<up> 2 = 0) ---------------------------------------------------";
517 "----------- equality (- 2 + x + x \<up> 2 = 0) ---------------------------------------------------";
518 "----- d2_pqformula3 ------";
520 val fmz = ["equality (- 2 + x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
521 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
522 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
523 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
524 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
525 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
526 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
527 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
528 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
530 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
531 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
532 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
533 case f of Test_Out.FormKF "[x = 1, x = - 2]" => ()
534 | _ => error "polyeq.sml: diff.behav. in - 2 + x + x^2 = 0-> [x = 1, x = - 2]";
537 "----------- equality (2 + x + x \<up> 2 = 0) ----------------------------------------------------";
538 "----------- equality (2 + x + x \<up> 2 = 0) ----------------------------------------------------";
539 "----------- equality (2 + x + x \<up> 2 = 0) ----------------------------------------------------";
540 "----- d2_pqformula3_neg ------";
541 val fmz = ["equality (2 + x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
542 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
543 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
544 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
545 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
546 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
547 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
548 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
549 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
551 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
552 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
553 "TODO 2 + x + x \<up> 2 = 0";
554 "TODO 2 + x + x \<up> 2 = 0";
555 "TODO 2 + x + x \<up> 2 = 0";
557 "----------- equality (- 2 + x + 1*x \<up> 2 = 0)) ------------------------------------------------";
558 "----------- equality (- 2 + x + 1*x \<up> 2 = 0)) ------------------------------------------------";
559 "----------- equality (- 2 + x + 1*x \<up> 2 = 0)) ------------------------------------------------";
560 "----- d2_pqformula4 ------";
561 val fmz = ["equality (- 2 + x + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"];
562 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
563 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
564 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
565 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
566 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
567 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
568 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
569 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
570 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
571 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
572 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
573 case f of Test_Out.FormKF "[x = 1, x = - 2]" => ()
574 | _ => error "polyeq.sml: diff.behav. in - 2 + x + 1*x \<up> 2 = 0 -> [x = 1, x = - 2]";
576 "----------- equality (1*x + x \<up> 2 = 0) ----------------------------------------------------";
577 "----------- equality (1*x + x \<up> 2 = 0) ----------------------------------------------------";
578 "----------- equality (1*x + x \<up> 2 = 0) ----------------------------------------------------";
579 "----- d2_pqformula5 ------";
580 val fmz = ["equality (1*x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
581 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
582 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
583 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
584 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
589 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
590 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
591 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
592 case f of Test_Out.FormKF "[x = 0, x = - 1]" => ()
593 | _ => error "polyeq.sml: diff.behav. in 1*x + x^2 = 0 -> [x = 0, x = - 1]";
595 "----------- equality (1*x + 1*x \<up> 2 = 0) ----------------------------------------------------";
596 "----------- equality (1*x + 1*x \<up> 2 = 0) ----------------------------------------------------";
597 "----------- equality (1*x + 1*x \<up> 2 = 0) ----------------------------------------------------";
598 "----- d2_pqformula6 ------";
599 val fmz = ["equality (1*x + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"];
600 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
601 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
602 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
603 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
604 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
605 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
606 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
607 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
608 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
609 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
610 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
611 case f of Test_Out.FormKF "[x = 0, x = - 1]" => ()
612 | _ => error "polyeq.sml: diff.behav. in 1*x + 1*x^2 = 0 -> [x = 0, x = - 1]";
614 "----------- equality (x + x \<up> 2 = 0) ------------------------------------------------------";
615 "----------- equality (x + x \<up> 2 = 0) ------------------------------------------------------";
616 "----------- equality (x + x \<up> 2 = 0) ------------------------------------------------------";
617 "----- d2_pqformula7 ------";
619 val fmz = ["equality ( x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
620 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
621 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
622 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
623 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
624 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
625 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
626 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
627 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
628 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
629 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
630 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
631 case f of Test_Out.FormKF "[x = 0, x = - 1]" => ()
632 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1]";
634 "----------- equality (x + 1*x \<up> 2 = 0) ------------------------------------------------------";
635 "----------- equality (x + 1*x \<up> 2 = 0) ------------------------------------------------------";
636 "----------- equality (x + 1*x \<up> 2 = 0) ------------------------------------------------------";
637 "----- d2_pqformula8 ------";
638 val fmz = ["equality (x + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"];
639 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
640 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
641 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
642 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
643 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
644 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
645 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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;
650 case f of Test_Out.FormKF "[x = 0, x = - 1]" => ()
651 | _ => error "polyeq.sml: diff.behav. in x + 1*x^2 = 0 -> [x = 0, x = - 1]";
653 "----------- equality (-4 + x \<up> 2 = 0) -------------------------------------------------------";
654 "----------- equality (-4 + x \<up> 2 = 0) -------------------------------------------------------";
655 "----------- equality (-4 + x \<up> 2 = 0) -------------------------------------------------------";
656 "----- d2_pqformula9 ------";
657 val fmz = ["equality (-4 + x \<up> 2 = 0)", "solveFor x", "solutions L"];
658 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
659 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
660 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
661 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
662 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
663 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
664 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
665 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
666 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
667 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
668 case f of Test_Out.FormKF "[x = 2, x = - 2]" => ()
669 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = - 2]";
672 "----------- equality (4 + 1*x \<up> 2 = 0) -------------------------------------------------------";
673 "----------- equality (4 + 1*x \<up> 2 = 0) -------------------------------------------------------";
674 "----------- equality (4 + 1*x \<up> 2 = 0) -------------------------------------------------------";
675 "----- d2_pqformula9_neg ------";
676 val fmz = ["equality (4 + 1*x \<up> 2 = 0)", "solveFor x", "solutions L"];
677 val (dI',pI',mI') = ("PolyEq",["pqFormula", "degree_2", "polynomial", "univariate", "equation"],
678 ["PolyEq", "solve_d2_polyeq_pq_equation"]);
679 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
680 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
681 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
682 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
683 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
684 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
685 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
686 "TODO 4 + 1*x \<up> 2 = 0";
687 "TODO 4 + 1*x \<up> 2 = 0";
688 "TODO 4 + 1*x \<up> 2 = 0";
690 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
691 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
692 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
693 val fmz = ["equality (- 1 +(- 1)*x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"];
694 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
695 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
696 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
697 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
704 case f of Test_Out.FormKF "[x = 1, x = - 1 / 2]" => ()
705 | _ => error "polyeq.sml: diff.behav. in - 1 + (- 1)*x + 2*x^2 = 0 -> [x = 1, x = - 1/2]";
707 "----------- equality (1 +(- 1)*x + 2*x \<up> 2 = 0) ----------------------------------------------";
708 "----------- equality (1 +(- 1)*x + 2*x \<up> 2 = 0) ----------------------------------------------";
709 "----------- equality (1 +(- 1)*x + 2*x \<up> 2 = 0) ----------------------------------------------";
710 val fmz = ["equality (1 +(- 1)*x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"];
711 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
712 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
713 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
714 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
715 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
716 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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 "TODO 1 +(- 1)*x + 2*x \<up> 2 = 0";
722 "TODO 1 +(- 1)*x + 2*x \<up> 2 = 0";
723 "TODO 1 +(- 1)*x + 2*x \<up> 2 = 0";
726 "----------- equality (- 1 + x + 2*x \<up> 2 = 0) -------------------------------------------------";
727 "----------- equality (- 1 + x + 2*x \<up> 2 = 0) -------------------------------------------------";
728 "----------- equality (- 1 + x + 2*x \<up> 2 = 0) -------------------------------------------------";
730 val fmz = ["equality (- 1 + x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"];
731 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
732 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
733 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
734 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
735 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
737 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
738 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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;
742 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
743 case f of Test_Out.FormKF "[x = 1 / 2, x = - 1]" => ()
744 | _ => error "polyeq.sml: diff.behav. in - 1 + x + 2*x^2 = 0 -> [x = 1/2, x = - 1]";
747 "----------- equality (1 + x + 2*x \<up> 2 = 0) --------------------------------------------------";
748 "----------- equality (1 + x + 2*x \<up> 2 = 0) --------------------------------------------------";
749 "----------- equality (1 + x + 2*x \<up> 2 = 0) --------------------------------------------------";
750 val fmz = ["equality (1 + x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"];
751 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
752 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
753 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
754 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
755 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
757 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
758 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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;
762 "TODO 1 + x + 2*x \<up> 2 = 0";
763 "TODO 1 + x + 2*x \<up> 2 = 0";
764 "TODO 1 + x + 2*x \<up> 2 = 0";
767 val fmz = ["equality (- 2 + 1*x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
768 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
769 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
770 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
771 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
772 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
773 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
774 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
775 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
776 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
777 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
778 case f of Test_Out.FormKF "[x = 1, x = - 2]" => ()
779 | _ => error "polyeq.sml: diff.behav. in - 2 + 1*x + x^2 = 0 -> [x = 1, x = - 2]";
781 val fmz = ["equality ( 2 + 1*x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
782 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
783 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
784 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
785 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
786 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
787 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
788 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
789 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
790 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
791 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
792 "TODO 2 + 1*x + x \<up> 2 = 0";
793 "TODO 2 + 1*x + x \<up> 2 = 0";
794 "TODO 2 + 1*x + x \<up> 2 = 0";
797 val fmz = ["equality (- 2 + x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
798 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
799 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
800 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
801 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
804 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
808 case f of Test_Out.FormKF "[x = 1, x = - 2]" => ()
809 | _ => error "polyeq.sml: diff.behav. in - 2 + x + x^2 = 0 -> [x = 1, x = - 2]";
811 val fmz = ["equality ( 2 + x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
812 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
813 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
814 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
815 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
816 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
817 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
818 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
819 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
820 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
821 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
822 "TODO 2 + x + x \<up> 2 = 0";
823 "TODO 2 + x + x \<up> 2 = 0";
824 "TODO 2 + x + x \<up> 2 = 0";
827 val fmz = ["equality (-8 + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"];
828 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
829 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
830 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
831 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
832 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
833 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
834 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
835 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
836 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
837 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
838 case f of Test_Out.FormKF "[x = 2, x = - 2]" => ()
839 | _ => error "polyeq.sml: diff.behav. in -8 + 2*x^2 = 0 -> [x = 2, x = - 2]";
841 val fmz = ["equality ( 8+ 2*x \<up> 2 = 0)", "solveFor x", "solutions L"];
842 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
843 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
844 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
845 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
849 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
850 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
851 "TODO 8+ 2*x \<up> 2 = 0";
852 "TODO 8+ 2*x \<up> 2 = 0";
853 "TODO 8+ 2*x \<up> 2 = 0";
856 val fmz = ["equality (-4 + x \<up> 2 = 0)", "solveFor x", "solutions L"];
857 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], ["PolyEq", "solve_d2_polyeq_abc_equation"]);
858 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
859 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
860 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
861 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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 case f of Test_Out.FormKF "[x = 2, x = - 2]" => ()
867 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = - 2]";
870 val fmz = ["equality ( 4+ x \<up> 2 = 0)", "solveFor x", "solutions L"];
871 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"], ["PolyEq", "solve_d2_polyeq_abc_equation"]);
872 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
873 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
874 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
875 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
876 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
877 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
878 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
879 "TODO 4+ x \<up> 2 = 0";
880 "TODO 4+ x \<up> 2 = 0";
881 "TODO 4+ x \<up> 2 = 0";
884 val fmz = ["equality (2*x + 2*x \<up> 2 = 0)", "solveFor x", "solutions L"];
885 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
886 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
887 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
888 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
889 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
890 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
891 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
892 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
893 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
894 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
895 case f of Test_Out.FormKF "[x = 0, x = - 1]" => ()
896 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1]";
898 val fmz = ["equality (1*x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
899 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
900 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
901 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
902 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
905 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
906 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
907 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
908 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
909 case f of Test_Out.FormKF "[x = 0, x = - 1]" => ()
910 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1]";
913 val fmz = ["equality (x + 2 * x \<up> 2 = (0::real))", "solveFor (x::real)", "solutions L"];
914 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
915 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
916 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
917 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
918 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
921 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
923 (*+*)val Test_Out.FormKF "x + 2 * x \<up> 2 = 0" = f;
924 (*+*)val Rewrite_Set_Inst (["(''bdv'', x)"], "d2_polyeq_abcFormula_simplify") = nxt
926 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*"x + 2 * x \<up> 2 = 0", d2_polyeq_abcFormula_simplify*)
927 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
928 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
929 case f of Test_Out.FormKF "[x = 0, x = - 1 / 2]" => ()
930 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1 / 2]";
933 val fmz = ["equality (x + x \<up> 2 = 0)", "solveFor x", "solutions L"];
934 val (dI',pI',mI') = ("PolyEq",["abcFormula", "degree_2", "polynomial", "univariate", "equation"],
935 ["PolyEq", "solve_d2_polyeq_abc_equation"]);
936 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
937 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
938 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
939 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
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 case f of Test_Out.FormKF "[x = 0, x = - 1]" => ()
945 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = - 1]";
948 "----------- (-8 - 2*x + x \<up> 2 = 0), (*Schalk 2, S.67 Nr.31.b----";
949 "----------- (-8 - 2*x + x \<up> 2 = 0), (*Schalk 2, S.67 Nr.31.b----";
950 "----------- (-8 - 2*x + x \<up> 2 = 0), (*Schalk 2, S.67 Nr.31.b----";
951 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
952 see --- val rls = calculate_RootRat > calculate_Rational ---
953 calculate_RootRat was a TODO with 2002, requires re-design.
954 see also --- (-8 - 2*x + x \<up> 2 = 0), by rewriting --- below
956 val fmz = ["equality (-8 - 2*x + x \<up> 2 = 0)", (*Schalk 2, S.67 Nr.31.b*)
957 "solveFor x", "solutions L"];
959 ("PolyEq",["degree_2", "expanded", "univariate", "equation"],
960 ["PolyEq", "complete_square"]);
961 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
962 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
963 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
964 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
966 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
967 (*Apply_Method ("PolyEq", "complete_square")*)
968 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
969 (*"-8 - 2 * x + x \<up> 2 = 0", nxt = Rewrite_Set_Inst ... "complete_square*)
970 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
971 (*"-8 + (2 / 2 - x) \<up> 2 = (2 / 2) \<up> 2", nxt = Rewrite("square_explicit1"*)
972 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
973 (*"(2 / 2 - x) \<up> 2 = (2 / 2) \<up> 2 - -8" nxt = Rewrite("root_plus_minus*)
974 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
975 (*"2 / 2 - x = sqrt ((2 / 2) \<up> 2 - -8) |
976 2 / 2 - x = - sqrt ((2 / 2) \<up> 2 - -8)" nxt = Rewr_Inst("bdv_explicit2"*)
977 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
978 (*"2 / 2 - x = sqrt ((2 / 2) \<up> 2 - -8) |
979 - 1*x = - (2 / 2) + - sqrt ((2 / 2) \<up> 2 - -8)"nxt = R_Inst("bdv_explt2"*)
980 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
981 (*"- 1 * x = - (2 / 2) + sqrt ((2 / 2) \<up> 2 - -8) |
982 - 1 * x = (- (2 / 2) + - sqrt ((2 / 2) \<up> 2 - -8))"nxt = bdv_explicit3*)
983 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
984 (*"- 1 * x = - (2 / 2) + sqrt ((2 / 2) \<up> 2 - -8) |
985 x = - 1 * (- (2 / 2) + - sqrt ((2 / 2) \<up> 2 - -8))" nxt = bdv_explicit3*)
986 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
987 (*"x = - 1 * (- (2 / 2) + sqrt ((2 / 2) \<up> 2 - -8)) |
988 x = - 1 * (- (2 / 2) + - sqrt ((2 / 2) \<up> 2 - -8))"nxt = calculate_Rational
989 NOT IMPLEMENTED SINCE 2002 ------------------------------ \<up> \<up> \<up> \<up> \<up> \<up> *)
990 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
991 (*"x = - 2 | x = 4" nxt = Or_to_List*)
992 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
993 (*"[x = - 2, x = 4]" nxt = Check_Postcond*)
994 val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
996 case f of Form' (Test_Out.FormKF (~1,EdUndef,0,Nundef,"[x = - 2, x = 4]")) => () TODO
997 | _ => error "polyeq.sml: diff.behav. in [x = - 2, x = 4]";
1000 "[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))]"
1001 (*"[x = - 1 * - 1 + - 1 * sqrt (1 \<up> 2 - -8),\n x = - 1 * - 1 + - 1 * (- 1 * sqrt (1 \<up> 2 - -8))]"*)
1002 then () else error "polyeq.sml corrected?behav. in [x = - 2, x = 4]";
1005 "----------- (-8 - 2*x + x \<up> 2 = 0), by rewriting ---------------";
1006 "----------- (-8 - 2*x + x \<up> 2 = 0), by rewriting ---------------";
1007 "----------- (-8 - 2*x + x \<up> 2 = 0), by rewriting ---------------";
1008 (*stopped due to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
1009 see --- val rls = calculate_RootRat > calculate_Rational ---*)
1010 val thy = @{theory PolyEq};
1011 val ctxt = Proof_Context.init_global thy;
1012 val inst = [((the o (ParseC.term_opt ctxt)) "bdv::real", (the o (ParseC.term_opt ctxt)) "x::real")];
1013 val t = (the o (ParseC.term_opt ctxt)) "-8 - 2*x + x \<up> 2 = (0::real)";
1015 val rls = complete_square;
1016 val SOME (t,asm) = rewrite_set_inst_ ctxt true inst rls t;
1017 if UnparseC.term @{context} t = "- 8 + (2 / 2 - x) \<up> 2 = (2 / 2) \<up> 2"
1018 then () else error "rls complete_square CHANGED";
1020 val thm = @{thm square_explicit1};
1021 val SOME (t,asm) = rewrite_ ctxt Rewrite_Ord.function_empty Rule_Set.Empty true thm t;
1022 if UnparseC.term @{context} t = "(2 / 2 - x) \<up> 2 = (2 / 2) \<up> 2 - - 8"
1023 then () else error "thm square_explicit1 CHANGED";
1025 val thm = @{thm root_plus_minus};
1026 val SOME (t,asm) = rewrite_ ctxt Rewrite_Ord.function_empty PolyEq_erls true thm t;
1027 if UnparseC.term @{context} t =
1028 "2 / 2 - x = sqrt ((2 / 2) \<up> 2 - - 8) \<or>\n2 / 2 - x = - 1 * sqrt ((2 / 2) \<up> 2 - - 8)"
1029 then () else error "thm root_plus_minus CHANGED";
1031 (*the thm bdv_explicit2* here required to be constrained to ::real*)
1032 val thm = @{thm bdv_explicit2};
1033 val SOME (t,asm) = rewrite_inst_ ctxt Rewrite_Ord.function_empty Rule_Set.Empty true inst thm t;
1034 if UnparseC.term @{context} t =
1035 "2 / 2 - x = sqrt ((2 / 2) \<up> 2 - - 8) \<or>\n- 1 * x = - (2 / 2) + - 1 * sqrt ((2 / 2) \<up> 2 - - 8)"
1036 then () else error "thm bdv_explicit2 CHANGED";
1038 val thm = @{thm bdv_explicit3};
1039 val SOME (t,asm) = rewrite_inst_ ctxt Rewrite_Ord.function_empty Rule_Set.Empty true inst thm t;
1040 if UnparseC.term @{context} t =
1041 "2 / 2 - x = sqrt ((2 / 2) \<up> 2 - - 8) \<or>\nx = - 1 * (- (2 / 2) + - 1 * sqrt ((2 / 2) \<up> 2 - - 8))"
1042 then () else error "thm bdv_explicit3 CHANGED";
1044 val thm = @{thm bdv_explicit2};
1045 val SOME (t,asm) = rewrite_inst_ ctxt Rewrite_Ord.function_empty Rule_Set.Empty true inst thm t;
1046 if UnparseC.term @{context} t =
1047 "- 1 * x = - (2 / 2) + sqrt ((2 / 2) \<up> 2 - - 8) \<or>\nx = - 1 * (- (2 / 2) + - 1 * sqrt ((2 / 2) \<up> 2 - - 8))"
1048 then () else error "thm bdv_explicit2 CHANGED";
1050 val rls = calculate_RootRat;
1051 val SOME (t,asm) = rewrite_set_ ctxt true rls t;
1052 if UnparseC.term @{context} t =
1053 "- 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))"
1054 (*"- 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*)
1055 then () else error "(-8 - 2*x + x \<up> 2 = 0), by rewriting -- ERROR INDICATES IMPROVEMENT";
1056 (*SHOULD BE: UnparseC.term @{context} = "x = - 2 | x = 4;*)
1059 "-------------------- (3 - 10*x + 3*x \<up> 2 = 0), ----------------------";
1060 "-------------------- (3 - 10*x + 3*x \<up> 2 = 0), ----------------------";
1061 "-------------------- (3 - 10*x + 3*x \<up> 2 = 0), ----------------------";
1062 "---- test the asm_rls ----";
1063 val t1 = ParseC.parse_test ctxt "0 <= (10/3/2) \<up> 2 - 1";
1064 val SOME (t,_) = rewrite_set_ ctxt false PolyEq_erls t1;
1065 val t' = UnparseC.term @{context} t;
1066 (*if t'= \<^const_name>\<open>True\<close> then ()
1067 else error "polyeq.sml: diff.behav. in 'rewrite_set_.. PolyEq_erls";*)
1069 val fmz = ["equality (3 - 10*x + 3*x \<up> 2 = 0)",
1070 "solveFor x", "solutions L"];
1072 ("PolyEq",["degree_2", "expanded", "univariate", "equation"],
1073 ["PolyEq", "complete_square"]);
1074 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
1075 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1076 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1077 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1078 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1079 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1080 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1081 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1082 (*Apply_Method ("PolyEq", "complete_square")*)
1083 val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
1085 "----------- (- 16 + 4*x + 2*x \<up> 2 = 0), --------------------------";
1086 "----------- (- 16 + 4*x + 2*x \<up> 2 = 0), --------------------------";
1087 "----------- (- 16 + 4*x + 2*x \<up> 2 = 0), --------------------------";
1088 val fmz = ["equality (- 16 + 4*x + 2*x \<up> 2 = 0)",
1089 "solveFor x", "solutions L"];
1091 ("PolyEq",["degree_2", "expanded", "univariate", "equation"],
1092 ["PolyEq", "complete_square"]);
1093 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
1094 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1095 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1096 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1097 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1098 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1099 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1100 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1101 (*Apply_Method ("PolyEq", "complete_square")*)
1102 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1103 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1104 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1105 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1106 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1107 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1108 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1109 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1110 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1111 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
1113 case f of Form' (Test_Out.FormKF (~1,EdUndef,0,Nundef,"[x = 2, x = -4]")) => () TODO
1114 | _ => error "polyeq.sml: diff.behav. in [x = 2, x = -4]";