test/Tools/isac/Knowledge/polyeq-1.sml
author Walther Neuper <walther.neuper@jku.at>
Sat, 19 Oct 2019 14:59:09 +0200
changeset 59666 f461cae19cd4
parent 59660 164aa2e799ef
child 59676 6c23dc07c454
permissions -rw-r--r--
lucin: assimilate signatures
     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 NasNap (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 NasNap (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 NasNap (Const ("List...*)
   213 "~~~~~ fun locate_input_tactic, args:"; val ((ts as (thy',srls)), (m:Tactic.T), ((pt,p):ctree * pos'), 
   214 	                                   (scr as Prog (h $ body),d), (Pstate (E,l,a,v,S,b), ctxt)) = 
   215                                    ((thy',srls), m  ,(pt,(p,p_)) ,(sc,d) ,is); (* locate_input_tactic 2nd pattern *)
   216 val thy = assoc_thy thy';
   217 l = [] orelse ((last_elem o fst) p = 0 andalso snd p = Res) (*false*);
   218 (*WAS val NasApp _ =(astep_up (thy',srls,scr,d) ((E,l,a,v,S,b), [(m,EmptyMout,pt,p,[])]) )
   219   ... Assoc ... is correct*)
   220 "~~~~~ and astep_up, args:"; val ((ys as (_,_,_,Prog sc,_)), ((E,l,a,v,S,b),ss)) =
   221    ((thy',ctxt,srls,scr,d), ((E,l,a,v,S,b), [(m,EmptyMout,pt,p,[])]));
   222 1 < length l (*true*);
   223 val up = drop_last l;
   224   term2str (go up sc);
   225   (go up sc);
   226 (*WAS val NasNap _ = ass_up ys ((E,up,a,v,S,b),ss) (go up sc)
   227       ... ???? ... is correct*)
   228 "~~~~~ fun ass_up, args:"; val ((ys as (y,ctxt,s,Prog sc,d)), (is as (E,l,a,v,S,b),ss), 
   229 	   (Const ("HOL.Let",_) $ _)) = (ys, ((E,up,a,v,S,b),ss:step list), (go up sc));
   230       val l = drop_last l; (*comes from e, goes to Abs*)
   231       val (Const ("HOL.Let",_) $ e $ (Abs (i,T,body))) = go l sc;
   232       val i = mk_Free (i, T);
   233       val E = Env.upd_env E (i, v);
   234 (*Type error ...: Can't unify _a to pos * pos_ (Incompatible types)*)
   235 val [(tac_, mout, ctree, pos', xxx)] = ss;
   236 val ss = [(tac_, mout, ctree, pos', []:(pos * pos_) list)];
   237 (*WAS val NasApp iss = assy (((y,s),d),Aundef) ((E, l@[R,D], a,v,S,b),ss) body
   238       ... Assoc ... is correct*)
   239 "~~~~~ fun assy, args:"; val ((((thy',sr),d),ap), (is as (E,l,a,v,S,b), (m,_,pt,(p,p_),c)::ss), t) =
   240      ((((y,s),d),Aundef), ((E, l@[R,D], a,v,S,b),ss), body);
   241 val (a', STac stac) = handle_leaf "locate" thy' sr (E, (a, v)) t
   242              val ctxt = get_ctxt pt (p,p_)
   243              val p' = lev_on p : pos;
   244 (* WAS val NotAss = associate pt d (m, stac)
   245       ... Ass ... is correct*)
   246 "~~~~~ fun associate, args:"; val (pt, _, (m as Check_elementwise' (consts,_,(consts_chkd,_))),
   247     (Const ("Prog_Tac.Check'_elementwise",_) $ consts' $ _)) = (pt, d, m, stac);
   248 term2str consts;
   249 term2str consts';
   250 if consts = consts' (*WAS false*) then () else error "Check_elementwise changed";
   251 (*[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2] TODO sqrt*)
   252 
   253 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
   254 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
   255 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
   256 "----- d2_pqformula1_neg ------";
   257 val fmz = ["equality (2 +(-1)*x + x^^^2 = (0::real))", "solveFor x","solutions L"];
   258 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_pq_equation"]);
   259 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   260 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   265 (*### or2list False
   266   ([1],Res)  False   Or_to_List)*)
   267 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   268 (*### or2list False                           
   269   ([2],Res)  []      Check_elementwise "Assumptions"*)
   270 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   271 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   272 val asm = get_assumptions_ pt p;
   273 if f2str f = "[]" andalso 
   274   terms2str asm = "[\"lhs (2 + -1 * x + x ^^^ 2 = 0) is_poly_in x\"," ^
   275     "\"lhs (2 + -1 * x + x ^^^ 2 = 0) has_degree_in x = 2\"]" then ()
   276 else error "polyeq.sml: diff.behav. in 2 +(-1)*x + x^^^2 = 0";
   277 
   278 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
   279 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
   280 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
   281 "----- d2_pqformula2 ------";
   282 val fmz = ["equality (-2 +(-1)*x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   283 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   284                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   285 (*val p = e_pos'; 
   286 val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
   287 val (p,_,f,nxt,_,pt) = me (mI,m) p [] EmptyPtree;*)
   288 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   289 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   294 
   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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   297 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   298 case f of FormKF "[x = 2, x = -1]" => ()
   299 	 | _ => error "polyeq.sml: diff.behav. in -2 + (-1)*x + x^2 = 0 -> [x = 2, x = -1]";
   300 
   301 
   302 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
   303 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
   304 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
   305 "----- d2_pqformula3 ------";
   306 (*EP-9*)
   307 val fmz = ["equality (-2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   308 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   309                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   310 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   311 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   316 
   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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   319 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   320 case f of FormKF "[x = 1, x = -2]" => ()
   321 	 | _ => error "polyeq.sml: diff.behav. in  -2 + x + x^2 = 0-> [x = 1, x = -2]";
   322 
   323 
   324 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
   325 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
   326 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
   327 "----- d2_pqformula3_neg ------";
   328 val fmz = ["equality (2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   329 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   330                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   331 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   332 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   337 
   338 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   339 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   340 "TODO 2 + x + x^^^2 = 0";
   341 "TODO 2 + x + x^^^2 = 0";
   342 "TODO 2 + x + x^^^2 = 0";
   343 
   344 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
   345 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
   346 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
   347 "----- d2_pqformula4 ------";
   348 val fmz = ["equality (-2 + x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   349 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   350                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   351 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   352 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   359 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   360 case f of FormKF "[x = 1, x = -2]" => ()
   361 	 | _ => error "polyeq.sml: diff.behav. in  -2 + x + 1*x^^^2 = 0 -> [x = 1, x = -2]";
   362 
   363 "----------- equality (1*x +   x^^^2 = 0) ----------------------------------------------------";
   364 "----------- equality (1*x +   x^^^2 = 0) ----------------------------------------------------";
   365 "----------- equality (1*x +   x^^^2 = 0) ----------------------------------------------------";
   366 "----- d2_pqformula5 ------";
   367 val fmz = ["equality (1*x +   x^^^2 = 0)", "solveFor x","solutions L"];
   368 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   369                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   370 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   371 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   378 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   379 case f of FormKF "[x = 0, x = -1]" => ()
   380 	 | _ => error "polyeq.sml: diff.behav. in  1*x +   x^2 = 0 -> [x = 0, x = -1]";
   381 
   382 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
   383 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
   384 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
   385 "----- d2_pqformula6 ------";
   386 val fmz = ["equality (1*x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   387 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   388                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   389 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   390 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   397 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   398 case f of FormKF "[x = 0, x = -1]" => ()
   399 	 | _ => error "polyeq.sml: diff.behav. in  1*x + 1*x^2 = 0 -> [x = 0, x = -1]";
   400 
   401 "----------- equality (x +   x^^^2 = 0) ------------------------------------------------------";
   402 "----------- equality (x +   x^^^2 = 0) ------------------------------------------------------";
   403 "----------- equality (x +   x^^^2 = 0) ------------------------------------------------------";
   404 "----- d2_pqformula7 ------";
   405 (*EP-10*)
   406 val fmz = ["equality (  x +   x^^^2 = 0)", "solveFor x","solutions L"];
   407 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   408                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   409 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   410 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   417 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   418 case f of FormKF "[x = 0, x = -1]" => ()
   419 	 | _ => error "polyeq.sml: diff.behav. in  x + x^2 = 0 -> [x = 0, x = -1]";
   420 
   421 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
   422 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
   423 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
   424 "----- d2_pqformula8 ------";
   425 val fmz = ["equality (x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   426 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   427                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   428 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   429 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   430 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   431 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   432 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   433 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   434 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   435 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   436 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   437 case f of FormKF "[x = 0, x = -1]" => ()
   438 	 | _ => error "polyeq.sml: diff.behav. in  x + 1*x^2 = 0 -> [x = 0, x = -1]";
   439 
   440 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
   441 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
   442 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
   443 "----- d2_pqformula9 ------";
   444 val fmz = ["equality (-4 + x^^^2 = 0)", "solveFor x","solutions L"];
   445 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   446                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   447 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   448 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   455 case f of FormKF "[x = 2, x = -2]" => ()
   456 	 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = -2]";
   457 
   458 
   459 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
   460 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
   461 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
   462 "----- d2_pqformula9_neg ------";
   463 val fmz = ["equality (4 + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   464 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   465                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   466 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   467 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   472 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   473 "TODO 4 + 1*x^^^2 = 0";
   474 "TODO 4 + 1*x^^^2 = 0";
   475 "TODO 4 + 1*x^^^2 = 0";
   476 
   477 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
   478 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
   479 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
   480 val fmz = ["equality (-1 +(-1)*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   481 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   482                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   483 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   484 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   491 case f of FormKF "[x = 1, x = -1 / 2]" => ()
   492 	 | _ => error "polyeq.sml: diff.behav. in -1 + (-1)*x + 2*x^2 = 0 -> [x = 1, x = -1/2]";
   493 
   494 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
   495 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
   496 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
   497 val fmz = ["equality (1 +(-1)*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   498 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   499                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   500 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   501 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   504 
   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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   508 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
   509 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
   510 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
   511 
   512 
   513 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
   514 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
   515 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
   516 (*EP-11*)
   517 val fmz = ["equality (-1 + x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   518 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   519                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   520 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   521 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 
   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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   528 
   529 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   530 case f of FormKF "[x = 1 / 2, x = -1]" => ()
   531 	 | _ => error "polyeq.sml: diff.behav. in -1 + x + 2*x^2 = 0 -> [x = 1/2, x = -1]";
   532 
   533 
   534 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
   535 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
   536 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
   537 val fmz = ["equality (1 + x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   538 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   539                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   540 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   541 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 
   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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   548 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   549 "TODO 1 + x + 2*x^^^2 = 0";
   550 "TODO 1 + x + 2*x^^^2 = 0";
   551 "TODO 1 + x + 2*x^^^2 = 0";
   552 
   553 
   554 val fmz = ["equality (-2 + 1*x + x^^^2 = 0)", "solveFor x","solutions L"];
   555 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   556                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   557 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   558 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   565 case f of FormKF "[x = 1, x = -2]" => ()
   566 	 | _ => error "polyeq.sml: diff.behav. in -2 + 1*x + x^2 = 0 -> [x = 1, x = -2]";
   567 
   568 val fmz = ["equality ( 2 + 1*x + x^^^2 = 0)", "solveFor x","solutions L"];
   569 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   570                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   571 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   572 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   578 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   579 "TODO 2 + 1*x + x^^^2 = 0";
   580 "TODO 2 + 1*x + x^^^2 = 0";
   581 "TODO 2 + 1*x + x^^^2 = 0";
   582 
   583 (*EP-12*)
   584 val fmz = ["equality (-2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   585 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   586                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   587 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   588 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   595 case f of FormKF "[x = 1, x = -2]" => ()
   596 	 | _ => error "polyeq.sml: diff.behav. in -2 + x + x^2 = 0 -> [x = 1, x = -2]";
   597 
   598 val fmz = ["equality ( 2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   599 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   600                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   601 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   602 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; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   608 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   609 "TODO 2 + x + x^^^2 = 0";
   610 "TODO 2 + x + x^^^2 = 0";
   611 "TODO 2 + x + x^^^2 = 0";
   612 
   613 (*EP-13*)
   614 val fmz = ["equality (-8 + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   615 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   616                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   617 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   618 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   625 case f of FormKF "[x = 2, x = -2]" => ()
   626 	 | _ => error "polyeq.sml: diff.behav. in -8 + 2*x^2 = 0 -> [x = 2, x = -2]";
   627 
   628 val fmz = ["equality ( 8+ 2*x^^^2 = 0)", "solveFor x","solutions L"];
   629 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   630                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   631 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   632 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   638 "TODO 8+ 2*x^^^2 = 0";
   639 "TODO 8+ 2*x^^^2 = 0";
   640 "TODO 8+ 2*x^^^2 = 0";
   641 
   642 (*EP-14*)
   643 val fmz = ["equality (-4 + x^^^2 = 0)", "solveFor x","solutions L"];
   644 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_abc_equation"]);
   645 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   646 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   653 case f of FormKF "[x = 2, x = -2]" => ()
   654 	 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = -2]";
   655 
   656 
   657 val fmz = ["equality ( 4+ x^^^2 = 0)", "solveFor x","solutions L"];
   658 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_abc_equation"]);
   659 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   660 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   666 "TODO 4+ x^^^2 = 0";
   667 "TODO 4+ x^^^2 = 0";
   668 "TODO 4+ x^^^2 = 0";
   669 
   670 (*EP-15*)
   671 val fmz = ["equality (2*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   672 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   673                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   674 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   675 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   682 case f of FormKF "[x = 0, x = -1]" => ()
   683 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
   684 
   685 val fmz = ["equality (1*x + x^^^2 = 0)", "solveFor x","solutions L"];
   686 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   687                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   688 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   689 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   696 case f of FormKF "[x = 0, x = -1]" => ()
   697 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
   698 
   699 (*EP-16*)
   700 val fmz = ["equality (x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   701 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   702                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   703 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   704 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   711 case f of FormKF "[x = 0, x = -1 / 2]" => ()
   712 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1 / 2]";
   713 
   714 (*EP-//*)
   715 val fmz = ["equality (x + x^^^2 = 0)", "solveFor x","solutions L"];
   716 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   717                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   718 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   719 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   726 case f of FormKF "[x = 0, x = -1]" => ()
   727 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
   728 
   729 
   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 "----------- (-8 - 2*x + x^^^2 = 0),  (*Schalk 2, S.67 Nr.31.b----";
   733 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
   734 see --- val rls = calculate_RootRat > calculate_Rational ---
   735 calculate_RootRat was a TODO with 2002, requires re-design.
   736 see also --- (-8 - 2*x + x^^^2 = 0),  by rewriting --- below
   737 *)
   738  val fmz = ["equality (-8 - 2*x + x^^^2 = 0)", (*Schalk 2, S.67 Nr.31.b*)
   739  	    "solveFor x","solutions L"];
   740  val (dI',pI',mI') =
   741      ("PolyEq",["degree_2","expanded","univariate","equation"],
   742       ["PolyEq","complete_square"]);
   743 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   744 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 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   747 
   748 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   749 (*Apply_Method ("PolyEq","complete_square")*)
   750 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   751 (*"-8 - 2 * x + x ^^^ 2 = 0", nxt = Rewrite_Set_Inst ... "complete_square*)
   752 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   753 (*"-8 + (2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2", nxt = Rewrite("square_explicit1"*)
   754 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   755 (*"(2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2 - -8" nxt = Rewrite("root_plus_minus*)
   756 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   757 (*"2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |
   758    2 / 2 - x = - sqrt ((2 / 2) ^^^ 2 - -8)" nxt = Rewr_Inst("bdv_explicit2"*)
   759 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   760 (*"2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |
   761    -1*x = - (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8)"nxt = R_Inst("bdv_explt2"*)
   762 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   763 (*"-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |
   764    -1 * x = (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))"nxt = bdv_explicit3*)
   765 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   766 (*"-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |
   767   x = -1 * (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))" nxt = bdv_explicit3*)
   768 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   769 (*"x = -1 * (- (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8)) |
   770    x = -1 * (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))"nxt = calculate_Rational
   771    NOT IMPLEMENTED SINCE 2002 ------------------------------^^^^^^^^^^^^^^^^^^*)
   772 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   773 (*"x = -2 | x = 4" nxt = Or_to_List*)
   774 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   775 (*"[x = -2, x = 4]" nxt = Check_Postcond*)
   776 val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
   777 (* FIXXXME 
   778  case f of Form' (FormKF (~1,EdUndef,0,Nundef,"[x = -2, x = 4]")) => () TODO
   779 	 | _ => error "polyeq.sml: diff.behav. in [x = -2, x = 4]";
   780 *)
   781 if f2str f =
   782 "[x = -1 * -1 + -1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8),\n x = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))]"
   783 (*"[x = -1 * -1 + -1 * sqrt (1 ^^^ 2 - -8),\n x = -1 * -1 + -1 * (-1 * sqrt (1 ^^^ 2 - -8))]"*)
   784 then () else error "polyeq.sml corrected?behav. in [x = -2, x = 4]";
   785 
   786 
   787 "----------- (-8 - 2*x + x^^^2 = 0),  by rewriting ---------------";
   788 "----------- (-8 - 2*x + x^^^2 = 0),  by rewriting ---------------";
   789 "----------- (-8 - 2*x + x^^^2 = 0),  by rewriting ---------------";
   790 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
   791 see --- val rls = calculate_RootRat > calculate_Rational ---*)
   792 val thy = @{theory PolyEq};
   793 val ctxt = Proof_Context.init_global thy;
   794 val inst = [((the o (parseNEW  ctxt)) "bdv::real", (the o (parseNEW  ctxt)) "x::real")];
   795 val t = (the o (parseNEW  ctxt)) "-8 - 2*x + x^^^2 = (0::real)";
   796 
   797 val rls = complete_square;
   798 val SOME (t,asm) = rewrite_set_inst_ thy true inst rls t;
   799 term2str t = "-8 + (2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2";
   800 
   801 val thm = num_str @{thm square_explicit1};
   802 val SOME (t,asm) = rewrite_ thy dummy_ord Erls true thm t;
   803 term2str t = "(2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2 - -8";
   804 
   805 val thm = num_str @{thm root_plus_minus};
   806 val SOME (t,asm) = rewrite_ thy dummy_ord PolyEq_erls true thm t;
   807 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
   808            "\n2 / 2 - x = -1 * sqrt ((2 / 2) ^^^ 2 - -8)";
   809 
   810 (*the thm bdv_explicit2* here required to be constrained to ::real*)
   811 val thm = num_str @{thm bdv_explicit2};
   812 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
   813 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
   814               "\n-1 * x = - (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8)";
   815 
   816 val thm = num_str @{thm bdv_explicit3};
   817 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
   818 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
   819                    "\nx = -1 * (- (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8))";
   820 
   821 val thm = num_str @{thm bdv_explicit2};
   822 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
   823 term2str t = "-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |"^
   824                 "\nx = -1 * (- (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8))";
   825 
   826 val rls = calculate_RootRat;
   827 val SOME (t,asm) = rewrite_set_ thy true rls t;
   828 if term2str t =
   829   "-1 * x = -1 + sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8) \<or>\nx = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))"
   830 (*"-1 * x = -1 + sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8) |\nx = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))"..isabisac15*)
   831 then () else error "(-8 - 2*x + x^^^2 = 0),  by rewriting -- ERROR INDICATES IMPROVEMENT";
   832 (*SHOULD BE: term2str = "x = -2 | x = 4;*)
   833 
   834 
   835 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
   836 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
   837 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
   838 "---- test the erls ----";
   839  val t1 = (Thm.term_of o the o (parse thy)) "0 <= (10/3/2)^^^2 - 1";
   840  val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_erls t1;
   841  val t' = term2str t;
   842  (*if t'= "HOL.True" then ()
   843  else error "polyeq.sml: diff.behav. in 'rewrite_set_.. PolyEq_erls";*)
   844 (* *)
   845  val fmz = ["equality (3 - 10*x + 3*x^^^2 = 0)",
   846  	    "solveFor x","solutions L"];
   847  val (dI',pI',mI') =
   848      ("PolyEq",["degree_2","expanded","univariate","equation"],
   849       ["PolyEq","complete_square"]);
   850 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   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  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   858  (*Apply_Method ("PolyEq","complete_square")*)
   859  val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
   860 
   861 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
   862 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
   863 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
   864  val fmz = ["equality (-16 + 4*x + 2*x^^^2 = 0)",
   865  	    "solveFor x","solutions L"];
   866  val (dI',pI',mI') =
   867      ("PolyEq",["degree_2","expanded","univariate","equation"],
   868       ["PolyEq","complete_square"]);
   869 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   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  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   877  (*Apply_Method ("PolyEq","complete_square")*)
   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  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   888 (* FIXXXXME n1.,
   889  case f of Form' (FormKF (~1,EdUndef,0,Nundef,"[x = 2, x = -4]")) => () TODO
   890 	 | _ => error "polyeq.sml: diff.behav. in [x = 2, x = -4]";
   891 *)
   892