test/Tools/isac/Interpret/ctree.sml
branchisac-update-Isa09-2
changeset 38031 460c24a6a6ba
parent 37960 ec20007095f2
child 38058 ad0485155c0e
equal deleted inserted replaced
38030:95d956108461 38031:460c24a6a6ba
   114 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*.append_result: pos =[3]*);
   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]*);
   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 =[]*);
   116 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*.append_result: pos =[]*);
   117 val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
   117 val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
   118 if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
   118 if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
   119 else raise error "new behaviour in test: miniscript with mini-subpbl";
   119 else error "new behaviour in test: miniscript with mini-subpbl";
   120 
   120 
   121  show_pt pt;
   121  show_pt pt;
   122 
   122 
   123 
   123 
   124 "-------------- get_allpos' (from ptree above)--------------------";
   124 "-------------- get_allpos' (from ptree above)--------------------";
   134     ([3, 1], Res), 
   134     ([3, 1], Res), 
   135     ([3, 2], Res), 
   135     ([3, 2], Res), 
   136     ([3], Res), 
   136     ([3], Res), 
   137     ([4], Res), 
   137     ([4], Res), 
   138     ([], Res)]
   138     ([], Res)]
   139 then () else raise error "ctree.sml: diff:behav. in get_allpos' 1";
   139 then () else error "ctree.sml: diff:behav. in get_allpos' 1";
   140 
   140 
   141 if get_allpos's ([], 1) (children pt) = 
   141 if get_allpos's ([], 1) (children pt) = 
   142    [([1], Frm), 
   142    [([1], Frm), 
   143     ([1], Res), 
   143     ([1], Res), 
   144     ([2], Res), 
   144     ([2], Res), 
   146     ([3, 1], Frm),
   146     ([3, 1], Frm),
   147     ([3, 1], Res), 
   147     ([3, 1], Res), 
   148     ([3, 2], Res), 
   148     ([3, 2], Res), 
   149     ([3], Res), 
   149     ([3], Res), 
   150     ([4], Res)]
   150     ([4], Res)]
   151 then () else raise error "ctree.sml: diff:behav. in get_allpos' 2";
   151 then () else error "ctree.sml: diff:behav. in get_allpos' 2";
   152 
   152 
   153 if get_allpos's ([], 2) (takerest (1, children pt)) = 
   153 if get_allpos's ([], 2) (takerest (1, children pt)) = 
   154    [([2], Res), 
   154    [([2], Res), 
   155     ([3], Frm), 
   155     ([3], Frm), 
   156     ([3, 1], Frm), 
   156     ([3, 1], Frm), 
   157     ([3, 1], Res), 
   157     ([3, 1], Res), 
   158     ([3, 2], Res),
   158     ([3, 2], Res),
   159     ([3], Res), 
   159     ([3], Res), 
   160     ([4], Res)]
   160     ([4], Res)]
   161 then () else raise error "ctree.sml: diff:behav. in get_allpos' 3";
   161 then () else error "ctree.sml: diff:behav. in get_allpos' 3";
   162 
   162 
   163 if get_allpos's ([], 3) (takerest (2, children pt)) = 
   163 if get_allpos's ([], 3) (takerest (2, children pt)) = 
   164    [([3], Frm), 
   164    [([3], Frm), 
   165     ([3, 1], Frm),
   165     ([3, 1], Frm),
   166     ([3, 1], Res),
   166     ([3, 1], Res),
   167     ([3, 2], Res),
   167     ([3, 2], Res),
   168     ([3], Res),
   168     ([3], Res),
   169     ([4], Res)]
   169     ([4], Res)]
   170 then () else raise error "ctree.sml: diff:behav. in get_allpos' 4";
   170 then () else error "ctree.sml: diff:behav. in get_allpos' 4";
   171 
   171 
   172 if get_allpos's ([3], 1) (children (nth 3 (children pt))) = 
   172 if get_allpos's ([3], 1) (children (nth 3 (children pt))) = 
   173    [([3, 1], Frm),
   173    [([3, 1], Frm),
   174     ([3, 1], Res),
   174     ([3, 1], Res),
   175     ([3, 2], Res)]
   175     ([3, 2], Res)]
   176 then () else raise error "ctree.sml: diff:behav. in get_allpos' 5";
   176 then () else error "ctree.sml: diff:behav. in get_allpos' 5";
   177 
   177 
   178 if get_allpos' ([3], 1) (nth 3 (children pt)) = 
   178 if get_allpos' ([3], 1) (nth 3 (children pt)) = 
   179    [([3], Frm),
   179    [([3], Frm),
   180     ([3, 1], Frm),
   180     ([3, 1], Frm),
   181     ([3, 1], Res),
   181     ([3, 1], Res),
   182     ([3, 2], Res),
   182     ([3, 2], Res),
   183     ([3], Res)]
   183     ([3], Res)]
   184 then () else raise error "ctree.sml: diff:behav. in get_allpos' 6";
   184 then () else error "ctree.sml: diff:behav. in get_allpos' 6";
   185 
   185 
   186 
   186 
   187 (**##############################################################(**)
   187 (**##############################################################(**)
   188 
   188 
   189 "-------------- cut_level (from ptree above)----------------------";
   189 "-------------- cut_level (from ptree above)----------------------";
   198 	   ([3, 1], Frm),
   198 	   ([3, 1], Frm),
   199 	   ([3, 1], Res),
   199 	   ([3, 1], Res),
   200 	   ([3, 2], Res),
   200 	   ([3, 2], Res),
   201 	   ([3], Res),
   201 	   ([3], Res),
   202 	   ([4], Res)]
   202 	   ([4], Res)]
   203 then () else raise error "ctree.sml: diff:behav. in cut_level 1a";
   203 then () else error "ctree.sml: diff:behav. in cut_level 1a";
   204 val (res,asm) = get_obj g_result pt' [2];
   204 val (res,asm) = get_obj g_result pt' [2];
   205 if res = e_term andalso asm = [] then () else
   205 if res = e_term andalso asm = [] then () else
   206 raise error "ctree.sml: diff:behav. in cut_level 1aa" WN050219*);
   206 error "ctree.sml: diff:behav. in cut_level 1aa" WN050219*);
   207 if not (existpt [2] pt') then () else
   207 if not (existpt [2] pt') then () else
   208 raise error "ctree.sml: diff:behav. in cut_level 1aa2" (*WN050220*);
   208 error "ctree.sml: diff:behav. in cut_level 1aa2" (*WN050220*);
   209 
   209 
   210 val (res,asm) = get_obj g_result pt' [];
   210 val (res,asm) = get_obj g_result pt' [];
   211 if term2str res = "[x = 1]" (*WN050219 e_term in cut_tree!!!*) then () else
   211 if term2str res = "[x = 1]" (*WN050219 e_term in cut_tree!!!*) then () else
   212 raise error "ctree.sml: diff:behav. in cut_level 1ab";
   212 error "ctree.sml: diff:behav. in cut_level 1ab";
   213 if map fst (get_interval ([],Frm) ([],Res) 9999 pt') =
   213 if map fst (get_interval ([],Frm) ([],Res) 9999 pt') =
   214    [([], Frm), 
   214    [([], Frm), 
   215     ([1], Frm), 
   215     ([1], Frm), 
   216     ([1], Res), 
   216     ([1], Res), 
   217     ([2], Res),(*, e_term in cut_tree!!!*)
   217     ([2], Res),(*, e_term in cut_tree!!!*)
   218     ([], Res)] then () else 
   218     ([], Res)] then () else 
   219 raise error "ctree.sml: diff:behav. in cut_level 1b";
   219 error "ctree.sml: diff:behav. in cut_level 1b";
   220 
   220 
   221 
   221 
   222 val (pt',cuts) = cut_level [] [] pt ([2],Res);
   222 val (pt',cuts) = cut_level [] [] pt ([2],Res);
   223 if cuts = [([3], Frm), 
   223 if cuts = [([3], Frm), 
   224 	   ([3, 1], Frm), 
   224 	   ([3, 1], Frm), 
   225 	   ([3, 1], Res), 
   225 	   ([3, 1], Res), 
   226 	   ([3, 2], Res), 
   226 	   ([3, 2], Res), 
   227 	   ([3], Res), 
   227 	   ([3], Res), 
   228 	   ([4], Res)]
   228 	   ([4], Res)]
   229 then () else raise error "ctree.sml: diff:behav. in cut_level 2a";
   229 then () else error "ctree.sml: diff:behav. in cut_level 2a";
   230 
   230 
   231 if pr_ptree pr_short pt' = ".    ----- pblobj -----\n1.   x + 1 = 2\n2.   x + 1 + -1 * 2 = 0\n"
   231 if pr_ptree pr_short pt' = ".    ----- pblobj -----\n1.   x + 1 = 2\n2.   x + 1 + -1 * 2 = 0\n"
   232 then () else raise error "ctree.sml: diff:behav. in cut_level 2b";
   232 then () else error "ctree.sml: diff:behav. in cut_level 2b";
   233 
   233 
   234 val (pt',cuts) = cut_level [] [3] pt ([3,1],Frm);
   234 val (pt',cuts) = cut_level [] [3] pt ([3,1],Frm);
   235 if cuts = [([3, 1], Res), ([3, 2], Res)]
   235 if cuts = [([3, 1], Res), ([3, 2], Res)]
   236 then () else raise error "ctree.sml: diff:behav. in cut_level 3a";
   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"
   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 raise error "ctree.sml: diff:behav. in cut_level 3b";
   238 then () else error "ctree.sml: diff:behav. in cut_level 3b";
   239 
   239 
   240 val (pt',cuts) = cut_level [] [3] pt ([3,1],Res);
   240 val (pt',cuts) = cut_level [] [3] pt ([3,1],Res);
   241 if cuts = [([3, 2], Res)]
   241 if cuts = [([3, 2], Res)]
   242 then () else raise error "ctree.sml: diff:behav. in cut_level 4a";
   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"
   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 raise error "ctree.sml: diff:behav. in cut_level 4b";
   244 then () else error "ctree.sml: diff:behav. in cut_level 4b";
   245 
   245 
   246 
   246 
   247 "-------------- cut_tree (from ptree above)-----------------------";
   247 "-------------- cut_tree (from ptree above)-----------------------";
   248 "-------------- cut_tree (from ptree above)-----------------------";
   248 "-------------- cut_tree (from ptree above)-----------------------";
   249 "-------------- cut_tree (from ptree above)-----------------------";
   249 "-------------- cut_tree (from ptree above)-----------------------";
   254 	   ([3, 1], Res),
   254 	   ([3, 1], Res),
   255 	   ([3, 2], Res),
   255 	   ([3, 2], Res),
   256 	   ([3], Res),
   256 	   ([3], Res),
   257 	   ([4], Res),
   257 	   ([4], Res),
   258 	   ([], Res)]
   258 	   ([], Res)]
   259 then () else raise error "ctree.sml: diff:behav. in cut_tree 1a";
   259 then () else error "ctree.sml: diff:behav. in cut_tree 1a";
   260 
   260 
   261 val (res,asm) = get_obj g_result pt' [2];
   261 val (res,asm) = get_obj g_result pt' [2];
   262 if res = e_term (*WN050219 done by cut_level*) then () else
   262 if res = e_term (*WN050219 done by cut_level*) then () else
   263 raise error "ctree.sml: diff:behav. in cut_tree 1aa";
   263 error "ctree.sml: diff:behav. in cut_tree 1aa";
   264 
   264 
   265 val form = get_obj g_form pt' [2];
   265 val form = get_obj g_form pt' [2];
   266 if term2str form = "x + 1 + -1 * 2 = 0" (*remained !!!*) then () else
   266 if term2str form = "x + 1 + -1 * 2 = 0" (*remained !!!*) then () else
   267 raise error "ctree.sml: diff:behav. in cut_tree 1ab";
   267 error "ctree.sml: diff:behav. in cut_tree 1ab";
   268 
   268 
   269 val (res,asm) = get_obj g_result pt' [];
   269 val (res,asm) = get_obj g_result pt' [];
   270 if res = e_term (*WN050219 done by cut_tree*) then () else
   270 if res = e_term (*WN050219 done by cut_tree*) then () else
   271 raise error "ctree.sml: diff:behav. in cut_tree 1ac";
   271 error "ctree.sml: diff:behav. in cut_tree 1ac";
   272 
   272 
   273 if map fst (get_interval ([],Frm) ([],Res) 9999 pt') =
   273 if map fst (get_interval ([],Frm) ([],Res) 9999 pt') =
   274    [([], Frm), 
   274    [([], Frm), 
   275     ([1], Frm), 
   275     ([1], Frm), 
   276     ([1], Res)] then () else 
   276     ([1], Res)] then () else 
   277 raise error "ctree.sml: diff:behav. in cut_tree 1ad";
   277 error "ctree.sml: diff:behav. in cut_tree 1ad";
   278 
   278 
   279 val (pt', cuts) = cut_tree pt ([2],Res);
   279 val (pt', cuts) = cut_tree pt ([2],Res);
   280 if cuts = [([3], Frm),
   280 if cuts = [([3], Frm),
   281 	   ([3, 1], Frm),
   281 	   ([3, 1], Frm),
   282 	   ([3, 1], Res),
   282 	   ([3, 1], Res),
   283 	   ([3, 2], Res),
   283 	   ([3, 2], Res),
   284 	   ([3], Res),
   284 	   ([3], Res),
   285 	   ([4], Res),
   285 	   ([4], Res),
   286 	   ([], Res)]
   286 	   ([], Res)]
   287 then () else raise error "ctree.sml: diff:behav. in cut_tree 2";
   287 then () else error "ctree.sml: diff:behav. in cut_tree 2";
   288 
   288 
   289 val (pt', cuts) = cut_tree pt ([3,1],Frm);
   289 val (pt', cuts) = cut_tree pt ([3,1],Frm);
   290 if cuts = [([3, 1], Res), 
   290 if cuts = [([3, 1], Res), 
   291 	   ([3, 2], Res),
   291 	   ([3, 2], Res),
   292 	   ([3], Res),
   292 	   ([3], Res),
   293 	   ([4], Res),
   293 	   ([4], Res),
   294 	   ([], Res)]
   294 	   ([], Res)]
   295 then () else raise error "ctree.sml: diff:behav. in cut_tree 3";
   295 then () else error "ctree.sml: diff:behav. in cut_tree 3";
   296 
   296 
   297 val (pt', cuts) = cut_tree pt ([3,1],Res);
   297 val (pt', cuts) = cut_tree pt ([3,1],Res);
   298 if cuts = [([3, 2], Res),
   298 if cuts = [([3, 2], Res),
   299 	   ([3], Res),
   299 	   ([3], Res),
   300 	   ([4], Res),
   300 	   ([4], Res),
   301 	   ([], Res)]
   301 	   ([], Res)]
   302 then () else raise error "ctree.sml: diff:behav. in cut_tree 4";
   302 then () else error "ctree.sml: diff:behav. in cut_tree 4";
   303 
   303 
   304 
   304 
   305 "=====new ptree 1a miniscript with mini-subpbl ===================";
   305 "=====new ptree 1a miniscript with mini-subpbl ===================";
   306 "=====new ptree 1a miniscript with mini-subpbl ===================";
   306 "=====new ptree 1a miniscript with mini-subpbl ===================";
   307 "=====new ptree 1a miniscript with mini-subpbl ===================";
   307 "=====new ptree 1a miniscript with mini-subpbl ===================";
   325 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
   325 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
   326 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
   326 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
   327 
   327 
   328 val (pt',cuts) = cut_level [] [3] pt ([1],Frm);(*([1],Frm) is stored*)
   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)*)
   329 if cuts = [](*([1],Res) is not yet stored (Nd.ostate=Incomplete)*)
   330 then () else raise error "ctree.sml: diff:behav. in cut_tree 4a";
   330 then () else error "ctree.sml: diff:behav. in cut_tree 4a";
   331 
   331 
   332 val (pt', cuts) = cut_tree pt ([1],Frm);
   332 val (pt', cuts) = cut_tree pt ([1],Frm);
   333 if cuts = []
   333 if cuts = []
   334 then () else raise error "ctree.sml: diff:behav. in cut_tree 4a";
   334 then () else error "ctree.sml: diff:behav. in cut_tree 4a";
   335 
   335 
   336 (*WN050219
   336 (*WN050219
   337 val pos as ([p],_) = ([1],Frm);
   337 val pos as ([p],_) = ([1],Frm);
   338 val pt as Nd (b,_) = pt;
   338 val pt as Nd (b,_) = pt;
   339 
   339 
   369  if cuts = [([3, 2, 1], Res),
   369  if cuts = [([3, 2, 1], Res),
   370 	    ([3, 2, 2], Res),
   370 	    ([3, 2, 2], Res),
   371 	    ([3, 2], Res), 
   371 	    ([3, 2], Res), 
   372 	    ([3], Res),
   372 	    ([3], Res),
   373 	    ([4], Res)]
   373 	    ([4], Res)]
   374  then () else raise error "ctree.sml: diff:behav. in cut_tree 3rd level 1";
   374  then () else error "ctree.sml: diff:behav. in cut_tree 3rd level 1";
   375 
   375 
   376  val (pt', cuts) = cut_tree pt ([3,2,1],Res);
   376  val (pt', cuts) = cut_tree pt ([3,2,1],Res);
   377  if cuts = [([3, 2, 2], Res),
   377  if cuts = [([3, 2, 2], Res),
   378 	    ([3, 2], Res), 
   378 	    ([3, 2], Res), 
   379 	    ([3], Res),
   379 	    ([3], Res),
   380 	    ([4], Res)]
   380 	    ([4], Res)]
   381  then () else raise error "ctree.sml: diff:behav. in cut_tree 3rd level 2";
   381  then () else error "ctree.sml: diff:behav. in cut_tree 3rd level 2";
   382 
   382 
   383 
   383 
   384 "-------------- cappend (from ptree above)------------------------";
   384 "-------------- cappend (from ptree above)------------------------";
   385 "-------------- cappend (from ptree above)------------------------";
   385 "-------------- cappend (from ptree above)------------------------";
   386 "-------------- cappend (from ptree above)------------------------";
   386 "-------------- cappend (from ptree above)------------------------";
   389 	   ([3, 2, 2], Res),
   389 	   ([3, 2, 2], Res),
   390 	   ([3, 2], Res), 
   390 	   ([3, 2], Res), 
   391 	   ([3], Res),
   391 	   ([3], Res),
   392 	   ([4], Res),
   392 	   ([4], Res),
   393 	   ([], Res)]
   393 	   ([], Res)]
   394 then () else raise error "ctree.sml: diff:behav. in cappend_form";
   394 then () else error "ctree.sml: diff:behav. in cappend_form";
   395 if term2str (get_obj g_form pt' [3,2,1]) = "newnew" andalso
   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
   396    get_obj g_tac pt' [3,2,1] = Empty_Tac andalso
   397    term2str (fst (get_obj g_result pt' [3,2,1])) = "??.empty"
   397    term2str (fst (get_obj g_result pt' [3,2,1])) = "??.empty"
   398  then () else raise error "ctree.sml: diff:behav. in cappend 1";
   398  then () else error "ctree.sml: diff:behav. in cappend 1";
   399 
   399 
   400 val (pt',cuts) = cappend_atomic pt [3,2,1] e_istate (str2term "newform")
   400 val (pt',cuts) = cappend_atomic pt [3,2,1] e_istate (str2term "newform")
   401     (Tac "test") (str2term "newresult",[]) Complete;
   401     (Tac "test") (str2term "newresult",[]) Complete;
   402 if cuts = [([3, 2, 1], Res), (*?????????????*)
   402 if cuts = [([3, 2, 1], Res), (*?????????????*)
   403 	   ([3, 2, 2], Res),
   403 	   ([3, 2, 2], Res),
   404 	   ([3, 2], Res),
   404 	   ([3, 2], Res),
   405 	   ([3], Res),
   405 	   ([3], Res),
   406 	   ([4], Res),
   406 	   ([4], Res),
   407 	   ([], Res)]
   407 	   ([], Res)]
   408 then () else raise error "ctree.sml: diff:behav. in cappend_atomic";
   408 then () else error "ctree.sml: diff:behav. in cappend_atomic";
   409 
   409 
   410 
   410 
   411 
   411 
   412 "-------------- cappend minisubpbl -------------------------------";
   412 "-------------- cappend minisubpbl -------------------------------";
   413 "-------------- cappend minisubpbl -------------------------------";
   413 "-------------- cappend minisubpbl -------------------------------";
   439 val p = ([1], Frm);
   439 val p = ([1], Frm);
   440 val (pt,cuts) = cappend_form pt (fst p) e_istate (str2term "x + 1 = 2");
   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);
   441 val form = get_obj g_form pt (fst p);
   442 val (res,_) = get_obj g_result 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
   443 if term2str form = "x + 1 = 2" andalso res = e_term then () else
   444 raise error "ctree.sml, diff.behav. cappend minisubpbl ([1],Frm)";
   444 error "ctree.sml, diff.behav. cappend minisubpbl ([1],Frm)";
   445 if not (existpt ((lev_on o fst) p) pt) then () else
   445 if not (existpt ((lev_on o fst) p) pt) then () else
   446 raise error "ctree.sml, diff.behav. cappend minisubpbl ([1],Frm) nxt";
   446 error "ctree.sml, diff.behav. cappend minisubpbl ([1],Frm) nxt";
   447 
   447 
   448 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[1]*);
   448 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[1]*);
   449 val p = ([1], Res);
   449 val p = ([1], Res);
   450 val (pt,cuts) = 
   450 val (pt,cuts) = 
   451     cappend_atomic pt (fst p) e_istate (str2term "x + 1 = 2")
   451     cappend_atomic pt (fst p) e_istate (str2term "x + 1 = 2")
   452 		   Empty_Tac (str2term "x + 1 + -1 * 2 = 0",[]) Incomplete;
   452 		   Empty_Tac (str2term "x + 1 + -1 * 2 = 0",[]) Incomplete;
   453 val form = get_obj g_form pt (fst p);
   453 val form = get_obj g_form pt (fst p);
   454 val (res,_) = get_obj g_result 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" 
   455 if term2str form = "x + 1 = 2" andalso term2str res = "x + 1 + -1 * 2 = 0" 
   456 then () else raise error "ctree.sml, diff.behav. cappend minisubpbl ([1],Res)";
   456 then () else error "ctree.sml, diff.behav. cappend minisubpbl ([1],Res)";
   457 if not (existpt ((lev_on o fst) p) pt) then () else
   457 if not (existpt ((lev_on o fst) p) pt) then () else
   458 raise error "ctree.sml, diff.behav. cappend minisubpbl ([1],Res) nxt";
   458 error "ctree.sml, diff.behav. cappend minisubpbl ([1],Res) nxt";
   459 
   459 
   460 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[2]*);
   460 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[2]*);
   461 val p = ([2], Res);
   461 val p = ([2], Res);
   462 val (pt,cuts) = 
   462 val (pt,cuts) = 
   463     cappend_atomic pt (fst p) e_istate (str2term "x + 1 + -1 * 2 = 0")
   463     cappend_atomic pt (fst p) e_istate (str2term "x + 1 + -1 * 2 = 0")
   464 		   Empty_Tac (str2term "-1 + x = 0",[]) Incomplete;
   464 		   Empty_Tac (str2term "-1 + x = 0",[]) Incomplete;
   465 val form = get_obj g_form pt (fst p);
   465 val form = get_obj g_form pt (fst p);
   466 val (res,_) = get_obj g_result 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"
   467 if term2str form = "x + 1 + -1 * 2 = 0" andalso term2str res = "-1 + x = 0"
   468 then () else raise error "ctree.sml, diff.behav. cappend minisubpbl ([2],Res)";
   468 then () else error "ctree.sml, diff.behav. cappend minisubpbl ([2],Res)";
   469 if not (existpt ((lev_on o fst) p) pt) then () else
   469 if not (existpt ((lev_on o fst) p) pt) then () else
   470 raise error "ctree.sml, diff.behav. cappend minisubpbl ([2],Res) nxt";
   470 error "ctree.sml, diff.behav. cappend minisubpbl ([2],Res) nxt";
   471 
   471 
   472 
   472 
   473 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)cappend_problem: pos =[3]*)
   473 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)cappend_problem: pos =[3]*)
   474 val p = ([3], Pbl);
   474 val p = ([3], Pbl);
   475 val (pt,cuts) = cappend_problem pt (fst p) e_istate e_fmz ([],e_spec,e_term);
   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 
   476 if is_pblobj (get_obj I pt (fst p)) then () else 
   477 raise error "ctree.sml, diff.behav. cappend minisubpbl ([3],Pbl)";
   477 error "ctree.sml, diff.behav. cappend minisubpbl ([3],Pbl)";
   478 if not (existpt ((lev_on o fst) p) pt) then () else
   478 if not (existpt ((lev_on o fst) p) pt) then () else
   479 raise error "ctree.sml, diff.behav. cappend minisubpbl ([3],Pbl) nxt";
   479 error "ctree.sml, diff.behav. cappend minisubpbl ([3],Pbl) nxt";
   480 
   480 
   481 (* ...complete calchead skipped...*)
   481 (* ...complete calchead skipped...*)
   482 
   482 
   483 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_form: pos =[3,1]*);
   483 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_form: pos =[3,1]*);
   484 val p = ([3, 1], Frm);
   484 val p = ([3, 1], Frm);
   485 val (pt,cuts) = cappend_form pt (fst p) e_istate (str2term "-1 + x = 0");
   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);
   486 val form = get_obj g_form pt (fst p);
   487 val (res,_) = get_obj g_result 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
   488 if term2str form = "-1 + x = 0" andalso res = e_term then () else
   489 raise error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Frm)";
   489 error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Frm)";
   490 if not (existpt ((lev_on o fst) p) pt) then () else
   490 if not (existpt ((lev_on o fst) p) pt) then () else
   491 raise error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Frm) nxt";
   491 error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Frm) nxt";
   492 
   492 
   493 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)cappend_atomic: pos =[3,1]*)
   493 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)cappend_atomic: pos =[3,1]*)
   494 val p = ([3, 1], Res);
   494 val p = ([3, 1], Res);
   495 val (pt,cuts) = 
   495 val (pt,cuts) = 
   496     cappend_atomic pt (fst p) e_istate (str2term "-1 + x = 0")
   496     cappend_atomic pt (fst p) e_istate (str2term "-1 + x = 0")
   497 		   Empty_Tac (str2term "x = 0 + -1 * -1",[]) Incomplete;
   497 		   Empty_Tac (str2term "x = 0 + -1 * -1",[]) Incomplete;
   498 val form = get_obj g_form pt (fst p);
   498 val form = get_obj g_form pt (fst p);
   499 val (res,_) = get_obj g_result 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()
   500 if term2str form = "-1 + x = 0" andalso term2str res = "x = 0 + -1 * -1" then()
   501 else raise error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Res)";
   501 else error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Res)";
   502 if not (existpt ((lev_on o fst) p) pt) then () else
   502 if not (existpt ((lev_on o fst) p) pt) then () else
   503 raise error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Res) nxt";
   503 error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Res) nxt";
   504 
   504 
   505 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_form: pos =[3,1]*);
   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]*);
   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]*);
   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]*);
   508 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**).append_result: pos =[3]*);
   543  val p = move_dn [] pt p        (*-> ([4],Res)*);
   543  val p = move_dn [] pt p        (*-> ([4],Res)*);
   544  val p = move_dn [] pt p        (*-> ([],Res)*);
   544  val p = move_dn [] pt p        (*-> ([],Res)*);
   545 (*
   545 (*
   546  val p = (move_dn [] pt p) handle e => print_exn_G e;
   546  val p = (move_dn [] pt p) handle e => print_exn_G e;
   547                                   Exception PTREE end of calculation*)
   547                                   Exception PTREE end of calculation*)
   548 if p=([],Res) then () else raise error "ctree.sml: diff:behav. in move_dn";
   548 if p=([],Res) then () else error "ctree.sml: diff:behav. in move_dn";
   549 
   549 
   550 
   550 
   551 "-------------- move_dn: Frm -> Res ------------------------------";
   551 "-------------- move_dn: Frm -> Res ------------------------------";
   552 "-------------- move_dn: Frm -> Res ------------------------------";
   552 "-------------- move_dn: Frm -> Res ------------------------------";
   553 "-------------- move_dn: Frm -> Res ------------------------------";
   553 "-------------- move_dn: Frm -> Res ------------------------------";
   563  refFormula 1 (get_pos 1 1);
   563  refFormula 1 (get_pos 1 1);
   564 
   564 
   565  moveActiveRoot 1;
   565  moveActiveRoot 1;
   566  moveActiveDown 1;
   566  moveActiveDown 1;
   567  if get_pos 1 1 = ([1], Frm) then () 
   567  if get_pos 1 1 = ([1], Frm) then () 
   568  else raise error "ctree.sml: diff.behav. in move_dn: Frm -> Res (1)";
   568  else error "ctree.sml: diff.behav. in move_dn: Frm -> Res (1)";
   569  moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
   569  moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
   570 
   570 
   571  autoCalculate 1 (Step 1);
   571  autoCalculate 1 (Step 1);
   572  refFormula 1 (get_pos 1 1);
   572  refFormula 1 (get_pos 1 1);
   573 
   573 
   574  moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
   574  moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
   575  if get_pos 1 1 = ([1], Res) then () 
   575  if get_pos 1 1 = ([1], Res) then () 
   576  else raise error "ctree.sml: diff.behav. in move_dn: Frm -> Res (1)";
   576  else error "ctree.sml: diff.behav. in move_dn: Frm -> Res (1)";
   577  moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
   577  moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
   578 
   578 
   579 
   579 
   580 "-------------- move_up ------------------------------------------";
   580 "-------------- move_up ------------------------------------------";
   581 "-------------- move_up ------------------------------------------";
   581 "-------------- move_up ------------------------------------------";
   590  val p = move_up [] pt p;        (*-> ([1],Res)*)
   590  val p = move_up [] pt p;        (*-> ([1],Res)*)
   591  val p = move_up [] pt p;        (*-> ([1],Frm)*)
   591  val p = move_up [] pt p;        (*-> ([1],Frm)*)
   592  val p = move_up [] pt p;        (*-> ([],Pbl)*)
   592  val p = move_up [] pt p;        (*-> ([],Pbl)*)
   593 (*val p = (move_up [] pt p) handle e => print_exn_G e;
   593 (*val p = (move_up [] pt p) handle e => print_exn_G e;
   594                                   Exception PTREE begin of calculation*)
   594                                   Exception PTREE begin of calculation*)
   595 if p=([],Pbl) then () else raise error "ctree.sml: diff.behav. in move_up";
   595 if p=([],Pbl) then () else error "ctree.sml: diff.behav. in move_up";
   596 
   596 
   597 
   597 
   598 "------ move into detail -----------------------------------------";
   598 "------ move into detail -----------------------------------------";
   599 "------ move into detail -----------------------------------------";
   599 "------ move into detail -----------------------------------------";
   600 "------ move into detail -----------------------------------------";
   600 "------ move into detail -----------------------------------------";
   625  val p = move_dn [] pt p;     (*([2, 3], Res)*);
   625  val p = move_dn [] pt p;     (*([2, 3], Res)*);
   626  val p = move_dn [] pt p;     (*([2, 4], Res)*);
   626  val p = move_dn [] pt p;     (*([2, 4], Res)*);
   627  val p = move_dn [] pt p;     (*([2, 5], Res)*);
   627  val p = move_dn [] pt p;     (*([2, 5], Res)*);
   628  val p = move_dn [] pt p;     (*([2, 6], Res)*); 
   628  val p = move_dn [] pt p;     (*([2, 6], Res)*); 
   629  if p = ([2, 6], Res) then() 
   629  if p = ([2, 6], Res) then() 
   630  else raise error "ctree.sml: diff.behav. in move into detail";
   630  else error "ctree.sml: diff.behav. in move into detail";
   631 
   631 
   632 "=====new ptree 3a ===============================================";
   632 "=====new ptree 3a ===============================================";
   633 "=====new ptree 3a ===============================================";
   633 "=====new ptree 3a ===============================================";
   634 "=====new ptree 3a ===============================================";
   634 "=====new ptree 3a ===============================================";
   635  states:=[];
   635  states:=[];
   798 end;
   798 end;
   799 
   799 
   800 writeln(pr_ptree pr_short pt);
   800 writeln(pr_ptree pr_short pt);
   801 case get_trace pt [1,3] [4,1,1] of
   801 case get_trace pt [1,3] [4,1,1] of
   802     [[1,3],[1,4],[2],[3],[4],[4,1],[4,1,1]] => () 
   802     [[1,3],[1,4],[2],[3],[4],[4,1],[4,1,1]] => () 
   803   | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1a";
   803   | _ => error "diff.behav.in ctree.sml: get_interval lev 1a";
   804 case get_trace pt [2] [4,3,2] of
   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]] => ()
   805     [[2],[3],[4],[4,1],[4,1,1],[4,2],[4,3],[4,3,1],[4,3,2]] => ()
   806   | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1b";
   806   | _ => error "diff.behav.in ctree.sml: get_interval lev 1b";
   807 case get_trace pt [1,4] [4,3,1] of
   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]] => () 
   808     [[1,4],[2],[3],[4],[4,1],[4,1,1],[4,2],[4,3],[4,3,1]] => () 
   809   | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1c";
   809   | _ => error "diff.behav.in ctree.sml: get_interval lev 1c";
   810 case get_trace pt [4,2] [5] of
   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],_),
   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*)
   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]]=>()
   813     [[4,2],[4,3],[4,3,1],[4,3,2],[4,3,3],[4,3,4],[4,3,5],[5]]=>()
   814   | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1d";
   814   | _ => error "diff.behav.in ctree.sml: get_interval lev 1d";
   815 case get_trace pt [] [4,4,2] of
   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],
   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]] => () 
   817      [4,3],[4,3,1],[4,3,2]] => () 
   818   | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1e";
   818   | _ => error "diff.behav.in ctree.sml: get_interval lev 1e";
   819 case get_trace pt [] [] of
   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],
   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]] => () 
   821      [4,3],[4,3,1],[4,3,2],[4,3,3],[4,3,4],[4,3,5],[5]] => () 
   822   | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1f";
   822   | _ => error "diff.behav.in ctree.sml: get_interval lev 1f";
   823 case get_trace pt [4,3] [4,3] of
   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]] => () 
   824     [[4,3],[4,3,1],[4,3,2],[4,3,3],[4,3,4],[4,3,5]] => () 
   825   | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1g";
   825   | _ => error "diff.behav.in ctree.sml: get_interval lev 1g";
   826 
   826 
   827 "--- level 2: get pos' from start b to end p ---------------------";
   827 "--- level 2: get pos' from start b to end p ---------------------";
   828 "--- 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 ---------------------";
   829 "--- level 2: get pos' from start b to end p ---------------------";
   830 (*idea: pos_ is _ONLY_ relevant exactly at (endpoint of) from, to
   830 (*idea: pos_ is _ONLY_ relevant exactly at (endpoint of) from, to
   832   actually used (inefficient) version with move_dn: see modspec.sml
   832   actually used (inefficient) version with move_dn: see modspec.sml
   833 *)
   833 *)
   834 (*
   834 (*
   835 case get_trace pt ([1,4],Res) ([4,4,1],Frm) of
   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]] => () 
   836     [[2],[3],[4],[4,1],[4,2],[4,2,1],[4,3],[4,4],[4,4,1]] => () 
   837   | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1b";
   837   | _ => error "diff.behav.in ctree.sml: get_interval lev 1b";
   838 case get_trace pt ([],Pbl) ([],Res) of
   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],
   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]] => () 
   840      [4,4],[4,4,1],[4,4,2],[4,4,3],[4,4,4],[4,4,5],[5]] => () 
   841   | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1e";
   841   | _ => error "diff.behav.in ctree.sml: get_interval lev 1e";
   842 *)
   842 *)
   843 
   843 
   844 (******************************************************************)
   844 (******************************************************************)
   845 (**)            val get_trace = SAVE_get_trace;                 (**)
   845 (**)            val get_trace = SAVE_get_trace;                 (**)
   846 (******************************************************************)
   846 (******************************************************************)
   868     ("(3 + -1 * x + x ^^^ 2) * x = 1 * (9 * x + -6 * x ^^^ 2 + x ^^^ 3)",
   868     ("(3 + -1 * x + x ^^^ 2) * x = 1 * (9 * x + -6 * x ^^^ 2 + x ^^^ 3)",
   869      Subproblem
   869      Subproblem
   870          ("PolyEq.thy",
   870          ("PolyEq.thy",
   871           ["normalize", "polynomial", "univariate", "equation"]),
   871           ["normalize", "polynomial", "univariate", "equation"]),
   872 	 ["9 * x + -6 * x ^^^ 2 + x ^^^ 3 ~= 0"]) => ()
   872 	 ["9 * x + -6 * x ^^^ 2 + x ^^^ 3 ~= 0"]) => ()
   873   | _ => raise error "diff.behav.in ctree.sml: pt_extract asm<>[]";
   873   | _ => error "diff.behav.in ctree.sml: pt_extract asm<>[]";
   874 (*WN060717 unintentionally changed some rls/ord while 
   874 (*WN060717 unintentionally changed some rls/ord while 
   875      completing knowl. for thes2file...
   875      completing knowl. for thes2file...
   876 
   876 
   877   case (term2str form, tac, terms2strs asm) of
   877   case (term2str form, tac, terms2strs asm) of
   878     ((*"(3 + (-1 * x + x ^^^ 2)) * x = 1 * (9 * x + (x ^^^ 3 + -6 * x ^^^ 2))",
   878     ((*"(3 + (-1 * x + x ^^^ 2)) * x = 1 * (9 * x + (x ^^^ 3 + -6 * x ^^^ 2))",
   879      *)Subproblem
   879      *)Subproblem
   880          ("PolyEq.thy",
   880          ("PolyEq.thy",
   881           ["normalize", "polynomial", "univariate", "equation"]),
   881           ["normalize", "polynomial", "univariate", "equation"]),
   882 	 ["9 * x + (x ^^^ 3 + -6 * x ^^^ 2) ~= 0"]) => ()
   882 	 ["9 * x + (x ^^^ 3 + -6 * x ^^^ 2) ~= 0"]) => ()
   883   | _ => raise error "diff.behav.in ctree.sml: pt_extract asm<>[]";
   883   | _ => error "diff.behav.in ctree.sml: pt_extract asm<>[]";
   884 
   884 
   885 .... but it became even better*)
   885 .... but it became even better*)
   886 
   886 
   887 
   887 
   888 
   888 
   906 val (ModSpec (_,_,form,_,_,_), SOME tac, asm) = pt_extract (pt, ([], Frm));
   906 val (ModSpec (_,_,form,_,_,_), SOME tac, asm) = pt_extract (pt, ([], Frm));
   907 case (term2str form, tac, terms2strs asm) of
   907 case (term2str form, tac, terms2strs asm) of
   908     ("solve (x + 1 = 2, x)", 
   908     ("solve (x + 1 = 2, x)", 
   909     Apply_Method ["Test", "squ-equ-test-subpbl1"],
   909     Apply_Method ["Test", "squ-equ-test-subpbl1"],
   910      []) => ()
   910      []) => ()
   911   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([], Pbl)";
   911   | _ => error "diff.behav.in ctree.sml: pt_extract ([], Pbl)";
   912 
   912 
   913 val (Form form, SOME tac, asm) = pt_extract (pt, ([1], Frm));
   913 val (Form form, SOME tac, asm) = pt_extract (pt, ([1], Frm));
   914 case (term2str form, tac, terms2strs asm) of
   914 case (term2str form, tac, terms2strs asm) of
   915     ("x + 1 = 2", Rewrite_Set "norm_equation", []) => ()
   915     ("x + 1 = 2", Rewrite_Set "norm_equation", []) => ()
   916   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([1], Frm)";
   916   | _ => error "diff.behav.in ctree.sml: pt_extract ([1], Frm)";
   917 
   917 
   918 val (Form form, SOME tac, asm) = pt_extract (pt, ([1], Res));
   918 val (Form form, SOME tac, asm) = pt_extract (pt, ([1], Res));
   919 case (term2str form, tac, terms2strs asm) of
   919 case (term2str form, tac, terms2strs asm) of
   920     ("x + 1 + -1 * 2 = 0", Rewrite_Set "Test_simplify", []) => ()
   920     ("x + 1 + -1 * 2 = 0", Rewrite_Set "Test_simplify", []) => ()
   921   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([1], Res)";
   921   | _ => error "diff.behav.in ctree.sml: pt_extract ([1], Res)";
   922 
   922 
   923 val (Form form, SOME tac, asm) = pt_extract (pt, ([2], Res));
   923 val (Form form, SOME tac, asm) = pt_extract (pt, ([2], Res));
   924 case (term2str form, tac, terms2strs asm) of
   924 case (term2str form, tac, terms2strs asm) of
   925     ("-1 + x = 0",
   925     ("-1 + x = 0",
   926      Subproblem ("Test.thy", ["linear", "univariate", "equation", "test"]),
   926      Subproblem ("Test.thy", ["linear", "univariate", "equation", "test"]),
   927      []) => ()
   927      []) => ()
   928   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([2], Res)";
   928   | _ => error "diff.behav.in ctree.sml: pt_extract ([2], Res)";
   929 
   929 
   930 val (ModSpec (_,_,form,_,_,_), SOME tac, asm) = pt_extract (pt, ([3], Pbl));
   930 val (ModSpec (_,_,form,_,_,_), SOME tac, asm) = pt_extract (pt, ([3], Pbl));
   931 case (term2str form, tac, terms2strs asm) of
   931 case (term2str form, tac, terms2strs asm) of
   932     ("solve (-1 + x = 0, x)", Apply_Method ["Test", "solve_linear"], []) => ()
   932     ("solve (-1 + x = 0, x)", Apply_Method ["Test", "solve_linear"], []) => ()
   933   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([3], Pbl)";
   933   | _ => error "diff.behav.in ctree.sml: pt_extract ([3], Pbl)";
   934 
   934 
   935 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,1], Frm));
   935 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,1], Frm));
   936 case (term2str form, tac, terms2strs asm) of
   936 case (term2str form, tac, terms2strs asm) of
   937     ("-1 + x = 0", Rewrite_Set_Inst (["(bdv, x)"], "isolate_bdv"), []) => ()
   937     ("-1 + x = 0", Rewrite_Set_Inst (["(bdv, x)"], "isolate_bdv"), []) => ()
   938   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([3,1], Frm)";
   938   | _ => error "diff.behav.in ctree.sml: pt_extract ([3,1], Frm)";
   939 
   939 
   940 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,1], Res));
   940 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,1], Res));
   941 case (term2str form, tac, terms2strs asm) of
   941 case (term2str form, tac, terms2strs asm) of
   942     ("x = 0 + -1 * -1", Rewrite_Set "Test_simplify", []) => ()
   942     ("x = 0 + -1 * -1", Rewrite_Set "Test_simplify", []) => ()
   943   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([3,1], Res)";
   943   | _ => error "diff.behav.in ctree.sml: pt_extract ([3,1], Res)";
   944 
   944 
   945 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,2], Res));
   945 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,2], Res));
   946 case (term2str form, tac, terms2strs asm) of
   946 case (term2str form, tac, terms2strs asm) of
   947     ("x = 1", Check_Postcond ["linear", "univariate", "equation", "test"], 
   947     ("x = 1", Check_Postcond ["linear", "univariate", "equation", "test"], 
   948      []) => ()
   948      []) => ()
   949   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([3,2], Res)";
   949   | _ => error "diff.behav.in ctree.sml: pt_extract ([3,2], Res)";
   950 
   950 
   951 val (Form form, SOME tac, asm) = pt_extract (pt, ([3], Res));
   951 val (Form form, SOME tac, asm) = pt_extract (pt, ([3], Res));
   952 case (term2str form, tac, terms2strs asm) of
   952 case (term2str form, tac, terms2strs asm) of
   953     ("[x = 1]", Check_elementwise "Assumptions", []) => ()
   953     ("[x = 1]", Check_elementwise "Assumptions", []) => ()
   954   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([3], Res)";
   954   | _ => error "diff.behav.in ctree.sml: pt_extract ([3], Res)";
   955 
   955 
   956 val (Form form, SOME tac, asm) = pt_extract (pt, ([4], Res));
   956 val (Form form, SOME tac, asm) = pt_extract (pt, ([4], Res));
   957 case (term2str form, tac, terms2strs asm) of
   957 case (term2str form, tac, terms2strs asm) of
   958     ("[x = 1]",
   958     ("[x = 1]",
   959      Check_Postcond ["sqroot-test", "univariate", "equation", "test"],
   959      Check_Postcond ["sqroot-test", "univariate", "equation", "test"],
   960      []) => ()
   960      []) => ()
   961   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([4], Res)";
   961   | _ => error "diff.behav.in ctree.sml: pt_extract ([4], Res)";
   962 
   962 
   963 val (Form form, tac, asm) = pt_extract (pt, ([], Res));
   963 val (Form form, tac, asm) = pt_extract (pt, ([], Res));
   964 case (term2str form, tac, terms2strs asm) of
   964 case (term2str form, tac, terms2strs asm) of
   965     ("[x = 1]", NONE, []) => ()
   965     ("[x = 1]", NONE, []) => ()
   966   | _ => raise error "diff.behav.in ctree.sml: pt_extract ([], Res)";
   966   | _ => error "diff.behav.in ctree.sml: pt_extract ([], Res)";
   967 
   967 
   968 "=====new ptree 6 minisubpbl intersteps ==========================";
   968 "=====new ptree 6 minisubpbl intersteps ==========================";
   969 "=====new ptree 6 minisubpbl intersteps ==========================";
   969 "=====new ptree 6 minisubpbl intersteps ==========================";
   970 "=====new ptree 6 minisubpbl intersteps ==========================";
   970 "=====new ptree 6 minisubpbl intersteps ==========================";
   971 states:=[];
   971 states:=[];
  1001     ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1001     ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1002     ([3, 2], Res), 
  1002     ([3, 2], Res), 
  1003     ([3], Res),
  1003     ([3], Res),
  1004     ([4], Res), 
  1004     ([4], Res), 
  1005     ([], Res)] then () else
  1005     ([], Res)] then () else
  1006 raise error "ctree.sml diff.behav. get_allp new []";
  1006 error "ctree.sml diff.behav. get_allp new []";
  1007 
  1007 
  1008 print_depth 99;
  1008 print_depth 99;
  1009 val cuts2 = get_allps [] [1] (children pt);
  1009 val cuts2 = get_allps [] [1] (children pt);
  1010 print_depth 3;
  1010 print_depth 3;
  1011 if cuts = cuts2 @ [([], Res)] then () else
  1011 if cuts = cuts2 @ [([], Res)] then () else
  1012 raise error "ctree.sml diff.behav. get_allps new []";
  1012 error "ctree.sml diff.behav. get_allps new []";
  1013 
  1013 
  1014 "---(3) on S(606)..S(608)--------";
  1014 "---(3) on S(606)..S(608)--------";
  1015 "--- nd [2] with 6 children---------------------------------";
  1015 "--- nd [2] with 6 children---------------------------------";
  1016 val cuts = get_allp [] ([2], ([],Frm)) (get_nd pt [2]);
  1016 val cuts = get_allp [] ([2], ([],Frm)) (get_nd pt [2]);
  1017 if cuts = 
  1017 if cuts = 
  1018    [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  1018    [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  1019     ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1019     ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1020     ([2], Res)] then () else
  1020     ([2], Res)] then () else
  1021 raise error "ctree.sml diff.behav. get_allp new [2]";
  1021 error "ctree.sml diff.behav. get_allp new [2]";
  1022 
  1022 
  1023 val cuts2 = get_allps [] [2,1] (children (get_nd pt [2]));
  1023 val cuts2 = get_allps [] [2,1] (children (get_nd pt [2]));
  1024 if cuts = cuts2 @ [([2], Res)] then () else
  1024 if cuts = cuts2 @ [([2], Res)] then () else
  1025 raise error "ctree.sml diff.behav. get_allps new [2]";
  1025 error "ctree.sml diff.behav. get_allps new [2]";
  1026 
  1026 
  1027 
  1027 
  1028 "---(4) on S(606)..S(608)--------";
  1028 "---(4) on S(606)..S(608)--------";
  1029 "--- nd [3] subproblem--------------------------------------";
  1029 "--- nd [3] subproblem--------------------------------------";
  1030 val cuts = get_allp [] ([3], ([],Frm)) (get_nd pt [3]);
  1030 val cuts = get_allp [] ([3], ([],Frm)) (get_nd pt [3]);
  1032    [([3, 1], Frm), 
  1032    [([3, 1], Frm), 
  1033     ([3, 1], Res), 
  1033     ([3, 1], Res), 
  1034     ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1034     ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1035     ([3, 2], Res), 
  1035     ([3, 2], Res), 
  1036     ([3], Res)] then () else
  1036     ([3], Res)] then () else
  1037 raise error "ctree.sml diff.behav. get_allp new [3]";
  1037 error "ctree.sml diff.behav. get_allp new [3]";
  1038 
  1038 
  1039 val cuts2 = get_allps [] [3,1] (children (get_nd pt [3]));
  1039 val cuts2 = get_allps [] [3,1] (children (get_nd pt [3]));
  1040 if cuts = cuts2 @ [([3], Res)] then () else
  1040 if cuts = cuts2 @ [([3], Res)] then () else
  1041 raise error "ctree.sml diff.behav. get_allps new [3]";
  1041 error "ctree.sml diff.behav. get_allps new [3]";
  1042 
  1042 
  1043 "--- nd [3,2] with 2 children--------------------------------";
  1043 "--- nd [3,2] with 2 children--------------------------------";
  1044 val cuts = get_allp [] ([3,2], ([],Frm)) (get_nd pt [3,2]);
  1044 val cuts = get_allp [] ([3,2], ([],Frm)) (get_nd pt [3,2]);
  1045 if cuts = 
  1045 if cuts = 
  1046    [([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1046    [([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1047     ([3, 2], Res)] then () else
  1047     ([3, 2], Res)] then () else
  1048 raise error "ctree.sml diff.behav. get_allp new [3,2]";
  1048 error "ctree.sml diff.behav. get_allp new [3,2]";
  1049 
  1049 
  1050 val cuts2 = get_allps [] [3,2,1] (children (get_nd pt [3,2]));
  1050 val cuts2 = get_allps [] [3,2,1] (children (get_nd pt [3,2]));
  1051 if cuts = cuts2 @ [([3, 2], Res)] then () else
  1051 if cuts = cuts2 @ [([3, 2], Res)] then () else
  1052 raise error "ctree.sml diff.behav. get_allps new [3,2]";
  1052 error "ctree.sml diff.behav. get_allps new [3,2]";
  1053 
  1053 
  1054 "---(5a) on S(606)..S(608)--------";
  1054 "---(5a) on S(606)..S(608)--------";
  1055 "--- nd [3,2,1] with 0 children------------------------------";
  1055 "--- nd [3,2,1] with 0 children------------------------------";
  1056 val cuts = get_allp [] ([3,2,1], ([],Frm)) (get_nd pt [3,2,1]);
  1056 val cuts = get_allp [] ([3,2,1], ([],Frm)) (get_nd pt [3,2,1]);
  1057 if cuts = 
  1057 if cuts = 
  1058    [] then () else
  1058    [] then () else
  1059 raise error "ctree.sml diff.behav. get_allp new [3,2,1]";
  1059 error "ctree.sml diff.behav. get_allp new [3,2,1]";
  1060 
  1060 
  1061 val cuts2 = get_allps [] [3,2,1,1] (children (get_nd pt [3,2,1]));
  1061 val cuts2 = get_allps [] [3,2,1,1] (children (get_nd pt [3,2,1]));
  1062 if cuts = cuts2 @ [] then () else
  1062 if cuts = cuts2 @ [] then () else
  1063 raise error "ctree.sml diff.behav. get_allps new [3,2,1]";
  1063 error "ctree.sml diff.behav. get_allps new [3,2,1]";
  1064 
  1064 
  1065 
  1065 
  1066 (**#################################################################**)
  1066 (**#################################################################**)
  1067 "-------------- cut_tree new (from ptree above)-------------------";
  1067 "-------------- cut_tree new (from ptree above)-------------------";
  1068 "-------------- cut_tree new (from ptree above)-------------------";
  1068 "-------------- cut_tree new (from ptree above)-------------------";
  1069 "-------------- cut_tree new (from ptree above)-------------------";
  1069 "-------------- cut_tree new (from ptree above)-------------------";
  1070 show_pt pt;
  1070 show_pt pt;
  1071 val b = get_obj g_branch pt [];
  1071 val b = get_obj g_branch pt [];
  1072 if b = TransitiveB then () else
  1072 if b = TransitiveB then () else
  1073 raise error ("ctree.sml diff.behav. in [] branch="^branch2str b);
  1073 error ("ctree.sml diff.behav. in [] branch="^branch2str b);
  1074 val b = get_obj g_branch pt [3];
  1074 val b = get_obj g_branch pt [3];
  1075 if b = TransitiveB then () else
  1075 if b = TransitiveB then () else
  1076 raise error ("ctree.sml diff.behav. in [3] branch="^branch2str b);
  1076 error ("ctree.sml diff.behav. in [3] branch="^branch2str b);
  1077 
  1077 
  1078 "---(2) on S(606)..S(608)--------";
  1078 "---(2) on S(606)..S(608)--------";
  1079 val (pt', cuts) = cut_tree pt ([1],Res);
  1079 val (pt', cuts) = cut_tree pt ([1],Res);
  1080 print_depth 99;
  1080 print_depth 99;
  1081 cuts;
  1081 cuts;
  1083 if cuts = [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  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),
  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),
  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),
  1086       ([3, 2, 2], Res), ([3, 2], Res), ([3], Res), ([4], Res),
  1087 (*WN060727 after replacing cutlevup by test_trans:*)([], Res)] then () else 
  1087 (*WN060727 after replacing cutlevup by test_trans:*)([], Res)] then () else 
  1088 raise error "ctree.sml: diff.behav. cut_tree ([1],Res)";
  1088 error "ctree.sml: diff.behav. cut_tree ([1],Res)";
  1089 
  1089 
  1090 
  1090 
  1091 "---(3) on S(606)..S(608)--------";
  1091 "---(3) on S(606)..S(608)--------";
  1092 val (pt', cuts) = cut_tree pt ([2],Res);
  1092 val (pt', cuts) = cut_tree pt ([2],Res);
  1093 print_depth 99;
  1093 print_depth 99;
  1103 	   ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
  1103 	   ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
  1104 	   ([3, 2], Res), 
  1104 	   ([3, 2], Res), 
  1105 	   ([3], Res), 
  1105 	   ([3], Res), 
  1106 	   ([4], Res),
  1106 	   ([4], Res),
  1107 (*WN060727 added after replacing cutlevup by test_trans:*)([],Res)] then () 
  1107 (*WN060727 added after replacing cutlevup by test_trans:*)([],Res)] then () 
  1108 else raise error "ctree.sml: diff.behav. cut_tree ([2],Res)";
  1108 else error "ctree.sml: diff.behav. cut_tree ([2],Res)";
  1109 
  1109 
  1110 "---(4) on S(606)..S(608)--------";
  1110 "---(4) on S(606)..S(608)--------";
  1111 val (pt', cuts) = cut_tree pt ([3],Pbl);
  1111 val (pt', cuts) = cut_tree pt ([3],Pbl);
  1112 print_depth 99;
  1112 print_depth 99;
  1113 cuts;
  1113 cuts;
  1117 	   ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1117 	   ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1118 	   ([3, 2], Res), 
  1118 	   ([3, 2], Res), 
  1119 	   ([3], Res), 
  1119 	   ([3], Res), 
  1120 	   ([4], Res),
  1120 	   ([4], Res),
  1121 (*WN060727 added after replacing cutlevup by test_trans:*)([], Res)] 
  1121 (*WN060727 added after replacing cutlevup by test_trans:*)([], Res)] 
  1122 then () else raise error "ctree.sml: diff.behav. cut_tree ([3],Pbl)";
  1122 then () else error "ctree.sml: diff.behav. cut_tree ([3],Pbl)";
  1123 
  1123 
  1124 "---(5a) on S(606)..S(608) cut_tree --------";
  1124 "---(5a) on S(606)..S(608) cut_tree --------";
  1125 val (pt', cuts) = cut_tree pt ([3,2,1],Res);
  1125 val (pt', cuts) = cut_tree pt ([3,2,1],Res);
  1126 print_depth 99;
  1126 print_depth 99;
  1127 cuts;
  1127 cuts;
  1128 print_depth 1;
  1128 print_depth 1;
  1129 if cuts = [([3, 2, 2], Res), ([3, 2], Res),
  1129 if cuts = [([3, 2, 2], Res), ([3, 2], Res),
  1130 (*WN060727 added after replacing cutlevup by test_trans:*)
  1130 (*WN060727 added after replacing cutlevup by test_trans:*)
  1131 ([3], Res), ([4], Res),([],Res)] then () 
  1131 ([3], Res), ([4], Res),([],Res)] then () 
  1132 else raise error "ctree.sml: diff.behav. cut_tree ([3,2,1],Res)";
  1132 else error "ctree.sml: diff.behav. cut_tree ([3,2,1],Res)";
  1133 show_pt pt';
  1133 show_pt pt';
  1134 
  1134 
  1135 
  1135 
  1136 "-------------- cappend on complete ctree from above -------------";
  1136 "-------------- cappend on complete ctree from above -------------";
  1137 "-------------- cappend on complete ctree from above -------------";
  1137 "-------------- cappend on complete ctree from above -------------";
  1147 if cuts = [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  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),
  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),
  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),
  1150       ([3, 2, 2], Res), ([3, 2], Res), ([3], Res), ([4], Res),
  1151 (*WN060727 added after replacing cutlevup by test_trans:*) ([], Res)] then ()
  1151 (*WN060727 added after replacing cutlevup by test_trans:*) ([], Res)] then ()
  1152 else raise error "ctree.sml: diff:behav. in complete pt:append_atomic[1] cuts";
  1152 else error "ctree.sml: diff:behav. in complete pt:append_atomic[1] cuts";
  1153 val afterins = get_allp [] ([], ([],Frm)) pt';
  1153 val afterins = get_allp [] ([], ([],Frm)) pt';
  1154 print_depth 99;
  1154 print_depth 99;
  1155 afterins;
  1155 afterins;
  1156 print_depth 3;
  1156 print_depth 3;
  1157 if afterins = [([1], Frm), ([1], Res)
  1157 if afterins = [([1], Frm), ([1], Res)
  1158 (*, WN060727 removed after replacing cutlevup by test_trans:([], Res)*)] then()
  1158 (*, WN060727 removed after replacing cutlevup by test_trans:([], Res)*)] then()
  1159 else raise error "ctree.sml: diff:behav. in complete pt: append_atomic[1] afterins";
  1159 else error "ctree.sml: diff:behav. in complete pt: append_atomic[1] afterins";
  1160 show_pt pt';
  1160 show_pt pt';
  1161 
  1161 
  1162 "---(3) on S(606)..S(608)--------";
  1162 "---(3) on S(606)..S(608)--------";
  1163 show_pt pt;
  1163 show_pt pt;
  1164 val (pt', cuts) = cappend_atomic pt [2] e_istate (str2term "Inform[2]")
  1164 val (pt', cuts) = cappend_atomic pt [2] e_istate (str2term "Inform[2]")
  1169 if cuts = [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
  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), 
  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), 
  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),
  1172       ([3, 2, 2], Res), ([3, 2], Res), ([3], Res), ([4], Res),
  1173 (*WN060727 added after replacing cutlevup by test_trans:*) ([], Res)] then () 
  1173 (*WN060727 added after replacing cutlevup by test_trans:*) ([], Res)] then () 
  1174 else raise error "ctree.sml: diff:behav.in complete pt: append_atomic[2] cuts";
  1174 else error "ctree.sml: diff:behav.in complete pt: append_atomic[2] cuts";
  1175 val afterins = get_allp [] ([], ([],Frm)) pt';
  1175 val afterins = get_allp [] ([], ([],Frm)) pt';
  1176 print_depth 99;
  1176 print_depth 99;
  1177 afterins;
  1177 afterins;
  1178 print_depth 3;
  1178 print_depth 3;
  1179 if afterins = [([1], Frm), ([1], Res), ([2], Frm), ([2], Res)
  1179 if afterins = [([1], Frm), ([1], Res), ([2], Frm), ([2], Res)
  1180 (*,  WN060727 removed after replacing cutlevup by test_trans:([], Res)*)] 
  1180 (*,  WN060727 removed after replacing cutlevup by test_trans:([], Res)*)] 
  1181 then () else
  1181 then () else
  1182 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[2] afterins";
  1182 error "ctree.sml: diff:behav. in complete pt: append_atomic[2] afterins";
  1183 show_pt pt';
  1183 show_pt pt';
  1184 (*
  1184 (*
  1185  val p = move_dn [] pt' ([],Pbl) (*-> ([1],Frm)*);
  1185  val p = move_dn [] pt' ([],Pbl) (*-> ([1],Frm)*);
  1186  val p = move_dn [] pt' p        (*-> ([1],Res)*);
  1186  val p = move_dn [] pt' p        (*-> ([1],Res)*);
  1187  val p = move_dn [] pt' p        (*-> ([2],Frm)*);
  1187  val p = move_dn [] pt' p        (*-> ([2],Frm)*);
  1202 	   ([3, 1], Frm), ([3, 1], Res), 
  1202 	   ([3, 1], Frm), ([3, 1], Res), 
  1203 	   ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1203 	   ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1204 	   ([3, 2], Res), 
  1204 	   ([3, 2], Res), 
  1205 	   ([3], Res), ([4], Res),
  1205 	   ([3], Res), ([4], Res),
  1206 (*WN060727 added after replacing cutlevup by test_trans*)([], Res)] then ()else
  1206 (*WN060727 added after replacing cutlevup by test_trans*)([], Res)] then ()else
  1207 raise error "ctree.sml: diff:behav. in ccomplete pt: append_problem[3] cuts";
  1207 error "ctree.sml: diff:behav. in ccomplete pt: append_problem[3] cuts";
  1208 val afterins = get_allp [] ([], ([],Frm)) pt';
  1208 val afterins = get_allp [] ([], ([],Frm)) pt';
  1209 print_depth 99;
  1209 print_depth 99;
  1210 afterins;
  1210 afterins;
  1211 print_depth 3;
  1211 print_depth 3;
  1212 if afterins = 
  1212 if afterins = 
  1213    [([1], Frm), ([1], Res),([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  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),
  1214     ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), ([2], Res),
  1215     ([3], Pbl)] then () else
  1215     ([3], Pbl)] then () else
  1216 raise error "ctree.sml: diff:behav.in complete pt: append_problem[3] afterins";
  1216 error "ctree.sml: diff:behav.in complete pt: append_problem[3] afterins";
  1217 (* use"systest/ctree.sml";
  1217 (* use"systest/ctree.sml";
  1218    use"ctree.sml";
  1218    use"ctree.sml";
  1219    *)
  1219    *)
  1220 
  1220 
  1221 "---(6-1) on S(606)..S(608)--------";
  1221 "---(6-1) on S(606)..S(608)--------";
  1225 cuts;
  1225 cuts;
  1226 print_depth 3;
  1226 print_depth 3;
  1227 if cuts = [([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1227 if cuts = [([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res), 
  1228 	   ([3, 2], Res),
  1228 	   ([3, 2], Res),
  1229 (*WN060727 added*)([3], Res), ([4], Res), ([], Res)] then () else
  1229 (*WN060727 added*)([3], Res), ([4], Res), ([], Res)] then () else
  1230 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] cuts";
  1230 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] cuts";
  1231 val afterins = get_allp [] ([], ([],Frm)) pt';
  1231 val afterins = get_allp [] ([], ([],Frm)) pt';
  1232 print_depth 99;
  1232 print_depth 99;
  1233 afterins;
  1233 afterins;
  1234 print_depth 3;
  1234 print_depth 3;
  1235 (*WN060727 replaced after overwriting cutlevup by test_trans
  1235 (*WN060727 replaced after overwriting cutlevup by test_trans
  1240 	       ([3], Pbl), 
  1240 	       ([3], Pbl), 
  1241 	       ([3, 1], Frm), ([3, 1], Res)(*replaced*), (*([3, 2], Res) cut!*)
  1241 	       ([3, 1], Frm), ([3, 1], Res)(*replaced*), (*([3, 2], Res) cut!*)
  1242 	       ([3], Res)(*cutlevup=false*), 
  1242 	       ([3], Res)(*cutlevup=false*), 
  1243 	       ([4], Res),
  1243 	       ([4], Res),
  1244 	       ([], Res)(*cutlevup=false*)] then () else
  1244 	       ([], Res)(*cutlevup=false*)] then () else
  1245 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] insrtd";
  1245 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] insrtd";
  1246 *)
  1246 *)
  1247 if afterins = [([1], Frm), ([1], Res), 
  1247 if afterins = [([1], Frm), ([1], Res), 
  1248 	       ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1248 	       ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1249 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1249 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1250 	       ([2], Res),
  1250 	       ([2], Res),
  1251 	       ([3], Pbl), 
  1251 	       ([3], Pbl), 
  1252 	       ([3, 1], Frm), ([3, 1], Res)] then () else
  1252 	       ([3, 1], Frm), ([3, 1], Res)] then () else
  1253 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] insrtd";
  1253 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] insrtd";
  1254 
  1254 
  1255 if term2str (get_obj g_form pt' [3,1]) = "Inform [3, 1]" then () else
  1255 if term2str (get_obj g_form pt' [3,1]) = "Inform [3, 1]" then () else
  1256 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] Inform";
  1256 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] Inform";
  1257 
  1257 
  1258 "---(6) on S(606)..S(608)--------";
  1258 "---(6) on S(606)..S(608)--------";
  1259 val (pt', cuts) = cappend_atomic pt [3,2] e_istate (str2term "Inform[3,2]")
  1259 val (pt', cuts) = cappend_atomic pt [3,2] e_istate (str2term "Inform[3,2]")
  1260     (Tac "test") (str2term "Inres[3,2]",[]) Complete;
  1260     (Tac "test") (str2term "Inres[3,2]",[]) Complete;
  1261 print_depth 99;
  1261 print_depth 99;
  1262 cuts;
  1262 cuts;
  1263 print_depth 3;
  1263 print_depth 3;
  1264 if cuts = [(*just after is: cutlevup=false in [3]*)
  1264 if cuts = [(*just after is: cutlevup=false in [3]*)
  1265 (*WN060727 after test_trans instead cutlevup added:*)
  1265 (*WN060727 after test_trans instead cutlevup added:*)
  1266 	   ([3], Res), ([4], Res), ([], Res)] then () else
  1266 	   ([3], Res), ([4], Res), ([], Res)] then () else
  1267 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] cuts";
  1267 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] cuts";
  1268 val afterins = get_allp [] ([], ([],Frm)) pt';
  1268 val afterins = get_allp [] ([], ([],Frm)) pt';
  1269 print_depth 99;
  1269 print_depth 99;
  1270 afterins;
  1270 afterins;
  1271 print_depth 3;
  1271 print_depth 3;
  1272 (*WN060727 replaced after overwriting cutlevup by test_trans
  1272 (*WN060727 replaced after overwriting cutlevup by test_trans
  1276 	       ([2], Res),
  1276 	       ([2], Res),
  1277 	       ([3], Pbl), 
  1277 	       ([3], Pbl), 
  1278 	       ([3, 1], Frm), ([3, 1], Res), ([3, 2], Frm), ([3, 2], Res), 
  1278 	       ([3, 1], Frm), ([3, 1], Res), ([3, 2], Frm), ([3, 2], Res), 
  1279 	       ([3], Res),
  1279 	       ([3], Res),
  1280 	       ([4], Res), ([], Res)] then () else
  1280 	       ([4], Res), ([], Res)] then () else
  1281 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] insrtd";
  1281 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] insrtd";
  1282 *)
  1282 *)
  1283 if afterins = [([1], Frm), ([1], Res), 
  1283 if afterins = [([1], Frm), ([1], Res), 
  1284 	       ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1284 	       ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
  1285 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1285 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1286 	       ([2], Res),
  1286 	       ([2], Res),
  1287 	       ([3], Pbl), 
  1287 	       ([3], Pbl), 
  1288 	       ([3, 1], Frm), ([3, 1], Res), ([3, 2], Frm), ([3, 2], Res)]
  1288 	       ([3, 1], Frm), ([3, 1], Res), ([3, 2], Frm), ([3, 2], Res)]
  1289 then () else
  1289 then () else
  1290 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] insrtd";
  1290 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] insrtd";
  1291 
  1291 
  1292 if term2str (get_obj g_form pt' [3,2]) = "Inform [3, 2]" then () else
  1292 if term2str (get_obj g_form pt' [3,2]) = "Inform [3, 2]" then () else
  1293 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] Inform";
  1293 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] Inform";
  1294 
  1294 
  1295 "---(6++) on S(606)..S(608)--------";
  1295 "---(6++) on S(606)..S(608)--------";
  1296 (**)
  1296 (**)
  1297 val (pt', cuts) = cappend_atomic pt [3,2,1] e_istate (str2term "Inform[3,2,1]")
  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;
  1298     (Tac "test") (str2term "Inres[3,2,1]",[]) Complete;
  1300 cuts;
  1300 cuts;
  1301 print_depth 1;
  1301 print_depth 1;
  1302 if cuts = [([3, 2, 2], Res), ([3, 2], Res),
  1302 if cuts = [([3, 2, 2], Res), ([3, 2], Res),
  1303 (*WN060727 {cutlevup->test_trans} added:*)([3], Res), ([4], Res), ([], Res)] 
  1303 (*WN060727 {cutlevup->test_trans} added:*)([3], Res), ([4], Res), ([], Res)] 
  1304 then () else
  1304 then () else
  1305 raise error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2,1] cuts";
  1305 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2,1] cuts";
  1306 val afterins = get_allp [] ([], ([],Frm)) pt';
  1306 val afterins = get_allp [] ([], ([],Frm)) pt';
  1307 print_depth 99;
  1307 print_depth 99;
  1308 afterins;
  1308 afterins;
  1309 print_depth 3;
  1309 print_depth 3;
  1310 if afterins = [([1], Frm), ([1], Res), 
  1310 if afterins = [([1], Frm), ([1], Res), 
  1312 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1312 	       ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), 
  1313 	       ([2], Res),
  1313 	       ([2], Res),
  1314 	       ([3], Pbl), 
  1314 	       ([3], Pbl), 
  1315 	       ([3, 1], Frm), ([3, 1], Res), 
  1315 	       ([3, 1], Frm), ([3, 1], Res), 
  1316 	       ([3, 2, 1], Frm), ([3, 2, 1], Res)] then () else
  1316 	       ([3, 2, 1], Frm), ([3, 2, 1], Res)] then () else
  1317 raise error "ctree.sml: diff:behav. in complete pt: append_atom[3,2,1] insrtd";
  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
  1318 if term2str (get_obj g_form pt' [3,2,1]) = "Inform [3, 2, 1]" then () else
  1319 raise error "ctree.sml: diff:behav. complete pt: append_atomic[3,2,1] Inform";
  1319 error "ctree.sml: diff:behav. complete pt: append_atomic[3,2,1] Inform";
  1320 (*
  1320 (*
  1321 show_pt pt';
  1321 show_pt pt';
  1322 show_pt pt;
  1322 show_pt pt;
  1323 *)
  1323 *)
  1324 
  1324