test/Tools/isac/Knowledge/polyeq-1.sml
author Walther Neuper <walther.neuper@jku.at>
Sat, 16 Nov 2019 17:46:08 +0100
changeset 59705 be30fa5a7b76
parent 59697 dd85e03d47e6
child 59712 be2ffb0248de
permissions -rw-r--r--
lucin: unify scanning to tactics
     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.
     7 *)
     8 
     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 "-----------------------------------------------------------------";
    46 
    47 "----------- tests on predicates in problems ---------------------";
    48 "----------- tests on predicates in problems ---------------------";
    49 "----------- tests on predicates in problems ---------------------";
    50 (* trace_rewrite:=true;
    51  trace_rewrite:=false;
    52 *)
    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";
    57 
    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";
    62 
    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";
    67 
    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";
    72 
    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";
    77 
    78 
    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";
    83  
    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";
    88 
    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";
    93 
    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";
    99 
   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";
   105 
   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"], 
   112             With = [], 
   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"], 
   116             Relate = []}
   117 then () else error "match_pbl [expanded,univariate,equation]";
   118 
   119 if match_pbl fmz (get_pbt ["degree_2","expanded","univariate","equation"]) =
   120   Matches' {Find = [Correct "solutions L"], 
   121             With = [], 
   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]";
   126 
   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.
   137 
   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 -> []";
   147 
   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 ============================================*)
   162 
   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"];
   168 val (dI',pI',mI') =
   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;         
   182 
   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 locatetac, args:"; val (tac, (ptp as (pt, p))) = (tac, (pt, p));
   187 val (mI,m) = mk_tac'_ tac;
   188 val Appl m = applicable_in p pt m;
   189 val Check_elementwise' (trm1, str, (trm2, trms)) = m;
   190 term2str trm1 = "[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2]";
   191 str = "Assumptions";
   192 term2str trm2 = "[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2]";
   193 terms2str trms = "[\"lhs (-1 / 8 + -1 * (1 / 8 + sqrt (9 / 16) / 2) / 4 +\n "^
   194   "    (1 / 8 + sqrt (9 / 16) / 2) ^^^ 2 =\n     0) is_poly_in 1 / 8 + sqrt (9 / 16) / 2\","^
   195   "\"lhs (-1 / 8 + -1 * (1 / 8 + sqrt (9 / 16) / 2) / 4 +\n     (1 / 8 + sqrt (9 / 16) / 2) ^^^ 2 =\n     0) "^
   196       "has_degree_in 1 / 8 + sqrt (9 / 16) / 2 =\n2\","^
   197   "\"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\","^
   198   "\"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\"]";
   199 (*TODO simplify assumptions (sqrt!) and check ERROR in has_degree_in*);
   200 member op = specsteps mI (*false*);
   201 (*loc_solve_ (mI,m) ptp;
   202   WAS: not-found-in-script: NotLocatable from Skip1 (Const ("List...*)
   203 "~~~~~ fun loc_solve_, args:"; val (m, (pt,pos)) = ((mI,m), ptp);
   204 (*solve m (pt, pos);
   205   WAS: not-found-in-script: NotLocatable from Skip1 (Const ("List...*)
   206 "~~~~~ fun solve, args:"; val ((mI,m), (pt, po as (p,p_))) = (m, (pt, pos));
   207 e_metID = get_obj g_metID pt (par_pblobj pt p) (*false*);
   208         val thy' = get_obj g_domID pt (par_pblobj pt p);
   209 	        val (srls, is, sc) = from_pblobj_or_detail' thy' (p,p_) pt;
   210 		        val d = e_rls;
   211 (*locate_input_tactic (thy',srls) m  (pt,(p,p_)) (sc,d) is;
   212   WAS: not-found-in-script: NotLocatable from Skip1 (Const ("List...*)
   213 "~~~~~ fun locate_input_tactic, args:"; val () = ();
   214 (*----- outcommented during cleanup of args in lucas-interpreter.sml ------------------------\\* )
   215 l = [] orelse ((last_elem o fst) p = 0 andalso snd p = Res) (*false*);
   216 (*WAS val NasApp _ =(go_scan_up1 (thy',srls,scr,d) ((E,l,a,v,S,b), [(m,EmptyMout,pt,p,[])]) )
   217   ... Assoc ... is correct*)
   218 "~~~~~ and go_scan_up1, args:"; val ((ys as (_,_,_,Prog sc,_)), ((E,l,a,v,S,b),ss)) =
   219    ((thy',ctxt,srls,scr,d), ((E,l,a,v,S,b), [(m,EmptyMout,pt,p,[])]));
   220 1 < length l (*true*);
   221 val up = drop_last l;
   222   term2str (go up sc);
   223   (go up sc);
   224 (*WAS val Skip1 _ = scan_up1 ys ((E,up,a,v,S,b),ss) (go up sc)
   225       ... ???? ... is correct*)
   226 "~~~~~ fun scan_up1, args:"; val ((ys as (y,ctxt,s,Prog sc,d)), (is as (E,l,a,v,S,b),ss), 
   227 	   (Const ("HOL.Let",_) $ _)) = (ys, ((E,up,a,v,S,b),ss:step list), (go up sc));
   228       val l = drop_last l; (*comes from e, goes to Abs*)
   229       val (Const ("HOL.Let",_) $ e $ (Abs (i,T,body))) = go l sc;
   230       val i = mk_Free (i, T);
   231       val E = Env.update E (i, v);
   232 (*Type error ...: Can't unify _a to pos * pos_ (Incompatible types)*)
   233 val [(tac_, mout, ctree, pos', xxx)] = ss;
   234 val ss = [(tac_, mout, ctree, pos', []:(pos * pos_) list)];
   235 (*WAS val NasApp iss = scan_dn1 (((y,s),d),Aundef) ((E, l@[R,D], a,v,S,b),ss) body
   236       ... Assoc ... is correct*)
   237 "~~~~~ fun scan_dn1, args:"; val ((((thy',sr),d),ap), (is as (E,l,a,v,S,b), (m,_,pt,(p,p_),c)::ss), t) =
   238      ((((y,s),d),Aundef), ((E, l@[R,D], a,v,S,b),ss), body);
   239 val (a', STac stac) = handle_leaf "locate" thy' sr (E, (a, v)) t
   240              val ctxt = get_ctxt pt (p,p_)
   241              val p' = lev_on p : pos;
   242 (* WAS val NotAss = associate pt d (m, stac)
   243       ... Ass ... is correct*)
   244 "~~~~~ fun associate, args:"; val (pt, _, (m as Check_elementwise' (consts,_,(consts_chkd,_))),
   245     (Const ("Prog_Tac.Check'_elementwise",_) $ consts' $ _)) = (pt, d, m, stac);
   246 term2str consts;
   247 term2str consts';
   248 if consts = consts' (*WAS false*) then () else error "Check_elementwise changed";
   249 (*[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2] TODO sqrt*)
   250 ( *----- outcommented during cleanup of args in lucas-interpreter.sml ------------------------//*)
   251 
   252 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
   253 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
   254 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
   255 "----- d2_pqformula1_neg ------";
   256 val fmz = ["equality (2 +(-1)*x + x^^^2 = (0::real))", "solveFor x","solutions L"];
   257 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_pq_equation"]);
   258 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   259 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;
   263 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   264 (*### or2list False
   265   ([1],Res)  False   Or_to_List)*)
   266 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   267 (*### or2list False                           
   268   ([2],Res)  []      Check_elementwise "Assumptions"*)
   269 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   270 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   271 val asm = get_assumptions_ pt p;
   272 if f2str f = "[]" andalso 
   273   terms2str asm = "[\"lhs (2 + -1 * x + x ^^^ 2 = 0) is_poly_in x\"," ^
   274     "\"lhs (2 + -1 * x + x ^^^ 2 = 0) has_degree_in x = 2\"]" then ()
   275 else error "polyeq.sml: diff.behav. in 2 +(-1)*x + x^^^2 = 0";
   276 
   277 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
   278 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
   279 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
   280 "----- d2_pqformula2 ------";
   281 val fmz = ["equality (-2 +(-1)*x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   282 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   283                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   284 (*val p = e_pos'; 
   285 val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
   286 val (p,_,f,nxt,_,pt) = me (mI,m) p [] EmptyPtree;*)
   287 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   288 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;
   292 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   293 
   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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   296 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   297 case f of FormKF "[x = 2, x = -1]" => ()
   298 	 | _ => error "polyeq.sml: diff.behav. in -2 + (-1)*x + x^2 = 0 -> [x = 2, x = -1]";
   299 
   300 
   301 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
   302 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
   303 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
   304 "----- d2_pqformula3 ------";
   305 (*EP-9*)
   306 val fmz = ["equality (-2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   307 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   308                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   309 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   310 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;
   314 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   315 
   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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   318 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   319 case f of FormKF "[x = 1, x = -2]" => ()
   320 	 | _ => error "polyeq.sml: diff.behav. in  -2 + x + x^2 = 0-> [x = 1, x = -2]";
   321 
   322 
   323 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
   324 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
   325 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
   326 "----- d2_pqformula3_neg ------";
   327 val fmz = ["equality (2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   328 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   329                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   330 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   331 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;
   335 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   336 
   337 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   338 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   339 "TODO 2 + x + x^^^2 = 0";
   340 "TODO 2 + x + x^^^2 = 0";
   341 "TODO 2 + x + x^^^2 = 0";
   342 
   343 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
   344 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
   345 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
   346 "----- d2_pqformula4 ------";
   347 val fmz = ["equality (-2 + x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   348 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   349                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   350 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   351 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   358 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   359 case f of FormKF "[x = 1, x = -2]" => ()
   360 	 | _ => error "polyeq.sml: diff.behav. in  -2 + x + 1*x^^^2 = 0 -> [x = 1, x = -2]";
   361 
   362 "----------- equality (1*x +   x^^^2 = 0) ----------------------------------------------------";
   363 "----------- equality (1*x +   x^^^2 = 0) ----------------------------------------------------";
   364 "----------- equality (1*x +   x^^^2 = 0) ----------------------------------------------------";
   365 "----- d2_pqformula5 ------";
   366 val fmz = ["equality (1*x +   x^^^2 = 0)", "solveFor x","solutions L"];
   367 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   368                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   369 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   370 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   377 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   378 case f of FormKF "[x = 0, x = -1]" => ()
   379 	 | _ => error "polyeq.sml: diff.behav. in  1*x +   x^2 = 0 -> [x = 0, x = -1]";
   380 
   381 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
   382 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
   383 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
   384 "----- d2_pqformula6 ------";
   385 val fmz = ["equality (1*x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   386 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   387                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   388 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   389 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   396 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   397 case f of FormKF "[x = 0, x = -1]" => ()
   398 	 | _ => error "polyeq.sml: diff.behav. in  1*x + 1*x^2 = 0 -> [x = 0, x = -1]";
   399 
   400 "----------- equality (x +   x^^^2 = 0) ------------------------------------------------------";
   401 "----------- equality (x +   x^^^2 = 0) ------------------------------------------------------";
   402 "----------- equality (x +   x^^^2 = 0) ------------------------------------------------------";
   403 "----- d2_pqformula7 ------";
   404 (*EP-10*)
   405 val fmz = ["equality (  x +   x^^^2 = 0)", "solveFor x","solutions L"];
   406 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   407                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   408 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   409 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   416 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   417 case f of FormKF "[x = 0, x = -1]" => ()
   418 	 | _ => error "polyeq.sml: diff.behav. in  x + x^2 = 0 -> [x = 0, x = -1]";
   419 
   420 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
   421 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
   422 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
   423 "----- d2_pqformula8 ------";
   424 val fmz = ["equality (x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   425 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   426                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   427 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   428 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   435 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   436 case f of FormKF "[x = 0, x = -1]" => ()
   437 	 | _ => error "polyeq.sml: diff.behav. in  x + 1*x^2 = 0 -> [x = 0, x = -1]";
   438 
   439 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
   440 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
   441 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
   442 "----- d2_pqformula9 ------";
   443 val fmz = ["equality (-4 + x^^^2 = 0)", "solveFor x","solutions L"];
   444 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   445                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   446 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   447 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   454 case f of FormKF "[x = 2, x = -2]" => ()
   455 	 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = -2]";
   456 
   457 
   458 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
   459 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
   460 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
   461 "----- d2_pqformula9_neg ------";
   462 val fmz = ["equality (4 + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   463 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   464                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   465 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   466 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   471 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   472 "TODO 4 + 1*x^^^2 = 0";
   473 "TODO 4 + 1*x^^^2 = 0";
   474 "TODO 4 + 1*x^^^2 = 0";
   475 
   476 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
   477 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
   478 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
   479 val fmz = ["equality (-1 +(-1)*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   480 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   481                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   482 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   483 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   490 case f of FormKF "[x = 1, x = -1 / 2]" => ()
   491 	 | _ => error "polyeq.sml: diff.behav. in -1 + (-1)*x + 2*x^2 = 0 -> [x = 1, x = -1/2]";
   492 
   493 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
   494 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
   495 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
   496 val fmz = ["equality (1 +(-1)*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   497 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   498                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   499 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   500 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;
   502 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   503 
   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;
   507 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
   508 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
   509 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
   510 
   511 
   512 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
   513 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
   514 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
   515 (*EP-11*)
   516 val fmz = ["equality (-1 + x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   517 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   518                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   519 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   520 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   521 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   522 
   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;
   526 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   527 
   528 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   529 case f of FormKF "[x = 1 / 2, x = -1]" => ()
   530 	 | _ => error "polyeq.sml: diff.behav. in -1 + x + 2*x^2 = 0 -> [x = 1/2, x = -1]";
   531 
   532 
   533 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
   534 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
   535 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
   536 val fmz = ["equality (1 + x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   537 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   538                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   539 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   540 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   541 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   542 
   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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   547 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   548 "TODO 1 + x + 2*x^^^2 = 0";
   549 "TODO 1 + x + 2*x^^^2 = 0";
   550 "TODO 1 + x + 2*x^^^2 = 0";
   551 
   552 
   553 val fmz = ["equality (-2 + 1*x + x^^^2 = 0)", "solveFor x","solutions L"];
   554 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   555                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   556 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   557 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   564 case f of FormKF "[x = 1, x = -2]" => ()
   565 	 | _ => error "polyeq.sml: diff.behav. in -2 + 1*x + x^2 = 0 -> [x = 1, x = -2]";
   566 
   567 val fmz = ["equality ( 2 + 1*x + x^^^2 = 0)", "solveFor x","solutions L"];
   568 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   569                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   570 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   571 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   577 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   578 "TODO 2 + 1*x + x^^^2 = 0";
   579 "TODO 2 + 1*x + x^^^2 = 0";
   580 "TODO 2 + 1*x + x^^^2 = 0";
   581 
   582 (*EP-12*)
   583 val fmz = ["equality (-2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   584 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   585                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   586 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   587 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   594 case f of FormKF "[x = 1, x = -2]" => ()
   595 	 | _ => error "polyeq.sml: diff.behav. in -2 + x + x^2 = 0 -> [x = 1, x = -2]";
   596 
   597 val fmz = ["equality ( 2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   598 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   599                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   600 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   601 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   607 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   608 "TODO 2 + x + x^^^2 = 0";
   609 "TODO 2 + x + x^^^2 = 0";
   610 "TODO 2 + x + x^^^2 = 0";
   611 
   612 (*EP-13*)
   613 val fmz = ["equality (-8 + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   614 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   615                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   616 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   617 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   624 case f of FormKF "[x = 2, x = -2]" => ()
   625 	 | _ => error "polyeq.sml: diff.behav. in -8 + 2*x^2 = 0 -> [x = 2, x = -2]";
   626 
   627 val fmz = ["equality ( 8+ 2*x^^^2 = 0)", "solveFor x","solutions L"];
   628 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   629                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   630 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   631 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   637 "TODO 8+ 2*x^^^2 = 0";
   638 "TODO 8+ 2*x^^^2 = 0";
   639 "TODO 8+ 2*x^^^2 = 0";
   640 
   641 (*EP-14*)
   642 val fmz = ["equality (-4 + x^^^2 = 0)", "solveFor x","solutions L"];
   643 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_abc_equation"]);
   644 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   645 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   646 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   647 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   648 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   649 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   650 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   651 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   652 case f of FormKF "[x = 2, x = -2]" => ()
   653 	 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = -2]";
   654 
   655 
   656 val fmz = ["equality ( 4+ x^^^2 = 0)", "solveFor x","solutions L"];
   657 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_abc_equation"]);
   658 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   659 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;
   664 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   665 "TODO 4+ x^^^2 = 0";
   666 "TODO 4+ x^^^2 = 0";
   667 "TODO 4+ x^^^2 = 0";
   668 
   669 (*EP-15*)
   670 val fmz = ["equality (2*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   671 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   672                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   673 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   674 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   681 case f of FormKF "[x = 0, x = -1]" => ()
   682 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
   683 
   684 val fmz = ["equality (1*x + x^^^2 = 0)", "solveFor x","solutions L"];
   685 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   686                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   687 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   688 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   695 case f of FormKF "[x = 0, x = -1]" => ()
   696 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
   697 
   698 (*EP-16*)
   699 val fmz = ["equality (x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   700 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   701                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   702 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   703 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   710 case f of FormKF "[x = 0, x = -1 / 2]" => ()
   711 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1 / 2]";
   712 
   713 (*EP-//*)
   714 val fmz = ["equality (x + x^^^2 = 0)", "solveFor x","solutions L"];
   715 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   716                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   717 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   718 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   725 case f of FormKF "[x = 0, x = -1]" => ()
   726 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
   727 
   728 
   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 "----------- (-8 - 2*x + x^^^2 = 0),  (*Schalk 2, S.67 Nr.31.b----";
   732 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
   733 see --- val rls = calculate_RootRat > calculate_Rational ---
   734 calculate_RootRat was a TODO with 2002, requires re-design.
   735 see also --- (-8 - 2*x + x^^^2 = 0),  by rewriting --- below
   736 *)
   737  val fmz = ["equality (-8 - 2*x + x^^^2 = 0)", (*Schalk 2, S.67 Nr.31.b*)
   738  	    "solveFor x","solutions L"];
   739  val (dI',pI',mI') =
   740      ("PolyEq",["degree_2","expanded","univariate","equation"],
   741       ["PolyEq","complete_square"]);
   742 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   743 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   744 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   745 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   746 
   747 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   748 (*Apply_Method ("PolyEq","complete_square")*)
   749 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   750 (*"-8 - 2 * x + x ^^^ 2 = 0", nxt = Rewrite_Set_Inst ... "complete_square*)
   751 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   752 (*"-8 + (2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2", nxt = Rewrite("square_explicit1"*)
   753 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   754 (*"(2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2 - -8" nxt = Rewrite("root_plus_minus*)
   755 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   756 (*"2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |
   757    2 / 2 - x = - sqrt ((2 / 2) ^^^ 2 - -8)" nxt = Rewr_Inst("bdv_explicit2"*)
   758 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   759 (*"2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |
   760    -1*x = - (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8)"nxt = R_Inst("bdv_explt2"*)
   761 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   762 (*"-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |
   763    -1 * x = (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))"nxt = bdv_explicit3*)
   764 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   765 (*"-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |
   766   x = -1 * (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))" nxt = bdv_explicit3*)
   767 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   768 (*"x = -1 * (- (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8)) |
   769    x = -1 * (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))"nxt = calculate_Rational
   770    NOT IMPLEMENTED SINCE 2002 ------------------------------^^^^^^^^^^^^^^^^^^*)
   771 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   772 (*"x = -2 | x = 4" nxt = Or_to_List*)
   773 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   774 (*"[x = -2, x = 4]" nxt = Check_Postcond*)
   775 val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
   776 (* FIXXXME 
   777  case f of Form' (FormKF (~1,EdUndef,0,Nundef,"[x = -2, x = 4]")) => () TODO
   778 	 | _ => error "polyeq.sml: diff.behav. in [x = -2, x = 4]";
   779 *)
   780 if f2str f =
   781 "[x = -1 * -1 + -1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8),\n x = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))]"
   782 (*"[x = -1 * -1 + -1 * sqrt (1 ^^^ 2 - -8),\n x = -1 * -1 + -1 * (-1 * sqrt (1 ^^^ 2 - -8))]"*)
   783 then () else error "polyeq.sml corrected?behav. in [x = -2, x = 4]";
   784 
   785 
   786 "----------- (-8 - 2*x + x^^^2 = 0),  by rewriting ---------------";
   787 "----------- (-8 - 2*x + x^^^2 = 0),  by rewriting ---------------";
   788 "----------- (-8 - 2*x + x^^^2 = 0),  by rewriting ---------------";
   789 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
   790 see --- val rls = calculate_RootRat > calculate_Rational ---*)
   791 val thy = @{theory PolyEq};
   792 val ctxt = Proof_Context.init_global thy;
   793 val inst = [((the o (parseNEW  ctxt)) "bdv::real", (the o (parseNEW  ctxt)) "x::real")];
   794 val t = (the o (parseNEW  ctxt)) "-8 - 2*x + x^^^2 = (0::real)";
   795 
   796 val rls = complete_square;
   797 val SOME (t,asm) = rewrite_set_inst_ thy true inst rls t;
   798 term2str t = "-8 + (2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2";
   799 
   800 val thm = num_str @{thm square_explicit1};
   801 val SOME (t,asm) = rewrite_ thy dummy_ord Erls true thm t;
   802 term2str t = "(2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2 - -8";
   803 
   804 val thm = num_str @{thm root_plus_minus};
   805 val SOME (t,asm) = rewrite_ thy dummy_ord PolyEq_erls true thm t;
   806 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
   807            "\n2 / 2 - x = -1 * sqrt ((2 / 2) ^^^ 2 - -8)";
   808 
   809 (*the thm bdv_explicit2* here required to be constrained to ::real*)
   810 val thm = num_str @{thm bdv_explicit2};
   811 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
   812 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
   813               "\n-1 * x = - (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8)";
   814 
   815 val thm = num_str @{thm bdv_explicit3};
   816 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
   817 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
   818                    "\nx = -1 * (- (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8))";
   819 
   820 val thm = num_str @{thm bdv_explicit2};
   821 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
   822 term2str t = "-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |"^
   823                 "\nx = -1 * (- (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8))";
   824 
   825 val rls = calculate_RootRat;
   826 val SOME (t,asm) = rewrite_set_ thy true rls t;
   827 if term2str t =
   828   "-1 * x = -1 + sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8) \<or>\nx = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))"
   829 (*"-1 * x = -1 + sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8) |\nx = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))"..isabisac15*)
   830 then () else error "(-8 - 2*x + x^^^2 = 0),  by rewriting -- ERROR INDICATES IMPROVEMENT";
   831 (*SHOULD BE: term2str = "x = -2 | x = 4;*)
   832 
   833 
   834 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
   835 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
   836 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
   837 "---- test the erls ----";
   838  val t1 = (Thm.term_of o the o (parse thy)) "0 <= (10/3/2)^^^2 - 1";
   839  val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_erls t1;
   840  val t' = term2str t;
   841  (*if t'= "HOL.True" then ()
   842  else error "polyeq.sml: diff.behav. in 'rewrite_set_.. PolyEq_erls";*)
   843 (* *)
   844  val fmz = ["equality (3 - 10*x + 3*x^^^2 = 0)",
   845  	    "solveFor x","solutions L"];
   846  val (dI',pI',mI') =
   847      ("PolyEq",["degree_2","expanded","univariate","equation"],
   848       ["PolyEq","complete_square"]);
   849 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   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  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   857  (*Apply_Method ("PolyEq","complete_square")*)
   858  val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
   859 
   860 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
   861 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
   862 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
   863  val fmz = ["equality (-16 + 4*x + 2*x^^^2 = 0)",
   864  	    "solveFor x","solutions L"];
   865  val (dI',pI',mI') =
   866      ("PolyEq",["degree_2","expanded","univariate","equation"],
   867       ["PolyEq","complete_square"]);
   868 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   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  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   876  (*Apply_Method ("PolyEq","complete_square")*)
   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;
   886  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   887 (* FIXXXXME n1.,
   888  case f of Form' (FormKF (~1,EdUndef,0,Nundef,"[x = 2, x = -4]")) => () TODO
   889 	 | _ => error "polyeq.sml: diff.behav. in [x = 2, x = -4]";
   890 *)
   891