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
5 WN030609: some expls dont work due to unfinished handling of 'expanded terms';
6 others marked with TODO have to be checked, too.
9 "-----------------------------------------------------------------";
10 "table of contents -----------------------------------------------";
11 "-----------------------------------------------------------------";
12 "------ polyeq-1.sml ---------------------------------------------";
13 "----------- tests on predicates in problems ---------------------";
14 "----------- test matching problems ------------------------------";
15 "----------- lin.eq degree_0 -------------------------------------";
16 "----------- test thm's d2_pq_formulsxx[_neg]---------------------";
17 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
18 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
19 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
20 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
21 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
22 "----------- equality (1*x + x^^^2 = 0) ----------------------------------------------------";
23 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
24 "----------- equality (x + x^^^2 = 0) ------------------------------------------------------";
25 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
26 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
27 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
28 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
29 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
30 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
31 "----------- (-8 - 2*x + x^^^2 = 0), (*Schalk 2, S.67 Nr.31.b----";
32 "----------- (-8 - 2*x + x^^^2 = 0), by rewriting ---------------";
33 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
34 "-----------------------------------------------------------------";
35 "------ polyeq-2.sml ---------------------------------------------";
36 "----------- (a*b - (a+b)*x + x^^^2 = 0), (*Schalk 2,S.68Nr.44.a*)";
37 "----------- (-64 + x^^^2 = 0), (*Schalk 2, S.66 Nr.1.a~--------*)";
38 "----------- (-147 + 3*x^^^2 = 0), (*Schalk 2, S.66 Nr.1.b------*)";
39 "----------- (3*x - 1 - (5*x - (2 - 4*x)) = -11),(*Schalk Is86Bsp5";
40 "----------- ((x+1)*(x+2) - (3*x - 2)^^^2=.. Schalk II s.68 Bsp 37";
41 "----------- rls make_polynomial_in ------------------------------";
42 "----------- interSteps ([1],Res); on Schalk Is86Bsp5-------------";
43 "----------- rls d2_polyeq_bdv_only_simplify ---------------------";
44 "-----------------------------------------------------------------";
45 "-----------------------------------------------------------------";
47 "----------- tests on predicates in problems ---------------------";
48 "----------- tests on predicates in problems ---------------------";
49 "----------- tests on predicates in problems ---------------------";
50 (* trace_rewrite:=true;
53 val t1 = (Thm.term_of o the o (parse thy)) "lhs (-8 - 2*x + x^^^2 = 0)";
54 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t1;
55 if ((term2str t) = "-8 - 2 * x + x ^^^ 2") then ()
56 else error "polyeq.sml: diff.behav. in lhs";
58 val t2 = (Thm.term_of o the o (parse thy)) "(-8 - 2*x + x^^^2) is_expanded_in x";
59 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t2;
60 if (term2str t) = "True" then ()
61 else error "polyeq.sml: diff.behav. 1 in is_expended_in";
63 val t0 = (Thm.term_of o the o (parse thy)) "(sqrt(x)) is_poly_in x";
64 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t0;
65 if (term2str t) = "False" then ()
66 else error "polyeq.sml: diff.behav. 2 in is_poly_in";
68 val t3 = (Thm.term_of o the o (parse thy)) "(-8 + (-1)*2*x + x^^^2) is_poly_in x";
69 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t3;
70 if (term2str t) = "True" then ()
71 else error "polyeq.sml: diff.behav. 3 in is_poly_in";
73 val t4 = (Thm.term_of o the o (parse thy)) "(lhs (-8 + (-1)*2*x + x^^^2 = 0)) is_expanded_in x";
74 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t4;
75 if (term2str t) = "True" then ()
76 else error "polyeq.sml: diff.behav. 4 in is_expended_in";
79 val t6 = (Thm.term_of o the o (parse thy)) "(lhs (-8 - 2*x + x^^^2 = 0)) is_expanded_in x";
80 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t6;
81 if (term2str t) = "True" then ()
82 else error "polyeq.sml: diff.behav. 5 in is_expended_in";
84 val t3 = (Thm.term_of o the o (parse thy))"((-8 - 2*x + x^^^2) has_degree_in x) = 2";
85 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t3;
86 if (term2str t) = "True" then ()
87 else error "polyeq.sml: diff.behav. in has_degree_in_in";
89 val t3 = (Thm.term_of o the o (parse thy)) "((sqrt(x)) has_degree_in x) = 2";
90 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t3;
91 if (term2str t) = "False" then ()
92 else error "polyeq.sml: diff.behav. 6 in has_degree_in_in";
94 val t4 = (Thm.term_of o the o (parse thy))
95 "((-8 - 2*x + x^^^2) has_degree_in x) = 1";
96 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t4;
97 if (term2str t) = "False" then ()
98 else error "polyeq.sml: diff.behav. 7 in has_degree_in_in";
100 val t5 = (Thm.term_of o the o (parse thy))
101 "((-8 - 2*x + x^^^2) has_degree_in x) = 2";
102 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_prls t5;
103 if (term2str t) = "True" then ()
104 else error "polyeq.sml: diff.behav. 8 in has_degree_in_in";
106 "----------- test matching problems --------------------------0---";
107 "----------- test matching problems --------------------------0---";
108 "----------- test matching problems --------------------------0---";
109 val fmz = ["equality (-8 - 2*x + x^^^2 = 0)", "solveFor x","solutions L"];
110 if match_pbl fmz (get_pbt ["expanded","univariate","equation"]) =
111 Matches' {Find = [Correct "solutions L"],
113 Given = [Correct "equality (-8 - 2 * x + x ^^^ 2 = 0)", Correct "solveFor x"],
114 Where = [Correct "matches (?a = 0) (-8 - 2 * x + x ^^^ 2 = 0)",
115 Correct "lhs (-8 - 2 * x + x ^^^ 2 = 0) is_expanded_in x"],
117 then () else error "match_pbl [expanded,univariate,equation]";
119 if match_pbl fmz (get_pbt ["degree_2","expanded","univariate","equation"]) =
120 Matches' {Find = [Correct "solutions L"],
122 Given = [Correct "equality (-8 - 2 * x + x ^^^ 2 = 0)", Correct "solveFor x"],
123 Where = [Correct "lhs (-8 - 2 * x + x ^^^ 2 = 0) has_degree_in x = 2"],
124 Relate = []} (*before WN110906 was: has_degree_in x =!= 2"]*)
125 then () else error "match_pbl [degree_2,expanded,univariate,equation]";
127 "----------- lin.eq degree_0 -------------------------------------";
128 "----------- lin.eq degree_0 -------------------------------------";
129 "----------- lin.eq degree_0 -------------------------------------";
130 "----- d0_false ------";
131 val fmz = ["equality (1 = (0::real))", "solveFor x", "solutions L"];
132 val (dI',pI',mI') = ("PolyEq",["degree_0","polynomial","univariate","equation"],
133 ["PolyEq","solve_d0_polyeq_equation"]);
134 (*=== inhibit exn WN110914: declare_constraints doesnt work with num_str ========
135 TODO: change to "equality (x + -1*x = (0::real))"
136 and search for an appropriate problem and method.
138 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
139 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
140 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
141 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
142 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
143 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
144 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
145 case f of Form' (FormKF (~1,EdUndef,0,Nundef,"[]")) => ()
146 | _ => error "polyeq.sml: diff.behav. in 1 = 0 -> []";
148 "----- d0_true ------";
149 val fmz = ["equality (0 = (0::real))", "solveFor x","solutions L"];
150 val (dI',pI',mI') = ("PolyEq",["degree_0","polynomial","univariate","equation"],
151 ["PolyEq","solve_d0_polyeq_equation"]);
152 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
153 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
154 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
155 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
156 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
157 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
158 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
159 case f of Form' (FormKF (~1,EdUndef,0,Nundef,"UniversalList")) => ()
160 | _ => error "polyeq.sml: diff.behav. in 0 = 0 -> UniversalList";
161 ============ inhibit exn WN110914 ============================================*)
163 "----------- test thm's d2_pq_formulsxx[_neg]---------------------";
164 "----------- test thm's d2_pq_formulsxx[_neg]---------------------";
165 "----------- test thm's d2_pq_formulsxx[_neg]---------------------";
166 "----- d2_pqformula1 ------!!!!";
167 val fmz = ["equality (-1/8 + (-1/4)*z + z^^^2 = (0::real))", "solveFor z","solutions L"];
169 ("Isac_Knowledge", ["pqFormula","degree_2","polynomial","univariate","equation"], ["no_met"]);
170 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
171 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
172 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
173 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
174 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
175 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
176 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
177 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*Apply_Method ["PolyEq", "solve_d2_polyeq_pq_equation"]*)
178 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
179 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
180 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
181 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
183 (*[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2] TODO sqrt*)
184 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt =..,Check_elementwise "Assumptions")*)
185 "~~~~~ fun me, args:"; val (tac, (p:pos'), _, (pt:ctree)) = (nxt, p, [], pt);
186 "~~~~~ fun Step.by_tactic, args:"; val (tac, (ptp as (pt, p))) = (tac, (pt, p));
187 val Appl m = applicable_in p pt tac;
188 val Check_elementwise' (trm1, str, (trm2, trms)) = m;
189 term2str trm1 = "[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2]";
191 term2str trm2 = "[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2]";
192 terms2str trms = "[\"lhs (-1 / 8 + -1 * (1 / 8 + sqrt (9 / 16) / 2) / 4 +\n "^
193 " (1 / 8 + sqrt (9 / 16) / 2) ^^^ 2 =\n 0) is_poly_in 1 / 8 + sqrt (9 / 16) / 2\","^
194 "\"lhs (-1 / 8 + -1 * (1 / 8 + sqrt (9 / 16) / 2) / 4 +\n (1 / 8 + sqrt (9 / 16) / 2) ^^^ 2 =\n 0) "^
195 "has_degree_in 1 / 8 + sqrt (9 / 16) / 2 =\n2\","^
196 "\"lhs (-1 / 8 + -1 * (1 / 8 + -1 * sqrt (9 / 16) / 2) / 4 +\n (1 / 8 + -1 * sqrt (9 / 16) / 2) ^^^ 2 =\n 0) is_poly_in 1 / 8 + -1 * sqrt (9 / 16) / 2\","^
197 "\"lhs (-1 / 8 + -1 * (1 / 8 + -1 * sqrt (9 / 16) / 2) / 4 +\n (1 / 8 + -1 * sqrt (9 / 16) / 2) ^^^ 2 =\n 0) has_degree_in 1 / 8 + -1 * sqrt (9 / 16) / 2 =\n2\"]";
198 (*TODO simplify assumptions (sqrt!) and check ERROR in has_degree_in*);
199 (*if*) Tactic.for_specify' m; (*false*)
200 (*loc_solve_ (mI,m) ptp;
201 WAS: not-found-in-program: NotLocatable from Term_Val1 (Const ("List...*)
202 "~~~~~ fun loc_solve_, args:"; val (m, (pt,pos)) = (m, ptp);
204 WAS: not-found-in-program: NotLocatable from Term_Val1 (Const ("List...*)
205 "~~~~~ fun Step_Solve.by_tactic , args:"; val (m, (pt, po as (p,p_))) = (m, (pt, pos));
206 e_metID = get_obj g_metID pt (par_pblobj pt p) (*false*);
207 val thy' = get_obj g_domID pt (par_pblobj pt p);
208 val (is, sc) = resume_prog thy' (p,p_) pt;
210 (*locate_input_tactic (thy',srls) m (pt,(p,p_)) (sc,d) is;
211 WAS: not-found-in-program: NotLocatable from Term_Val1 (Const ("List...*)
212 "~~~~~ fun locate_input_tactic, args:"; val () = ();
213 (*----- outcommented during cleanup of args in lucas-interpreter.sml ------------------------\\* )
214 l = [] orelse ((last_elem o fst) p = 0 andalso snd p = Res) (*false*);
215 (*WAS val Reject_Tac1 _ =(go_scan_up1 (thy',srls,scr,d) ((E,l,a,v,S,b), [(m,EmptyMout,pt,p,[])]) )
216 ... Accept_Tac1 ... is correct*)
217 "~~~~~ and go_scan_up1, args:"; val ((ys as (_,_,_,Prog sc,_)), ((E,l,a,v,S,b),ss)) =
218 ((thy',ctxt,srls,scr,d), ((E,l,a,v,S,b), [(m,EmptyMout,pt,p,[])]));
219 1 < length l (*true*);
220 val up = drop_last l;
221 term2str (at_location up sc);
223 (*WAS val Term_Val1 _ = scan_up1 ys ((E,up,a,v,S,b),ss) (at_location up sc)
224 ... ???? ... is correct*)
225 "~~~~~ fun scan_up1, args:"; val ((ys as (y,ctxt,s,Prog sc,d)), (is as (E,l,a,v,S,b),ss),
226 (Const ("HOL.Let",_) $ _)) = (ys, ((E,up,a,v,S,b),ss:step list), (at_location up sc));
227 val l = drop_last l; (*comes from e, goes to Abs*)
228 val (Const ("HOL.Let",_) $ e $ (Abs (i,T,body))) = at_location l sc;
229 val i = mk_Free (i, T);
230 val E = Env.update E (i, v);
231 (*Type error ...: Can't unify _a to pos * pos_ (Incompatible types)*)
232 val [(tac_, mout, ctree, pos', xxx)] = ss;
233 val ss = [(tac_, mout, ctree, pos', []:(pos * pos_) list)];
234 (*WAS val Reject_Tac1 iss = scan_dn1 (((y,s),d),ORundef) ((E, l@[R,D], a,v,S,b),ss) body
235 ... Accept_Tac1 ... is correct*)
236 "~~~~~ fun scan_dn1, args:"; val ((((thy',sr),d),ap), (is as (E,l,a,v,S,b), (m,_,pt,(p,p_),c)::ss), t) =
237 ((((y,s),d),ORundef), ((E, l@[R,D], a,v,S,b),ss), body);
238 val (Program.Tac stac, a') = check_leaf "locate" thy' sr (E, (a, v)) t
239 val ctxt = get_ctxt pt (p,p_)
240 val p' = lev_on p : pos;
241 (* WAS val Not_Associated = associate pt d (m, stac)
242 ... Associated ... is correct*)
243 "~~~~~ fun associate, args:"; val (pt, _, (m as Check_elementwise' (consts,_,(consts_chkd,_))),
244 (Const ("Prog_Tac.Check'_elementwise",_) $ consts' $ _)) = (pt, d, m, stac);
247 if consts = consts' (*WAS false*) then () else error "Check_elementwise changed";
248 (*[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2] TODO sqrt*)
249 ( *----- outcommented during cleanup of args in lucas-interpreter.sml ------------------------//*)
251 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
252 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
253 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
254 "----- d2_pqformula1_neg ------";
255 val fmz = ["equality (2 +(-1)*x + x^^^2 = (0::real))", "solveFor x","solutions L"];
256 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_pq_equation"]);
257 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
258 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
259 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
260 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
261 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
262 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
264 ([1],Res) False Or_to_List)*)
265 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
267 ([2],Res) [] Check_elementwise "Assumptions"*)
268 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
269 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
270 val asm = Ctree.get_assumptions pt p;
271 if f2str f = "[]" andalso
272 terms2str asm = "[\"lhs (2 + -1 * x + x ^^^ 2 = 0) is_poly_in x\"," ^
273 "\"lhs (2 + -1 * x + x ^^^ 2 = 0) has_degree_in x = 2\"]" then ()
274 else error "polyeq.sml: diff.behav. in 2 +(-1)*x + x^^^2 = 0";
276 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
277 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
278 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
279 "----- d2_pqformula2 ------";
280 val fmz = ["equality (-2 +(-1)*x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
281 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
282 ["PolyEq","solve_d2_polyeq_pq_equation"]);
284 val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
285 val (p,_,f,nxt,_,pt) = me (mI,m) p [] EmptyPtree;*)
286 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
287 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
288 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
289 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
290 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
291 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
293 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
294 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
295 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
296 case f of FormKF "[x = 2, x = -1]" => ()
297 | _ => error "polyeq.sml: diff.behav. in -2 + (-1)*x + x^2 = 0 -> [x = 2, x = -1]";
300 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
301 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
302 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
303 "----- d2_pqformula3 ------";
305 val fmz = ["equality (-2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
306 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
307 ["PolyEq","solve_d2_polyeq_pq_equation"]);
308 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
309 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
310 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
311 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
312 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
313 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
315 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
316 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
317 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
318 case f of FormKF "[x = 1, x = -2]" => ()
319 | _ => error "polyeq.sml: diff.behav. in -2 + x + x^2 = 0-> [x = 1, x = -2]";
322 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
323 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
324 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
325 "----- d2_pqformula3_neg ------";
326 val fmz = ["equality (2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
327 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
328 ["PolyEq","solve_d2_polyeq_pq_equation"]);
329 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
330 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
331 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
332 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
333 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
334 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
336 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
337 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
338 "TODO 2 + x + x^^^2 = 0";
339 "TODO 2 + x + x^^^2 = 0";
340 "TODO 2 + x + x^^^2 = 0";
342 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
343 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
344 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
345 "----- d2_pqformula4 ------";
346 val fmz = ["equality (-2 + x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
347 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
348 ["PolyEq","solve_d2_polyeq_pq_equation"]);
349 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
350 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
351 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
352 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
353 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
354 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
355 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
356 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
357 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
358 case f of FormKF "[x = 1, x = -2]" => ()
359 | _ => error "polyeq.sml: diff.behav. in -2 + x + 1*x^^^2 = 0 -> [x = 1, x = -2]";
361 "----------- equality (1*x + x^^^2 = 0) ----------------------------------------------------";
362 "----------- equality (1*x + x^^^2 = 0) ----------------------------------------------------";
363 "----------- equality (1*x + x^^^2 = 0) ----------------------------------------------------";
364 "----- d2_pqformula5 ------";
365 val fmz = ["equality (1*x + x^^^2 = 0)", "solveFor x","solutions L"];
366 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
367 ["PolyEq","solve_d2_polyeq_pq_equation"]);
368 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
369 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
370 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
371 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
372 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
373 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
374 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
375 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
376 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
377 case f of FormKF "[x = 0, x = -1]" => ()
378 | _ => error "polyeq.sml: diff.behav. in 1*x + x^2 = 0 -> [x = 0, x = -1]";
380 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
381 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
382 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
383 "----- d2_pqformula6 ------";
384 val fmz = ["equality (1*x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
385 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
386 ["PolyEq","solve_d2_polyeq_pq_equation"]);
387 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
388 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
389 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
390 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
391 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
392 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
393 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
394 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
395 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
396 case f of FormKF "[x = 0, x = -1]" => ()
397 | _ => error "polyeq.sml: diff.behav. in 1*x + 1*x^2 = 0 -> [x = 0, x = -1]";
399 "----------- equality (x + x^^^2 = 0) ------------------------------------------------------";
400 "----------- equality (x + x^^^2 = 0) ------------------------------------------------------";
401 "----------- equality (x + x^^^2 = 0) ------------------------------------------------------";
402 "----- d2_pqformula7 ------";
404 val fmz = ["equality ( x + x^^^2 = 0)", "solveFor x","solutions L"];
405 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
406 ["PolyEq","solve_d2_polyeq_pq_equation"]);
407 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
408 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
409 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
410 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
411 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
412 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
413 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
414 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
415 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
416 case f of FormKF "[x = 0, x = -1]" => ()
417 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
419 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
420 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
421 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
422 "----- d2_pqformula8 ------";
423 val fmz = ["equality (x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
424 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
425 ["PolyEq","solve_d2_polyeq_pq_equation"]);
426 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
427 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
428 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
429 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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;
435 case f of FormKF "[x = 0, x = -1]" => ()
436 | _ => error "polyeq.sml: diff.behav. in x + 1*x^2 = 0 -> [x = 0, x = -1]";
438 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
439 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
440 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
441 "----- d2_pqformula9 ------";
442 val fmz = ["equality (-4 + x^^^2 = 0)", "solveFor x","solutions L"];
443 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
444 ["PolyEq","solve_d2_polyeq_pq_equation"]);
445 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
446 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
447 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
448 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
449 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
450 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
451 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
452 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
453 case f of FormKF "[x = 2, x = -2]" => ()
454 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = -2]";
457 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
458 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
459 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
460 "----- d2_pqformula9_neg ------";
461 val fmz = ["equality (4 + 1*x^^^2 = 0)", "solveFor x","solutions L"];
462 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
463 ["PolyEq","solve_d2_polyeq_pq_equation"]);
464 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
465 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
466 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
467 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
468 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
469 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
470 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
471 "TODO 4 + 1*x^^^2 = 0";
472 "TODO 4 + 1*x^^^2 = 0";
473 "TODO 4 + 1*x^^^2 = 0";
475 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
476 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
477 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
478 val fmz = ["equality (-1 +(-1)*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
479 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
480 ["PolyEq","solve_d2_polyeq_abc_equation"]);
481 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
482 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
483 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
484 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
485 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
486 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
487 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
488 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
489 case f of FormKF "[x = 1, x = -1 / 2]" => ()
490 | _ => error "polyeq.sml: diff.behav. in -1 + (-1)*x + 2*x^2 = 0 -> [x = 1, x = -1/2]";
492 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
493 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
494 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
495 val fmz = ["equality (1 +(-1)*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
496 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
497 ["PolyEq","solve_d2_polyeq_abc_equation"]);
498 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
499 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
500 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
501 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
507 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
508 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
511 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
512 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
513 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
515 val fmz = ["equality (-1 + x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
516 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
517 ["PolyEq","solve_d2_polyeq_abc_equation"]);
518 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
519 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
520 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
522 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
523 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
524 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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;
527 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
528 case f of FormKF "[x = 1 / 2, x = -1]" => ()
529 | _ => error "polyeq.sml: diff.behav. in -1 + x + 2*x^2 = 0 -> [x = 1/2, x = -1]";
532 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
533 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
534 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
535 val fmz = ["equality (1 + x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
536 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
537 ["PolyEq","solve_d2_polyeq_abc_equation"]);
538 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
539 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
540 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
542 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
543 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
544 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
545 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
546 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
547 "TODO 1 + x + 2*x^^^2 = 0";
548 "TODO 1 + x + 2*x^^^2 = 0";
549 "TODO 1 + x + 2*x^^^2 = 0";
552 val fmz = ["equality (-2 + 1*x + x^^^2 = 0)", "solveFor x","solutions L"];
553 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
554 ["PolyEq","solve_d2_polyeq_abc_equation"]);
555 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
556 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
557 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
558 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
559 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
560 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
561 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
562 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
563 case f of FormKF "[x = 1, x = -2]" => ()
564 | _ => error "polyeq.sml: diff.behav. in -2 + 1*x + x^2 = 0 -> [x = 1, x = -2]";
566 val fmz = ["equality ( 2 + 1*x + x^^^2 = 0)", "solveFor x","solutions L"];
567 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
568 ["PolyEq","solve_d2_polyeq_abc_equation"]);
569 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
570 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
573 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
574 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
575 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
576 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
577 "TODO 2 + 1*x + x^^^2 = 0";
578 "TODO 2 + 1*x + x^^^2 = 0";
579 "TODO 2 + 1*x + x^^^2 = 0";
582 val fmz = ["equality (-2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
583 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
584 ["PolyEq","solve_d2_polyeq_abc_equation"]);
585 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
586 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
592 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
593 case f of FormKF "[x = 1, x = -2]" => ()
594 | _ => error "polyeq.sml: diff.behav. in -2 + x + x^2 = 0 -> [x = 1, x = -2]";
596 val fmz = ["equality ( 2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
597 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
598 ["PolyEq","solve_d2_polyeq_abc_equation"]);
599 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
600 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
603 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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;
607 "TODO 2 + x + x^^^2 = 0";
608 "TODO 2 + x + x^^^2 = 0";
609 "TODO 2 + x + x^^^2 = 0";
612 val fmz = ["equality (-8 + 2*x^^^2 = 0)", "solveFor x","solutions L"];
613 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
614 ["PolyEq","solve_d2_polyeq_abc_equation"]);
615 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
616 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
617 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
618 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
619 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
620 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
621 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
622 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
623 case f of FormKF "[x = 2, x = -2]" => ()
624 | _ => error "polyeq.sml: diff.behav. in -8 + 2*x^2 = 0 -> [x = 2, x = -2]";
626 val fmz = ["equality ( 8+ 2*x^^^2 = 0)", "solveFor x","solutions L"];
627 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
628 ["PolyEq","solve_d2_polyeq_abc_equation"]);
629 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
630 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
631 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
632 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
633 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
634 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
635 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
636 "TODO 8+ 2*x^^^2 = 0";
637 "TODO 8+ 2*x^^^2 = 0";
638 "TODO 8+ 2*x^^^2 = 0";
641 val fmz = ["equality (-4 + x^^^2 = 0)", "solveFor x","solutions L"];
642 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_abc_equation"]);
643 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
644 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
650 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
651 case f of FormKF "[x = 2, x = -2]" => ()
652 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = -2]";
655 val fmz = ["equality ( 4+ x^^^2 = 0)", "solveFor x","solutions L"];
656 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_abc_equation"]);
657 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
658 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
659 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
660 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
661 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 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;
669 val fmz = ["equality (2*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
670 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
671 ["PolyEq","solve_d2_polyeq_abc_equation"]);
672 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
673 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
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 case f of FormKF "[x = 0, x = -1]" => ()
681 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
683 val fmz = ["equality (1*x + x^^^2 = 0)", "solveFor x","solutions L"];
684 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
685 ["PolyEq","solve_d2_polyeq_abc_equation"]);
686 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
687 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
688 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
689 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
690 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
691 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
692 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
693 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
694 case f of FormKF "[x = 0, x = -1]" => ()
695 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
698 val fmz = ["equality (x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
699 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
700 ["PolyEq","solve_d2_polyeq_abc_equation"]);
701 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
702 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
705 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
706 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
707 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
708 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
709 case f of FormKF "[x = 0, x = -1 / 2]" => ()
710 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1 / 2]";
713 val fmz = ["equality (x + x^^^2 = 0)", "solveFor x","solutions L"];
714 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
715 ["PolyEq","solve_d2_polyeq_abc_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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
723 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
724 case f of FormKF "[x = 0, x = -1]" => ()
725 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
728 "----------- (-8 - 2*x + x^^^2 = 0), (*Schalk 2, S.67 Nr.31.b----";
729 "----------- (-8 - 2*x + x^^^2 = 0), (*Schalk 2, S.67 Nr.31.b----";
730 "----------- (-8 - 2*x + x^^^2 = 0), (*Schalk 2, S.67 Nr.31.b----";
731 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
732 see --- val rls = calculate_RootRat > calculate_Rational ---
733 calculate_RootRat was a TODO with 2002, requires re-design.
734 see also --- (-8 - 2*x + x^^^2 = 0), by rewriting --- below
736 val fmz = ["equality (-8 - 2*x + x^^^2 = 0)", (*Schalk 2, S.67 Nr.31.b*)
737 "solveFor x","solutions L"];
739 ("PolyEq",["degree_2","expanded","univariate","equation"],
740 ["PolyEq","complete_square"]);
741 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
742 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;
746 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
747 (*Apply_Method ("PolyEq","complete_square")*)
748 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
749 (*"-8 - 2 * x + x ^^^ 2 = 0", nxt = Rewrite_Set_Inst ... "complete_square*)
750 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
751 (*"-8 + (2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2", nxt = Rewrite("square_explicit1"*)
752 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
753 (*"(2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2 - -8" nxt = Rewrite("root_plus_minus*)
754 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
755 (*"2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |
756 2 / 2 - x = - sqrt ((2 / 2) ^^^ 2 - -8)" nxt = Rewr_Inst("bdv_explicit2"*)
757 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
758 (*"2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |
759 -1*x = - (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8)"nxt = R_Inst("bdv_explt2"*)
760 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
761 (*"-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |
762 -1 * x = (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))"nxt = bdv_explicit3*)
763 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
764 (*"-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |
765 x = -1 * (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))" nxt = bdv_explicit3*)
766 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
767 (*"x = -1 * (- (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8)) |
768 x = -1 * (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))"nxt = calculate_Rational
769 NOT IMPLEMENTED SINCE 2002 ------------------------------^^^^^^^^^^^^^^^^^^*)
770 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
771 (*"x = -2 | x = 4" nxt = Or_to_List*)
772 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
773 (*"[x = -2, x = 4]" nxt = Check_Postcond*)
774 val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
776 case f of Form' (FormKF (~1,EdUndef,0,Nundef,"[x = -2, x = 4]")) => () TODO
777 | _ => error "polyeq.sml: diff.behav. in [x = -2, x = 4]";
780 "[x = -1 * -1 + -1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8),\n x = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))]"
781 (*"[x = -1 * -1 + -1 * sqrt (1 ^^^ 2 - -8),\n x = -1 * -1 + -1 * (-1 * sqrt (1 ^^^ 2 - -8))]"*)
782 then () else error "polyeq.sml corrected?behav. in [x = -2, x = 4]";
785 "----------- (-8 - 2*x + x^^^2 = 0), by rewriting ---------------";
786 "----------- (-8 - 2*x + x^^^2 = 0), by rewriting ---------------";
787 "----------- (-8 - 2*x + x^^^2 = 0), by rewriting ---------------";
788 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
789 see --- val rls = calculate_RootRat > calculate_Rational ---*)
790 val thy = @{theory PolyEq};
791 val ctxt = Proof_Context.init_global thy;
792 val inst = [((the o (parseNEW ctxt)) "bdv::real", (the o (parseNEW ctxt)) "x::real")];
793 val t = (the o (parseNEW ctxt)) "-8 - 2*x + x^^^2 = (0::real)";
795 val rls = complete_square;
796 val SOME (t,asm) = rewrite_set_inst_ thy true inst rls t;
797 term2str t = "-8 + (2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2";
799 val thm = num_str @{thm square_explicit1};
800 val SOME (t,asm) = rewrite_ thy dummy_ord Erls true thm t;
801 term2str t = "(2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2 - -8";
803 val thm = num_str @{thm root_plus_minus};
804 val SOME (t,asm) = rewrite_ thy dummy_ord PolyEq_erls true thm t;
805 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
806 "\n2 / 2 - x = -1 * sqrt ((2 / 2) ^^^ 2 - -8)";
808 (*the thm bdv_explicit2* here required to be constrained to ::real*)
809 val thm = num_str @{thm bdv_explicit2};
810 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
811 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
812 "\n-1 * x = - (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8)";
814 val thm = num_str @{thm bdv_explicit3};
815 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
816 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
817 "\nx = -1 * (- (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8))";
819 val thm = num_str @{thm bdv_explicit2};
820 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
821 term2str t = "-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |"^
822 "\nx = -1 * (- (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8))";
824 val rls = calculate_RootRat;
825 val SOME (t,asm) = rewrite_set_ thy true rls t;
827 "-1 * x = -1 + sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8) \<or>\nx = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))"
828 (*"-1 * x = -1 + sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8) |\nx = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))"..isabisac15*)
829 then () else error "(-8 - 2*x + x^^^2 = 0), by rewriting -- ERROR INDICATES IMPROVEMENT";
830 (*SHOULD BE: term2str = "x = -2 | x = 4;*)
833 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
834 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
835 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
836 "---- test the erls ----";
837 val t1 = (Thm.term_of o the o (parse thy)) "0 <= (10/3/2)^^^2 - 1";
838 val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_erls t1;
840 (*if t'= "HOL.True" then ()
841 else error "polyeq.sml: diff.behav. in 'rewrite_set_.. PolyEq_erls";*)
843 val fmz = ["equality (3 - 10*x + 3*x^^^2 = 0)",
844 "solveFor x","solutions L"];
846 ("PolyEq",["degree_2","expanded","univariate","equation"],
847 ["PolyEq","complete_square"]);
848 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
849 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
850 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
851 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
852 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
853 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
854 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
855 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
856 (*Apply_Method ("PolyEq","complete_square")*)
857 val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
859 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
860 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
861 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
862 val fmz = ["equality (-16 + 4*x + 2*x^^^2 = 0)",
863 "solveFor x","solutions L"];
865 ("PolyEq",["degree_2","expanded","univariate","equation"],
866 ["PolyEq","complete_square"]);
867 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
868 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
869 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
870 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
871 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
872 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
873 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
874 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
875 (*Apply_Method ("PolyEq","complete_square")*)
876 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
877 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
878 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
879 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
880 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
881 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
882 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
883 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
884 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
885 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
887 case f of Form' (FormKF (~1,EdUndef,0,Nundef,"[x = 2, x = -4]")) => () TODO
888 | _ => error "polyeq.sml: diff.behav. in [x = 2, x = -4]";