test/Tools/isac/Interpret/ctree.sml
author Walther Neuper <neuper@ist.tugraz.at>
Tue, 28 Sep 2010 09:06:56 +0200
branchisac-update-Isa09-2
changeset 38031 460c24a6a6ba
parent 37960 ec20007095f2
child 38058 ad0485155c0e
permissions -rw-r--r--
tuned error and writeln

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