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