test/Tools/isac/Interpret/ctree.sml
author Alexander Kargl <akargl@brgkepler.net>
Tue, 26 Jul 2011 11:36:35 +0200
branchdecompose-isar
changeset 42193 06de2f62f744
parent 42190 a48e6fdc934c
child 42202 3ef5679743fb
permissions -rw-r--r--
intermed: uncommented tests
     1 (* tests for sml/ME/ctree.sml
     2    authors: Walther Neuper 060113
     3    (c) due to copyright terms
     4 
     5 use"../smltest/ME/ctree.sml";
     6 use"ctree.sml";
     7 *)
     8 
     9 "-----------------------------------------------------------------";
    10 "table of contents -----------------------------------------------";
    11 "-----------------------------------------------------------------";
    12 "-----------------------------------------------------------------";
    13 "-------------- fun get_ctxt -------------------------------------";
    14 "-------------- fun update_ctxt, fun g_ctxt ----------------------";
    15 "-------------- check positions in miniscript --------------------";
    16 "-------------- get_allpos' (from ptree above)--------------------";
    17 "-------------- cut_level (from ptree above)----------------------";
    18 "-------------- cut_tree (from ptree above)-----------------------";
    19 "=====new ptree 1a miniscript with mini-subpbl ===================";
    20 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
    21 "=====new ptree 2 miniscript with mini-subpbl ====================";
    22 "-------------- cut_tree (intermedi.ptree: 3rd level)-------------";
    23 "-------------- cappend (from ptree above)------------------------";
    24 "-------------- cappend minisubpbl -------------------------------";
    25 "=====new ptree 3 ================================================";
    26 "-------------- move_dn ------------------------------------------";
    27 "-------------- move_dn: Frm -> Res ------------------------------";
    28 "-------------- move_up ------------------------------------------";
    29 "------ move into detail -----------------------------------------";
    30 "=====new ptree 3a ===============================================";
    31 "-------------- move_dn in Incomplete ctree ----------------------";
    32 "=====new ptree 4: crooked by cut_level_'_ =======================";
    33 (*############## development stopped 0501 ########################*)
    34 (******************************************************************)
    35 (*              val SAVE_get_trace = get_trace;                   *)
    36 (******************************************************************)
    37 "-------------- get_interval from ctree: incremental development--";
    38 (******************************************************************)
    39 (*              val get_trace = SAVE_get_trace;                   *)
    40 (******************************************************************)
    41 (*############## development stopped 0501 ########################*)
    42 "=====new ptree 4 ratequation ====================================";
    43 "-------------- pt_extract form, tac, asm<>[] --------------------";
    44 "=====new ptree 5 minisubpbl =====================================";
    45 "-------------- pt_extract form, tac, asm ------------------------";
    46 "=====new ptree 6 minisubpbl intersteps ==========================";
    47 "-------------- get_allpos' new ----------------------------------";
    48 "-------------- cut_tree new (from ptree above)-------------------";
    49 "-----------------------------------------------------------------";
    50 "-----------------------------------------------------------------";
    51 "-----------------------------------------------------------------";
    52 
    53 
    54 "-------------- fun get_ctxt -------------------------------------";
    55 "-------------- fun get_ctxt -------------------------------------";
    56 "-------------- fun get_ctxt -------------------------------------";
    57 val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
    58 val (dI',pI',mI') =
    59   ("Test", ["sqroot-test","univariate","equation","test"],
    60    ["Test","squ-equ-test-subpbl1"]);
    61 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
    62 (get_ctxt pt p)
    63   handle _ => error "--- fun get_ctxt not even some ctxt found in PblObj";
    64 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
    65 (get_ctxt pt p)
    66   handle _ => error "--- fun get_ctxt not even some ctxt found in PrfObj";
    67 
    68 "-------------- fun update_ctxt, fun g_ctxt ----------------------";
    69 "-------------- fun update_ctxt, fun g_ctxt ----------------------";
    70 "-------------- fun update_ctxt, fun g_ctxt ----------------------";
    71 val pt = EmptyPtree;
    72 val pt = append_problem [] (e_istate, e_ctxt) e_fmz ([(*oris*)], e_spec, e_term) pt;
    73 val ctxt = get_obj g_ctxt pt [];
    74 if is_e_ctxt ctxt then () else error "--- fun update_ctxt, fun g_ctxt: append_problem changed";
    75 val pt = update_ctxt pt [] (ProofContext.init_global @{theory "Isac"});
    76 if (get_obj g_ctxt pt [] |> ProofContext.theory_of |> Context.theory_name) = "Isac"
    77 then () else error "--- fun update_ctxt, fun g_ctxt changed";
    78 
    79 "-------------- check positions in miniscript --------------------";
    80 "-------------- check positions in miniscript --------------------";
    81 "-------------- check positions in miniscript --------------------";
    82 val fmz = ["equality (x+1=(2::real))",
    83 	   "solveFor x","solutions L"];
    84 val (dI',pI',mI') =
    85   ("Test",["sqroot-test","univariate","equation","test"],
    86    ["Test","squ-equ-test-subpbl1"]);
    87 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
    88 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
    89 (* nxt = Add_Given "equality (x + 1 = 2)"
    90    (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
    91    *)
    92 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
    93 (* (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
    94    *)
    95 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
    96 (* (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
    97    *)
    98 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
    99 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   100 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   101 "ctree.sml-------------- get_allpos' new ------------------------\"";
   102 val (PP, pp) = split_last [1];
   103 val ((pt', cuts), clevup) = cut_bottom (PP, pp) (get_nd pt PP);
   104 
   105 val cuts = get_allp [] ([], ([],Frm)) pt;
   106 val cuts2 = get_allps [] [1] (children pt);
   107 "ctree.sml-------------- cut_tree new (from ptree above)----------";
   108 val (pt', cuts) = cut_tree pt ([1],Frm);
   109 "ctree.sml-------------- cappend on complete ctree from above ----";
   110 val (pt', cuts) = cappend_form pt [1] (e_istate, e_ctxt) (str2term "Inform[1]");
   111 "----------------------------------------------------------------/";
   112 
   113 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_form: pos =[1]*);
   114 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[1]*);
   115 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[2]*);
   116 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_problem: pos =[3]*);
   117 
   118 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   119 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   120 (*val nxt = ("Add_Given", Add_Given "equality (-1 + x = 0)").....*)
   121 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   122 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   123 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   124 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   125 (*val nxt = ("Apply_Method", Apply_Method ["Test", "solve_linear"])*)
   126 
   127 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_form: pos =[3,1]*);
   128 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[3,1]*);
   129 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[3,2]*);
   130 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*.append_result: pos =[3]*);
   131 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[4]*);
   132 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*.append_result: pos =[]*);
   133 val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
   134 if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
   135 else error "new behaviour in test: miniscript with mini-subpbl";
   136 
   137  show_pt pt;
   138 
   139 "-------------- get_allpos' (from ptree above)--------------------";
   140 "-------------- get_allpos' (from ptree above)--------------------";
   141 "-------------- get_allpos' (from ptree above)--------------------";
   142 if get_allpos' ([], 1) pt = 
   143    [([], Frm), 
   144     ([1], Frm), 
   145     ([1], Res), 
   146     ([2], Res), 
   147     ([3], Frm), 
   148     ([3, 1], Frm),
   149     ([3, 1], Res), 
   150     ([3, 2], Res), 
   151     ([3], Res), 
   152     ([4], Res), 
   153     ([], Res)]
   154 then () else error "ctree.sml: diff:behav. in get_allpos' 1";
   155 
   156 if get_allpos's ([], 1) (children pt) = 
   157    [([1], Frm), 
   158     ([1], Res), 
   159     ([2], Res), 
   160     ([3], Frm), 
   161     ([3, 1], Frm),
   162     ([3, 1], Res), 
   163     ([3, 2], Res), 
   164     ([3], Res), 
   165     ([4], Res)]
   166 then () else error "ctree.sml: diff:behav. in get_allpos' 2";
   167 
   168 if get_allpos's ([], 2) (takerest (1, children pt)) = 
   169    [([2], Res), 
   170     ([3], Frm), 
   171     ([3, 1], Frm), 
   172     ([3, 1], Res), 
   173     ([3, 2], Res),
   174     ([3], Res), 
   175     ([4], Res)]
   176 then () else error "ctree.sml: diff:behav. in get_allpos' 3";
   177 
   178 if get_allpos's ([], 3) (takerest (2, children pt)) = 
   179    [([3], Frm), 
   180     ([3, 1], Frm),
   181     ([3, 1], Res),
   182     ([3, 2], Res),
   183     ([3], Res),
   184     ([4], Res)]
   185 then () else error "ctree.sml: diff:behav. in get_allpos' 4";
   186 
   187 if get_allpos's ([3], 1) (children (nth 3 (children pt))) = 
   188    [([3, 1], Frm),
   189     ([3, 1], Res),
   190     ([3, 2], Res)]
   191 then () else error "ctree.sml: diff:behav. in get_allpos' 5";
   192 
   193 if get_allpos' ([3], 1) (nth 3 (children pt)) = 
   194    [([3], Frm),
   195     ([3, 1], Frm),
   196     ([3, 1], Res),
   197     ([3, 2], Res),
   198     ([3], Res)]
   199 then () else error "ctree.sml: diff:behav. in get_allpos' 6";
   200 
   201 
   202 
   203 
   204 
   205 
   206 "-------------- cut_level (from ptree above)----------------------";
   207 "-------------- cut_level (from ptree above)----------------------";
   208 "-------------- cut_level (from ptree above)----------------------";
   209 show_pt pt;
   210 show_pt pt';
   211 print_depth 99; cuts; print_depth 3;
   212 
   213 (*if cuts = [([2], Res),
   214 	   ([3], Frm),
   215 	   ([3, 1], Frm),
   216 	   ([3, 1], Res),
   217 	   ([3, 2], Res),
   218 	   ([3], Res),
   219 	   ([4], Res)]
   220 then () else error "ctree.sml: diff:behav. in cut_level 1a";
   221 val (res,asm) = get_obj g_result pt' [2];
   222 if res = e_term andalso asm = [] then () else
   223 error "ctree.sml: diff:behav. in cut_level 1aa" WN050219*);
   224 if not (existpt [2] pt') then () else
   225 error "ctree.sml: diff:behav. in cut_level 1aa2" (*WN050220*);
   226 
   227 val (res,asm) = get_obj g_result pt' [];
   228 
   229 (*============ inhibit exn AK110726 ==============================================
   230 if term2str res = "[x = 1]" (*WN050219 e_term in cut_tree!!!*) then () else
   231 error "ctree.sml: diff:behav. in cut_level 1ab";
   232 if map fst (get_interval ([],Frm) ([],Res) 9999 pt') =
   233    [([], Frm), 
   234     ([1], Frm), 
   235     ([1], Res), 
   236     ([2], Res),(*, e_term in cut_tree!!!*)
   237     ([], Res)] then () else 
   238 error "ctree.sml: diff:behav. in cut_level 1b";
   239 ============ inhibit exn AK110726 ==============================================*)
   240 
   241 val (pt',cuts) = cut_level [] [] pt ([2],Res);
   242 if cuts = [([3], Frm), 
   243 	   ([3, 1], Frm), 
   244 	   ([3, 1], Res), 
   245 	   ([3, 2], Res), 
   246 	   ([3], Res), 
   247 	   ([4], Res)]
   248 then () else error "ctree.sml: diff:behav. in cut_level 2a";
   249 
   250 if pr_ptree pr_short pt' = ".    ----- pblobj -----\n1.   x + 1 = 2\n2.   x + 1 + -1 * 2 = 0\n"
   251 then () else error "ctree.sml: diff:behav. in cut_level 2b";
   252 
   253 val (pt',cuts) = cut_level [] [3] pt ([3,1],Frm);
   254 if cuts = [([3, 1], Res), ([3, 2], Res)]
   255 then () else error "ctree.sml: diff:behav. in cut_level 3a";
   256 if pr_ptree pr_short pt' = ".    ----- pblobj -----\n1.   x + 1 = 2\n2.   x + 1 + -1 * 2 = 0\n3.    ----- pblobj -----\n3.1.   -1 + x = 0\n4.   [x = 1]\n"
   257 then () else error "ctree.sml: diff:behav. in cut_level 3b";
   258 
   259 val (pt',cuts) = cut_level [] [3] pt ([3,1],Res);
   260 if cuts = [([3, 2], Res)]
   261 then () else error "ctree.sml: diff:behav. in cut_level 4a";
   262 if pr_ptree pr_short pt' = ".    ----- pblobj -----\n1.   x + 1 = 2\n2.   x + 1 + -1 * 2 = 0\n3.    ----- pblobj -----\n3.1.   -1 + x = 0\n4.   [x = 1]\n"
   263 then () else error "ctree.sml: diff:behav. in cut_level 4b";
   264 
   265 
   266 "-------------- cut_tree (from ptree above)-----------------------";
   267 "-------------- cut_tree (from ptree above)-----------------------";
   268 "-------------- cut_tree (from ptree above)-----------------------";
   269 val (pt', cuts) = cut_tree pt ([2],Frm);(*not created by move_dn -- not on WS*)
   270 
   271 (*============ inhibit exn AK110726 ==============================================
   272 if cuts = [([2], Res),
   273 	   ([3], Frm),
   274 	   ([3, 1], Frm),
   275 	   ([3, 1], Res),
   276 	   ([3, 2], Res),
   277 	   ([3], Res),
   278 	   ([4], Res),
   279 	   ([], Res)]
   280 then () else error "ctree.sml: diff:behav. in cut_tree 1a";
   281 
   282 val (res,asm) = get_obj g_result pt' [2];
   283 ============ inhibit exn AK110726 ==============================================*)
   284 
   285 if res = e_term (*WN050219 done by cut_level*) then () else
   286 error "ctree.sml: diff:behav. in cut_tree 1aa";
   287 
   288 (*============ inhibit exn AK110726 ==============================================
   289 val form = get_obj g_form pt' [2];
   290 if term2str form = "x + 1 + -1 * 2 = 0" (*remained !!!*) then () else
   291 error "ctree.sml: diff:behav. in cut_tree 1ab";
   292 ============ inhibit exn AK110726 ==============================================*)
   293 
   294 val (res,asm) = get_obj g_result pt' [];
   295 if res = e_term (*WN050219 done by cut_tree*) then () else
   296 error "ctree.sml: diff:behav. in cut_tree 1ac";
   297 
   298 if map fst (get_interval ([],Frm) ([],Res) 9999 pt') =
   299    [([], Frm), 
   300     ([1], Frm), 
   301     ([1], Res)] then () else 
   302 error "ctree.sml: diff:behav. in cut_tree 1ad";
   303 
   304 val (pt', cuts) = cut_tree pt ([2],Res);
   305 (*============ inhibit exn AK110726 ==============================================
   306 if cuts = [([3], Frm),
   307 	   ([3, 1], Frm),
   308 	   ([3, 1], Res),
   309 	   ([3, 2], Res),
   310 	   ([3], Res),
   311 	   ([4], Res),
   312 	   ([], Res)]
   313 then () else error "ctree.sml: diff:behav. in cut_tree 2";
   314 ============ inhibit exn AK110726 ==============================================*)
   315 
   316 val (pt', cuts) = cut_tree pt ([3,1],Frm);
   317 (*============ inhibit exn AK110726 ==============================================
   318 if cuts = [([3, 1], Res), 
   319 	   ([3, 2], Res),
   320 	   ([3], Res),
   321 	   ([4], Res),
   322 	   ([], Res)]
   323 then () else error "ctree.sml: diff:behav. in cut_tree 3";
   324 ============ inhibit exn AK110726 ==============================================*)
   325 
   326 val (pt', cuts) = cut_tree pt ([3,1],Res);
   327 if cuts = [([3, 2], Res),
   328 	   ([3], Res),
   329 	   ([4], Res),
   330 	   ([], Res)]
   331 then () else error "ctree.sml: diff:behav. in cut_tree 4";
   332 
   333 "=====new ptree 1a miniscript with mini-subpbl ===================";
   334 "=====new ptree 1a miniscript with mini-subpbl ===================";
   335 "=====new ptree 1a miniscript with mini-subpbl ===================";
   336 val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
   337 val (dI',pI',mI') =
   338   ("Test",["sqroot-test","univariate","equation","test"],
   339    ["Test","squ-equ-test-subpbl1"]);
   340 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   341 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   342 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   343 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   344 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   345 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   346 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   347 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   348 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   349 show_pt pt;
   350 
   351 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
   352 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
   353 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
   354 
   355 val (pt',cuts) = cut_level [] [3] pt ([1],Frm);(*([1],Frm) is stored*)
   356 if cuts = [](*([1],Res) is not yet stored (Nd.ostate=Incomplete)*)
   357 then () else error "ctree.sml: diff:behav. in cut_tree 4a";
   358 
   359 val (pt', cuts) = cut_tree pt ([1],Frm);
   360 if cuts = []
   361 then () else error "ctree.sml: diff:behav. in cut_tree 4a";
   362 
   363 (*WN050219
   364 val pos as ([p],_) = ([1],Frm);
   365 val pt as Nd (b,_) = pt;
   366 
   367 
   368 show_pt pt;
   369 show_pt pt';
   370 print_depth 99;cuts;print_depth 3;
   371 print_depth 99;map fst (get_interval ([],Frm) ([],Res) 9999 pt');print_depth 3;
   372 ####################################################################*)
   373 
   374 
   375 
   376 
   377 
   378 
   379 
   380 
   381 "=====new ptree 2 miniscript with mini-subpbl ====================";
   382 "=====new ptree 2 miniscript with mini-subpbl ====================";
   383 "=====new ptree 2 miniscript with mini-subpbl ====================";
   384  states:=[];
   385  CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
   386    ("Test", ["sqroot-test","univariate","equation","test"],
   387     ["Test","squ-equ-test-subpbl1"]))];
   388  Iterator 1; moveActiveRoot 1;
   389  autoCalculate 1 CompleteCalc; 
   390 
   391  interSteps 1 ([3,2],Res);
   392 
   393  val ((pt,_),_) = get_calc 1;
   394  show_pt pt;
   395 
   396 if (term2str o fst) (get_obj g_result pt [3,2,1]) = "x = 0 + 1" then ()
   397 else error "mini-subpbl interSteps broken";
   398 
   399 "-------------- cut_tree (intermedi.ptree: 3rd level)-------------";
   400 "-------------- cut_tree (intermedi.ptree: 3rd level)-------------";
   401 "-------------- cut_tree (intermedi.ptree: 3rd level)-------------";
   402 (*WN050225 intermed. outcommented
   403  val (pt', cuts) = cut_tree pt ([3,2,1],Frm);
   404  if cuts = [([3, 2, 1], Res),
   405 	    ([3, 2, 2], Res),
   406 	    ([3, 2], Res), 
   407 	    ([3], Res),
   408 	    ([4], Res)]
   409  then () else error "ctree.sml: diff:behav. in cut_tree 3rd level 1";
   410 
   411  val (pt', cuts) = cut_tree pt ([3,2,1],Res);
   412  if cuts = [([3, 2, 2], Res),
   413 	    ([3, 2], Res), 
   414 	    ([3], Res),
   415 	    ([4], Res)]
   416  then () else error "ctree.sml: diff:behav. in cut_tree 3rd level 2";
   417 
   418 
   419 "-------------- cappend (from ptree above)------------------------";
   420 "-------------- cappend (from ptree above)------------------------";
   421 "-------------- cappend (from ptree above)------------------------";
   422 val (pt',cuts) = cappend_form pt [3,2,1] e_istate (str2term "newnew");
   423 if cuts = [([3, 2, 1], Res),
   424 	   ([3, 2, 2], Res),
   425 	   ([3, 2], Res), 
   426 	   ([3], Res),
   427 	   ([4], Res),
   428 	   ([], Res)]
   429 then () else error "ctree.sml: diff:behav. in cappend_form";
   430 if term2str (get_obj g_form pt' [3,2,1]) = "newnew" andalso
   431    get_obj g_tac pt' [3,2,1] = Empty_Tac andalso
   432    term2str (fst (get_obj g_result pt' [3,2,1])) = "??.empty"
   433  then () else error "ctree.sml: diff:behav. in cappend 1";
   434 
   435 val (pt',cuts) = cappend_atomic pt [3,2,1] e_istate (str2term "newform")
   436     (Tac "test") (str2term "newresult",[]) Complete;
   437 if cuts = [([3, 2, 1], Res), (*?????????????*)
   438 	   ([3, 2, 2], Res),
   439 	   ([3, 2], Res),
   440 	   ([3], Res),
   441 	   ([4], Res),
   442 	   ([], Res)]
   443 then () else error "ctree.sml: diff:behav. in cappend_atomic";
   444 
   445 
   446 
   447 "-------------- cappend minisubpbl -------------------------------";
   448 "-------------- cappend minisubpbl -------------------------------";
   449 "-------------- cappend minisubpbl -------------------------------";
   450 "=====new ptree 1 miniscript with mini-subpbl ====================";
   451 val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
   452 val (dI',pI',mI') =
   453   ("Test",["sqroot-test","univariate","equation","test"],
   454    ["Test","squ-equ-test-subpbl1"]);
   455 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
   456 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   457 (* nxt = Add_Given "equality (x + 1 = 2)"
   458    (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
   459    *)
   460 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   461 (* (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
   462    *)
   463 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   464 (* (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
   465    *)
   466 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   467 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   468 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
   469 (*###cappend_form: pos =[1]  ... while calculating nxt, which pt is dropped
   470 val nxt = ("Apply_Method", Apply_Method ["Test", "squ-equ-test-subpbl1"])*)
   471 
   472 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_form: pos =[1]*);
   473 val p = ([1], Frm);
   474 val (pt,cuts) = cappend_form pt (fst p) e_istate (str2term "x + 1 = 2");
   475 val form = get_obj g_form pt (fst p);
   476 val (res,_) = get_obj g_result pt (fst p);
   477 if term2str form = "x + 1 = 2" andalso res = e_term then () else
   478 error "ctree.sml, diff.behav. cappend minisubpbl ([1],Frm)";
   479 if not (existpt ((lev_on o fst) p) pt) then () else
   480 error "ctree.sml, diff.behav. cappend minisubpbl ([1],Frm) nxt";
   481 
   482 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[1]*);
   483 val p = ([1], Res);
   484 val (pt,cuts) = 
   485     cappend_atomic pt (fst p) e_istate (str2term "x + 1 = 2")
   486 		   Empty_Tac (str2term "x + 1 + -1 * 2 = 0",[]) Incomplete;
   487 val form = get_obj g_form pt (fst p);
   488 val (res,_) = get_obj g_result pt (fst p);
   489 if term2str form = "x + 1 = 2" andalso term2str res = "x + 1 + -1 * 2 = 0" 
   490 then () else error "ctree.sml, diff.behav. cappend minisubpbl ([1],Res)";
   491 if not (existpt ((lev_on o fst) p) pt) then () else
   492 error "ctree.sml, diff.behav. cappend minisubpbl ([1],Res) nxt";
   493 
   494 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[2]*);
   495 val p = ([2], Res);
   496 val (pt,cuts) = 
   497     cappend_atomic pt (fst p) e_istate (str2term "x + 1 + -1 * 2 = 0")
   498 		   Empty_Tac (str2term "-1 + x = 0",[]) Incomplete;
   499 val form = get_obj g_form pt (fst p);
   500 val (res,_) = get_obj g_result pt (fst p);
   501 if term2str form = "x + 1 + -1 * 2 = 0" andalso term2str res = "-1 + x = 0"
   502 then () else error "ctree.sml, diff.behav. cappend minisubpbl ([2],Res)";
   503 if not (existpt ((lev_on o fst) p) pt) then () else
   504 error "ctree.sml, diff.behav. cappend minisubpbl ([2],Res) nxt";
   505 
   506 
   507 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)cappend_problem: pos =[3]*)
   508 val p = ([3], Pbl);
   509 val (pt,cuts) = cappend_problem pt (fst p) e_istate e_fmz ([],e_spec,e_term);
   510 if is_pblobj (get_obj I pt (fst p)) then () else 
   511 error "ctree.sml, diff.behav. cappend minisubpbl ([3],Pbl)";
   512 if not (existpt ((lev_on o fst) p) pt) then () else
   513 error "ctree.sml, diff.behav. cappend minisubpbl ([3],Pbl) nxt";
   514 
   515 (* ...complete calchead skipped...*)
   516 
   517 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_form: pos =[3,1]*);
   518 val p = ([3, 1], Frm);
   519 val (pt,cuts) = cappend_form pt (fst p) e_istate (str2term "-1 + x = 0");
   520 val form = get_obj g_form pt (fst p);
   521 val (res,_) = get_obj g_result pt (fst p);
   522 if term2str form = "-1 + x = 0" andalso res = e_term then () else
   523 error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Frm)";
   524 if not (existpt ((lev_on o fst) p) pt) then () else
   525 error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Frm) nxt";
   526 
   527 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)cappend_atomic: pos =[3,1]*)
   528 val p = ([3, 1], Res);
   529 val (pt,cuts) = 
   530     cappend_atomic pt (fst p) e_istate (str2term "-1 + x = 0")
   531 		   Empty_Tac (str2term "x = 0 + -1 * -1",[]) Incomplete;
   532 val form = get_obj g_form pt (fst p);
   533 val (res,_) = get_obj g_result pt (fst p);
   534 if term2str form = "-1 + x = 0" andalso term2str res = "x = 0 + -1 * -1" then()
   535 else error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Res)";
   536 if not (existpt ((lev_on o fst) p) pt) then () else
   537 error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Res) nxt";
   538 
   539 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_form: pos =[3,1]*);
   540 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[3,1]*);
   541 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[3,2]*);
   542 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**).append_result: pos =[3]*);
   543 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[4]*);
   544 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**).append_result: pos =[]*);
   545 
   546 WN050225 intermed. outcommented---*)
   547 
   548 "=====new ptree 3 ================================================";
   549 "=====new ptree 3 ================================================";
   550 "=====new ptree 3 ================================================";
   551 
   552 states:=[];
   553  CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
   554    ("Test", ["sqroot-test","univariate","equation","test"],
   555     ["Test","squ-equ-test-subpbl1"]))];
   556  Iterator 1; moveActiveRoot 1;
   557  autoCalculate 1 CompleteCalc; 
   558 
   559  val ((pt,_),_) = get_calc 1;
   560  show_pt pt;
   561 
   562 "-------------- move_dn ------------------------------------------";
   563 "-------------- move_dn ------------------------------------------";
   564 "-------------- move_dn ------------------------------------------";
   565  val p = move_dn [] pt ([],Pbl) (*-> ([1],Frm)*);
   566  val p = move_dn [] pt p        (*-> ([1],Res)*);
   567  val p = move_dn [] pt p        (*-> ([2],Res)*);
   568  val p = move_dn [] pt p        (*-> ([3],Pbl)*);
   569  val p = move_dn [] pt p        (*-> ([3,1],Frm)*);
   570  val p = move_dn [] pt p        (*-> ([3,1],Res)*);
   571  val p = move_dn [] pt p        (*-> ([3,2],Res)*);
   572  val p = move_dn [] pt p        (*-> ([3],Res)*);
   573 (* term2str (get_obj g_res pt [3]);
   574    term2str (get_obj g_form pt [4]);
   575    *)
   576  val p = move_dn [] pt p        (*-> ([4],Res)*);
   577  val p = move_dn [] pt p        (*-> ([],Res)*);
   578 (*
   579  val p = (move_dn [] pt p) handle e => print_exn_G e;
   580                                   Exception PTREE end of calculation*)
   581 
   582 if p=([],Res) then () else error "ctree.sml: diff:behav. in move_dn";
   583 
   584 "-------------- move_dn: Frm -> Res ------------------------------";
   585 "-------------- move_dn: Frm -> Res ------------------------------";
   586 "-------------- move_dn: Frm -> Res ------------------------------";
   587  (*states := [];
   588  CalcTree      (*start of calculation, return No.1*)
   589      [(["equality (1+-1*2+x=(0::real))", "solveFor x","solutions L"],
   590        ("Test", 
   591 	["linear","univariate","equation","test"],
   592 	["Test","solve_linear"]))];
   593  Iterator 1; moveActiveRoot 1;
   594  autoCalculate 1 CompleteCalcHead;
   595  autoCalculate 1 (Step 1);
   596  refFormula 1 (get_pos 1 1);
   597 
   598  moveActiveRoot 1;
   599  moveActiveDown 1;
   600  if get_pos 1 1 = ([1], Frm) then () 
   601  else error "ctree.sml: diff.behav. in move_dn: Frm -> Res (1)";
   602  moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
   603 
   604  autoCalculate 1 (Step 1);
   605  refFormula 1 (get_pos 1 1);
   606 
   607  moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
   608  if get_pos 1 1 = ([1], Res) then () 
   609  else error "ctree.sml: diff.behav. in move_dn: Frm -> Res (1)";
   610  moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)*)
   611 
   612 
   613 "-------------- move_up ------------------------------------------";
   614 "-------------- move_up ------------------------------------------";
   615 "-------------- move_up ------------------------------------------";
   616  val p = move_up [] pt ([],Res); (*-> ([4],Res)*)
   617  val p = move_up [] pt p;        (*-> ([3],Res)*)
   618  val p = move_up [] pt p;        (*-> ([3,2],Res)*)
   619  val p = move_up [] pt p;        (*-> ([3,1],Res)*)
   620  val p = move_up [] pt p;        (*-> ([3,1],Frm)*)
   621  val p = move_up [] pt p;        (*-> ([3],Pbl)*)
   622  val p = move_up [] pt p;        (*-> ([2],Res)*)
   623  val p = move_up [] pt p;        (*-> ([1],Res)*)
   624  val p = move_up [] pt p;        (*-> ([1],Frm)*)
   625  val p = move_up [] pt p;        (*-> ([],Pbl)*)
   626 (*val p = (move_up [] pt p) handle e => print_exn_G e;
   627                                   Exception PTREE begin of calculation*)
   628 
   629 if p=([],Pbl) then () else error "ctree.sml: diff.behav. in move_up";
   630 
   631 "------ move into detail -----------------------------------------";
   632 "------ move into detail -----------------------------------------";
   633 "------ move into detail -----------------------------------------";
   634  states:=[];
   635  CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
   636    ("Test", ["sqroot-test","univariate","equation","test"],
   637     ["Test","squ-equ-test-subpbl1"]))];
   638  Iterator 1; moveActiveRoot 1;
   639  autoCalculate 1 CompleteCalc; 
   640  moveActiveRoot 1; 
   641  moveActiveDown 1;
   642  moveActiveDown 1;
   643  moveActiveDown 1; 
   644  refFormula 1 (get_pos 1 1) (* 2 Res, <ISA> -1 + x = 0 </ISA> *);
   645 
   646  interSteps 1 ([2],Res);
   647 
   648  val ((pt,_),_) = get_calc 1; show_pt pt;
   649  val p = get_pos 1 1;
   650 
   651  val p = move_up [] pt p;     (*([2, 6], Res)*);
   652  val p = movelevel_up [] pt p;(*([2], Frm)*);
   653  val p = move_dn [] pt p;     (*([2, 1], Frm)*); 
   654  val p = move_dn [] pt p;     (*([2, 1], Res)*);
   655  val p = move_dn [] pt p;     (*([2, 2], Res)*);
   656  val p = move_dn [] pt p;     (*([2, 3], Res)*);
   657  val p = move_dn [] pt p;     (*([2, 4], Res)*);
   658  val p = move_dn [] pt p;     (*([2, 5], Res)*);
   659  val p = move_dn [] pt p;     (*([2, 6], Res)*); 
   660  if p = ([2, 6], Res) then() 
   661  else error "ctree.sml: diff.behav. in move into detail";
   662 
   663 "=====new ptree 3a ===============================================";
   664 "=====new ptree 3a ===============================================";
   665 "=====new ptree 3a ===============================================";
   666  states:=[];
   667  CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
   668    ("Test", ["sqroot-test","univariate","equation","test"],
   669     ["Test","squ-equ-test-subpbl1"]))];
   670  Iterator 1; moveActiveRoot 1;
   671  autoCalculate 1 CompleteCalcHead; 
   672  autoCalculate 1 (Step 1); 
   673  autoCalculate 1 (Step 1); 
   674  autoCalculate 1 (Step 1);
   675  val ((pt,_),_) = get_calc 1;
   676  val p = move_dn [] pt ([],Pbl)       (*-> ([1], Frm)*); 
   677  val p = move_dn [] pt ([1], Frm)     (*-> ([1], Res)*); 
   678  val p = move_dn [] pt ([1], Res)     (*-> ([2], Res)*); 
   679  (*val p = move_dn [] pt ([2], Res)     ->Exception- PTREE "[] not complete"*);
   680 
   681  moveDown 1 ([],Pbl)        (*-> ([1], Frm)*);
   682  moveDown 1 ([1],Frm)       (*-> ([1],Res)*);
   683  moveDown 1 ([1],Res)       (*-> ([2],Res)*);
   684  moveDown 1 ([2],Res)       (*-> pos does not exist*);
   685 (*
   686  get_obj g_ostate pt [1];
   687  show_pt pt; 
   688 *)
   689 
   690 "-------------- move_dn in Incomplete ctree ----------------------";
   691 "-------------- move_dn in Incomplete ctree ----------------------";
   692 "-------------- move_dn in Incomplete ctree ----------------------";
   693 
   694 
   695 
   696 "=====new ptree 4: crooked by cut_level_'_ =======================";
   697 "=====new ptree 4: crooked by cut_level_'_ =======================";
   698 "=====new ptree 4: crooked by cut_level_'_ =======================";
   699 states:=[];
   700 CalcTree
   701 [(["equality (x/(x^2 - 6*x+9) - 1/(x^2 - 3*x) =1/x)",
   702 	   "solveFor x","solutions L"], 
   703   ("RatEq",["univariate","equation"],["no_met"]))];
   704 Iterator 1; moveActiveRoot 1;
   705 autoCalculate 1 CompleteCalc; 
   706 
   707 getTactic 1 ([1],Res);(*Rewrite_Set RatEq_simplify*)
   708 getTactic 1 ([2],Res);(*Rewrite_Set norm_Rational*)
   709 getTactic 1 ([3],Res);(*Rewrite_Set RatEq_eliminate*)
   710 getTactic 1 ([4,1],Res);(*Rewrite all_left*)
   711 getTactic 1 ([4,2],Res);(*Rewrite_Set expand_binoms*)
   712 getTactic 1 ([4,3],Res);(*Rewrite_Set_Inst make_ratpoly_in*)
   713 
   714 moveActiveFormula 1 ([1],Res)(*1.1...1.4*);
   715 moveActiveFormula 1 ([2],Res)(**ME_Isa: 'expand' not known*);
   716 moveActiveFormula 1 ([3],Res)(*3.1.*);
   717 moveActiveFormula 1 ([4,2],Res)(*4.2.1.*);
   718 moveActiveFormula 1 ([4,3],Res)(**one_scr_arg: called by Script Stepwise t_=*);
   719 
   720 moveActiveFormula 1 ([1],Res)(*1.1...1.4*);
   721 interSteps 1 ([1],Res)(*..is activeFormula !?!*);
   722 
   723 getTactic 1 ([1,1],Res);(*Rewrite real_diff_minus*)
   724 getTactic 1 ([1,2],Res);(*Rewrite real_diff_minus*)
   725 getTactic 1 ([1,3],Res);(*Rewrite real_diff_minus*)
   726 getTactic 1 ([1,4],Res);(*Rewrite real_rat_mult_1*)
   727 
   728 moveActiveFormula 1 ([4,2],Res)(*4.2.1.*);
   729 interSteps 1 ([4,2],Res)(*..is activeFormula !?!*);
   730 val ((pt,_),_) = get_calc 1;
   731 writeln(pr_ptree pr_short pt);
   732 (*delete [4,1] in order to make pos [4],[4,4] for pblobjs differen [4],[4,3]:
   733  ###########################################################################*)
   734 val (pt, ppp) = cut_level_'_ [] [] pt ([4,1],Frm);
   735 writeln(pr_ptree pr_short pt);
   736 
   737 
   738 
   739 
   740 
   741 "-------------- get_interval from ctree: incremental development--";
   742 "-------------- get_interval from ctree: incremental development--";
   743 "-------------- get_interval from ctree: incremental development--";
   744 "--- level 1: get pos from start b to end p ----------------------";
   745 "--- level 1: get pos from start b to end p ----------------------";
   746 "--- level 1: get pos from start b to end p ----------------------";
   747 (******************************************************************)
   748 (**)            val SAVE_get_trace = get_trace;                 (**)
   749 (******************************************************************)
   750 (*'getnds' below is structured as such:*)
   751 fun www _ [x] = "l+r-margin"
   752   | www true [x1,x2] = "l-margin,  r-margin"
   753   | www _ [x1,x2] = "intern,  r-margin"
   754   | www true (x::(xs as _::_)) = "l-margin  " ^ www false xs
   755   | www _ (x::(xs as _::_)) = "intern  " ^ www false xs;
   756 www true [1,2,3,4,5];
   757 (*val it = "from  intern  intern  intern  to" : string*)
   758 www true [1,2];
   759 (*val it = "from  to" : string*)
   760 www true [1];
   761 (*val it = "from+to" : string*)
   762 
   763 local
   764 (*specific values of hd of pos p,q for simple handling take_fromto,
   765   from-pos p, to-pos q: take_fromto (hdp p) (hdq q) (children pt) ...
   766   ... can be used even for positions _below_ p or q*)
   767 fun hdp [] = 1     | hdp [0] = 1     | hdp x = hd x;(*start with first*)
   768 fun hdq	[] = 99999 | hdq [0] = 99999 | hdq x = hd x;(*take until last*)
   769 (*analoguous for tl*)
   770 fun tlp [] = [0]     | tlp [_] = [0]     | tlp x = tl x;
   771 fun tlq [] = [99999] | tlq [_] = [99999] | tlq x = tl x;
   772 
   773 (*see modspec.sml#pt_form
   774 fun pt_form (PrfObj {form,...}) = term2str form
   775   | pt_form (PblObj {probl,spec,origin=(_,spec',_),...}) =
   776     let val (dI, pI, _) = get_somespec' spec spec'
   777 	val {cas,...} = get_pbt pI
   778     in case cas of
   779 	   NONE => term2str (pblterm dI pI)
   780 	 | SOME t => term2str (subst_atomic (mk_env probl) t)
   781     end;
   782 *)
   783 (*.get an 'interval' from ptree down to a certain level
   784    by 'take_fromto children' of the nodes with specific 'from' and 'to';
   785    'i > 0' suppresses output during recursive descent towards 'from'
   786    b: the 'from' incremented to the actual pos
   787    p,q: specific 'from','to' for simple use of 'take_fromto'*)
   788 fun getnd i (b,p) q (Nd (po, nds)) =
   789     (if  i <= 0 then [(*[(b, pt_form po)]*) (**)[b](**)] else [])
   790  
   791     @ (writeln("getnd  : b="^(ints2str' b)^", p="^
   792 	       (ints2str' p)^", q="^(ints2str' q));
   793 
   794        getnds (i-1) true (b@[hdp p], tlp p) (tlq q)
   795 	       (take_fromto (hdp p) (hdq q) nds))
   796 
   797 and getnds _ _ _ _ [] = []                         (*no children*)
   798   | getnds i _ (b,p) q [nd] = (getnd i (b,p) q nd) (*l+r-margin*)
   799   | getnds i true (b,p) q [n1, n2] =               (*l-margin,  r-margin*)
   800     (writeln("getnds3: b="^ ints2str' b ^", p="^ ints2str' p ^
   801 	     ", q="^ ints2str' q);
   802     (getnd i      (       b, p ) [99999] n1) @
   803     (getnd ~99999 (lev_on b,[0]) q       n2))
   804   | getnds i _    (b,p) q [n1, n2] =               (*intern,  r-margin*)
   805     (writeln("getnds4: b="^ ints2str' b ^", p="^ ints2str' p ^
   806 	     ", q="^ ints2str' q);
   807     (getnd i      (       b,[0]) [99999] n1) @
   808     (getnd ~99999 (lev_on b,[0]) q       n2))
   809   | getnds i true (b,p) q (nd::(nds as _::_)) =    (*l-margin, intern*)
   810     (writeln("getnds5: b="^ ints2str' b ^", p="^ ints2str' p ^
   811 	     ", q="^ ints2str' q);
   812     (getnd i             (       b, p ) [99999] nd) @
   813     (getnds ~99999 false (lev_on b,[0]) q nds)) 
   814   | getnds i _ (b,p) q (nd::(nds as _::_)) =       (*intern, ...*)
   815     (getnd i             (       b,[0]) [99999] nd) @
   816     (getnds ~99999 false (lev_on b,[0]) q nds); 
   817 in
   818 (*get an 'interval from to' from a ptree as 'intervals f t' of respective nodes
   819   where 'from' are pos, i.e. a key as int list, 'f' an int (to,t analoguous)
   820 (1) the 'f' are given 
   821 (1a) by 'from' if 'f' = the respective element of 'from' (left margin)
   822 (1b) -inifinity, if 'f' > the respective element of 'from' (internal node)
   823 (2) the 't' ar given
   824 (2a) by 'to' if 't' = the respective element of 'to' (right margin)
   825 (2b) inifinity, if 't' < the respective element of 'to (internal node)'
   826 the 'f' and 't' are set by hdp,... *)
   827 fun get_trace pt p q =
   828     (flat o (getnds ((length p) -1) true ([hdp p], tlp p) (tlq q))) 
   829 	(take_fromto (hdp p) (hdq q) (children pt));
   830 end;
   831 
   832 writeln(pr_ptree pr_short pt);
   833 
   834 case get_trace pt [1,3] [4,1,1] of
   835     [[1,3],[1,4],[2],[3],[4],[4,1],[4,1,1]] => () 
   836   | _ => error "diff.behav.in ctree.sml: get_interval lev 1a";
   837 case get_trace pt [2] [4,3,2] of
   838     [[2],[3],[4],[4,1],[4,1,1],[4,2],[4,3],[4,3,1],[4,3,2]] => ()
   839   | _ => error "diff.behav.in ctree.sml: get_interval lev 1b";
   840 case get_trace pt [1,4] [4,3,1] of
   841     [[1,4],[2],[3],[4],[4,1],[4,1,1],[4,2],[4,3],[4,3,1]] => () 
   842   | _ => error "diff.behav.in ctree.sml: get_interval lev 1c";
   843 
   844 (*========== inhibit exn AK110719 ==============================================
   845 case get_trace pt [4,2] [5] of
   846    (*[([4,2],_),([4,3],_),([4,4],_),([4,4,1],_),([4,4,2],_),([4,4,3],_),
   847     ([4,4,4],_),([4,4,5],_),([5],_)] => () ..with pt_form*)
   848     [[4,2],[4,3],[4,3,1],[4,3,2],[4,3,3],[4,3,4],[4,3,5],[5]]=>()
   849   | _ => error "diff.behav.in ctree.sml: get_interval lev 1d";
   850 ========== inhibit exn AK110719 ==============================================*)
   851 
   852 case get_trace pt [] [4,4,2] of
   853     [[1],[1,1],[1,2],[1,3],[1,4],[2],[3],[4],[4,1],[4,1,1],[4,2],
   854      [4,3],[4,3,1],[4,3,2]] => () 
   855   | _ => error "diff.behav.in ctree.sml: get_interval lev 1e";
   856 
   857 (*========== inhibit exn AK110719 ==============================================
   858 case get_trace pt [] [] of
   859     [[1],[1,1],[1,2],[1,3],[1,4],[2],[3],[4],[4,1],[4,1,1],[4,2],
   860      [4,3],[4,3,1],[4,3,2],[4,3,3],[4,3,4],[4,3,5],[5]] => () 
   861   | _ => error "diff.behav.in ctree.sml: get_interval lev 1f";
   862 case get_trace pt [4,3] [4,3] of
   863     [[4,3],[4,3,1],[4,3,2],[4,3,3],[4,3,4],[4,3,5]] => () 
   864   | _ => error "diff.behav.in ctree.sml: get_interval lev 1g";
   865 ========== inhibit exn AK110719 ==============================================*)
   866 
   867 "--- level 2: get pos' from start b to end p ---------------------";
   868 "--- level 2: get pos' from start b to end p ---------------------";
   869 "--- level 2: get pos' from start b to end p ---------------------";
   870 (*idea: pos_ is _ONLY_ relevant exactly at (endpoint of) from, to
   871   development stopped in favour of move_dn, see get_interval
   872   actually used (inefficient) version with move_dn: see modspec.sml
   873 *)
   874 (*
   875 case get_trace pt ([1,4],Res) ([4,4,1],Frm) of
   876     [[2],[3],[4],[4,1],[4,2],[4,2,1],[4,3],[4,4],[4,4,1]] => () 
   877   | _ => error "diff.behav.in ctree.sml: get_interval lev 1b";
   878 case get_trace pt ([],Pbl) ([],Res) of
   879     [[1],[1,1],[1,2],[1,3],[1,4],[2],[3],[4],[4,1],[4,2],[4,2,1],[4,3],
   880      [4,4],[4,4,1],[4,4,2],[4,4,3],[4,4,4],[4,4,5],[5]] => () 
   881   | _ => error "diff.behav.in ctree.sml: get_interval lev 1e";
   882 *)
   883 
   884 (******************************************************************)
   885 (**)            val get_trace = SAVE_get_trace;                 (**)
   886 (******************************************************************)
   887 
   888 
   889 "=====new ptree 4 ratequation ====================================";
   890 "=====new ptree 4 ratequation ====================================";
   891 "=====new ptree 4 ratequation ====================================";
   892 states:=[];
   893 CalcTree
   894 [(["equality (x/(x^2 - 6*x+9) - 1/(x^2 - 3*x) =1/x)",
   895 	   "solveFor x","solutions L"], 
   896   ("RatEq",["univariate","equation"],["no_met"]))];
   897 Iterator 1; moveActiveRoot 1;
   898 autoCalculate 1 CompleteCalc; 
   899 val ((pt,_),_) = get_calc 1;
   900 show_pt pt;
   901 
   902 
   903 "-------------- pt_extract form, tac, asm<>[] --------------------";
   904 "-------------- pt_extract form, tac, asm<>[] --------------------";
   905 "-------------- pt_extract form, tac, asm<>[] --------------------";
   906 val (Form form, SOME tac, asm) = pt_extract (pt, ([3], Res));
   907 case (term2str form, tac, terms2strs asm) of
   908     ("(3 + -1 * x + x ^^^ 2) * x = 1 * (9 * x + -6 * x ^^^ 2 + x ^^^ 3)",
   909      Subproblem
   910          ("PolyEq",
   911           ["normalize", "polynomial", "univariate", "equation"]),
   912 	 ["9 * x + -6 * x ^^^ 2 + x ^^^ 3 ~= 0"]) => ()
   913   | _ => error "diff.behav.in ctree.sml: pt_extract asm<>[]";
   914 (*WN060717 unintentionally changed some rls/ord while 
   915      completing knowl. for thes2file...
   916 
   917   case (term2str form, tac, terms2strs asm) of
   918     ((*"(3 + (-1 * x + x ^^^ 2)) * x = 1 * (9 * x + (x ^^^ 3 + -6 * x ^^^ 2))",
   919      *)Subproblem
   920          ("PolyEq",
   921           ["normalize", "polynomial", "univariate", "equation"]),
   922 	 ["9 * x + (x ^^^ 3 + -6 * x ^^^ 2) ~= 0"]) => ()
   923   | _ => error "diff.behav.in ctree.sml: pt_extract asm<>[]";
   924 
   925 .... but it became even better*)
   926 
   927 
   928 
   929 "=====new ptree 5 minisubpbl =====================================";
   930 "=====new ptree 5 minisubpbl =====================================";
   931 "=====new ptree 5 minisubpbl =====================================";
   932 states:=[];
   933 CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
   934    ("Test", ["sqroot-test","univariate","equation","test"],
   935     ["Test","squ-equ-test-subpbl1"]))];
   936 Iterator 1; moveActiveRoot 1;
   937 autoCalculate 1 CompleteCalc; 
   938 val ((pt,_),_) = get_calc 1;
   939 show_pt pt;
   940 
   941 "-------------- pt_extract form, tac, asm ------------------------";
   942 "-------------- pt_extract form, tac, asm ------------------------";
   943 "-------------- pt_extract form, tac, asm ------------------------";
   944 val (ModSpec (_,_,form,_,_,_), SOME tac, asm) = pt_extract (pt, ([], Frm));
   945 case (term2str form, tac, terms2strs asm) of
   946     ("solve (x + 1 = 2, x)", 
   947     Apply_Method ["Test", "squ-equ-test-subpbl1"],
   948      []) => ()
   949   | _ => error "diff.behav.in ctree.sml: pt_extract ([], Pbl)";
   950 
   951 val (Form form, SOME tac, asm) = pt_extract (pt, ([1], Frm));
   952 case (term2str form, tac, terms2strs asm) of
   953     ("x + 1 = 2", Rewrite_Set "norm_equation", []) => ()
   954   | _ => error "diff.behav.in ctree.sml: pt_extract ([1], Frm)";
   955 
   956 val (Form form, SOME tac, asm) = pt_extract (pt, ([1], Res));
   957 case (term2str form, tac, terms2strs asm) of
   958     ("x + 1 + -1 * 2 = 0", Rewrite_Set "Test_simplify", []) => ()
   959   | _ => error "diff.behav.in ctree.sml: pt_extract ([1], Res)";
   960 
   961 val (Form form, SOME tac, asm) = pt_extract (pt, ([2], Res));
   962 case (term2str form, tac, terms2strs asm) of
   963     ("-1 + x = 0",
   964      Subproblem ("Test", ["linear", "univariate", "equation", "test"]),
   965      []) => ()
   966   | _ => error "diff.behav.in ctree.sml: pt_extract ([2], Res)";
   967 
   968 val (ModSpec (_,_,form,_,_,_), SOME tac, asm) = pt_extract (pt, ([3], Pbl));
   969 case (term2str form, tac, terms2strs asm) of
   970     ("solve (-1 + x = 0, x)", Apply_Method ["Test", "solve_linear"], []) => ()
   971   | _ => error "diff.behav.in ctree.sml: pt_extract ([3], Pbl)";
   972 
   973 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,1], Frm));
   974 case (term2str form, tac, terms2strs asm) of
   975     ("-1 + x = 0", Rewrite_Set_Inst (["(bdv, x)"], "isolate_bdv"), []) => ()
   976   | _ => error "diff.behav.in ctree.sml: pt_extract ([3,1], Frm)";
   977 
   978 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,1], Res));
   979 case (term2str form, tac, terms2strs asm) of
   980     ("x = 0 + -1 * -1", Rewrite_Set "Test_simplify", []) => ()
   981   | _ => error "diff.behav.in ctree.sml: pt_extract ([3,1], Res)";
   982 
   983 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,2], Res));
   984 case (term2str form, tac, terms2strs asm) of
   985     ("x = 1", Check_Postcond ["linear", "univariate", "equation", "test"], 
   986      []) => ()
   987   | _ => error "diff.behav.in ctree.sml: pt_extract ([3,2], Res)";
   988 
   989 (*========== inhibit exn AK110719 ==============================================
   990 val (Form form, SOME tac, asm) = pt_extract (pt, ([3], Res));
   991 case (term2str form, tac, terms2strs asm) of
   992     ("[x = 1]", Check_elementwise "Assumptions", []) => ()
   993   | _ => error "diff.behav.in ctree.sml: pt_extract ([3], Res)";
   994 
   995 val (Form form, SOME tac, asm) = pt_extract (pt, ([4], Res));
   996 case (term2str form, tac, terms2strs asm) of
   997     ("[x = 1]",
   998      Check_Postcond ["sqroot-test", "univariate", "equation", "test"],
   999      []) => ()
  1000   | _ => error "diff.behav.in ctree.sml: pt_extract ([4], Res)";
  1001 
  1002 val (Form form, tac, asm) = pt_extract (pt, ([], Res));
  1003 case (term2str form, tac, terms2strs asm) of
  1004     ("[x = 1]", NONE, []) => ()
  1005   | _ => error "diff.behav.in ctree.sml: pt_extract ([], Res)";
  1006 ========== inhibit exn AK110719 ==============================================*)
  1007 
  1008 "=====new ptree 6 minisubpbl intersteps ==========================";
  1009 "=====new ptree 6 minisubpbl intersteps ==========================";
  1010 "=====new ptree 6 minisubpbl intersteps ==========================";
  1011 states:=[];
  1012 CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
  1013    ("Test", ["sqroot-test","univariate","equation","test"],
  1014     ["Test","squ-equ-test-subpbl1"]))];
  1015 Iterator 1; moveActiveRoot 1;
  1016 autoCalculate 1 CompleteCalc;
  1017 interSteps 1 ([2],Res);
  1018 interSteps 1 ([3,2],Res);
  1019 val ((pt,_),_) = get_calc 1;
  1020 show_pt pt;
  1021 
  1022 (**##############################################################**)
  1023 "-------------- get_allpos' new ----------------------------------";
  1024 "-------------- get_allpos' new ----------------------------------";
  1025 "-------------- get_allpos' new ----------------------------------";
  1026 "--- whole ctree";
  1027 print_depth 99;
  1028 val cuts = get_allp [] ([], ([],Frm)) pt;
  1029 print_depth 3;
  1030 if cuts = 
  1031    [(*never returns the first pos'*)
  1032     ([1], Frm), 
  1033     ([1], Res), 
  1034     ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res), 
  1035     ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1036     ([2], Res),
  1037     ([3], Pbl), 
  1038     ([3, 1], Frm), ([3, 1], Res), 
  1039     ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1040     ([3, 2], Res), 
  1041     ([3], Res),
  1042     ([4], Res), 
  1043     ([], Res)] then () else
  1044 error "ctree.sml diff.behav. get_allp new []";
  1045 
  1046 print_depth 99;
  1047 val cuts2 = get_allps [] [1] (children pt);
  1048 print_depth 3;
  1049 if cuts = cuts2 @ [([], Res)] then () else
  1050 error "ctree.sml diff.behav. get_allps new []";
  1051 
  1052 "---(3) on S(606)..S(608)--------";
  1053 "--- nd [2] with 6 children---------------------------------";
  1054 val cuts = get_allp [] ([2], ([],Frm)) (get_nd pt [2]);
  1055 if cuts = 
  1056    [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  1057     ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1058     ([2], Res)] then () else
  1059 error "ctree.sml diff.behav. get_allp new [2]";
  1060 
  1061 val cuts2 = get_allps [] [2,1] (children (get_nd pt [2]));
  1062 if cuts = cuts2 @ [([2], Res)] then () else
  1063 error "ctree.sml diff.behav. get_allps new [2]";
  1064 
  1065 
  1066 "---(4) on S(606)..S(608)--------";
  1067 "--- nd [3] subproblem--------------------------------------";
  1068 val cuts = get_allp [] ([3], ([],Frm)) (get_nd pt [3]);
  1069 if cuts = 
  1070    [([3, 1], Frm), 
  1071     ([3, 1], Res), 
  1072     ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1073     ([3, 2], Res), 
  1074     ([3], Res)] then () else
  1075 error "ctree.sml diff.behav. get_allp new [3]";
  1076 
  1077 val cuts2 = get_allps [] [3,1] (children (get_nd pt [3]));
  1078 if cuts = cuts2 @ [([3], Res)] then () else
  1079 error "ctree.sml diff.behav. get_allps new [3]";
  1080 
  1081 "--- nd [3,2] with 2 children--------------------------------";
  1082 val cuts = get_allp [] ([3,2], ([],Frm)) (get_nd pt [3,2]);
  1083 if cuts = 
  1084    [([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1085     ([3, 2], Res)] then () else
  1086 error "ctree.sml diff.behav. get_allp new [3,2]";
  1087 
  1088 val cuts2 = get_allps [] [3,2,1] (children (get_nd pt [3,2]));
  1089 if cuts = cuts2 @ [([3, 2], Res)] then () else
  1090 error "ctree.sml diff.behav. get_allps new [3,2]";
  1091 
  1092 "---(5a) on S(606)..S(608)--------";
  1093 "--- nd [3,2,1] with 0 children------------------------------";
  1094 val cuts = get_allp [] ([3,2,1], ([],Frm)) (get_nd pt [3,2,1]);
  1095 if cuts = 
  1096    [] then () else
  1097 error "ctree.sml diff.behav. get_allp new [3,2,1]";
  1098 
  1099 val cuts2 = get_allps [] [3,2,1,1] (children (get_nd pt [3,2,1]));
  1100 if cuts = cuts2 @ [] then () else
  1101 error "ctree.sml diff.behav. get_allps new [3,2,1]";
  1102 
  1103 
  1104 (**#################################################################**)
  1105 "-------------- cut_tree new (from ptree above)-------------------";
  1106 "-------------- cut_tree new (from ptree above)-------------------";
  1107 "-------------- cut_tree new (from ptree above)-------------------";
  1108 show_pt pt;
  1109 val b = get_obj g_branch pt [];
  1110 if b = TransitiveB then () else
  1111 error ("ctree.sml diff.behav. in [] branch="^branch2str b);
  1112 val b = get_obj g_branch pt [3];
  1113 if b = TransitiveB then () else
  1114 error ("ctree.sml diff.behav. in [3] branch="^branch2str b);
  1115 
  1116 "---(2) on S(606)..S(608)--------";
  1117 val (pt', cuts) = cut_tree pt ([1],Res);
  1118 print_depth 99;
  1119 cuts;
  1120 print_depth 3;
  1121 if cuts = [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  1122       ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), ([2], Res), ([3], Pbl),
  1123       ([3, 1], Frm), ([3, 1], Res), ([3, 2, 1], Frm), ([3, 2, 1], Res),
  1124       ([3, 2, 2], Res), ([3, 2], Res), ([3], Res), ([4], Res),
  1125 (*WN060727 after replacing cutlevup by test_trans:*)([], Res)] then () else 
  1126 error "ctree.sml: diff.behav. cut_tree ([1],Res)";
  1127 
  1128 
  1129 "---(3) on S(606)..S(608)--------";
  1130 val (pt', cuts) = cut_tree pt ([2],Res);
  1131 print_depth 99;
  1132 cuts;
  1133 print_depth 3;
  1134 if cuts = [(*preceding step on WS was ([1]),Res*)
  1135 	   ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  1136 	   ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1137 	   ([2], Res),
  1138 	   ([3], Pbl), 
  1139 	   ([3, 1], Frm),
  1140 	   ([3, 1], Res), 
  1141 	   ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
  1142 	   ([3, 2], Res), 
  1143 	   ([3], Res), 
  1144 	   ([4], Res),
  1145 (*WN060727 added after replacing cutlevup by test_trans:*)([],Res)] then () 
  1146 else error "ctree.sml: diff.behav. cut_tree ([2],Res)";
  1147 
  1148 "---(4) on S(606)..S(608)--------";
  1149 val (pt', cuts) = cut_tree pt ([3],Pbl);
  1150 print_depth 99;
  1151 cuts;
  1152 print_depth 3;
  1153 if cuts = [([3], Pbl),
  1154 	   ([3, 1], Frm), ([3, 1], Res), 
  1155 	   ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1156 	   ([3, 2], Res), 
  1157 	   ([3], Res), 
  1158 	   ([4], Res),
  1159 (*WN060727 added after replacing cutlevup by test_trans:*)([], Res)] 
  1160 then () else error "ctree.sml: diff.behav. cut_tree ([3],Pbl)";
  1161 
  1162 "---(5a) on S(606)..S(608) cut_tree --------";
  1163 val (pt', cuts) = cut_tree pt ([3,2,1],Res);
  1164 print_depth 99;
  1165 cuts;
  1166 print_depth 1;
  1167 if cuts = [([3, 2, 2], Res), ([3, 2], Res),
  1168 (*WN060727 added after replacing cutlevup by test_trans:*)
  1169 ([3], Res), ([4], Res),([],Res)] then () 
  1170 else error "ctree.sml: diff.behav. cut_tree ([3,2,1],Res)";
  1171 show_pt pt';
  1172 
  1173 
  1174 "-------------- cappend on complete ctree from above -------------";
  1175 "-------------- cappend on complete ctree from above -------------";
  1176 "-------------- cappend on complete ctree from above -------------";
  1177 show_pt pt;
  1178 
  1179 "---(2) on S(606)..S(608)--------";
  1180 (*========== inhibit exn AK110726 ==============================================
  1181 (* ERROR: Can't unify istate to istate * Proof.context *)
  1182 val (pt', cuts) = cappend_atomic pt [1] e_istate (str2term "Inform[1]")
  1183     (Tac "test") (str2term "Inres[1]",[]) Complete;
  1184 
  1185 print_depth 99;
  1186 cuts;
  1187 print_depth 3;
  1188 if cuts = [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  1189       ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), ([2], Res), ([3], Pbl),
  1190       ([3, 1], Frm), ([3, 1], Res), ([3, 2, 1], Frm), ([3, 2, 1], Res),
  1191       ([3, 2, 2], Res), ([3, 2], Res), ([3], Res), ([4], Res),
  1192 (*WN060727 added after replacing cutlevup by test_trans:*) ([], Res)] then ()
  1193 else error "ctree.sml: diff:behav. in complete pt:append_atomic[1] cuts";
  1194 
  1195 val afterins = get_allp [] ([], ([],Frm)) pt';
  1196 print_depth 99;
  1197 afterins;
  1198 print_depth 3;
  1199 if afterins = [([1], Frm), ([1], Res)
  1200 (*, WN060727 removed after replacing cutlevup by test_trans:([], Res)*)] then()
  1201 else error "ctree.sml: diff:behav. in complete pt: append_atomic[1] afterins";
  1202 show_pt pt';
  1203 "---(3) on S(606)..S(608)--------";
  1204 show_pt pt;
  1205 val (pt', cuts) = cappend_atomic pt [2] e_istate (str2term "Inform[2]")
  1206     (Tac "test") (str2term "Inres[2]",[]) Complete;
  1207 print_depth 99;
  1208 cuts;
  1209 print_depth 3;
  1210 
  1211 if cuts = [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  1212       ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), ([2], Res), ([3], Pbl), 
  1213       ([3, 1], Frm),([3, 1], Res), ([3, 2, 1], Frm), ([3, 2, 1], Res), 
  1214       ([3, 2, 2], Res), ([3, 2], Res), ([3], Res), ([4], Res),
  1215 (*WN060727 added after replacing cutlevup by test_trans:*) ([], Res)] then () 
  1216 else error "ctree.sml: diff:behav.in complete pt: append_atomic[2] cuts";
  1217 
  1218 
  1219 val afterins = get_allp [] ([], ([],Frm)) pt';
  1220 print_depth 99;
  1221 afterins;
  1222 print_depth 3;
  1223 
  1224 if afterins = [([1], Frm), ([1], Res), ([2], Frm), ([2], Res)
  1225 (*,  WN060727 removed after replacing cutlevup by test_trans:([], Res)*)] 
  1226 then () else
  1227 error "ctree.sml: diff:behav. in complete pt: append_atomic[2] afterins";
  1228 show_pt pt';
  1229 
  1230 
  1231 (*
  1232  val p = move_dn [] pt' ([],Pbl) (*-> ([1],Frm)*);
  1233  val p = move_dn [] pt' p        (*-> ([1],Res)*);
  1234  val p = move_dn [] pt' p        (*-> ([2],Frm)*);
  1235  val p = move_dn [] pt' p        (*-> ([2],Res)*);
  1236 
  1237  term2str (get_obj g_form pt' [2]);
  1238  term2str (get_obj g_res pt' [2]);
  1239  ostate2str (get_obj g_ostate pt' [2]);
  1240  *)
  1241 
  1242 "---(4) on S(606)..S(608)--------";
  1243 val (pt', cuts) = cappend_problem pt [3] e_istate ([],e_spec)
  1244 				  ([],e_spec, str2term "Inhead[3]");
  1245 print_depth 99;
  1246 cuts;
  1247 print_depth 3;
  1248 if cuts = [([3], Pbl),
  1249 	   ([3, 1], Frm), ([3, 1], Res), 
  1250 	   ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1251 	   ([3, 2], Res), 
  1252 	   ([3], Res), ([4], Res),
  1253 (*WN060727 added after replacing cutlevup by test_trans*)([], Res)] then ()else
  1254 error "ctree.sml: diff:behav. in ccomplete pt: append_problem[3] cuts";
  1255 val afterins = get_allp [] ([], ([],Frm)) pt';
  1256 print_depth 99;
  1257 afterins;
  1258 print_depth 3;
  1259 if afterins = 
  1260    [([1], Frm), ([1], Res),([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1261     ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), ([2], Res),
  1262     ([3], Pbl)] then () else
  1263 error "ctree.sml: diff:behav.in complete pt: append_problem[3] afterins";
  1264 (* use"systest/ctree.sml";
  1265    use"ctree.sml";
  1266    *)
  1267 
  1268 "---(6-1) on S(606)..S(608)--------";
  1269 val (pt', cuts) = cappend_atomic pt [3,1] e_istate (str2term "Inform[3,1]")
  1270     (Tac "test") (str2term "Inres[3,1]",[]) Complete;
  1271 print_depth 99;
  1272 cuts;
  1273 print_depth 3;
  1274 if cuts = [([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1275 	   ([3, 2], Res),
  1276 (*WN060727 added*)([3], Res), ([4], Res), ([], Res)] then () else
  1277 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] cuts";
  1278 
  1279 val afterins = get_allp [] ([], ([],Frm)) pt';
  1280 print_depth 99;
  1281 afterins;
  1282 print_depth 3;
  1283 (*WN060727 replaced after overwriting cutlevup by test_trans
  1284 if afterins = [([1], Frm), ([1], Res), 
  1285 	       ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1286 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1287 	       ([2], Res),
  1288 	       ([3], Pbl), 
  1289 	       ([3, 1], Frm), ([3, 1], Res)(*replaced*), (*([3, 2], Res) cut!*)
  1290 	       ([3], Res)(*cutlevup=false*), 
  1291 	       ([4], Res),
  1292 	       ([], Res)(*cutlevup=false*)] then () else
  1293 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] insrtd";
  1294 *)
  1295 if afterins = [([1], Frm), ([1], Res), 
  1296 	       ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1297 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1298 	       ([2], Res),
  1299 	       ([3], Pbl), 
  1300 	       ([3, 1], Frm), ([3, 1], Res)] then () else
  1301 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] insrtd";
  1302 
  1303 if term2str (get_obj g_form pt' [3,1]) = "Inform [3, 1]" then () else
  1304 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] Inform";
  1305 
  1306 "---(6) on S(606)..S(608)--------";
  1307 val (pt', cuts) = cappend_atomic pt [3,2] e_istate (str2term "Inform[3,2]")
  1308     (Tac "test") (str2term "Inres[3,2]",[]) Complete;
  1309 print_depth 99;
  1310 cuts;
  1311 print_depth 3;
  1312 if cuts = [(*just after is: cutlevup=false in [3]*)
  1313 (*WN060727 after test_trans instead cutlevup added:*)
  1314 	   ([3], Res), ([4], Res), ([], Res)] then () else
  1315 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] cuts";
  1316 val afterins = get_allp [] ([], ([],Frm)) pt';
  1317 print_depth 99;
  1318 afterins;
  1319 print_depth 3;
  1320 (*WN060727 replaced after overwriting cutlevup by test_trans
  1321 if afterins = [([1], Frm), ([1], Res), 
  1322 	       ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1323 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1324 	       ([2], Res),
  1325 	       ([3], Pbl), 
  1326 	       ([3, 1], Frm), ([3, 1], Res), ([3, 2], Frm), ([3, 2], Res), 
  1327 	       ([3], Res),
  1328 	       ([4], Res), ([], Res)] then () else
  1329 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] insrtd";
  1330 *)
  1331 if afterins = [([1], Frm), ([1], Res), 
  1332 	       ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1333 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1334 	       ([2], Res),
  1335 	       ([3], Pbl), 
  1336 	       ([3, 1], Frm), ([3, 1], Res), ([3, 2], Frm), ([3, 2], Res)]
  1337 then () else
  1338 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] insrtd";
  1339 
  1340 if term2str (get_obj g_form pt' [3,2]) = "Inform [3, 2]" then () else
  1341 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] Inform";
  1342 
  1343 "---(6++) on S(606)..S(608)--------";
  1344 (**)
  1345 val (pt', cuts) = cappend_atomic pt [3,2,1] e_istate (str2term "Inform[3,2,1]")
  1346     (Tac "test") (str2term "Inres[3,2,1]",[]) Complete;
  1347 print_depth 99;
  1348 cuts;
  1349 print_depth 1;
  1350 if cuts = [([3, 2, 2], Res), ([3, 2], Res),
  1351 (*WN060727 {cutlevup->test_trans} added:*)([3], Res), ([4], Res), ([], Res)] 
  1352 then () else
  1353 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2,1] cuts";
  1354 val afterins = get_allp [] ([], ([],Frm)) pt';
  1355 print_depth 99;
  1356 afterins;
  1357 print_depth 3;
  1358 if afterins = [([1], Frm), ([1], Res), 
  1359 	       ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1360 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1361 	       ([2], Res),
  1362 	       ([3], Pbl), 
  1363 	       ([3, 1], Frm), ([3, 1], Res), 
  1364 	       ([3, 2, 1], Frm), ([3, 2, 1], Res)] then () else
  1365 error "ctree.sml: diff:behav. in complete pt: append_atom[3,2,1] insrtd";
  1366 if term2str (get_obj g_form pt' [3,2,1]) = "Inform [3, 2, 1]" then () else
  1367 error "ctree.sml: diff:behav. complete pt: append_atomic[3,2,1] Inform";
  1368 (*
  1369 show_pt pt';
  1370 show_pt pt;
  1371 *)
  1372 ========== inhibit exn AK110726 ==============================================*)
  1373