test/Tools/isac/Interpret/mathengine.sml
author Alexander Kargl <akargl@brgkepler.net>
Tue, 19 Jul 2011 09:43:01 +0200
branchdecompose-isar
changeset 42108 23b6b0033454
parent 42067 9f1489c78cb9
child 42109 cd33f1f80c8a
permissions -rw-r--r--
intermed: uncomment tests with CompleteCalc
akargl@42108
     1
akargl@42108
     2
akargl@42108
     3
neuper@37906
     4
(* test for sml/ME/mathengine.sml
neuper@37906
     5
   authors: Walther Neuper 2000, 2006
neuper@37906
     6
   (c) due to copyright terms
neuper@37906
     7
*)
neuper@38065
     8
"--------------------------------------------------------";
neuper@38065
     9
"table of contents --------------------------------------";
neuper@38065
    10
"--------------------------------------------------------";
neuper@41940
    11
"----------- change to parse ctxt -----------------------";
neuper@38065
    12
"----------- debugging setContext..pbl_ -----------------";
neuper@38065
    13
"----------- tryrefine ----------------------------------";
neuper@41982
    14
"----------- fun step: Apply_Method without init_form ---";
neuper@38065
    15
"----------- fun step -----------------------------------";
neuper@38065
    16
"----------- fun autocalc -------------------------------";
neuper@38065
    17
"----------- fun autoCalculate --------------------------";
neuper@42067
    18
"----------- fun autoCalculate..CompleteCalc ------------";
neuper@38065
    19
"--------------------------------------------------------";
neuper@38065
    20
"--------------------------------------------------------";
neuper@38065
    21
"--------------------------------------------------------";
neuper@37906
    22
neuper@41940
    23
"----------- change to parse ctxt -----------------------";
neuper@41940
    24
"----------- change to parse ctxt -----------------------";
neuper@41940
    25
"----------- change to parse ctxt -----------------------";
neuper@41940
    26
"===== start calculation: from problem description (fmz) to origin";
neuper@41940
    27
val fmz = ["realTestGiven (((1+2)*4/3)^^^2)","realTestFind s"];
neuper@41940
    28
val (thyID, pblID, metID) =
neuper@41940
    29
  ("Test", ["calculate", "test"], ["Test", "test_calculate"]);
neuper@41940
    30
val (p,_,_,nxt,_,pt) = CalcTreeTEST [(fmz, (thyID, pblID, metID))];
neuper@41940
    31
"----- ";
neuper@41940
    32
(* call sequence: CalcTreeTEST 
neuper@41940
    33
                > nxt_specify_init_calc 
neuper@41940
    34
                > prep_ori
neuper@41940
    35
*)
neuper@41940
    36
