test/Tools/isac/Knowledge/polyeq-1.sml
author Walther Neuper <walther.neuper@jku.at>
Wed, 01 Apr 2020 10:24:13 +0200
changeset 59845 273ffde50058
parent 59844 373d13915f8c
child 59847 566d1b41dd55
permissions -rw-r--r--
renaming, cleanup
     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 Step.by_tactic, args:"; val (tac, (ptp as (pt, p))) = (tac, (pt, p));
   187 val Appl m = applicable_in p pt tac;
   188 val Check_elementwise' (trm1, str, (trm2, trms)) = m;
   189 term2str trm1 = "[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2]";
   190 str = "Assumptions";
   191 term2str trm2 = "[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2]";
   192 terms2str trms = "[\"lhs (-1 / 8 + -1 * (1 / 8 + sqrt (9 / 16) / 2) / 4 +\n "^
   193   "    (1 / 8 + sqrt (9 / 16) / 2) ^^^ 2 =\n     0) is_poly_in 1 / 8 + sqrt (9 / 16) / 2\","^
   194   "\"lhs (-1 / 8 + -1 * (1 / 8 + sqrt (9 / 16) / 2) / 4 +\n     (1 / 8 + sqrt (9 / 16) / 2) ^^^ 2 =\n     0) "^
   195       "has_degree_in 1 / 8 + sqrt (9 / 16) / 2 =\n2\","^
   196   "\"lhs (-1 / 8 + -1 * (1 / 8 + -1 * sqrt (9 / 16) / 2) / 4 +\n     (1 / 8 + -1 * sqrt (9 / 16) / 2) ^^^ 2 =\n     0) is_poly_in 1 / 8 + -1 * sqrt (9 / 16) / 2\","^
   197   "\"lhs (-1 / 8 + -1 * (1 / 8 + -1 * sqrt (9 / 16) / 2) / 4 +\n     (1 / 8 + -1 * sqrt (9 / 16) / 2) ^^^ 2 =\n     0) has_degree_in 1 / 8 + -1 * sqrt (9 / 16) / 2 =\n2\"]";
   198 (*TODO simplify assumptions (sqrt!) and check ERROR in has_degree_in*);
   199       (*if*) Tactic.for_specify' m; (*false*)
   200 (*loc_solve_ (mI,m) ptp;
   201   WAS: not-found-in-program: NotLocatable from Term_Val1 (Const ("List...*)
   202 "~~~~~ fun loc_solve_, args:"; val (m, (pt,pos)) = (m, ptp);
   203 (*solve m (pt, pos);
   204   WAS: not-found-in-program: NotLocatable from Term_Val1 (Const ("List...*)
   205 "~~~~~ fun Step_Solve.by_tactic , args:"; val (m, (pt, po as (p,p_))) = (m, (pt, pos));
   206 e_metID = get_obj g_metID pt (par_pblobj pt p) (*false*);
   207         val thy' = get_obj g_domID pt (par_pblobj pt p);
   208 	        val (is, sc) = resume_prog thy' (p,p_) pt;
   209 		        val d = e_rls;
   210 (*locate_input_tactic (thy',srls) m  (pt,(p,p_)) (sc,d) is;
   211   WAS: not-found-in-program: NotLocatable from Term_Val1 (Const ("List...*)
   212 "~~~~~ fun locate_input_tactic, args:"; val () = ();
   213 (*----- outcommented during cleanup of args in lucas-interpreter.sml ------------------------\\* )
   214 l = [] orelse ((last_elem o fst) p = 0 andalso snd p = Res) (*false*);
   215 (*WAS val Reject_Tac1 _ =(go_scan_up1 (thy',srls,scr,d) ((E,l,a,v,S,b), [(m,EmptyMout,pt,p,[])]) )
   216   ... Accept_Tac1 ... is correct*)
   217 "~~~~~ and go_scan_up1, args:"; val ((ys as (_,_,_,Prog sc,_)), ((E,l,a,v,S,b),ss)) =
   218    ((thy',ctxt,srls,scr,d), ((E,l,a,v,S,b), [(m,EmptyMout,pt,p,[])]));
   219 1 < length l (*true*);
   220 val up = drop_last l;
   221   term2str (at_location up sc);
   222   (at_location up sc);
   223 (*WAS val Term_Val1 _ = scan_up1 ys ((E,up,a,v,S,b),ss) (at_location up sc)
   224       ... ???? ... is correct*)
   225 "~~~~~ fun scan_up1, args:"; val ((ys as (y,ctxt,s,Prog sc,d)), (is as (E,l,a,v,S,b),ss), 
   226 	   (Const ("HOL.Let",_) $ _)) = (ys, ((E,up,a,v,S,b),ss:step list), (at_location up sc));
   227       val l = drop_last l; (*comes from e, goes to Abs*)
   228       val (Const ("HOL.Let",_) $ e $ (Abs (i,T,body))) = at_location l sc;
   229       val i = mk_Free (i, T);
   230       val E = Env.update E (i, v);
   231 (*Type error ...: Can't unify _a to pos * pos_ (Incompatible types)*)
   232 val [(tac_, mout, ctree, pos', xxx)] = ss;
   233 val ss = [(tac_, mout, ctree, pos', []:(pos * pos_) list)];
   234 (*WAS val Reject_Tac1 iss = scan_dn1 (((y,s),d),ORundef) ((E, l@[R,D], a,v,S,b),ss) body
   235       ... Accept_Tac1 ... is correct*)
   236 "~~~~~ fun scan_dn1, args:"; val ((((thy',sr),d),ap), (is as (E,l,a,v,S,b), (m,_,pt,(p,p_),c)::ss), t) =
   237      ((((y,s),d),ORundef), ((E, l@[R,D], a,v,S,b),ss), body);
   238 val (Program.Tac stac, a') = check_leaf "locate" thy' sr (E, (a, v)) t
   239              val ctxt = get_ctxt pt (p,p_)
   240              val p' = lev_on p : pos;
   241 (* WAS val Not_Associated = associate pt d (m, stac)
   242       ... Associated ... is correct*)
   243 "~~~~~ fun associate, args:"; val (pt, _, (m as Check_elementwise' (consts,_,(consts_chkd,_))),
   244     (Const ("Prog_Tac.Check'_elementwise",_) $ consts' $ _)) = (pt, d, m, stac);
   245 term2str consts;
   246 term2str consts';
   247 if consts = consts' (*WAS false*) then () else error "Check_elementwise changed";
   248 (*[z = 1 / 8 + sqrt (9 / 16) / 2, z = 1 / 8 + -1 * sqrt (9 / 16) / 2] TODO sqrt*)
   249 ( *----- outcommented during cleanup of args in lucas-interpreter.sml ------------------------//*)
   250 
   251 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
   252 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
   253 "----------- equality (2 +(-1)*x + x^^^2 = (0::real)) ----------------------------------------";
   254 "----- d2_pqformula1_neg ------";
   255 val fmz = ["equality (2 +(-1)*x + x^^^2 = (0::real))", "solveFor x","solutions L"];
   256 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_pq_equation"]);
   257 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   258 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   259 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   260 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   261 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   262 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   263 (*### or2list False
   264   ([1],Res)  False   Or_to_List)*)
   265 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   266 (*### or2list False                           
   267   ([2],Res)  []      Check_elementwise "Assumptions"*)
   268 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   269 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   270 val asm = Ctree.get_assumptions pt p;
   271 if f2str f = "[]" andalso 
   272   terms2str asm = "[\"lhs (2 + -1 * x + x ^^^ 2 = 0) is_poly_in x\"," ^
   273     "\"lhs (2 + -1 * x + x ^^^ 2 = 0) has_degree_in x = 2\"]" then ()
   274 else error "polyeq.sml: diff.behav. in 2 +(-1)*x + x^^^2 = 0";
   275 
   276 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
   277 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
   278 "----------- equality (-2 +(-1)*x + 1*x^^^2 = 0) ---------------------------------------------";
   279 "----- d2_pqformula2 ------";
   280 val fmz = ["equality (-2 +(-1)*x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   281 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   282                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   283 (*val p = e_pos'; 
   284 val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
   285 val (p,_,f,nxt,_,pt) = me (mI,m) p [] EmptyPtree;*)
   286 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   287 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   288 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   289 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   290 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   291 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   292 
   293 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   294 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   295 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   296 case f of FormKF "[x = 2, x = -1]" => ()
   297 	 | _ => error "polyeq.sml: diff.behav. in -2 + (-1)*x + x^2 = 0 -> [x = 2, x = -1]";
   298 
   299 
   300 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
   301 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
   302 "----------- equality (-2 + x + x^^^2 = 0) ---------------------------------------------------";
   303 "----- d2_pqformula3 ------";
   304 (*EP-9*)
   305 val fmz = ["equality (-2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   306 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   307                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   308 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   309 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   310 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   311 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   312 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   313 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   314 
   315 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   316 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   317 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   318 case f of FormKF "[x = 1, x = -2]" => ()
   319 	 | _ => error "polyeq.sml: diff.behav. in  -2 + x + x^2 = 0-> [x = 1, x = -2]";
   320 
   321 
   322 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
   323 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
   324 "----------- equality (2 + x + x^^^2 = 0) ----------------------------------------------------";
   325 "----- d2_pqformula3_neg ------";
   326 val fmz = ["equality (2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   327 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   328                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   329 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   330 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   331 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   332 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   333 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   334 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   335 
   336 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   337 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   338 "TODO 2 + x + x^^^2 = 0";
   339 "TODO 2 + x + x^^^2 = 0";
   340 "TODO 2 + x + x^^^2 = 0";
   341 
   342 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
   343 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
   344 "----------- equality (-2 + x + 1*x^^^2 = 0)) ------------------------------------------------";
   345 "----- d2_pqformula4 ------";
   346 val fmz = ["equality (-2 + x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   347 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   348                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   349 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   350 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   351 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   352 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   353 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   354 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   355 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   356 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   357 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   358 case f of FormKF "[x = 1, x = -2]" => ()
   359 	 | _ => error "polyeq.sml: diff.behav. in  -2 + x + 1*x^^^2 = 0 -> [x = 1, x = -2]";
   360 
   361 "----------- equality (1*x +   x^^^2 = 0) ----------------------------------------------------";
   362 "----------- equality (1*x +   x^^^2 = 0) ----------------------------------------------------";
   363 "----------- equality (1*x +   x^^^2 = 0) ----------------------------------------------------";
   364 "----- d2_pqformula5 ------";
   365 val fmz = ["equality (1*x +   x^^^2 = 0)", "solveFor x","solutions L"];
   366 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   367                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   368 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   369 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   370 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   371 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   372 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   373 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   374 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   375 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   376 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   377 case f of FormKF "[x = 0, x = -1]" => ()
   378 	 | _ => error "polyeq.sml: diff.behav. in  1*x +   x^2 = 0 -> [x = 0, x = -1]";
   379 
   380 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
   381 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
   382 "----------- equality (1*x + 1*x^^^2 = 0) ----------------------------------------------------";
   383 "----- d2_pqformula6 ------";
   384 val fmz = ["equality (1*x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   385 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   386                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   387 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   388 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   389 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   390 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   391 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   392 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   393 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   394 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   395 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   396 case f of FormKF "[x = 0, x = -1]" => ()
   397 	 | _ => error "polyeq.sml: diff.behav. in  1*x + 1*x^2 = 0 -> [x = 0, x = -1]";
   398 
   399 "----------- equality (x +   x^^^2 = 0) ------------------------------------------------------";
   400 "----------- equality (x +   x^^^2 = 0) ------------------------------------------------------";
   401 "----------- equality (x +   x^^^2 = 0) ------------------------------------------------------";
   402 "----- d2_pqformula7 ------";
   403 (*EP-10*)
   404 val fmz = ["equality (  x +   x^^^2 = 0)", "solveFor x","solutions L"];
   405 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   406                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   407 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   408 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   409 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   410 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   411 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   412 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   413 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   414 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   415 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   416 case f of FormKF "[x = 0, x = -1]" => ()
   417 	 | _ => error "polyeq.sml: diff.behav. in  x + x^2 = 0 -> [x = 0, x = -1]";
   418 
   419 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
   420 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
   421 "----------- equality (x + 1*x^^^2 = 0) ------------------------------------------------------";
   422 "----- d2_pqformula8 ------";
   423 val fmz = ["equality (x + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   424 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   425                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   426 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   427 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   428 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   429 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   430 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   431 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   432 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   433 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   434 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   435 case f of FormKF "[x = 0, x = -1]" => ()
   436 	 | _ => error "polyeq.sml: diff.behav. in  x + 1*x^2 = 0 -> [x = 0, x = -1]";
   437 
   438 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
   439 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
   440 "----------- equality (-4 + x^^^2 = 0) -------------------------------------------------------";
   441 "----- d2_pqformula9 ------";
   442 val fmz = ["equality (-4 + x^^^2 = 0)", "solveFor x","solutions L"];
   443 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   444                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   445 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   446 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   447 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   448 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   449 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   450 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   451 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   452 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   453 case f of FormKF "[x = 2, x = -2]" => ()
   454 	 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = -2]";
   455 
   456 
   457 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
   458 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
   459 "----------- equality (4 + 1*x^^^2 = 0) -------------------------------------------------------";
   460 "----- d2_pqformula9_neg ------";
   461 val fmz = ["equality (4 + 1*x^^^2 = 0)", "solveFor x","solutions L"];
   462 val (dI',pI',mI') = ("PolyEq",["pqFormula","degree_2","polynomial","univariate","equation"],
   463                      ["PolyEq","solve_d2_polyeq_pq_equation"]);
   464 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   465 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   466 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   467 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   468 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   469 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   470 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   471 "TODO 4 + 1*x^^^2 = 0";
   472 "TODO 4 + 1*x^^^2 = 0";
   473 "TODO 4 + 1*x^^^2 = 0";
   474 
   475 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
   476 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
   477 "-------------------- test thm's d2_abc_formulsxx[_neg]-----";
   478 val fmz = ["equality (-1 +(-1)*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   479 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   480                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   481 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   482 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   483 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   484 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   485 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   486 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   487 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   488 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   489 case f of FormKF "[x = 1, x = -1 / 2]" => ()
   490 	 | _ => error "polyeq.sml: diff.behav. in -1 + (-1)*x + 2*x^2 = 0 -> [x = 1, x = -1/2]";
   491 
   492 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
   493 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
   494 "----------- equality (1 +(-1)*x + 2*x^^^2 = 0) ----------------------------------------------";
   495 val fmz = ["equality (1 +(-1)*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   496 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   497                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   498 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   499 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   500 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   501 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   502 
   503 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   504 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   505 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   506 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
   507 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
   508 "TODO 1 +(-1)*x + 2*x^^^2 = 0";
   509 
   510 
   511 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
   512 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
   513 "----------- equality (-1 + x + 2*x^^^2 = 0) -------------------------------------------------";
   514 (*EP-11*)
   515 val fmz = ["equality (-1 + x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   516 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   517                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   518 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   519 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   520 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   521 
   522 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   523 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   524 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   525 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   526 
   527 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   528 case f of FormKF "[x = 1 / 2, x = -1]" => ()
   529 	 | _ => error "polyeq.sml: diff.behav. in -1 + x + 2*x^2 = 0 -> [x = 1/2, x = -1]";
   530 
   531 
   532 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
   533 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
   534 "----------- equality (1 + x + 2*x^^^2 = 0) --------------------------------------------------";
   535 val fmz = ["equality (1 + x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   536 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   537                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   538 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   539 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   540 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   541 
   542 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   543 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   544 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   545 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   546 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   547 "TODO 1 + x + 2*x^^^2 = 0";
   548 "TODO 1 + x + 2*x^^^2 = 0";
   549 "TODO 1 + x + 2*x^^^2 = 0";
   550 
   551 
   552 val fmz = ["equality (-2 + 1*x + x^^^2 = 0)", "solveFor x","solutions L"];
   553 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   554                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   555 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   556 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   557 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   558 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   559 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   560 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   561 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   562 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   563 case f of FormKF "[x = 1, x = -2]" => ()
   564 	 | _ => error "polyeq.sml: diff.behav. in -2 + 1*x + x^2 = 0 -> [x = 1, x = -2]";
   565 
   566 val fmz = ["equality ( 2 + 1*x + x^^^2 = 0)", "solveFor x","solutions L"];
   567 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   568                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   569 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   570 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   571 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   572 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   573 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   574 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   575 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   576 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   577 "TODO 2 + 1*x + x^^^2 = 0";
   578 "TODO 2 + 1*x + x^^^2 = 0";
   579 "TODO 2 + 1*x + x^^^2 = 0";
   580 
   581 (*EP-12*)
   582 val fmz = ["equality (-2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   583 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   584                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   585 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   586 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   587 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   588 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   589 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   590 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   591 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   592 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   593 case f of FormKF "[x = 1, x = -2]" => ()
   594 	 | _ => error "polyeq.sml: diff.behav. in -2 + x + x^2 = 0 -> [x = 1, x = -2]";
   595 
   596 val fmz = ["equality ( 2 + x + x^^^2 = 0)", "solveFor x","solutions L"];
   597 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   598                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   599 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   600 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   601 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   602 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   603 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   604 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   605 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   606 val (p,_,f,nxt,_,pt) = me nxt p [] pt; 
   607 "TODO 2 + x + x^^^2 = 0";
   608 "TODO 2 + x + x^^^2 = 0";
   609 "TODO 2 + x + x^^^2 = 0";
   610 
   611 (*EP-13*)
   612 val fmz = ["equality (-8 + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   613 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   614                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   615 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   616 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   617 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   618 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   619 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   620 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   621 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   622 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   623 case f of FormKF "[x = 2, x = -2]" => ()
   624 	 | _ => error "polyeq.sml: diff.behav. in -8 + 2*x^2 = 0 -> [x = 2, x = -2]";
   625 
   626 val fmz = ["equality ( 8+ 2*x^^^2 = 0)", "solveFor x","solutions L"];
   627 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   628                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   629 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   630 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   631 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   632 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   633 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   634 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   635 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   636 "TODO 8+ 2*x^^^2 = 0";
   637 "TODO 8+ 2*x^^^2 = 0";
   638 "TODO 8+ 2*x^^^2 = 0";
   639 
   640 (*EP-14*)
   641 val fmz = ["equality (-4 + x^^^2 = 0)", "solveFor x","solutions L"];
   642 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_abc_equation"]);
   643 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   644 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   645 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   646 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   647 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   648 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   649 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   650 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   651 case f of FormKF "[x = 2, x = -2]" => ()
   652 	 | _ => error "polyeq.sml: diff.behav. in -4 + x^2 = 0 -> [x = 2, x = -2]";
   653 
   654 
   655 val fmz = ["equality ( 4+ x^^^2 = 0)", "solveFor x","solutions L"];
   656 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"], ["PolyEq","solve_d2_polyeq_abc_equation"]);
   657 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   658 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   659 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   660 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   661 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   662 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   663 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   664 "TODO 4+ x^^^2 = 0";
   665 "TODO 4+ x^^^2 = 0";
   666 "TODO 4+ x^^^2 = 0";
   667 
   668 (*EP-15*)
   669 val fmz = ["equality (2*x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   670 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   671                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   672 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   673 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   674 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   675 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   676 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   677 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   678 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   679 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   680 case f of FormKF "[x = 0, x = -1]" => ()
   681 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
   682 
   683 val fmz = ["equality (1*x + x^^^2 = 0)", "solveFor x","solutions L"];
   684 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   685                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   686 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   687 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   688 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   689 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   690 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   691 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   692 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   693 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   694 case f of FormKF "[x = 0, x = -1]" => ()
   695 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
   696 
   697 (*EP-16*)
   698 val fmz = ["equality (x + 2*x^^^2 = 0)", "solveFor x","solutions L"];
   699 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   700                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   701 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   702 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   703 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   704 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   705 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   706 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   707 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   708 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   709 case f of FormKF "[x = 0, x = -1 / 2]" => ()
   710 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1 / 2]";
   711 
   712 (*EP-//*)
   713 val fmz = ["equality (x + x^^^2 = 0)", "solveFor x","solutions L"];
   714 val (dI',pI',mI') = ("PolyEq",["abcFormula","degree_2","polynomial","univariate","equation"],
   715                      ["PolyEq","solve_d2_polyeq_abc_equation"]);
   716 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   717 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   718 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   719 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   720 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   721 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   722 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   723 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   724 case f of FormKF "[x = 0, x = -1]" => ()
   725 	 | _ => error "polyeq.sml: diff.behav. in x + x^2 = 0 -> [x = 0, x = -1]";
   726 
   727 
   728 "----------- (-8 - 2*x + x^^^2 = 0),  (*Schalk 2, S.67 Nr.31.b----";
   729 "----------- (-8 - 2*x + x^^^2 = 0),  (*Schalk 2, S.67 Nr.31.b----";
   730 "----------- (-8 - 2*x + x^^^2 = 0),  (*Schalk 2, S.67 Nr.31.b----";
   731 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
   732 see --- val rls = calculate_RootRat > calculate_Rational ---
   733 calculate_RootRat was a TODO with 2002, requires re-design.
   734 see also --- (-8 - 2*x + x^^^2 = 0),  by rewriting --- below
   735 *)
   736  val fmz = ["equality (-8 - 2*x + x^^^2 = 0)", (*Schalk 2, S.67 Nr.31.b*)
   737  	    "solveFor x","solutions L"];
   738  val (dI',pI',mI') =
   739      ("PolyEq",["degree_2","expanded","univariate","equation"],
   740       ["PolyEq","complete_square"]);
   741 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   742 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   743 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   744 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   745 
   746 val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   747 (*Apply_Method ("PolyEq","complete_square")*)
   748 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   749 (*"-8 - 2 * x + x ^^^ 2 = 0", nxt = Rewrite_Set_Inst ... "complete_square*)
   750 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   751 (*"-8 + (2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2", nxt = Rewrite("square_explicit1"*)
   752 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   753 (*"(2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2 - -8" nxt = Rewrite("root_plus_minus*)
   754 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   755 (*"2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |
   756    2 / 2 - x = - sqrt ((2 / 2) ^^^ 2 - -8)" nxt = Rewr_Inst("bdv_explicit2"*)
   757 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   758 (*"2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |
   759    -1*x = - (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8)"nxt = R_Inst("bdv_explt2"*)
   760 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   761 (*"-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |
   762    -1 * x = (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))"nxt = bdv_explicit3*)
   763 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   764 (*"-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |
   765   x = -1 * (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))" nxt = bdv_explicit3*)
   766 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   767 (*"x = -1 * (- (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8)) |
   768    x = -1 * (- (2 / 2) + - sqrt ((2 / 2) ^^^ 2 - -8))"nxt = calculate_Rational
   769    NOT IMPLEMENTED SINCE 2002 ------------------------------^^^^^^^^^^^^^^^^^^*)
   770 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   771 (*"x = -2 | x = 4" nxt = Or_to_List*)
   772 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   773 (*"[x = -2, x = 4]" nxt = Check_Postcond*)
   774 val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
   775 (* FIXXXME 
   776  case f of Form' (FormKF (~1,EdUndef,0,Nundef,"[x = -2, x = 4]")) => () TODO
   777 	 | _ => error "polyeq.sml: diff.behav. in [x = -2, x = 4]";
   778 *)
   779 if f2str f =
   780 "[x = -1 * -1 + -1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8),\n x = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))]"
   781 (*"[x = -1 * -1 + -1 * sqrt (1 ^^^ 2 - -8),\n x = -1 * -1 + -1 * (-1 * sqrt (1 ^^^ 2 - -8))]"*)
   782 then () else error "polyeq.sml corrected?behav. in [x = -2, x = 4]";
   783 
   784 
   785 "----------- (-8 - 2*x + x^^^2 = 0),  by rewriting ---------------";
   786 "----------- (-8 - 2*x + x^^^2 = 0),  by rewriting ---------------";
   787 "----------- (-8 - 2*x + x^^^2 = 0),  by rewriting ---------------";
   788 (*stopped du to TODO.txt WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat
   789 see --- val rls = calculate_RootRat > calculate_Rational ---*)
   790 val thy = @{theory PolyEq};
   791 val ctxt = Proof_Context.init_global thy;
   792 val inst = [((the o (parseNEW  ctxt)) "bdv::real", (the o (parseNEW  ctxt)) "x::real")];
   793 val t = (the o (parseNEW  ctxt)) "-8 - 2*x + x^^^2 = (0::real)";
   794 
   795 val rls = complete_square;
   796 val SOME (t,asm) = rewrite_set_inst_ thy true inst rls t;
   797 term2str t = "-8 + (2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2";
   798 
   799 val thm = num_str @{thm square_explicit1};
   800 val SOME (t,asm) = rewrite_ thy dummy_ord Erls true thm t;
   801 term2str t = "(2 / 2 - x) ^^^ 2 = (2 / 2) ^^^ 2 - -8";
   802 
   803 val thm = num_str @{thm root_plus_minus};
   804 val SOME (t,asm) = rewrite_ thy dummy_ord PolyEq_erls true thm t;
   805 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
   806            "\n2 / 2 - x = -1 * sqrt ((2 / 2) ^^^ 2 - -8)";
   807 
   808 (*the thm bdv_explicit2* here required to be constrained to ::real*)
   809 val thm = num_str @{thm bdv_explicit2};
   810 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
   811 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
   812               "\n-1 * x = - (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8)";
   813 
   814 val thm = num_str @{thm bdv_explicit3};
   815 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
   816 term2str t = "2 / 2 - x = sqrt ((2 / 2) ^^^ 2 - -8) |"^
   817                    "\nx = -1 * (- (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8))";
   818 
   819 val thm = num_str @{thm bdv_explicit2};
   820 val SOME (t,asm) = rewrite_inst_ thy dummy_ord Erls true inst thm t;
   821 term2str t = "-1 * x = - (2 / 2) + sqrt ((2 / 2) ^^^ 2 - -8) |"^
   822                 "\nx = -1 * (- (2 / 2) + -1 * sqrt ((2 / 2) ^^^ 2 - -8))";
   823 
   824 val rls = calculate_RootRat;
   825 val SOME (t,asm) = rewrite_set_ thy true rls t;
   826 if term2str t =
   827   "-1 * x = -1 + sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8) \<or>\nx = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))"
   828 (*"-1 * x = -1 + sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8) |\nx = -1 * -1 + -1 * (-1 * sqrt (2 ^^^ 2 / 2 ^^^ 2 - -8))"..isabisac15*)
   829 then () else error "(-8 - 2*x + x^^^2 = 0),  by rewriting -- ERROR INDICATES IMPROVEMENT";
   830 (*SHOULD BE: term2str = "x = -2 | x = 4;*)
   831 
   832 
   833 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
   834 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
   835 "-------------------- (3 - 10*x + 3*x^^^2 = 0), ----------------------";
   836 "---- test the erls ----";
   837  val t1 = (Thm.term_of o the o (parse thy)) "0 <= (10/3/2)^^^2 - 1";
   838  val SOME (t,_) = rewrite_set_ @{theory PolyEq} false PolyEq_erls t1;
   839  val t' = term2str t;
   840  (*if t'= "HOL.True" then ()
   841  else error "polyeq.sml: diff.behav. in 'rewrite_set_.. PolyEq_erls";*)
   842 (* *)
   843  val fmz = ["equality (3 - 10*x + 3*x^^^2 = 0)",
   844  	    "solveFor x","solutions L"];
   845  val (dI',pI',mI') =
   846      ("PolyEq",["degree_2","expanded","univariate","equation"],
   847       ["PolyEq","complete_square"]);
   848 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   849 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   850  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   851  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   852  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   853  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   854  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   855  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   856  (*Apply_Method ("PolyEq","complete_square")*)
   857  val (p,_,f,nxt,_,pt) = me nxt p [] pt; f2str f;
   858 
   859 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
   860 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
   861 "----------- (-16 + 4*x + 2*x^^^2 = 0), --------------------------";
   862  val fmz = ["equality (-16 + 4*x + 2*x^^^2 = 0)",
   863  	    "solveFor x","solutions L"];
   864  val (dI',pI',mI') =
   865      ("PolyEq",["degree_2","expanded","univariate","equation"],
   866       ["PolyEq","complete_square"]);
   867 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   868 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   869  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   870  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   871  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   872  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   873  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   874  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   875  (*Apply_Method ("PolyEq","complete_square")*)
   876  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   877  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   878  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   879  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   880  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   881  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   882  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   883  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   884  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   885  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   886 (* FIXXXXME n1.,
   887  case f of Form' (FormKF (~1,EdUndef,0,Nundef,"[x = 2, x = -4]")) => () TODO
   888 	 | _ => error "polyeq.sml: diff.behav. in [x = 2, x = -4]";
   889 *)
   890