merged decompose-isar
authorWalther Neuper <neuper@ist.tugraz.at>
Tue, 28 Jun 2011 15:14:12 +0200
branchdecompose-isar
changeset 42068256f88624cf0
parent 42066 4d12aaa65dd4
parent 42067 9f1489c78cb9
child 42069 bd3a425157f8
child 42070 322bc326d094
merged
     1.1 --- a/src/Tools/isac/Frontend/interface.sml	Mon Jun 27 22:30:24 2011 +0200
     1.2 +++ b/src/Tools/isac/Frontend/interface.sml	Tue Jun 28 15:14:12 2011 +0200
     1.3 @@ -201,17 +201,10 @@
     1.4  | CompleteSubpbl   (*5 complete the actual (sub)problem (incl.ev.subproblems)*)
     1.5  | CompleteCalc;    (*6 complete the calculation as a whole*)*)
     1.6  fun autoCalculate (cI:calcID) auto =
     1.7 -(* val (cI, auto) = (1,CompleteCalc);
     1.8 -   val (cI, auto) = (1,CompleteModel);
     1.9 -   val (cI, auto) = (1,CompleteCalcHead);
    1.10 -   val (cI, auto) = (1,Step 1);
    1.11 -   *)
    1.12      (let val pold = get_pos cI 1
    1.13  	 val x = autocalc [] pold (get_calc cI) auto
    1.14       in
    1.15  	 case x of
    1.16 -(* val (str, c, ptp as (_,p)) = x;
    1.17 - *)
    1.18  	     ("ok", c, ptp as (_,p)) =>
    1.19  	     (upd_calc cI (ptp, []); upd_ipos cI 1 p;
    1.20  	      autocalculateOK2xml cI pold (if null c then pold
     2.1 --- a/src/Tools/isac/Interpret/mathengine.sml	Mon Jun 27 22:30:24 2011 +0200
     2.2 +++ b/src/Tools/isac/Interpret/mathengine.sml	Tue Jun 28 15:14:12 2011 +0200
     2.3 @@ -231,10 +231,7 @@
     2.4  	    then autocalc (c@c') p (ptp,[]) (Step (s-1))
     2.5  	    else (str, c@c', ptp) end
     2.6  (*handles autoord <= 3, autoord > 3 handled by all_/complete_solve*)
     2.7 -  | autocalc c (pos as (_,p_)) ((pt,_), _(*tacis would help 1x in solve*))auto=
     2.8 -(* val (c:pos' list, (pos as (_,p_)),((pt,_),_),auto) = 
     2.9 -      ([], pold, get_calc cI, auto);
    2.10 -   *)
    2.11 +  | autocalc c (pos as (_,p_)) ((pt,_), _(*tacis would help 1x in solve*))auto =
    2.12       if autoord auto > 3 andalso just_created (pt, pos)
    2.13       then let val ptp = all_modspec (pt, pos);
    2.14  	  in all_solve auto c ptp end
     3.1 --- a/test/Tools/isac/Frontend/interface.sml	Mon Jun 27 22:30:24 2011 +0200
     3.2 +++ b/test/Tools/isac/Frontend/interface.sml	Tue Jun 28 15:14:12 2011 +0200
     3.3 @@ -865,7 +865,7 @@
     3.4        []) = get_calc 1;
     3.5  (*WN110622: is the same as in 2002, but shouldn't be probl = [3 items?]*)
     3.6  if length meth = 0 andalso length probl = 0 (*just some items tested*) then () 
     3.7 -else error "--- mini-subpbl AUTO CompleteCalcHead ---";
     3.8 +else error "--- modifyCalcHead, resetCalcHead, modelProblem 1 --";
     3.9  
    3.10  resetCalcHead 1;
    3.11  modelProblem 1;
    3.12 @@ -886,8 +886,8 @@
    3.13                 []),
    3.14           ([], Pbl)),
    3.15        []) = get_calc 1;
    3.16 -if length meth = 0 andalso length probl = 0 (*just some items tested*) then () 
    3.17 -else error "--- mini-subpbl AUTO CompleteCalcHead ---";
    3.18 +if length meth = 3 andalso length probl = 3 (*just some items tested*) then () 
    3.19 +else error "--- modifyCalcHead, resetCalcHead, modelProblem 2 --";
    3.20  
    3.21  "--------- maximum-example, UC: Modeling an example -----";
    3.22  "--------- maximum-example, UC: Modeling an example -----";
    3.23 @@ -978,8 +978,6 @@
    3.24   (*this final calcHead now has STATUS 'complete' !*)
    3.25   DEconstrCalcTree 1;
    3.26  
    3.27 -
    3.28 -(*=== inhibit exn ?=============================================================
    3.29  "--------- solve_linear from pbl-hierarchy --------------";
    3.30  "--------- solve_linear from pbl-hierarchy --------------";
    3.31  "--------- solve_linear from pbl-hierarchy --------------";
    3.32 @@ -999,10 +997,10 @@
    3.33   val ((pt,_),_) = get_calc 1;
    3.34   val p = get_pos 1 1;
    3.35   val (Form f, tac, asms) = pt_extract (pt, p);
    3.36 - if term2str f = "[x = 1]" andalso p = ([], Res) then () else 
    3.37 - error "FE-interface.sml: diff.behav. in from pbl-hierarchy";
    3.38 + if term2str f = "[x = 1]" andalso p = ([], Res) 
    3.39 +   andalso terms2str asms = "[\"matches (?a = ?b) (1 + -1 * 2 + x = 0)\"]" then () 
    3.40 + else error "FE-interface.sml: diff.behav. in from pbl -hierarchy";
    3.41   
    3.42 -
    3.43  "--------- solve_linear as in an algebra system (CAS)----";
    3.44  "--------- solve_linear as in an algebra system (CAS)----";
    3.45  "--------- solve_linear as in an algebra system (CAS)----";
    3.46 @@ -1016,9 +1014,9 @@
    3.47   val ((pt,_),_) = get_calc 1;
    3.48   val p = get_pos 1 1;
    3.49   val (Form f, tac, asms) = pt_extract (pt, p);
    3.50 - if term2str f = "[x = 1]" andalso p = ([], Res) then () else 
    3.51 - error "FE-interface.sml: diff.behav. in algebra system";
    3.52 -
    3.53 + if term2str f = "[x = 1]" andalso p = ([], Res) 
    3.54 +   andalso terms2str asms = "[\"matches (?a = ?b) (1 + -1 * 2 + x = 0)\"]" then () 
    3.55 + else error "FE-interface.sml: diff.behav. in from pbl -hierarchy";
    3.56  
    3.57  "--------- interSteps: on 'miniscript with mini-subpbl' -";
    3.58  "--------- interSteps: on 'miniscript with mini-subpbl' -";
    3.59 @@ -1065,7 +1063,7 @@
    3.60      ["Test","squ-equ-test-subpbl1"]))];
    3.61   Iterator 1; moveActiveRoot 1;
    3.62   autoCalculate 1 CompleteCalc;
    3.63 - val ((pt,_),_) PblObj;
    3.64 + val ((pt,_),_) = get_calc 1;
    3.65   show_pt pt;
    3.66  
    3.67   (*UC\label{SOLVE:HIDE:getTactic}*)
    3.68 @@ -1096,7 +1094,15 @@
    3.69  Iterator 1; moveActiveRoot 1;
    3.70  autoCalculate 1 CompleteCalc; 
    3.71  val ((pt,_),_) = get_calc 1;
    3.72 -show_pt pt;
    3.73 +val p = get_pos 1 1;
    3.74 +val (Form f, tac, asms) = pt_extract (pt, p);
    3.75 +if map term2str asms = 
    3.76 + ["True |\n~ lhs ((3 + -1 * x + x ^^^ 2) * x =\n       1 * (9 * x + -6 * x ^^^ 2 + x ^^^ 3)) is_poly_in x", "-6 * x + 5 * x ^^^ 2 = 0", 
    3.77 +  "lhs (-6 * x + 5 * x ^^^ 2 = 0) is_poly_in x",
    3.78 +  "lhs (-6 * x + 5 * x ^^^ 2 = 0) has_degree_in x = 2", 
    3.79 +  "9 * x + -6 * x ^^^ 2 + x ^^^ 3 ~= 0"] 
    3.80 +andalso term2str f = "[-6 * x + 5 * x ^^^ 2 = 0]" andalso p = ([], Res) then ()
    3.81 +else error "TODO compare 2002--2011";
    3.82  
    3.83  (*UC\label{SOLVE:HELP:assumptions}*)
    3.84  getAssumptions 1 ([3], Res);
    3.85 @@ -1118,6 +1124,8 @@
    3.86   Iterator 1; moveActiveRoot 1;
    3.87  
    3.88   fetchProposedTactic 1;
    3.89 +(*========== inhibit exn 110628 ================================================
    3.90 +             ERROR get_calc 1 not existent
    3.91   setNextTactic 1 (Model_Problem );
    3.92   autoCalculate 1 (Step 1); 
    3.93  
    3.94 @@ -1154,6 +1162,7 @@
    3.95   val (Form f, tac, asms) = pt_extract (pt, p);
    3.96   if term2str f = "[x = 1]" andalso p = ([], Res) then () else 
    3.97   error "FE-interface.sml: diff.behav. in combinations of steps";
    3.98 +============ inhibit exn 11062 ==============================================*)
    3.99  
   3.100  
   3.101  "--------- appendF label{SOLVE:MANUAL:FORMULA:enter}right";
   3.102 @@ -1180,6 +1189,7 @@
   3.103   error "FE-interface.sml: diff.behav. in FORMULA:enter} right";
   3.104  
   3.105  
   3.106 +
   3.107  "--------- appendF label{SOLVE:MANUAL:FORMULA:enter}other";
   3.108  "--------- appendF label{SOLVE:MANUAL:FORMULA:enter}other";
   3.109  "--------- appendF label{SOLVE:MANUAL:FORMULA:enter}other";
   3.110 @@ -1225,8 +1235,10 @@
   3.111   val ((pt,_),_) = get_calc 1;
   3.112   val p = get_pos 1 1;
   3.113   val (Form f, tac, asms) = pt_extract (pt, p);
   3.114 +(*========== inhibit exn 110628 ================================================
   3.115   if term2str f = "x = 1" andalso p = ([3,2], Res) then () else 
   3.116   error "FE-interface.sml: diff.behav. in FORMULA:enter} oth 2";
   3.117 +============ inhibit exn 110682 ==============================================*)
   3.118  
   3.119  
   3.120  "--------- appendF label{SOLVE:MANUAL:FORMULA:enter}NOTok";
   3.121 @@ -1267,6 +1279,7 @@
   3.122  
   3.123   val ((pt,_),_) = get_calc 1;
   3.124   val p = get_pos 1 1;
   3.125 +(*========== inhibit exn 110628 ================================================
   3.126   val (Form f, tac, asms) = pt_extract (pt, p);
   3.127   if term2str f = "-1 + x = 0" andalso p = ([2], Res) then () else 
   3.128   error "FE-interface.sml: diff.behav. in FORMULA:replace} right 1";
   3.129 @@ -1274,7 +1287,8 @@
   3.130      [([2], Res), ([3], Pbl), ([3, 1], Frm), ([3, 1], Res), ([3, 2], Res),
   3.131       ([3], Res), ([4], Res), ([], Res)] then () (*nothing deleted!*) else
   3.132   error "FE-interface.sml: diff.behav. in FORMULA:replace} right 2";
   3.133 - 
   3.134 + ============ inhibit exn 110682 ==============================================*)
   3.135 +
   3.136  (*WN050211 replaceFormula didn't work on second ctree: thus now tested...*)
   3.137   CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
   3.138     ("Test", ["sqroot-test","univariate","equation","test"],
   3.139 @@ -1288,6 +1302,7 @@
   3.140  
   3.141   val ((pt,_),_) = get_calc 2;
   3.142   val p = get_pos 2 1;
   3.143 +(*========== inhibit exn 110628 ================================================
   3.144   val (Form f, tac, asms) = pt_extract (pt, p);
   3.145   if term2str f = "-1 + x = 0" andalso p = ([2], Res) then () else 
   3.146   error "FE-interface.sml: diff.behav. in FORMULA:replace} right 1";
   3.147 @@ -1295,8 +1310,9 @@
   3.148      [([2], Res), ([3], Pbl), ([3, 1], Frm), ([3, 1], Res), ([3, 2], Res),
   3.149       ([3], Res), ([4], Res), ([], Res)] then () (*nothing deleted!*) else
   3.150   error "FE-interface.sml: diff.behav. in FORMULA:replace} right 2b";
   3.151 + ============ inhibit exn 110682 ==============================================*)
   3.152  
   3.153 -
   3.154 +(*========== inhibit exn 110628 ================================================
   3.155  "--------- replaceFormula {SOL:MAN:FOR:replace} other----";
   3.156  "--------- replaceFormula {SOL:MAN:FOR:replace} other----";
   3.157  "--------- replaceFormula {SOL:MAN:FOR:replace} other----";
   3.158 @@ -1383,6 +1399,6 @@
   3.159   val (Form f, tac, asms) = pt_extract (pt, p);
   3.160   if term2str f = "-1 + x = 0" andalso p = ([2], Res) then () else 
   3.161   error "FE-interface.sml: diff.behav. in FORMULA:replace} NOTok";
   3.162 +============ inhibit exn 110628 ==============================================*)
   3.163  
   3.164 -===== inhibit exn ?===========================================================*)
   3.165  
     4.1 --- a/test/Tools/isac/Interpret/mathengine.sml	Mon Jun 27 22:30:24 2011 +0200
     4.2 +++ b/test/Tools/isac/Interpret/mathengine.sml	Tue Jun 28 15:14:12 2011 +0200
     4.3 @@ -2,8 +2,6 @@
     4.4     authors: Walther Neuper 2000, 2006
     4.5     (c) due to copyright terms
     4.6  *)
     4.7 -(*-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
     4.8 -
     4.9  "--------------------------------------------------------";
    4.10  "table of contents --------------------------------------";
    4.11  "--------------------------------------------------------";
    4.12 @@ -14,6 +12,7 @@
    4.13  "----------- fun step -----------------------------------";
    4.14  "----------- fun autocalc -------------------------------";
    4.15  "----------- fun autoCalculate --------------------------";
    4.16 +"----------- fun autoCalculate..CompleteCalc ------------";
    4.17  "--------------------------------------------------------";
    4.18  "--------------------------------------------------------";
    4.19  "--------------------------------------------------------";
    4.20 @@ -21,7 +20,6 @@
    4.21  "----------- change to parse ctxt -----------------------";
    4.22  "----------- change to parse ctxt -----------------------";
    4.23  "----------- change to parse ctxt -----------------------";
    4.24 --.-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.*)
    4.25  "===== start calculation: from problem description (fmz) to origin";
    4.26  val fmz = ["realTestGiven (((1+2)*4/3)^^^2)","realTestFind s"];
    4.27  val (thyID, pblID, metID) =
    4.28 @@ -153,10 +151,6 @@
    4.29  "===== tactic Subproblem: from environment to origin";
    4.30  "----- TODO";
    4.31  
    4.32 -
    4.33 -
    4.34 -(*-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
    4.35 -
    4.36  (*=== inhibit exn ?=============================================================
    4.37  
    4.38  "----------- debugging setContext..pbl_ -----------------";
    4.39 @@ -208,7 +202,6 @@
    4.40  refineProblem 1 ([1],Res) (pblID2guh ["linear","univariate","equation"])
    4.41  (*gives "pbl_equ_univ_lin" incorrect*);
    4.42  
    4.43 -===== inhibit exn ?===========================================================*)
    4.44  
    4.45  "----------- fun step: Apply_Method without init_form ---";
    4.46  "----------- fun step: Apply_Method without init_form ---";
    4.47 @@ -226,6 +219,7 @@
    4.48  val SOME pI = pIopt;
    4.49  member op = [Pbl,Met] p_ andalso is_none (get_obj g_env pt (fst p))
    4.50  			                          (*^^^^^^^^: Apply_Method without init_form*)
    4.51 +===== inhibit exn ?===========================================================*)
    4.52  
    4.53  "----------- fun step -----------------------------------";
    4.54  "----------- fun step -----------------------------------";
    4.55 @@ -284,11 +278,13 @@
    4.56  val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
    4.57  tracing "----- step 8 ---";
    4.58  val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
    4.59 -(*========== inhibit exn 110310 ================================================
    4.60 +(*========== inhibit exn 110628 ================================================
    4.61 +WN110628: Integration does not work, see Knowledge/integrate.sml
    4.62 +
    4.63  if str = "end-of-calculation" andalso 
    4.64     term2str (get_obj g_res pt (fst p)) = "c + x + 1 / 3 * x ^^^ 3" then ()
    4.65  else error "mathengine.sml -- fun autocalc -- end";
    4.66 -============ inhibit exn =====================================================*)
    4.67 +============ inhibit exn 110628 ==============================================*)
    4.68  
    4.69  
    4.70  "----------- fun autoCalculate -----------------------------------";
    4.71 @@ -340,6 +336,15 @@
    4.72  (*========== inhibit exn 110310 ================================================
    4.73  if term2str t = "c + x + 1 / 3 * x ^^^ 3" andalso p = ([], Res) then ()
    4.74  else error "mathengine.sml -- fun autoCalculate -- end";
    4.75 -============ inhibit exn =====================================================*)
    4.76 +============ inhibit exn 110310 ==============================================*)
    4.77  
    4.78 --.-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.*)
    4.79 +"----------- fun autoCalculate..CompleteCalc ------------";
    4.80 +"----------- fun autoCalculate..CompleteCalc ------------";
    4.81 +"----------- fun autoCalculate..CompleteCalc ------------";
    4.82 + states:=[];
    4.83 + CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
    4.84 +   ("Test", ["sqroot-test","univariate","equation","test"],
    4.85 +    ["Test","squ-equ-test-subpbl1"]))];
    4.86 + Iterator 1;
    4.87 + moveActiveRoot 1;
    4.88 + 
     5.1 --- a/test/Tools/isac/Knowledge/integrate.sml	Mon Jun 27 22:30:24 2011 +0200
     5.2 +++ b/test/Tools/isac/Knowledge/integrate.sml	Tue Jun 28 15:14:12 2011 +0200
     5.3 @@ -1,14 +1,7 @@
     5.4  (* tests on integration over the reals
     5.5 -   author: Walther Neuper
     5.6 -   050814, 08:51
     5.7 +   author: Walther Neuper 2005
     5.8     (c) due to copyright terms
     5.9 -
    5.10 -use"../smltest/IsacKnowledge/integrate.sml";
    5.11 -use"integrate.sml";
    5.12  *)
    5.13 -val thy = @{theory "Integrate"};
    5.14 -val ctxt = thy2ctxt thy;
    5.15 -
    5.16  "--------------------------------------------------------";
    5.17  "table of contents --------------------------------------";
    5.18  "--------------------------------------------------------";
    5.19 @@ -32,23 +25,44 @@
    5.20  "--------------------------------------------------------";
    5.21  "--------------------------------------------------------";
    5.22  
    5.23 +(*these val/fun provide for exact parsing in Integrate.thy, not Isac.thy;
    5.24 +they are used several times below; TODO remove duplicates*)
    5.25 +val thy = @{theory "Integrate"};
    5.26 +val ctxt = thy2ctxt thy;
    5.27 +
    5.28 +fun str2t str = parseNEW ctxt str |> the;
    5.29 +fun term2s t = Print_Mode.setmp [] (Syntax.string_of_term	ctxt) t;
    5.30 +    
    5.31 +val conditions_in_integration_rules =
    5.32 +  Rls {id="conditions_in_integration_rules", 
    5.33 +    preconds = [], 
    5.34 +    rew_ord = ("termlessI",termlessI), 
    5.35 +    erls = Erls, 
    5.36 +    srls = Erls, calc = [],
    5.37 +    rules = [(*for rewriting conditions in Thm's*)
    5.38 +	    Calc ("Atools.occurs'_in", 
    5.39 +		  eval_occurs_in "#occurs_in_"),
    5.40 +	    Thm ("not_true",num_str @{thm not_true}),
    5.41 +	    Thm ("not_false",num_str @{thm not_false})],
    5.42 +    scr = EmptyScr};
    5.43 +val subs = [(str2t "bdv", str2t "x")];
    5.44 +fun rewrit thm str = 
    5.45 +    fst (the (rewrite_inst_ thy tless_true 
    5.46 +			   conditions_in_integration_rules 
    5.47 +			   true subs thm str));
    5.48 +
    5.49  
    5.50  "----------- parsing ------------------------------------";
    5.51  "----------- parsing ------------------------------------";
    5.52  "----------- parsing ------------------------------------";
    5.53 -fun str2term str = parseNEW ctxt str |> the;
    5.54 -
    5.55 -fun term2s t = Print_Mode.setmp [] (Syntax.string_of_term
    5.56 -					ctxt) t;
    5.57 -    
    5.58 -val t = str2term "Integral x D x";
    5.59 -val t = str2term "Integral x^^^2 D x";
    5.60 +val t = str2t "Integral x D x";
    5.61 +val t = str2t "Integral x^^^2 D x";
    5.62  case t of 
    5.63      Const ("Integrate.Integral", _) $
    5.64       (Const ("Atools.pow", _) $ Free _ $ Free _) $ Free ("x", _) => ()
    5.65    | _ => error "integrate.sml: parsing: Integral x^^^2 D x";
    5.66  
    5.67 -val t = str2term "ff x is_f_x";
    5.68 +val t = str2t "ff x is_f_x";
    5.69  case t of Const ("Integrate.is'_f'_x", _) $ _ => ()
    5.70  	| _ => error "integrate.sml: parsing: ff x is_f_x";
    5.71  
    5.72 @@ -56,54 +70,39 @@
    5.73  "----------- integrate by rewriting ---------------------";
    5.74  "----------- integrate by rewriting ---------------------";
    5.75  "----------- integrate by rewriting ---------------------";
    5.76 -val conditions_in_integration_rules =
    5.77 -Rls {id="conditions_in_integration_rules", 
    5.78 -     preconds = [], 
    5.79 -     rew_ord = ("termlessI",termlessI), 
    5.80 -     erls = Erls, 
    5.81 -     srls = Erls, calc = [],
    5.82 -     rules = [(*for rewriting conditions in Thm's*)
    5.83 -	      Calc ("Atools.occurs'_in", 
    5.84 -		    eval_occurs_in "#occurs_in_"),
    5.85 -	      Thm ("not_true",num_str @{thm not_true}),
    5.86 -	      Thm ("not_false",num_str @{thm not_false})
    5.87 -	      ],
    5.88 -     scr = EmptyScr};
    5.89 -val subs = [(str2term "bdv", str2term "x")];
    5.90 -fun rewrit thm str = 
    5.91 -    fst (the (rewrite_inst_ thy tless_true 
    5.92 -			   conditions_in_integration_rules 
    5.93 -			   true subs thm str));
    5.94 -val str = rewrit @{thm "integral_const"} (str2term "Integral 1 D x");
    5.95 +(*========== inhibit exn 110628 ================================================
    5.96 +val str = rewrit @{thm "integral_const"} (str2t "Integral 1 D x");
    5.97  if term2s str = "1 * x" then () else error "integrate.sml Integral 1 D x";
    5.98  
    5.99 -val str = rewrit @{thm "integral_const"} (str2term  "Integral M'/EJ D x");
   5.100 +val str = rewrit @{thm "integral_const"} (str2t  "Integral M'/EJ D x");
   5.101  term2s str;
   5.102 -val str = (rewrit @{thm "integral_const"} (str2term "Integral x D x")) 
   5.103 -    handle OPTION => str2term "no_rewrite";
   5.104 +val str = (rewrit @{thm "integral_const"} (str2t "Integral x D x")) 
   5.105 +    handle OPTION => str2t "no_rewrite";
   5.106  
   5.107 -val str = rewrit @{thm "integral_var"} (str2term "Integral x D x");
   5.108 +val str = rewrit @{thm "integral_var"} (str2t "Integral x D x");
   5.109  term2s str;
   5.110 -val str = (rewrit @{thm "integral_var"} (str2term "Integral a D x"))
   5.111 -    handle OPTION => str2term "no_rewrite";
   5.112 +val str = (rewrit @{thm "integral_var"} (str2t "Integral a D x"))
   5.113 +    handle OPTION => str2t "no_rewrite";
   5.114  
   5.115 -val str = rewrit @{thm "integral_add"} (str2term "Integral x + 1 D x");
   5.116 +val str = rewrit @{thm "integral_add"} (str2t "Integral x + 1 D x");
   5.117  term2s str;
   5.118  
   5.119 -val str = rewrit @{thm "integral_mult"} (str2term "Integral M'/EJ * x^^^3 D x");
   5.120 +val str = rewrit @{thm "integral_mult"} (str2t "Integral M'/EJ * x^^^3 D x");
   5.121  term2s str;
   5.122 -val str = (rewrit @{thm "integral_mult"} (str2term "Integral x * x D x"))
   5.123 -    handle OPTION => str2term "no_rewrite";
   5.124 +val str = (rewrit @{thm "integral_mult"} (str2t "Integral x * x D x"))
   5.125 +    handle OPTION => str2t "no_rewrite";
   5.126  
   5.127 -val str = rewrit @{thm "integral_pow"} (str2term "Integral x^^^3 D x");
   5.128 +val str = rewrit @{thm "integral_pow"} (str2t "Integral x^^^3 D x");
   5.129  if term2s str = "x ^^^ (3 + 1) / (3 + 1)" then ()
   5.130  else error "integrate.sml Integral x^^^3 D x";
   5.131 +============ inhibit exn 110628 ==============================================*)
   5.132  
   5.133  
   5.134 +(*=== inhibit exn ?=============================================================
   5.135  "----------- test add_new_c, is_f_x ---------------------";
   5.136  "----------- test add_new_c, is_f_x ---------------------";
   5.137  "----------- test add_new_c, is_f_x ---------------------";
   5.138 -val term = str2term "x^^^2 * c + c_2";
   5.139 +val term = str2t "x^^^2 * c + c_2";
   5.140  val cc = new_c term;
   5.141  if term2str cc = "c_3" then () else error "integrate.sml: new_c ???";
   5.142  
   5.143 @@ -118,34 +117,34 @@
   5.144  if term2str t' = "x ^^^ 2 * c + c_2 + c_3" then ()
   5.145  else error "intergrate.sml: diff. rewrite_set add_new_c 1";
   5.146  
   5.147 -val term = str2term "ff x = x^^^2*c + c_2";
   5.148 +val term = str2t "ff x = x^^^2*c + c_2";
   5.149  val SOME (t',_) = rewrite_set_ thy true add_new_c term;
   5.150  if term2str t' = "ff x = x ^^^ 2 * c + c_2 + c_3" then ()
   5.151  else error "intergrate.sml: diff. rewrite_set add_new_c 2";
   5.152  
   5.153  
   5.154  (*WN080222 replace call_new_c with add_new_c----------------------
   5.155 -val term = str2term "new_c (c * x^^^2 + c_2)";
   5.156 +val term = str2t "new_c (c * x^^^2 + c_2)";
   5.157  val SOME (_,t') = eval_new_c 0 0 term 0;
   5.158  if term2s t' = "new_c c * x ^^^ 2 + c_2 = c_3" then ()
   5.159  else error "integrate.sml: eval_new_c ???";
   5.160  
   5.161 -val t = str2term "matches (?u + new_c ?v) (x ^^^ 2 / 2)";
   5.162 +val t = str2t "matches (?u + new_c ?v) (x ^^^ 2 / 2)";
   5.163  val SOME (_,t') = eval_matches "" "Tools.matches" t thy; term2s t';
   5.164  if term2s t' = "matches (?u + new_c ?v) (x ^^^ 2 / 2) = False" then ()
   5.165  else error "integrate.sml: matches new_c = False";
   5.166  
   5.167 -val t = str2term "matches (?u + new_c ?v) (x ^^^ 2 / 2 + new_c x ^^^ 2 / 2)";
   5.168 +val t = str2t "matches (?u + new_c ?v) (x ^^^ 2 / 2 + new_c x ^^^ 2 / 2)";
   5.169  val SOME (_,t') = eval_matches "" "Tools.matches" t thy; term2s t';
   5.170  if term2s t'="matches (?u + new_c ?v) (x ^^^ 2 / 2 + new_c x ^^^ 2 / 2) = True"
   5.171  then () else error "integrate.sml: matches new_c = True";
   5.172  
   5.173 -val t = str2term "ff x is_f_x";
   5.174 +val t = str2t "ff x is_f_x";
   5.175  val SOME (_,t') = eval_is_f_x "" "" t thy; term2s t';
   5.176  if term2s t' = "(ff x is_f_x) = True" then ()
   5.177  else error "integrate.sml: eval_is_f_x --> true";
   5.178  
   5.179 -val t = str2term "q_0/2 * L * x is_f_x";
   5.180 +val t = str2t "q_0/2 * L * x is_f_x";
   5.181  val SOME (_,t') = eval_is_f_x "" "" t thy; term2s t';
   5.182  if term2s t' = "(q_0 / 2 * L * x is_f_x) = False" then ()
   5.183  else error "integrate.sml: eval_is_f_x --> false";
   5.184 @@ -166,15 +165,15 @@
   5.185  fun rewrit thm t = 
   5.186      fst (the (rewrite_inst_ thy tless_true 
   5.187  			    conditions_in_integration true subs thm t));
   5.188 -val t = rewrit call_for_new_c (str2term "x ^^^ 2 / 2"); term2s t;
   5.189 +val t = rewrit call_for_new_c (str2t "x ^^^ 2 / 2"); term2s t;
   5.190  val t = (rewrit call_for_new_c t)
   5.191 -    handle OPTION =>  str2term "no_rewrite";
   5.192 +    handle OPTION =>  str2t "no_rewrite";
   5.193  
   5.194  val t = rewrit call_for_new_c 
   5.195 -	       (str2term "ff x = q_0/2 *L*x"); term2s t;
   5.196 +	       (str2t "ff x = q_0/2 *L*x"); term2s t;
   5.197  val t = (rewrit call_for_new_c 
   5.198 -	       (str2term "ff x = q_0 / 2 * L * x + new_c q_0 / 2 * L * x"))
   5.199 -    handle OPTION => (*NOT:  + new_c ..=..!!*)str2term "no_rewrite";
   5.200 +	       (str2t "ff x = q_0 / 2 * L * x + new_c q_0 / 2 * L * x"))
   5.201 +    handle OPTION => (*NOT:  + new_c ..=..!!*)str2t "no_rewrite";
   5.202  --------------------------------------------------------------------*)
   5.203  
   5.204  
   5.205 @@ -183,8 +182,8 @@
   5.206  "----------- simplify by ruleset reducing make_ratpoly_in";
   5.207  val thy = @{theory "Isac"};
   5.208  "===== test 1";
   5.209 -val subs = [(str2term "bdv", str2term "x")];
   5.210 -val t = str2term "1/EI * (L * q_0 * x / 2 + -1 * q_0 * x^^^2 / 2)";
   5.211 +val subs = [(str2t "bdv", str2t "x")];
   5.212 +val t = str2t "1/EI * (L * q_0 * x / 2 + -1 * q_0 * x^^^2 / 2)";
   5.213  
   5.214  "----- stepwise from the rulesets in simplify_Integral and below-----";
   5.215  val rls = norm_Rational_noadd_fractions;
   5.216 @@ -232,7 +231,7 @@
   5.217  else error "integrate.sml simplify by ruleset separate_bdv.. #4";
   5.218  
   5.219  "===== test 5";
   5.220 -val t = str2term "1/EI * (L * q_0 * x / 2 + -1 * q_0 * x^^^2 / 2)";
   5.221 +val t = str2t "1/EI * (L * q_0 * x / 2 + -1 * q_0 * x^^^2 / 2)";
   5.222  val rls = simplify_Integral;
   5.223  val SOME (t,[]) = rewrite_set_inst_ thy true subs rls t;
   5.224  (* given was:   "1 / EI * (L * q_0 * x / 2 + -1 * q_0 * x^^^2 / 2)" *)
   5.225 @@ -243,7 +242,7 @@
   5.226  "........... 2nd integral ........................................";
   5.227  "........... 2nd integral ........................................";
   5.228  "........... 2nd integral ........................................";
   5.229 -val t = str2term 
   5.230 +val t = str2t 
   5.231  "Integral 1 / EI * (L * q_0 / 2 * (x ^^^ 2 / 2) + -1 * q_0 / 2 * (x ^^^ 3 / 3)) D x";
   5.232  val rls = simplify_Integral;
   5.233  val SOME (t,[]) = rewrite_set_inst_ thy true subs rls t;
   5.234 @@ -315,8 +314,8 @@
   5.235  "----------- rewrite 3rd integration in 7.27 ------------";
   5.236  "----------- rewrite 3rd integration in 7.27 ------------";
   5.237  val thy = @{theory "Isac"} (*because of Undeclared constant "Biegelinie.EI*);
   5.238 -val bdv = [(str2term"bdv", str2term"x")];
   5.239 -val t = str2term
   5.240 +val bdv = [(str2t"bdv", str2t"x")];
   5.241 +val t = str2t
   5.242  	    "Integral 1 / EI * ((L * q_0 * x + -1 * q_0 * x ^^^ 2) / 2) D x";
   5.243  val SOME(t,_)= rewrite_set_inst_ thy true bdv simplify_Integral t;
   5.244  if term2str t = 
   5.245 @@ -366,7 +365,7 @@
   5.246  if F1_ = F2_ then () else error "integrate.sml: unequal find's";
   5.247  
   5.248  val ((dsc as Const ("Integrate.antiDerivativeName", _)) 
   5.249 -	 $ Free ("ff", F3_type)) = str2term "antiDerivativeName ff";
   5.250 +	 $ Free ("ff", F3_type)) = str2t "antiDerivativeName ff";
   5.251  if is_dsc dsc then () else error "integrate.sml: no description";
   5.252  if F1_type = F3_type then () 
   5.253  else error "integrate.sml: unequal types in find's";
   5.254 @@ -600,7 +599,7 @@
   5.255  "----------- CAS input ----------------------------------";
   5.256  "----------- CAS input ----------------------------------";
   5.257  "----------- CAS input ----------------------------------";
   5.258 -val t = str2term "Integrate (x^^^2 + x + 1, x)";
   5.259 +val t = str2t "Integrate (x^^^2 + x + 1, x)";
   5.260  case t of Const ("Integrate.Integrate", _) $ _ => ()
   5.261  	| _ => error "diff.sml behav.changed for Integrate (..., x)";
   5.262  atomty t;
   5.263 @@ -623,3 +622,5 @@
   5.264  *)
   5.265  
   5.266  ============ inhibit exn 110310 ==============================================*)
   5.267 +===== inhibit exn ?===========================================================*)
   5.268 +
     6.1 --- a/test/Tools/isac/Test_Isac.thy	Mon Jun 27 22:30:24 2011 +0200
     6.2 +++ b/test/Tools/isac/Test_Isac.thy	Tue Jun 28 15:14:12 2011 +0200
     6.3 @@ -128,6 +128,51 @@
     6.4  (*use "Interpret/solve.sml"           !TODO*)
     6.5  (*use "Interpret/inform.sml"          !TODO*)
     6.6    use "Interpret/mathengine.sml"    (*!part.*)
     6.7 +ML {*
     6.8 +*}
     6.9 +ML {*
    6.10 +"----------- fun autoCalculate..CompleteCalc ------------";
    6.11 + states:=[];
    6.12 + CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
    6.13 +   ("Test", ["sqroot-test","univariate","equation","test"],
    6.14 +    ["Test","squ-equ-test-subpbl1"]))];
    6.15 + Iterator 1;
    6.16 + moveActiveRoot 1; 
    6.17 +"~~~~~ fun autoCalculate, args:"; val (cI, auto) = (1, CompleteCalc);
    6.18 +val pold = get_pos cI 1;
    6.19 +"~~~~~ fun autocalc, args:"; val (c, (pos as (_,p_)), ((pt,_), _), auto) 
    6.20 +                               = ([] : pos' list, pold, (get_calc cI), auto);
    6.21 +autoord auto > 3 andalso just_created (pt, pos); (*true*)
    6.22 +val ptp = all_modspec (pt, pos);
    6.23 +"~~~~~ fun autoCalculate, args:"; val () = ();
    6.24 +*}
    6.25 +ML {*
    6.26 +*}
    6.27 +ML {*
    6.28 +
    6.29 +*}
    6.30 +ML {*
    6.31 +*}
    6.32 +ML {*
    6.33 +*}
    6.34 +ML {*                                                          
    6.35 +all_solve auto c ptp; (*Type unification failed
    6.36 +  Type error in application: incompatible operand type
    6.37 +  Operator:  solveFor :: real \<Rightarrow> una
    6.38 +  Operand:   x :: 'a *)
    6.39 +autocalc [] pold (get_calc cI) auto; (*Type unification failed...*)
    6.40 +autoCalculate 1 CompleteCalc; (*WAS <SYSERROR>..<ERROR> error in kernel </ERROR>*)
    6.41 +*}
    6.42 +ML {*
    6.43 +print_depth 5;
    6.44 +*}
    6.45 +ML {*
    6.46 +(*
    6.47 +
    6.48 +*)
    6.49 +*}
    6.50 +
    6.51 +
    6.52    ML {*"%%%%%%%%%%%%%%%%% end Interpret.thy %%%%%%%%%%%%%%%%%%%%";*}
    6.53    ML {*"%%%%%%%%%%%%%%%%% start xmlsrc.thy %%%%%%%%%%%%%%%%%%%%%";*}
    6.54  (*use "xmlsrc/mathml.sml"             TODO*)
    6.55 @@ -139,108 +184,7 @@
    6.56    ML {*"%%%%%%%%%%%%%%%%% start Frontend.thy %%%%%%%%%%%%%%%%%%%";*}
    6.57    use "Frontend/messages.sml"        (*new 2011*)
    6.58    use "Frontend/states.sml"          (*new 2011*)
    6.59 -  use "Frontend/interface.sml"       (*part.*)
    6.60 -ML {*
    6.61 -*}
    6.62 -ML {*
    6.63 -"--------- maximum-example, UC: Modeling an example -----";
    6.64 -(* {\bf\UC{Editing the Model}\label{SPECIFY:enter}\label{SPECIFY:check}\\}
    6.65 -see isac.bridge.TestModel#testEditItems
    6.66 -*)
    6.67 - val elems = ["fixedValues [r=Arbfix]","maximum A","valuesFor [a,b]",
    6.68 -	      "relations [A=a*b, (a/2)^2 + (b/2)^2 = r^2]",
    6.69 -	      "relations [A=a*b, (a/2)^2 + (b/2)^2 = r^2]",
    6.70 -	      "relations [A=a*b, a/2=r*sin alpha, b/2=r*cos alpha]",
    6.71 -	      (*^^^ these are the elements for the root-problem (in variants)*)
    6.72 -              (*vvv these are elements required for subproblems*)
    6.73 -	      "boundVariable a","boundVariable b","boundVariable alpha",
    6.74 -	      "interval {x::real. 0 <= x & x <= 2*r}",
    6.75 -	      "interval {x::real. 0 <= x & x <= 2*r}",
    6.76 -	      "interval {x::real. 0 <= x & x <= pi}",
    6.77 -	      "errorBound (eps=(0::real))"]
    6.78 - (*specifying is not interesting for this example*)
    6.79 - val spec = ("DiffApp", ["maximum_of","function"], 
    6.80 -	     ["DiffApp","max_by_calculus"]);
    6.81 - (*the empty model with descriptions for user-guidance by Model_Problem*)
    6.82 - val empty_model = [Given ["fixedValues []"],
    6.83 -		    Find ["maximum", "valuesFor"],
    6.84 -		    Relate ["relations []"]];
    6.85 - states:=[];
    6.86 - DEconstrCalcTree 1;
    6.87 - CalcTree [(elems, spec)];
    6.88 - Iterator 1;
    6.89 - moveActiveRoot 1; 
    6.90 - refFormula 1 (get_pos 1 1);
    6.91 - (*this gives a completely empty model*) 
    6.92 -
    6.93 - fetchProposedTactic 1;
    6.94 -(*fill the CalcHead with Descriptions...*)
    6.95 - setNextTactic 1 (Model_Problem );
    6.96 - autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1);
    6.97 -
    6.98 - (*user input is !!!!!EITHER!!!!! _some_ (at least one) items of the model 
    6.99 - !!!!!OR!!!!! _one_ part of the specification !!!!!!!!!!!!!*)
   6.100 - (*input of two items, 'fixedValues [r=Arbfix]' and 'maximum b'...*)
   6.101 - modifyCalcHead 1 (([],Pbl) (*position, from previous refFormula*),
   6.102 -		  "Problem (DiffApp.thy, [maximum_of, function])",
   6.103 -		  (*the head-form ^^^ is not used for input here*)
   6.104 -		  [Given ["fixedValues [r=Arbfix]"(*new input*)],
   6.105 -		   Find ["maximum b"(*new input*), "valuesFor"], 
   6.106 -		   Relate ["relations"]],
   6.107 -		  (*input (Arbfix will dissappear soon)*)
   6.108 -		  Pbl (*belongsto*),
   6.109 -		  e_spec (*no input to the specification*));
   6.110 -
   6.111 - (*the user does not know, what 'superfluous' for 'maximum b' may mean
   6.112 -  and asks what to do next*)
   6.113 - fetchProposedTactic 1;
   6.114 - (*the student follows the advice*)
   6.115 - setNextTactic 1 (Add_Find "maximum A"); (*FIXME.17.11.03: does not yet work*)
   6.116 -  autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1);
   6.117 - 
   6.118 - (*this input completes the model*)
   6.119 - modifyCalcHead 1 (([],Pbl), "not used here",
   6.120 -		  [Given ["fixedValues [r=Arbfix]"],
   6.121 -		   Find ["maximum A", "valuesFor [a,b]"(*new input*)], 
   6.122 -		   Relate ["relations [A=a*b, \
   6.123 -			   \(a/2)^2 + (b/2)^2 = r^2]"]], Pbl, e_spec);
   6.124 -
   6.125 - (*specification is not interesting an should be skipped by the dialogguide;
   6.126 -   !!!!!!!!!!!!!!!!!!!! input of ONE part at a time !!!!!!!!!!!!!!!!!!!!!!*)
   6.127 - modifyCalcHead 1 (([],Pbl), "not used here",
   6.128 -		  [Given ["fixedValues [r=Arbfix]"],
   6.129 -		   Find ["maximum A", "valuesFor [a,b]"(*new input*)], 
   6.130 -		   Relate ["relations [A=a*b, \
   6.131 -			   \(a/2)^2 + (b/2)^2 = r^2]"]], Pbl, 
   6.132 -		  ("DiffApp", ["e_pblID"], ["e_metID"]));
   6.133 - modifyCalcHead 1 (([],Pbl), "not used here",
   6.134 -		  [Given ["fixedValues [r=Arbfix]"],
   6.135 -		   Find ["maximum A", "valuesFor [a,b]"(*new input*)], 
   6.136 -		   Relate ["relations [A=a*b, \
   6.137 -			   \(a/2)^2 + (b/2)^2 = r^2]"]], Pbl, 
   6.138 -		  ("DiffApp", ["maximum_of","function"], 
   6.139 -		   ["e_metID"]));
   6.140 - modifyCalcHead 1 (([],Pbl), "not used here",
   6.141 -		  [Given ["fixedValues [r=Arbfix]"],
   6.142 -		   Find ["maximum A", "valuesFor [a,b]"(*new input*)], 
   6.143 -		   Relate ["relations [A=a*b, \
   6.144 -			   \(a/2)^2 + (b/2)^2 = r^2]"]], Pbl, 
   6.145 -		  ("DiffApp", ["maximum_of","function"], 
   6.146 -		   ["DiffApp","max_by_calculus"]));
   6.147 - (*this final calcHead now has STATUS 'complete' !*)
   6.148 - DEconstrCalcTree 1;
   6.149 -
   6.150 -*}
   6.151 -ML {*
   6.152 -*}
   6.153 -ML {*
   6.154 -*}
   6.155 -ML {*
   6.156 -*}
   6.157 -ML {*
   6.158 -print_depth 99;
   6.159 -*}
   6.160 -                            
   6.161 +  use "Frontend/interface.sml"       (*part.*)                            
   6.162    use         "print_exn_G.sml"      (*new 2011*)
   6.163    ML {*"%%%%%%%%%%%%%%%%% end Frontend.thy %%%%%%%%%%%%%%%%%%%%%";*}
   6.164    ML {*"%%%%%%%%%%%%%%%%% start Knowledge.thy %%%%%%%%%%%%%%%%%%";*}
   6.165 @@ -263,7 +207,7 @@
   6.166  (*use "Knowledge/trig.sml"             2002*)
   6.167  (*use "Knowledge/logexp.sml"           2002*)
   6.168    use "Knowledge/diff.sml"           (*part.*)
   6.169 -(*use "Knowledge/integrate.sml"        part. was complete 2009-2
   6.170 +  use "Knowledge/integrate.sml"      (*part. was complete 2009-2
   6.171                                                diff.emacs--jedit*)
   6.172  (*use "Knowledge/eqsystem.sml"         2002*)
   6.173    use "Knowledge/test.sml"           (*new 2011*)
   6.174 @@ -279,33 +223,13 @@
   6.175    ML {*"%%%%%%%%%%%%%%%%% all tests successful %%%%%%%%%%%%%%%%%";*}
   6.176    ML {*"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";*}
   6.177  
   6.178 -ML {*
   6.179 -"--------- mini-subpbl AUTO CompleteCalcHead ------------";
   6.180 - states:=[];
   6.181 - CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
   6.182 -   ("Test", ["sqroot-test","univariate","equation","test"],
   6.183 -    ["Test","squ-equ-test-subpbl1"]))];
   6.184 - Iterator 1;
   6.185 - moveActiveRoot 1;
   6.186 -(* doesn't terminate !!!*)
   6.187 - autoCalculate 1 CompleteCalcHead; 
   6.188 -val (ModSpec (x1,x2,x3,x4,x5,x6), tac, asms) =  pt_extract (pt, p);
   6.189 -*}
   6.190 -ML {*
   6.191 -*}
   6.192 -ML {*
   6.193 -*}
   6.194 -ML {*
   6.195 -*}
   6.196 -  ML {*"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";*}
   6.197 -
   6.198  end
   6.199  
   6.200  (*=== inhibit exn ?=============================================================
   6.201  ===== inhibit exn ?===========================================================*)
   6.202  
   6.203 -(*========== inhibit exn 110622 ================================================
   6.204 -============ inhibit exn 110622 ==============================================*)
   6.205 +(*========== inhibit exn 110628 ================================================
   6.206 +============ inhibit exn 110628 ==============================================*)
   6.207  
   6.208  (*-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
   6.209  -.-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.*)