val (thy, pbt) = (Thy_Info.get_theory thyID, (#ppc o get_pbt) pblID);
neuper@41940
    37
"----- in  prep_ori";
neuper@41940
    38
val ctxt = ProofContext.init_global thy;
neuper@41940
    39
bonzai@41952
    40
val ctopts = map (parseNEW ctxt) fmz;
bonzai@41952
    41
val dts = map (split_dts o the) ctopts;
neuper@41940
    42
(*split_dts:
neuper@41940
    43
(term * term list) list
neuper@41940
    44
        formulas: e.g. ((1+2)*4/3)^^^2
neuper@41940
    45
 description: e.g. realTestGiven
neuper@41940
    46
*)
neuper@41940
    47
 prep_ori;
neuper@41940
    48
(* FROM
neuper@41940
    49
val it = fn:
neuper@41940
    50
   string list -> theory -> (string * (term * 'a)) list -> ori list
neuper@41940
    51
TO
neuper@41940
    52
val it = fn:
neuper@41940
    53
   string list -> theory -> (string * (term * 'a)) list -> (ori list * ctxt)
neuper@41940
    54
AND
neuper@41940
    55
FROM val oris = prep_ori...
neuper@41940
    56
TO   val (oris, _) = prep_ori...
neuper@41940
    57
*)
neuper@41940
    58
"----- insert ctxt in ptree";
neuper@41940
    59
(* datatype ppobj
neuper@41940
    60
FROM loc   : istate option * istate option,
neuper@41940
    61
TO   loc   : (istate * ctxt) option * (istate * ctxt) option,
neuper@41940
    62
e.g.
neuper@41940
    63
FROM val pt = Nd (PblObj
neuper@41940
    64
       {.., loc = (SOME (ScrState ([], [], NONE, Const ("empty", "'a"), Sundef, false)),
neuper@41940
    65
          NONE),
neuper@41940
    66
TO   val pt = Nd (PblObj
neuper@41940
    67
       {.., loc = 
neuper@41940
    68
        ((SOME (ScrState ([], [], NONE, Const ("empty", "'a"), Sundef, false)), ctxt),
neuper@41940
    69
          NONE),
neuper@41940
    70
*)
neuper@41940
    71
neuper@41940
    72
"===== interactive specification: from origin to specification (probl)";
neuper@41940
    73
val (p,_,_,nxt,_,pt) = me nxt p [1] pt; 
neuper@41940
    74
  (*nxt =("Add_Given", Model_Problem)*)
neuper@41940
    75
val (p,_,_,nxt,_,pt) = me nxt p [1] pt;
neuper@41940
    76
  (*nxt = ("Add_Find",Add_Find "realTestFind s") : string * tac*)
neuper@41940
    77
"----- ";
neuper@41940
    78
(* call sequence: me Model_Problem 
neuper@41940
    79
                > me ("Add_Given", Add_Given "realTestGiven (((1 + 2) * 4 / 3) ^^^ 2)")
neuper@41940
    80
                > locatetac tac
neuper@41940
    81
                > loc_specify_
neuper@41940
    82
                > specify          GET ctxt (stored in ctree)
neuper@41940
    83
                > specify_additem
neuper@41940
    84
                > appl_add
neuper@41940
    85
neuper@41940
    86
*)
neuper@41940
    87
"----- in appl_add";
neuper@41940
    88
(* FROM appl_add thy
neuper@41940
    89
   TO   appl_add ctxt
neuper@41940
    90
   FROM parse thy str
neuper@41940
    91
   TO   parseNEW ctxt str
neuper@41940
    92
*)
neuper@41940
    93
val (p,_,_,nxt,_,pt) = me nxt p [1] pt; 
neuper@41940
    94
  (*nxt = ("Specify_Theory",Specify_Theory "Test") : string * tac*)
neuper@41940
    95
val (p,_,_,nxt,_,pt) = me nxt p [1] pt; 
neuper@41940
    96
  (*nxt = ("Specify_Problem",Specify_Problem ["calculate","test"])*)
neuper@41940
    97
neuper@41940
    98
"===== end specify: from specification (probl) to guard (method)";
neuper@41940
    99
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41940
   100
  (*nxt = ("Specify_Method",Specify_Method ("Test","test_calculate"))*)
neuper@41940
   101
neuper@41940
   102
"===== start interpretation: from guard to environment";
neuper@41940
   103
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41940
   104
  (*nxt = ("Apply_Method",Apply_Method ("Test","test_calculate"))*)
neuper@41940
   105
"----- ";
neuper@41940
   106
(* call sequence: me ("Apply_Method",...
neuper@41940
   107
                > locatetac
neuper@41940
   108
                > loc_solve_
neuper@41940
   109
                > solve ("Apply_Method",...
neuper@41940
   110
*)
neuper@41940
   111
val ((_,tac), ptp) = (nxt, (pt, p));
neuper@41940
   112
locatetac tac (pt,p);
neuper@41940
   113
  val (mI, m) = mk_tac'_ tac;
neuper@41940
   114
  val Appl m = applicable_in p pt m;
neuper@41940
   115
  member op = specsteps mI;
neuper@41940
   116
  loc_solve_ (mI,m) ptp;
neuper@41940
   117
    val (m, (pt, pos)) = ((mI,m), ptp);
neuper@41940
   118
    solve m (pt, pos);
bonzai@41949
   119
      val ((_, m as Apply_Method' (mI, _, _, _)), (pt, (pos as (p,_)))) = 
neuper@41940
   120
        (m, (pt, pos));
neuper@41940
   121
      val {srls,...} = get_met mI;
neuper@41940
   122
      val PblObj{meth=itms,...} = get_obj I pt p;
neuper@41940
   123
      val thy' = get_obj g_domID pt p;
neuper@41940
   124
      val thy = assoc_thy thy';
bonzai@41949
   125
      val (is as ScrState (env,_,_,_,_,_), ctxt, sc) = init_scrstate thy itms mI;
neuper@41940
   126
neuper@41940
   127
"----- go on in the calculation";
neuper@41940
   128
val (p,_,f,nxt,_,pt) = me nxt pos [1] pt;
neuper@41940
   129
  (*nxt = ("Calculate",Calculate "PLUS")*)
neuper@41940
   130
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41940
   131
  (*nxt = ("Calculate",Calculate "TIMES")*)
neuper@41940
   132
neuper@41940
   133
"===== input a formula to be derived from previous istate";
neuper@41940
   134
"----- appendFormula TODO: first repair error";
neuper@41940
   135
  val cs = ((pt,p),[]);
neuper@41940
   136
  val ("ok", cs' as (_,_,(pt,p))) = step p cs;
neuper@41943
   137
  val ifo = (* encode "4^^^2" \<longrightarrow>*) "4^2";
neuper@41940
   138
(*
neuper@41943
   139
  val ("no derivation found", (_,_,(pt, p))) = inform cs' ((*encode*) ifo);
neuper@41940
   140
  here ^^^^^^^^^^^^^^^^^^^^^ should be "ok"
neuper@41940
   141
*)
neuper@41940
   142
neuper@41940
   143
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41940
   144
(*nxt = ("Calculate",Calculate "DIVIDE")*)
neuper@41940
   145
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41940
   146
(*nxt = ("Calculate",Calculate "POWER")*)
neuper@41940
   147
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41940
   148
(*nxt = ("Check_Postcond",Check_Postcond ["calculate","test"])*)
neuper@41940
   149
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41940
   150
(*nxt = ("End_Proof'",End_Proof')*)
neuper@41940
   151
if f = Form' (FormKF (~1,EdUndef,0,Nundef,"16")) then ()
neuper@41940
   152
else error "calculate.sml: script test_calculate changed behaviour";
neuper@41940
   153
neuper@41940
   154
"===== tactic Subproblem: from environment to origin";
neuper@41940
   155
"----- TODO";
neuper@41940
   156
neuper@37906
   157
neuper@38065
   158
"----------- debugging setContext..pbl_ -----------------";
neuper@38065
   159
"----------- debugging setContext..pbl_ -----------------";
neuper@38065
   160
"----------- debugging setContext..pbl_ -----------------";
neuper@37906
   161
states:=[];
neuper@41970
   162
CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
neuper@41970
   163
  ("Test", ["sqroot-test","univariate","equation","test"],
neuper@37906
   164
   ["Test","squ-equ-test-subpbl1"]))];
neuper@37906
   165
Iterator 1;
neuper@37906
   166
moveActiveRoot 1; modelProblem 1;
neuper@37906
   167
neuper@37906
   168
val pos as (p,_) = ([],Pbl);
neuper@37906
   169
val guh = "pbl_equ_univ";
neuper@37906
   170
checkContext 1 pos guh;
neuper@37906
   171
val ((pt,_),_) = get_calc 1;
neuper@37906
   172
val pp = par_pblobj pt p;
neuper@37906
   173
val keID = guh2kestoreID guh;
neuper@37906
   174
case context_pbl keID pt pp of (true,["univariate", "equation"],_,_,_)=>()
neuper@38031
   175
| _ => error "mathengine.sml: context_pbl .. pbl_equ_univ checked";
neuper@37906
   176
neuper@37906
   177
case get_obj g_spec pt p of (_, ["e_pblID"], _) => ()
neuper@38031
   178
| _ => error "mathengine.sml: context_pbl .. pbl still empty";
neuper@37906
   179
setContext 1 pos guh;
neuper@37906
   180
val ((pt,_),_) = get_calc 1;
neuper@37906
   181
case get_obj g_spec pt p of (_, ["univariate", "equation"], _) => ()
neuper@38031
   182
| _ => error "mathengine.sml: context_pbl .. pbl set";
neuper@37906
   183
neuper@37906
   184
neuper@37906
   185
setContext 1 pos "met_eq_lin";
neuper@37906
   186
val ((pt,_),_) = get_calc 1;
neuper@37906
   187
case get_obj g_spec pt p of (_,  _, ["LinEq", "solve_lineq_equation"]) => ()
neuper@38031
   188
| _ => error "mathengine.sml: context_pbl .. pbl set";
neuper@37906
   189
neuper@37906
   190
neuper@38065
   191
"----------- tryrefine ----------------------------------";
neuper@38065
   192
"----------- tryrefine ----------------------------------";
neuper@38065
   193
"----------- tryrefine ----------------------------------";
neuper@37906
   194
states:=[];
neuper@37906
   195
CalcTree [(["equality (x/(x^2 - 6*x+9) - 1/(x^2 - 3*x) =1/x)", 
neuper@37906
   196
	    "solveFor x", "solutions L"],
neuper@38058
   197
	   ("RatEq",["univariate","equation"],["no_met"]))];
neuper@37906
   198
Iterator 1;
neuper@37906
   199
moveActiveRoot 1; autoCalculate 1 CompleteCalc;
neuper@37906
   200
neuper@37906
   201
refineProblem 1 ([1],Res) "pbl_equ_univ" 
neuper@37906
   202
(*gives "pbl_equ_univ_rat" correct*);
neuper@37906
   203
neuper@37906
   204
refineProblem 1 ([1],Res) (pblID2guh ["linear","univariate","equation"])
neuper@38065
   205
(*gives "pbl_equ_univ_lin" incorrect*);
neuper@38065
   206
neuper@38065
   207
neuper@41982
   208
"----------- fun step: Apply_Method without init_form ---";
neuper@41982
   209
"----------- fun step: Apply_Method without init_form ---";
neuper@41982
   210
"----------- fun step: Apply_Method without init_form ---";
neuper@41982
   211
val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
neuper@41982
   212
val (dI',pI',mI') =
neuper@41982
   213
  ("Test", ["sqroot-test","univariate","equation","test"],
neuper@41982
   214
   ["Test","squ-equ-test-subpbl1"]);
neuper@41982
   215
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@41982
   216
"~~~~~ fun me, args:"; val (_,tac) = nxt;
neuper@41982
   217
val ("ok", (_, _, (pt, p))) = locatetac tac (pt,p);
neuper@41982
   218
"~~~~~ fun step, args:"; val (ip as (_,p_), ptp as (pt,p), tacis) = (p, (pt, e_pos'), []);
neuper@41982
   219
val pIopt = get_pblID (pt,ip);
neuper@41982
   220
ip = ([],Res) (*false*);
neuper@41982
   221
val SOME pI = pIopt;
akargl@42108
   222
(*=== inhibit exn 110718 ? =============================================================
akargl@42108
   223
neuper@41982
   224
member op = [Pbl,Met] p_ andalso is_none (get_obj g_env pt (fst p))
neuper@41982
   225
			                          (*^^^^^^^^: Apply_Method without init_form*)
akargl@42108
   226
akargl@42108
   227
===== inhibit exn 110718 ? ===========================================================*)
neuper@38065
   228
neuper@38065
   229
"----------- fun step -----------------------------------";
neuper@38065
   230
"----------- fun step -----------------------------------";
neuper@38065
   231
"----------- fun step -----------------------------------";
neuper@38065
   232
val p = e_pos'; val c = []; 
neuper@38065
   233
val (p,_,f,nxt,_,pt) = 
neuper@38065
   234
    CalcTreeTEST 
neuper@38065
   235
        [(["functionTerm (x^^^2 + 1)", "integrateBy x", "antiDerivative FF"], 
neuper@38065
   236
          ("Integrate", ["integrate","function"], ["diff","integration"]))];
neuper@38065
   237
"----- step 1: returns tac = Model_Problem ---";
neuper@38065
   238
val (str, ([(tac, _, _)], _, (pt, p))) = step p ((pt, e_pos'), []);
neuper@38065
   239
"----- step 2: returns tac =  ---";
neuper@38065
   240
val (str, ([(tac, _, _)], _, (pt, p))) = step p ((pt, e_pos'), []);
neuper@38065
   241
"----- step 3: returns tac =  ---";
neuper@38065
   242
val (str, ([(tac, _, _)], _, (pt, p))) = step p ((pt, e_pos'), []);
neuper@38065
   243
"----- step 4: returns tac =  ---";
neuper@38065
   244
val (str, ([(tac, _, _)], _, (pt, p))) = step p ((pt, e_pos'), []);
neuper@38065
   245
"----- step 5: returns tac =  ---";
neuper@38065
   246
akargl@42108
   247
(*========== inhibit exn 110718 =======================================================
neuper@38066
   248
2002 stops here as well: TODO review actual arguments:
neuper@38065
   249
val (str, ([(tac, _, _)], _, (pt, p))) = step p ((pt, e_pos'), []);
neuper@38065
   250
"----- step 6: returns tac =  ---";
neuper@38065
   251
val (str, ([(tac, _, _)], _, (pt, p))) = step p ((pt, e_pos'), []);
neuper@38065
   252
"----- step 7: returns tac =  ---";
neuper@38065
   253
val (str, ([(tac, _, _)], _, (pt, p))) = step p ((pt, e_pos'), []);
neuper@38065
   254
"----- step 8: returns tac =  ---";
neuper@38065
   255
val (str, ([(tac, _, _)], _, (pt, p))) = step p ((pt, e_pos'), []);
akargl@42108
   256
============ inhibit exn 110718 =====================================================*)
neuper@38065
   257
neuper@38065
   258
neuper@38065
   259
"----------- fun autocalc -------------------------------";
neuper@38065
   260
"----------- fun autocalc -------------------------------";
neuper@38065
   261
"----------- fun autocalc -------------------------------";
neuper@38065
   262
val p = e_pos'; val c = []; 
neuper@38065
   263
val (p,_,f,nxt,_,pt) = 
neuper@38065
   264
    CalcTreeTEST 
neuper@38065
   265
        [(["functionTerm (x^^^2 + 1)", "integrateBy x", "antiDerivative FF"], 
neuper@38065
   266
          ("Integrate",["integrate","function"], ["diff","integration"]))];
neuper@38066
   267
(*-----since Model_Problem + complete_mod_ in case cas of SOME-----*
neuper@38066
   268
modeling is skipped FIXME 
neuper@38066
   269
 *-----since Model_Problem + complete_mod_ in case cas of SOME-----*)
neuper@38065
   270
tracing "----- step 1 ---";
neuper@38065
   271
val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
neuper@38065
   272
tracing "----- step 2 ---";
neuper@38065
   273
val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
neuper@38065
   274
tracing "----- step 3 ---";
neuper@38065
   275
val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
neuper@38065
   276
tracing "----- step 4 ---";
neuper@38065
   277
val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
neuper@38065
   278
tracing "----- step 5 ---";
neuper@38065
   279
val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
neuper@38065
   280
tracing "----- step 6 ---";
neuper@38065
   281
val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
neuper@38065
   282
tracing "----- step 7 ---";
neuper@38065
   283
val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
neuper@38065
   284
tracing "----- step 8 ---";
neuper@38065
   285
val (str, cut, (pt, p)) = autocalc [] p ((pt, e_pos'),[]) (Step 1); show_pt pt;
neuper@42067
   286
(*========== inhibit exn 110628 ================================================
neuper@42067
   287
WN110628: Integration does not work, see Knowledge/integrate.sml
neuper@42067
   288
neuper@41929
   289
if str = "end-of-calculation" andalso 
neuper@41929
   290
   term2str (get_obj g_res pt (fst p)) = "c + x + 1 / 3 * x ^^^ 3" then ()
neuper@38065
   291
else error "mathengine.sml -- fun autocalc -- end";
neuper@42067
   292
============ inhibit exn 110628 ==============================================*)
neuper@38065
   293
neuper@38065
   294
neuper@38065
   295
"----------- fun autoCalculate -----------------------------------";
neuper@38065
   296
"----------- fun autoCalculate -----------------------------------";
neuper@38065
   297
"----------- fun autoCalculate -----------------------------------";
neuper@38065
   298
states := [];
neuper@38065
   299
CalcTree (*ATTENTION: encode_fmz ... unlike CalcTreeTEST*)
neuper@38065
   300
    [(["functionTerm (x^2 + 1)", "integrateBy x", "antiDerivative FF"],
neuper@38065
   301
      ("Integrate", ["integrate", "function"], ["diff", "integration"]))];
neuper@38065
   302
Iterator 1;
neuper@38065
   303
moveActiveRoot 1;
neuper@38066
   304
(*-----since Model_Problem + complete_mod_ in case cas of SOME-----*
neuper@38066
   305
modeling is skipped FIXME 
neuper@38066
   306
see test/../interface -- solve_linear as rootpbl FE -- for OTHER expl:
neuper@38066
   307
 setNextTactic 1 (Add_Given "equality (1 + -1 * 2 + x = 0)");
neuper@38066
   308
 autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1); (*equality added*);
neuper@38066
   309
neuper@38066
   310
 fetchProposedTactic 1;
neuper@38066
   311
 setNextTactic 1 (Add_Given "solveFor x");
neuper@38066
   312
 autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1);
neuper@38066
   313
neuper@38066
   314
 fetchProposedTactic 1;
neuper@38066
   315
 setNextTactic 1 (Add_Find "solutions L");
neuper@38066
   316
 autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1);
neuper@38066
   317
neuper@38066
   318
 fetchProposedTactic 1;
neuper@38066
   319
 setNextTactic 1 (Specify_Theory "Test");
neuper@38066
   320
 autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1);
neuper@38066
   321
*-----since Model_Problem + complete_mod_ in case cas of SOME-----*)
neuper@38065
   322
autoCalculate 1 (Step 1); 
neuper@38065
   323
"----- step 1 ---";
neuper@38065
   324
autoCalculate 1 (Step 1);
neuper@38065
   325
"----- step 2 ---";
neuper@38065
   326
autoCalculate 1 (Step 1);
neuper@38065
   327
"----- step 3 ---";
neuper@38065
   328
autoCalculate 1 (Step 1);
neuper@38065
   329
"----- step 4 ---";
neuper@38065
   330
autoCalculate 1 (Step 1);
neuper@38065
   331
"----- step 5 ---";
neuper@38065
   332
autoCalculate 1 (Step 1);
neuper@38065
   333
"----- step 6 ---";
neuper@38065
   334
autoCalculate 1 (Step 1);
neuper@38065
   335
"----- step 7 ---";
neuper@38065
   336
autoCalculate 1 (Step 1);
neuper@38065
   337
"----- step 8 ---";
neuper@38065
   338
autoCalculate 1 (Step 1);
neuper@38065
   339
val (ptp as (_, p), _) = get_calc 1;
neuper@38065
   340
val (Form t,_,_) = pt_extract ptp;
akargl@42108
   341
neuper@38065
   342
if term2str t = "c + x + 1 / 3 * x ^^^ 3" andalso p = ([], Res) then ()
neuper@38065
   343
else error "mathengine.sml -- fun autoCalculate -- end";
neuper@38065
   344
neuper@42067
   345
"----------- fun autoCalculate..CompleteCalc ------------";
neuper@42067
   346
"----------- fun autoCalculate..CompleteCalc ------------";
neuper@42067
   347
"----------- fun autoCalculate..CompleteCalc ------------";
neuper@42067
   348
 states:=[];
neuper@42067
   349
 CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
neuper@42067
   350
   ("Test", ["sqroot-test","univariate","equation","test"],
neuper@42067
   351
    ["Test","squ-equ-test-subpbl1"]))];
neuper@42067
   352
 Iterator 1;
neuper@42067
   353
 moveActiveRoot 1;
neuper@42067
   354
 
akargl@42108
   355
akargl@42108
   356
akargl@42108
   357