1 (* tests for sml/ME/ctree.sml
2 authors: Walther Neuper 060113
3 (c) due to copyright terms
5 use"../smltest/ME/ctree.sml";
9 "-----------------------------------------------------------------";
10 "table of contents -----------------------------------------------";
11 "-----------------------------------------------------------------";
12 "-----------------------------------------------------------------";
13 "-------------- build miniscript stepwise BEFORE ALL TESTS -------";
14 "-------------- get_allpos' (from ptree above)--------------------";
15 (**#####################################################################(**)
16 "-------------- cut_level (from ptree above)----------------------";
17 "-------------- cut_tree (from ptree above)-----------------------";
18 "=====new ptree 1a miniscript with mini-subpbl ===================";
19 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
20 (**)#####################################################################**)
21 "=====new ptree 2 miniscript with mini-subpbl ====================";
22 "-------------- cut_tree (intermedi.ptree: 3rd level)-------------";
23 "-------------- cappend (from ptree above)------------------------";
24 "-------------- cappend minisubpbl -------------------------------";
26 "=====new ptree 3 ================================================";
27 "-------------- move_dn ------------------------------------------";
28 "-------------- move_dn: Frm -> Res ------------------------------";
29 "-------------- move_up ------------------------------------------";
30 "------ move into detail -----------------------------------------";
31 "=====new ptree 3a ===============================================";
32 "-------------- move_dn in Incomplete ctree ----------------------";
34 "=====new ptree 4: crooked by cut_level_'_ =======================";
35 (*############## development stopped 0501 ########################*)
36 (******************************************************************)
37 (* val SAVE_get_trace = get_trace; *)
38 (******************************************************************)
39 "-------------- get_interval from ctree: incremental development--";
40 (******************************************************************)
41 (* val get_trace = SAVE_get_trace; *)
42 (******************************************************************)
43 (*############## development stopped 0501 ########################*)
45 "=====new ptree 4 ratequation ====================================";
46 "-------------- pt_extract form, tac, asm<>[] --------------------";
47 "=====new ptree 5 minisubpbl =====================================";
48 "-------------- pt_extract form, tac, asm ------------------------";
50 (**#####################################################################(**)
51 "=====new ptree 6 minisubpbl intersteps ==========================";
52 "-------------- get_allpos' new ----------------------------------";
53 "-------------- cut_tree new (from ptree above)-------------------";
54 (**)#####################################################################**)
56 "-----------------------------------------------------------------";
57 "-----------------------------------------------------------------";
58 "-----------------------------------------------------------------";
61 "-------------- build miniscript stepwise BEFORE ALL TESTS -------";
62 "-------------- build miniscript stepwise BEFORE ALL TESTS -------";
63 "-------------- build miniscript stepwise BEFORE ALL TESTS -------";
64 "this build should be detailed each time a test fails later \
65 \i.e. all the tests should be caught here first \
66 \and linked with a reference to the respective test environment";
67 val fmz = ["equality (x+1=2)",
68 "solveFor x","solutions L"];
70 ("Test.thy",["sqroot-test","univariate","equation","test"],
71 ["Test","squ-equ-test-subpbl1"]);
72 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
73 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
74 (* nxt = Add_Given "equality (x + 1 = 2)"
75 (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
77 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
78 (* (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
80 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
81 (* (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
83 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
84 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
85 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
86 "ctree.sml-------------- get_allpos' new ------------------------\"";
87 val (PP, pp) = split_last [1];
88 val ((pt', cuts), clevup) = cut_bottom (PP, pp) (get_nd pt PP);
90 val cuts = get_allp [] ([], ([],Frm)) pt;
91 val cuts2 = get_allps [] [1] (children pt);
92 "ctree.sml-------------- cut_tree new (from ptree above)----------";
93 val (pt', cuts) = cut_tree pt ([1],Frm);
94 "ctree.sml-------------- cappend on complete ctree from above ----";
95 val (pt', cuts) = cappend_form pt [1] e_istate (str2term "Inform[1]");
96 "----------------------------------------------------------------/";
97 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_form: pos =[1]*);
98 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[1]*);
99 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[2]*);
100 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_problem: pos =[3]*);
102 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
103 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
104 (*val nxt = ("Add_Given", Add_Given "equality (-1 + x = 0)").....*)
105 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
106 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
107 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
108 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
109 (*val nxt = ("Apply_Method", Apply_Method ["Test", "solve_linear"])*)
111 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_form: pos =[3,1]*);
112 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[3,1]*);
113 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[3,2]*);
114 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*.append_result: pos =[3]*);
115 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*cappend_atomic: pos =[4]*);
116 val (p,_,f,nxt,_,pt) = me nxt p [1] pt(*.append_result: pos =[]*);
117 val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
118 if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
119 else error "new behaviour in test: miniscript with mini-subpbl";
124 "-------------- get_allpos' (from ptree above)--------------------";
125 "-------------- get_allpos' (from ptree above)--------------------";
126 "-------------- get_allpos' (from ptree above)--------------------";
127 if get_allpos' ([], 1) pt =
139 then () else error "ctree.sml: diff:behav. in get_allpos' 1";
141 if get_allpos's ([], 1) (children pt) =
151 then () else error "ctree.sml: diff:behav. in get_allpos' 2";
153 if get_allpos's ([], 2) (takerest (1, children pt)) =
161 then () else error "ctree.sml: diff:behav. in get_allpos' 3";
163 if get_allpos's ([], 3) (takerest (2, children pt)) =
170 then () else error "ctree.sml: diff:behav. in get_allpos' 4";
172 if get_allpos's ([3], 1) (children (nth 3 (children pt))) =
176 then () else error "ctree.sml: diff:behav. in get_allpos' 5";
178 if get_allpos' ([3], 1) (nth 3 (children pt)) =
184 then () else error "ctree.sml: diff:behav. in get_allpos' 6";
187 (**##############################################################(**)
189 "-------------- cut_level (from ptree above)----------------------";
190 "-------------- cut_level (from ptree above)----------------------";
191 "-------------- cut_level (from ptree above)----------------------";
194 print_depth 99; cuts; print_depth 3;
196 (*if cuts = [([2], Res),
203 then () else error "ctree.sml: diff:behav. in cut_level 1a";
204 val (res,asm) = get_obj g_result pt' [2];
205 if res = e_term andalso asm = [] then () else
206 error "ctree.sml: diff:behav. in cut_level 1aa" WN050219*);
207 if not (existpt [2] pt') then () else
208 error "ctree.sml: diff:behav. in cut_level 1aa2" (*WN050220*);
210 val (res,asm) = get_obj g_result pt' [];
211 if term2str res = "[x = 1]" (*WN050219 e_term in cut_tree!!!*) then () else
212 error "ctree.sml: diff:behav. in cut_level 1ab";
213 if map fst (get_interval ([],Frm) ([],Res) 9999 pt') =
217 ([2], Res),(*, e_term in cut_tree!!!*)
218 ([], Res)] then () else
219 error "ctree.sml: diff:behav. in cut_level 1b";
222 val (pt',cuts) = cut_level [] [] pt ([2],Res);
223 if cuts = [([3], Frm),
229 then () else error "ctree.sml: diff:behav. in cut_level 2a";
231 if pr_ptree pr_short pt' = ". ----- pblobj -----\n1. x + 1 = 2\n2. x + 1 + -1 * 2 = 0\n"
232 then () else error "ctree.sml: diff:behav. in cut_level 2b";
234 val (pt',cuts) = cut_level [] [3] pt ([3,1],Frm);
235 if cuts = [([3, 1], Res), ([3, 2], Res)]
236 then () else error "ctree.sml: diff:behav. in cut_level 3a";
237 if pr_ptree pr_short pt' = ". ----- pblobj -----\n1. x + 1 = 2\n2. x + 1 + -1 * 2 = 0\n3. ----- pblobj -----\n3.1. -1 + x = 0\n4. [x = 1]\n"
238 then () else error "ctree.sml: diff:behav. in cut_level 3b";
240 val (pt',cuts) = cut_level [] [3] pt ([3,1],Res);
241 if cuts = [([3, 2], Res)]
242 then () else error "ctree.sml: diff:behav. in cut_level 4a";
243 if pr_ptree pr_short pt' = ". ----- pblobj -----\n1. x + 1 = 2\n2. x + 1 + -1 * 2 = 0\n3. ----- pblobj -----\n3.1. -1 + x = 0\n4. [x = 1]\n"
244 then () else error "ctree.sml: diff:behav. in cut_level 4b";
247 "-------------- cut_tree (from ptree above)-----------------------";
248 "-------------- cut_tree (from ptree above)-----------------------";
249 "-------------- cut_tree (from ptree above)-----------------------";
250 val (pt', cuts) = cut_tree pt ([2],Frm);(*not created by move_dn -- not on WS*)
251 if cuts = [([2], Res),
259 then () else error "ctree.sml: diff:behav. in cut_tree 1a";
261 val (res,asm) = get_obj g_result pt' [2];
262 if res = e_term (*WN050219 done by cut_level*) then () else
263 error "ctree.sml: diff:behav. in cut_tree 1aa";
265 val form = get_obj g_form pt' [2];
266 if term2str form = "x + 1 + -1 * 2 = 0" (*remained !!!*) then () else
267 error "ctree.sml: diff:behav. in cut_tree 1ab";
269 val (res,asm) = get_obj g_result pt' [];
270 if res = e_term (*WN050219 done by cut_tree*) then () else
271 error "ctree.sml: diff:behav. in cut_tree 1ac";
273 if map fst (get_interval ([],Frm) ([],Res) 9999 pt') =
276 ([1], Res)] then () else
277 error "ctree.sml: diff:behav. in cut_tree 1ad";
279 val (pt', cuts) = cut_tree pt ([2],Res);
280 if cuts = [([3], Frm),
287 then () else error "ctree.sml: diff:behav. in cut_tree 2";
289 val (pt', cuts) = cut_tree pt ([3,1],Frm);
290 if cuts = [([3, 1], Res),
295 then () else error "ctree.sml: diff:behav. in cut_tree 3";
297 val (pt', cuts) = cut_tree pt ([3,1],Res);
298 if cuts = [([3, 2], Res),
302 then () else error "ctree.sml: diff:behav. in cut_tree 4";
305 "=====new ptree 1a miniscript with mini-subpbl ===================";
306 "=====new ptree 1a miniscript with mini-subpbl ===================";
307 "=====new ptree 1a miniscript with mini-subpbl ===================";
308 val fmz = ["equality (x+1=2)",
309 "solveFor x","solutions L"];
311 ("Test.thy",["sqroot-test","univariate","equation","test"],
312 ["Test","squ-equ-test-subpbl1"]);
313 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
314 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
315 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
316 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
317 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
318 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
319 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
320 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
321 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
324 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
325 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
326 "-------------- cut_level ( ,Frm) on Incomplete Nd ---------------";
328 val (pt',cuts) = cut_level [] [3] pt ([1],Frm);(*([1],Frm) is stored*)
329 if cuts = [](*([1],Res) is not yet stored (Nd.ostate=Incomplete)*)
330 then () else error "ctree.sml: diff:behav. in cut_tree 4a";
332 val (pt', cuts) = cut_tree pt ([1],Frm);
334 then () else error "ctree.sml: diff:behav. in cut_tree 4a";
337 val pos as ([p],_) = ([1],Frm);
338 val pt as Nd (b,_) = pt;
343 print_depth 99;cuts;print_depth 3;
344 print_depth 99;map fst (get_interval ([],Frm) ([],Res) 9999 pt');print_depth 3;
345 ####################################################################*)*)
347 "=====new ptree 2 miniscript with mini-subpbl ====================";
348 "=====new ptree 2 miniscript with mini-subpbl ====================";
349 "=====new ptree 2 miniscript with mini-subpbl ====================";
352 [(["equality (x+1=2)", "solveFor x","solutions L"],
354 ["sqroot-test","univariate","equation","test"],
355 ["Test","squ-equ-test-subpbl1"]))];
356 Iterator 1; moveActiveRoot 1;
357 autoCalculate 1 CompleteCalc;
359 interSteps 1 ([3,2],Res);
361 val ((pt,_),_) = get_calc 1;
364 "-------------- cut_tree (intermedi.ptree: 3rd level)-------------";
365 "-------------- cut_tree (intermedi.ptree: 3rd level)-------------";
366 "-------------- cut_tree (intermedi.ptree: 3rd level)-------------";
367 (*WN050225 intermed. outcommented
368 val (pt', cuts) = cut_tree pt ([3,2,1],Frm);
369 if cuts = [([3, 2, 1], Res),
374 then () else error "ctree.sml: diff:behav. in cut_tree 3rd level 1";
376 val (pt', cuts) = cut_tree pt ([3,2,1],Res);
377 if cuts = [([3, 2, 2], Res),
381 then () else error "ctree.sml: diff:behav. in cut_tree 3rd level 2";
384 "-------------- cappend (from ptree above)------------------------";
385 "-------------- cappend (from ptree above)------------------------";
386 "-------------- cappend (from ptree above)------------------------";
387 val (pt',cuts) = cappend_form pt [3,2,1] e_istate (str2term "newnew");
388 if cuts = [([3, 2, 1], Res),
394 then () else error "ctree.sml: diff:behav. in cappend_form";
395 if term2str (get_obj g_form pt' [3,2,1]) = "newnew" andalso
396 get_obj g_tac pt' [3,2,1] = Empty_Tac andalso
397 term2str (fst (get_obj g_result pt' [3,2,1])) = "??.empty"
398 then () else error "ctree.sml: diff:behav. in cappend 1";
400 val (pt',cuts) = cappend_atomic pt [3,2,1] e_istate (str2term "newform")
401 (Tac "test") (str2term "newresult",[]) Complete;
402 if cuts = [([3, 2, 1], Res), (*?????????????*)
408 then () else error "ctree.sml: diff:behav. in cappend_atomic";
412 "-------------- cappend minisubpbl -------------------------------";
413 "-------------- cappend minisubpbl -------------------------------";
414 "-------------- cappend minisubpbl -------------------------------";
415 "=====new ptree 1 miniscript with mini-subpbl ====================";
416 val fmz = ["equality (x+1=2)",
417 "solveFor x","solutions L"];
419 ("Test.thy",["sqroot-test","univariate","equation","test"],
420 ["Test","squ-equ-test-subpbl1"]);
421 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
422 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
423 (* nxt = Add_Given "equality (x + 1 = 2)"
424 (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
426 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
427 (* (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
429 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
430 (* (writeln o (itms2str_ ctxt)) (get_obj g_pbl pt (fst p));
432 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
433 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
434 val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
435 (*###cappend_form: pos =[1] ... while calculating nxt, which pt is dropped
436 val nxt = ("Apply_Method", Apply_Method ["Test", "squ-equ-test-subpbl1"])*)
438 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_form: pos =[1]*);
440 val (pt,cuts) = cappend_form pt (fst p) e_istate (str2term "x + 1 = 2");
441 val form = get_obj g_form pt (fst p);
442 val (res,_) = get_obj g_result pt (fst p);
443 if term2str form = "x + 1 = 2" andalso res = e_term then () else
444 error "ctree.sml, diff.behav. cappend minisubpbl ([1],Frm)";
445 if not (existpt ((lev_on o fst) p) pt) then () else
446 error "ctree.sml, diff.behav. cappend minisubpbl ([1],Frm) nxt";
448 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[1]*);
451 cappend_atomic pt (fst p) e_istate (str2term "x + 1 = 2")
452 Empty_Tac (str2term "x + 1 + -1 * 2 = 0",[]) Incomplete;
453 val form = get_obj g_form pt (fst p);
454 val (res,_) = get_obj g_result pt (fst p);
455 if term2str form = "x + 1 = 2" andalso term2str res = "x + 1 + -1 * 2 = 0"
456 then () else error "ctree.sml, diff.behav. cappend minisubpbl ([1],Res)";
457 if not (existpt ((lev_on o fst) p) pt) then () else
458 error "ctree.sml, diff.behav. cappend minisubpbl ([1],Res) nxt";
460 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[2]*);
463 cappend_atomic pt (fst p) e_istate (str2term "x + 1 + -1 * 2 = 0")
464 Empty_Tac (str2term "-1 + x = 0",[]) Incomplete;
465 val form = get_obj g_form pt (fst p);
466 val (res,_) = get_obj g_result pt (fst p);
467 if term2str form = "x + 1 + -1 * 2 = 0" andalso term2str res = "-1 + x = 0"
468 then () else error "ctree.sml, diff.behav. cappend minisubpbl ([2],Res)";
469 if not (existpt ((lev_on o fst) p) pt) then () else
470 error "ctree.sml, diff.behav. cappend minisubpbl ([2],Res) nxt";
473 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)cappend_problem: pos =[3]*)
475 val (pt,cuts) = cappend_problem pt (fst p) e_istate e_fmz ([],e_spec,e_term);
476 if is_pblobj (get_obj I pt (fst p)) then () else
477 error "ctree.sml, diff.behav. cappend minisubpbl ([3],Pbl)";
478 if not (existpt ((lev_on o fst) p) pt) then () else
479 error "ctree.sml, diff.behav. cappend minisubpbl ([3],Pbl) nxt";
481 (* ...complete calchead skipped...*)
483 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_form: pos =[3,1]*);
484 val p = ([3, 1], Frm);
485 val (pt,cuts) = cappend_form pt (fst p) e_istate (str2term "-1 + x = 0");
486 val form = get_obj g_form pt (fst p);
487 val (res,_) = get_obj g_result pt (fst p);
488 if term2str form = "-1 + x = 0" andalso res = e_term then () else
489 error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Frm)";
490 if not (existpt ((lev_on o fst) p) pt) then () else
491 error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Frm) nxt";
493 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)cappend_atomic: pos =[3,1]*)
494 val p = ([3, 1], Res);
496 cappend_atomic pt (fst p) e_istate (str2term "-1 + x = 0")
497 Empty_Tac (str2term "x = 0 + -1 * -1",[]) Incomplete;
498 val form = get_obj g_form pt (fst p);
499 val (res,_) = get_obj g_result pt (fst p);
500 if term2str form = "-1 + x = 0" andalso term2str res = "x = 0 + -1 * -1" then()
501 else error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Res)";
502 if not (existpt ((lev_on o fst) p) pt) then () else
503 error "ctree.sml, diff.behav. cappend minisubpbl ([3,1],Res) nxt";
505 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_form: pos =[3,1]*);
506 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[3,1]*);
507 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[3,2]*);
508 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**).append_result: pos =[3]*);
509 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**)cappend_atomic: pos =[4]*);
510 (*val (p,_,f,nxt,_,pt) = me nxt p [1] pt(**).append_result: pos =[]*);
512 WN050225 intermed. outcommented---*)
514 "=====new ptree 3 ================================================";
515 "=====new ptree 3 ================================================";
516 "=====new ptree 3 ================================================";
519 [(["equality (x+1=2)", "solveFor x","solutions L"],
521 ["sqroot-test","univariate","equation","test"],
522 ["Test","squ-equ-test-subpbl1"]))];
523 Iterator 1; moveActiveRoot 1;
524 autoCalculate 1 CompleteCalc;
526 val ((pt,_),_) = get_calc 1;
529 "-------------- move_dn ------------------------------------------";
530 "-------------- move_dn ------------------------------------------";
531 "-------------- move_dn ------------------------------------------";
532 val p = move_dn [] pt ([],Pbl) (*-> ([1],Frm)*);
533 val p = move_dn [] pt p (*-> ([1],Res)*);
534 val p = move_dn [] pt p (*-> ([2],Res)*);
535 val p = move_dn [] pt p (*-> ([3],Pbl)*);
536 val p = move_dn [] pt p (*-> ([3,1],Frm)*);
537 val p = move_dn [] pt p (*-> ([3,1],Res)*);
538 val p = move_dn [] pt p (*-> ([3,2],Res)*);
539 val p = move_dn [] pt p (*-> ([3],Res)*);
540 (* term2str (get_obj g_res pt [3]);
541 term2str (get_obj g_form pt [4]);
543 val p = move_dn [] pt p (*-> ([4],Res)*);
544 val p = move_dn [] pt p (*-> ([],Res)*);
546 val p = (move_dn [] pt p) handle e => print_exn_G e;
547 Exception PTREE end of calculation*)
548 if p=([],Res) then () else error "ctree.sml: diff:behav. in move_dn";
551 "-------------- move_dn: Frm -> Res ------------------------------";
552 "-------------- move_dn: Frm -> Res ------------------------------";
553 "-------------- move_dn: Frm -> Res ------------------------------";
555 CalcTree (*start of calculation, return No.1*)
556 [(["equality (1+-1*2+x=0)", "solveFor x","solutions L"],
558 ["linear","univariate","equation","test"],
559 ["Test","solve_linear"]))];
560 Iterator 1; moveActiveRoot 1;
561 autoCalculate 1 CompleteCalcHead;
562 autoCalculate 1 (Step 1);
563 refFormula 1 (get_pos 1 1);
567 if get_pos 1 1 = ([1], Frm) then ()
568 else error "ctree.sml: diff.behav. in move_dn: Frm -> Res (1)";
569 moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
571 autoCalculate 1 (Step 1);
572 refFormula 1 (get_pos 1 1);
574 moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
575 if get_pos 1 1 = ([1], Res) then ()
576 else error "ctree.sml: diff.behav. in move_dn: Frm -> Res (1)";
577 moveActiveDown 1; (*<ERROR> pos does not exist </ERROR>*)
580 "-------------- move_up ------------------------------------------";
581 "-------------- move_up ------------------------------------------";
582 "-------------- move_up ------------------------------------------";
583 val p = move_up [] pt ([],Res); (*-> ([4],Res)*)
584 val p = move_up [] pt p; (*-> ([3],Res)*)
585 val p = move_up [] pt p; (*-> ([3,2],Res)*)
586 val p = move_up [] pt p; (*-> ([3,1],Res)*)
587 val p = move_up [] pt p; (*-> ([3,1],Frm)*)
588 val p = move_up [] pt p; (*-> ([3],Pbl)*)
589 val p = move_up [] pt p; (*-> ([2],Res)*)
590 val p = move_up [] pt p; (*-> ([1],Res)*)
591 val p = move_up [] pt p; (*-> ([1],Frm)*)
592 val p = move_up [] pt p; (*-> ([],Pbl)*)
593 (*val p = (move_up [] pt p) handle e => print_exn_G e;
594 Exception PTREE begin of calculation*)
595 if p=([],Pbl) then () else error "ctree.sml: diff.behav. in move_up";
598 "------ move into detail -----------------------------------------";
599 "------ move into detail -----------------------------------------";
600 "------ move into detail -----------------------------------------";
603 [(["equality (x+1=2)", "solveFor x","solutions L"],
605 ["sqroot-test","univariate","equation","test"],
606 ["Test","squ-equ-test-subpbl1"]))];
607 Iterator 1; moveActiveRoot 1;
608 autoCalculate 1 CompleteCalc;
613 refFormula 1 (get_pos 1 1) (* 2 Res, <ISA> -1 + x = 0 </ISA> *);
615 interSteps 1 ([2],Res);
617 val ((pt,_),_) = get_calc 1; show_pt pt;
620 val p = move_up [] pt p; (*([2, 6], Res)*);
621 val p = movelevel_up [] pt p;(*([2], Frm)*);
622 val p = move_dn [] pt p; (*([2, 1], Frm)*);
623 val p = move_dn [] pt p; (*([2, 1], Res)*);
624 val p = move_dn [] pt p; (*([2, 2], Res)*);
625 val p = move_dn [] pt p; (*([2, 3], Res)*);
626 val p = move_dn [] pt p; (*([2, 4], Res)*);
627 val p = move_dn [] pt p; (*([2, 5], Res)*);
628 val p = move_dn [] pt p; (*([2, 6], Res)*);
629 if p = ([2, 6], Res) then()
630 else error "ctree.sml: diff.behav. in move into detail";
632 "=====new ptree 3a ===============================================";
633 "=====new ptree 3a ===============================================";
634 "=====new ptree 3a ===============================================";
637 [(["equality (x+1=2)", "solveFor x","solutions L"],
639 ["sqroot-test","univariate","equation","test"],
640 ["Test","squ-equ-test-subpbl1"]))];
641 Iterator 1; moveActiveRoot 1;
642 autoCalculate 1 CompleteCalcHead;
643 autoCalculate 1 (Step 1);
644 autoCalculate 1 (Step 1);
645 autoCalculate 1 (Step 1);
646 val ((pt,_),_) = get_calc 1;
647 val p = move_dn [] pt ([],Pbl) (*-> ([1], Frm)*);
648 val p = move_dn [] pt ([1], Frm) (*-> ([1], Res)*);
649 val p = move_dn [] pt ([1], Res) (*-> ([2], Res)*);
650 (*val p = move_dn [] pt ([2], Res) ->Exception- PTREE "[] not complete"*);
652 moveDown 1 ([],Pbl) (*-> ([1], Frm)*);
653 moveDown 1 ([1],Frm) (*-> ([1],Res)*);
654 moveDown 1 ([1],Res) (*-> ([2],Res)*);
655 moveDown 1 ([2],Res) (*-> pos does not exist*);
657 get_obj g_ostate pt [1];
661 "-------------- move_dn in Incomplete ctree ----------------------";
662 "-------------- move_dn in Incomplete ctree ----------------------";
663 "-------------- move_dn in Incomplete ctree ----------------------";
667 "=====new ptree 4: crooked by cut_level_'_ =======================";
668 "=====new ptree 4: crooked by cut_level_'_ =======================";
669 "=====new ptree 4: crooked by cut_level_'_ =======================";
672 [(["equality (x/(x^2 - 6*x+9) - 1/(x^2 - 3*x) =1/x)",
673 "solveFor x","solutions L"],
674 ("RatEq.thy",["univariate","equation"],["no_met"]))];
675 Iterator 1; moveActiveRoot 1;
676 autoCalculate 1 CompleteCalc;
678 getTactic 1 ([1],Res);(*Rewrite_Set RatEq_simplify*)
679 getTactic 1 ([2],Res);(*Rewrite_Set norm_Rational*)
680 getTactic 1 ([3],Res);(*Rewrite_Set RatEq_eliminate*)
681 getTactic 1 ([4,1],Res);(*Rewrite all_left*)
682 getTactic 1 ([4,2],Res);(*Rewrite_Set expand_binoms*)
683 getTactic 1 ([4,3],Res);(*Rewrite_Set_Inst make_ratpoly_in*)
685 moveActiveFormula 1 ([1],Res)(*1.1...1.4*);
686 moveActiveFormula 1 ([2],Res)(**ME_Isa: 'expand' not known*);
687 moveActiveFormula 1 ([3],Res)(*3.1.*);
688 moveActiveFormula 1 ([4,2],Res)(*4.2.1.*);
689 moveActiveFormula 1 ([4,3],Res)(**one_scr_arg: called by Script Stepwise t_=*);
691 moveActiveFormula 1 ([1],Res)(*1.1...1.4*);
692 interSteps 1 ([1],Res)(*..is activeFormula !?!*);
694 getTactic 1 ([1,1],Res);(*Rewrite real_diff_minus*)
695 getTactic 1 ([1,2],Res);(*Rewrite real_diff_minus*)
696 getTactic 1 ([1,3],Res);(*Rewrite real_diff_minus*)
697 getTactic 1 ([1,4],Res);(*Rewrite real_rat_mult_1*)
699 moveActiveFormula 1 ([4,2],Res)(*4.2.1.*);
700 interSteps 1 ([4,2],Res)(*..is activeFormula !?!*);
701 val ((pt,_),_) = get_calc 1;
702 writeln(pr_ptree pr_short pt);
703 (*delete [4,1] in order to make pos [4],[4,4] for pblobjs differen [4],[4,3]:
704 ###########################################################################*)
705 val (pt, ppp) = cut_level_'_ [] [] pt ([4,1],Frm);
706 writeln(pr_ptree pr_short pt);
709 "-------------- get_interval from ctree: incremental development--";
710 "-------------- get_interval from ctree: incremental development--";
711 "-------------- get_interval from ctree: incremental development--";
712 "--- level 1: get pos from start b to end p ----------------------";
713 "--- level 1: get pos from start b to end p ----------------------";
714 "--- level 1: get pos from start b to end p ----------------------";
715 (******************************************************************)
716 (**) val SAVE_get_trace = get_trace; (**)
717 (******************************************************************)
718 (*'getnds' below is structured as such:*)
719 fun www _ [x] = "l+r-margin"
720 | www true [x1,x2] = "l-margin, r-margin"
721 | www _ [x1,x2] = "intern, r-margin"
722 | www true (x::(xs as _::_)) = "l-margin " ^ www false xs
723 | www _ (x::(xs as _::_)) = "intern " ^ www false xs;
724 www true [1,2,3,4,5];
725 (*val it = "from intern intern intern to" : string*)
727 (*val it = "from to" : string*)
729 (*val it = "from+to" : string*)
732 (*specific values of hd of pos p,q for simple handling take_fromto,
733 from-pos p, to-pos q: take_fromto (hdp p) (hdq q) (children pt) ...
734 ... can be used even for positions _below_ p or q*)
735 fun hdp [] = 1 | hdp [0] = 1 | hdp x = hd x;(*start with first*)
736 fun hdq [] = 99999 | hdq [0] = 99999 | hdq x = hd x;(*take until last*)
737 (*analoguous for tl*)
738 fun tlp [] = [0] | tlp [_] = [0] | tlp x = tl x;
739 fun tlq [] = [99999] | tlq [_] = [99999] | tlq x = tl x;
741 (*see modspec.sml#pt_form
742 fun pt_form (PrfObj {form,...}) = term2str form
743 | pt_form (PblObj {probl,spec,origin=(_,spec',_),...}) =
744 let val (dI, pI, _) = get_somespec' spec spec'
745 val {cas,...} = get_pbt pI
747 NONE => term2str (pblterm dI pI)
748 | SOME t => term2str (subst_atomic (mk_env probl) t)
751 (*.get an 'interval' from ptree down to a certain level
752 by 'take_fromto children' of the nodes with specific 'from' and 'to';
753 'i > 0' suppresses output during recursive descent towards 'from'
754 b: the 'from' incremented to the actual pos
755 p,q: specific 'from','to' for simple use of 'take_fromto'*)
756 fun getnd i (b,p) q (Nd (po, nds)) =
757 (if i <= 0 then [(*[(b, pt_form po)]*) (**)[b](**)] else [])
759 @ (writeln("getnd : b="^(ints2str' b)^", p="^
760 (ints2str' p)^", q="^(ints2str' q));
762 getnds (i-1) true (b@[hdp p], tlp p) (tlq q)
763 (take_fromto (hdp p) (hdq q) nds))
765 and getnds _ _ _ _ [] = [] (*no children*)
766 | getnds i _ (b,p) q [nd] = (getnd i (b,p) q nd) (*l+r-margin*)
767 | getnds i true (b,p) q [n1, n2] = (*l-margin, r-margin*)
768 (writeln("getnds3: b="^ ints2str' b ^", p="^ ints2str' p ^
769 ", q="^ ints2str' q);
770 (getnd i ( b, p ) [99999] n1) @
771 (getnd ~99999 (lev_on b,[0]) q n2))
772 | getnds i _ (b,p) q [n1, n2] = (*intern, r-margin*)
773 (writeln("getnds4: b="^ ints2str' b ^", p="^ ints2str' p ^
774 ", q="^ ints2str' q);
775 (getnd i ( b,[0]) [99999] n1) @
776 (getnd ~99999 (lev_on b,[0]) q n2))
777 | getnds i true (b,p) q (nd::(nds as _::_)) = (*l-margin, intern*)
778 (writeln("getnds5: b="^ ints2str' b ^", p="^ ints2str' p ^
779 ", q="^ ints2str' q);
780 (getnd i ( b, p ) [99999] nd) @
781 (getnds ~99999 false (lev_on b,[0]) q nds))
782 | getnds i _ (b,p) q (nd::(nds as _::_)) = (*intern, ...*)
783 (getnd i ( b,[0]) [99999] nd) @
784 (getnds ~99999 false (lev_on b,[0]) q nds);
786 (*get an 'interval from to' from a ptree as 'intervals f t' of respective nodes
787 where 'from' are pos, i.e. a key as int list, 'f' an int (to,t analoguous)
788 (1) the 'f' are given
789 (1a) by 'from' if 'f' = the respective element of 'from' (left margin)
790 (1b) -inifinity, if 'f' > the respective element of 'from' (internal node)
792 (2a) by 'to' if 't' = the respective element of 'to' (right margin)
793 (2b) inifinity, if 't' < the respective element of 'to (internal node)'
794 the 'f' and 't' are set by hdp,... *)
795 fun get_trace pt p q =
796 (flat o (getnds ((length p) -1) true ([hdp p], tlp p) (tlq q)))
797 (take_fromto (hdp p) (hdq q) (children pt));
800 writeln(pr_ptree pr_short pt);
801 case get_trace pt [1,3] [4,1,1] of
802 [[1,3],[1,4],[2],[3],[4],[4,1],[4,1,1]] => ()
803 | _ => error "diff.behav.in ctree.sml: get_interval lev 1a";
804 case get_trace pt [2] [4,3,2] of
805 [[2],[3],[4],[4,1],[4,1,1],[4,2],[4,3],[4,3,1],[4,3,2]] => ()
806 | _ => error "diff.behav.in ctree.sml: get_interval lev 1b";
807 case get_trace pt [1,4] [4,3,1] of
808 [[1,4],[2],[3],[4],[4,1],[4,1,1],[4,2],[4,3],[4,3,1]] => ()
809 | _ => error "diff.behav.in ctree.sml: get_interval lev 1c";
810 case get_trace pt [4,2] [5] of
811 (*[([4,2],_),([4,3],_),([4,4],_),([4,4,1],_),([4,4,2],_),([4,4,3],_),
812 ([4,4,4],_),([4,4,5],_),([5],_)] => () ..with pt_form*)
813 [[4,2],[4,3],[4,3,1],[4,3,2],[4,3,3],[4,3,4],[4,3,5],[5]]=>()
814 | _ => error "diff.behav.in ctree.sml: get_interval lev 1d";
815 case get_trace pt [] [4,4,2] of
816 [[1],[1,1],[1,2],[1,3],[1,4],[2],[3],[4],[4,1],[4,1,1],[4,2],
817 [4,3],[4,3,1],[4,3,2]] => ()
818 | _ => error "diff.behav.in ctree.sml: get_interval lev 1e";
819 case get_trace pt [] [] of
820 [[1],[1,1],[1,2],[1,3],[1,4],[2],[3],[4],[4,1],[4,1,1],[4,2],
821 [4,3],[4,3,1],[4,3,2],[4,3,3],[4,3,4],[4,3,5],[5]] => ()
822 | _ => error "diff.behav.in ctree.sml: get_interval lev 1f";
823 case get_trace pt [4,3] [4,3] of
824 [[4,3],[4,3,1],[4,3,2],[4,3,3],[4,3,4],[4,3,5]] => ()
825 | _ => error "diff.behav.in ctree.sml: get_interval lev 1g";
827 "--- level 2: get pos' from start b to end p ---------------------";
828 "--- level 2: get pos' from start b to end p ---------------------";
829 "--- level 2: get pos' from start b to end p ---------------------";
830 (*idea: pos_ is _ONLY_ relevant exactly at (endpoint of) from, to
831 development stopped in favour of move_dn, see get_interval
832 actually used (inefficient) version with move_dn: see modspec.sml
835 case get_trace pt ([1,4],Res) ([4,4,1],Frm) of
836 [[2],[3],[4],[4,1],[4,2],[4,2,1],[4,3],[4,4],[4,4,1]] => ()
837 | _ => error "diff.behav.in ctree.sml: get_interval lev 1b";
838 case get_trace pt ([],Pbl) ([],Res) of
839 [[1],[1,1],[1,2],[1,3],[1,4],[2],[3],[4],[4,1],[4,2],[4,2,1],[4,3],
840 [4,4],[4,4,1],[4,4,2],[4,4,3],[4,4,4],[4,4,5],[5]] => ()
841 | _ => error "diff.behav.in ctree.sml: get_interval lev 1e";
844 (******************************************************************)
845 (**) val get_trace = SAVE_get_trace; (**)
846 (******************************************************************)
849 "=====new ptree 4 ratequation ====================================";
850 "=====new ptree 4 ratequation ====================================";
851 "=====new ptree 4 ratequation ====================================";
854 [(["equality (x/(x^2 - 6*x+9) - 1/(x^2 - 3*x) =1/x)",
855 "solveFor x","solutions L"],
856 ("RatEq.thy",["univariate","equation"],["no_met"]))];
857 Iterator 1; moveActiveRoot 1;
858 autoCalculate 1 CompleteCalc;
859 val ((pt,_),_) = get_calc 1;
863 "-------------- pt_extract form, tac, asm<>[] --------------------";
864 "-------------- pt_extract form, tac, asm<>[] --------------------";
865 "-------------- pt_extract form, tac, asm<>[] --------------------";
866 val (Form form, SOME tac, asm) = pt_extract (pt, ([3], Res));
867 case (term2str form, tac, terms2strs asm) of
868 ("(3 + -1 * x + x ^^^ 2) * x = 1 * (9 * x + -6 * x ^^^ 2 + x ^^^ 3)",
871 ["normalize", "polynomial", "univariate", "equation"]),
872 ["9 * x + -6 * x ^^^ 2 + x ^^^ 3 ~= 0"]) => ()
873 | _ => error "diff.behav.in ctree.sml: pt_extract asm<>[]";
874 (*WN060717 unintentionally changed some rls/ord while
875 completing knowl. for thes2file...
877 case (term2str form, tac, terms2strs asm) of
878 ((*"(3 + (-1 * x + x ^^^ 2)) * x = 1 * (9 * x + (x ^^^ 3 + -6 * x ^^^ 2))",
881 ["normalize", "polynomial", "univariate", "equation"]),
882 ["9 * x + (x ^^^ 3 + -6 * x ^^^ 2) ~= 0"]) => ()
883 | _ => error "diff.behav.in ctree.sml: pt_extract asm<>[]";
885 .... but it became even better*)
889 "=====new ptree 5 minisubpbl =====================================";
890 "=====new ptree 5 minisubpbl =====================================";
891 "=====new ptree 5 minisubpbl =====================================";
894 [(["equality (x+1=2)", "solveFor x","solutions L"],
896 ["sqroot-test","univariate","equation","test"],
897 ["Test","squ-equ-test-subpbl1"]))];
898 Iterator 1; moveActiveRoot 1;
899 autoCalculate 1 CompleteCalc;
900 val ((pt,_),_) = get_calc 1;
903 "-------------- pt_extract form, tac, asm ------------------------";
904 "-------------- pt_extract form, tac, asm ------------------------";
905 "-------------- pt_extract form, tac, asm ------------------------";
906 val (ModSpec (_,_,form,_,_,_), SOME tac, asm) = pt_extract (pt, ([], Frm));
907 case (term2str form, tac, terms2strs asm) of
908 ("solve (x + 1 = 2, x)",
909 Apply_Method ["Test", "squ-equ-test-subpbl1"],
911 | _ => error "diff.behav.in ctree.sml: pt_extract ([], Pbl)";
913 val (Form form, SOME tac, asm) = pt_extract (pt, ([1], Frm));
914 case (term2str form, tac, terms2strs asm) of
915 ("x + 1 = 2", Rewrite_Set "norm_equation", []) => ()
916 | _ => error "diff.behav.in ctree.sml: pt_extract ([1], Frm)";
918 val (Form form, SOME tac, asm) = pt_extract (pt, ([1], Res));
919 case (term2str form, tac, terms2strs asm) of
920 ("x + 1 + -1 * 2 = 0", Rewrite_Set "Test_simplify", []) => ()
921 | _ => error "diff.behav.in ctree.sml: pt_extract ([1], Res)";
923 val (Form form, SOME tac, asm) = pt_extract (pt, ([2], Res));
924 case (term2str form, tac, terms2strs asm) of
926 Subproblem ("Test.thy", ["linear", "univariate", "equation", "test"]),
928 | _ => error "diff.behav.in ctree.sml: pt_extract ([2], Res)";
930 val (ModSpec (_,_,form,_,_,_), SOME tac, asm) = pt_extract (pt, ([3], Pbl));
931 case (term2str form, tac, terms2strs asm) of
932 ("solve (-1 + x = 0, x)", Apply_Method ["Test", "solve_linear"], []) => ()
933 | _ => error "diff.behav.in ctree.sml: pt_extract ([3], Pbl)";
935 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,1], Frm));
936 case (term2str form, tac, terms2strs asm) of
937 ("-1 + x = 0", Rewrite_Set_Inst (["(bdv, x)"], "isolate_bdv"), []) => ()
938 | _ => error "diff.behav.in ctree.sml: pt_extract ([3,1], Frm)";
940 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,1], Res));
941 case (term2str form, tac, terms2strs asm) of
942 ("x = 0 + -1 * -1", Rewrite_Set "Test_simplify", []) => ()
943 | _ => error "diff.behav.in ctree.sml: pt_extract ([3,1], Res)";
945 val (Form form, SOME tac, asm) = pt_extract (pt, ([3,2], Res));
946 case (term2str form, tac, terms2strs asm) of
947 ("x = 1", Check_Postcond ["linear", "univariate", "equation", "test"],
949 | _ => error "diff.behav.in ctree.sml: pt_extract ([3,2], Res)";
951 val (Form form, SOME tac, asm) = pt_extract (pt, ([3], Res));
952 case (term2str form, tac, terms2strs asm) of
953 ("[x = 1]", Check_elementwise "Assumptions", []) => ()
954 | _ => error "diff.behav.in ctree.sml: pt_extract ([3], Res)";
956 val (Form form, SOME tac, asm) = pt_extract (pt, ([4], Res));
957 case (term2str form, tac, terms2strs asm) of
959 Check_Postcond ["sqroot-test", "univariate", "equation", "test"],
961 | _ => error "diff.behav.in ctree.sml: pt_extract ([4], Res)";
963 val (Form form, tac, asm) = pt_extract (pt, ([], Res));
964 case (term2str form, tac, terms2strs asm) of
965 ("[x = 1]", NONE, []) => ()
966 | _ => error "diff.behav.in ctree.sml: pt_extract ([], Res)";
968 "=====new ptree 6 minisubpbl intersteps ==========================";
969 "=====new ptree 6 minisubpbl intersteps ==========================";
970 "=====new ptree 6 minisubpbl intersteps ==========================";
973 [(["equality (x+1=2)", "solveFor x","solutions L"],
975 ["sqroot-test","univariate","equation","test"],
976 ["Test","squ-equ-test-subpbl1"]))];
977 Iterator 1; moveActiveRoot 1;
978 autoCalculate 1 CompleteCalc;
979 interSteps 1 ([2],Res);
980 interSteps 1 ([3,2],Res);
981 val ((pt,_),_) = get_calc 1;
984 (**##############################################################**)
985 "-------------- get_allpos' new ----------------------------------";
986 "-------------- get_allpos' new ----------------------------------";
987 "-------------- get_allpos' new ----------------------------------";
990 val cuts = get_allp [] ([], ([],Frm)) pt;
993 [(*never returns the first pos'*)
996 ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
997 ([2, 4], Res), ([2, 5], Res), ([2, 6], Res),
1000 ([3, 1], Frm), ([3, 1], Res),
1001 ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
1005 ([], Res)] then () else
1006 error "ctree.sml diff.behav. get_allp new []";
1009 val cuts2 = get_allps [] [1] (children pt);
1011 if cuts = cuts2 @ [([], Res)] then () else
1012 error "ctree.sml diff.behav. get_allps new []";
1014 "---(3) on S(606)..S(608)--------";
1015 "--- nd [2] with 6 children---------------------------------";
1016 val cuts = get_allp [] ([2], ([],Frm)) (get_nd pt [2]);
1018 [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
1019 ([2, 4], Res), ([2, 5], Res), ([2, 6], Res),
1020 ([2], Res)] then () else
1021 error "ctree.sml diff.behav. get_allp new [2]";
1023 val cuts2 = get_allps [] [2,1] (children (get_nd pt [2]));
1024 if cuts = cuts2 @ [([2], Res)] then () else
1025 error "ctree.sml diff.behav. get_allps new [2]";
1028 "---(4) on S(606)..S(608)--------";
1029 "--- nd [3] subproblem--------------------------------------";
1030 val cuts = get_allp [] ([3], ([],Frm)) (get_nd pt [3]);
1034 ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
1036 ([3], Res)] then () else
1037 error "ctree.sml diff.behav. get_allp new [3]";
1039 val cuts2 = get_allps [] [3,1] (children (get_nd pt [3]));
1040 if cuts = cuts2 @ [([3], Res)] then () else
1041 error "ctree.sml diff.behav. get_allps new [3]";
1043 "--- nd [3,2] with 2 children--------------------------------";
1044 val cuts = get_allp [] ([3,2], ([],Frm)) (get_nd pt [3,2]);
1046 [([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
1047 ([3, 2], Res)] then () else
1048 error "ctree.sml diff.behav. get_allp new [3,2]";
1050 val cuts2 = get_allps [] [3,2,1] (children (get_nd pt [3,2]));
1051 if cuts = cuts2 @ [([3, 2], Res)] then () else
1052 error "ctree.sml diff.behav. get_allps new [3,2]";
1054 "---(5a) on S(606)..S(608)--------";
1055 "--- nd [3,2,1] with 0 children------------------------------";
1056 val cuts = get_allp [] ([3,2,1], ([],Frm)) (get_nd pt [3,2,1]);
1059 error "ctree.sml diff.behav. get_allp new [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
1063 error "ctree.sml diff.behav. get_allps new [3,2,1]";
1066 (**#################################################################**)
1067 "-------------- cut_tree new (from ptree above)-------------------";
1068 "-------------- cut_tree new (from ptree above)-------------------";
1069 "-------------- cut_tree new (from ptree above)-------------------";
1071 val b = get_obj g_branch pt [];
1072 if b = TransitiveB then () else
1073 error ("ctree.sml diff.behav. in [] branch="^branch2str b);
1074 val b = get_obj g_branch pt [3];
1075 if b = TransitiveB then () else
1076 error ("ctree.sml diff.behav. in [3] branch="^branch2str b);
1078 "---(2) on S(606)..S(608)--------";
1079 val (pt', cuts) = cut_tree pt ([1],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),
1085 ([3, 1], Frm), ([3, 1], Res), ([3, 2, 1], Frm), ([3, 2, 1], Res),
1086 ([3, 2, 2], Res), ([3, 2], Res), ([3], Res), ([4], Res),
1087 (*WN060727 after replacing cutlevup by test_trans:*)([], Res)] then () else
1088 error "ctree.sml: diff.behav. cut_tree ([1],Res)";
1091 "---(3) on S(606)..S(608)--------";
1092 val (pt', cuts) = cut_tree pt ([2],Res);
1096 if cuts = [(*preceding step on WS was ([1]),Res*)
1097 ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
1098 ([2, 4], Res), ([2, 5], Res), ([2, 6], Res),
1103 ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
1107 (*WN060727 added after replacing cutlevup by test_trans:*)([],Res)] then ()
1108 else error "ctree.sml: diff.behav. cut_tree ([2],Res)";
1110 "---(4) on S(606)..S(608)--------";
1111 val (pt', cuts) = cut_tree pt ([3],Pbl);
1115 if cuts = [([3], Pbl),
1116 ([3, 1], Frm), ([3, 1], Res),
1117 ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
1121 (*WN060727 added after replacing cutlevup by test_trans:*)([], Res)]
1122 then () else error "ctree.sml: diff.behav. cut_tree ([3],Pbl)";
1124 "---(5a) on S(606)..S(608) cut_tree --------";
1125 val (pt', cuts) = cut_tree pt ([3,2,1],Res);
1129 if cuts = [([3, 2, 2], Res), ([3, 2], Res),
1130 (*WN060727 added after replacing cutlevup by test_trans:*)
1131 ([3], Res), ([4], Res),([],Res)] then ()
1132 else error "ctree.sml: diff.behav. cut_tree ([3,2,1],Res)";
1136 "-------------- cappend on complete ctree from above -------------";
1137 "-------------- cappend on complete ctree from above -------------";
1138 "-------------- cappend on complete ctree from above -------------";
1141 "---(2) on S(606)..S(608)--------";
1142 val (pt', cuts) = cappend_atomic pt [1] e_istate (str2term "Inform[1]")
1143 (Tac "test") (str2term "Inres[1]",[]) Complete;
1147 if cuts = [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
1148 ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), ([2], Res), ([3], Pbl),
1149 ([3, 1], Frm), ([3, 1], Res), ([3, 2, 1], Frm), ([3, 2, 1], Res),
1150 ([3, 2, 2], Res), ([3, 2], Res), ([3], Res), ([4], Res),
1151 (*WN060727 added after replacing cutlevup by test_trans:*) ([], Res)] then ()
1152 else error "ctree.sml: diff:behav. in complete pt:append_atomic[1] cuts";
1153 val afterins = get_allp [] ([], ([],Frm)) pt';
1157 if afterins = [([1], Frm), ([1], Res)
1158 (*, WN060727 removed after replacing cutlevup by test_trans:([], Res)*)] then()
1159 else error "ctree.sml: diff:behav. in complete pt: append_atomic[1] afterins";
1162 "---(3) on S(606)..S(608)--------";
1164 val (pt', cuts) = cappend_atomic pt [2] e_istate (str2term "Inform[2]")
1165 (Tac "test") (str2term "Inres[2]",[]) Complete;
1169 if cuts = [([2, 1], Frm), ([2, 1], Res), ([2, 2], Res), ([2, 3], Res),
1170 ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), ([2], Res), ([3], Pbl),
1171 ([3, 1], Frm),([3, 1], Res), ([3, 2, 1], Frm), ([3, 2, 1], Res),
1172 ([3, 2, 2], Res), ([3, 2], Res), ([3], Res), ([4], Res),
1173 (*WN060727 added after replacing cutlevup by test_trans:*) ([], Res)] then ()
1174 else error "ctree.sml: diff:behav.in complete pt: append_atomic[2] cuts";
1175 val afterins = get_allp [] ([], ([],Frm)) pt';
1179 if afterins = [([1], Frm), ([1], Res), ([2], Frm), ([2], Res)
1180 (*, WN060727 removed after replacing cutlevup by test_trans:([], Res)*)]
1182 error "ctree.sml: diff:behav. in complete pt: append_atomic[2] afterins";
1185 val p = move_dn [] pt' ([],Pbl) (*-> ([1],Frm)*);
1186 val p = move_dn [] pt' p (*-> ([1],Res)*);
1187 val p = move_dn [] pt' p (*-> ([2],Frm)*);
1188 val p = move_dn [] pt' p (*-> ([2],Res)*);
1190 term2str (get_obj g_form pt' [2]);
1191 term2str (get_obj g_res pt' [2]);
1192 ostate2str (get_obj g_ostate pt' [2]);
1195 "---(4) on S(606)..S(608)--------";
1196 val (pt', cuts) = cappend_problem pt [3] e_istate ([],e_spec)
1197 ([],e_spec, str2term "Inhead[3]");
1201 if cuts = [([3], Pbl),
1202 ([3, 1], Frm), ([3, 1], Res),
1203 ([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
1205 ([3], Res), ([4], Res),
1206 (*WN060727 added after replacing cutlevup by test_trans*)([], Res)] then ()else
1207 error "ctree.sml: diff:behav. in ccomplete pt: append_problem[3] cuts";
1208 val afterins = get_allp [] ([], ([],Frm)) pt';
1213 [([1], Frm), ([1], Res),([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
1214 ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res), ([2], Res),
1215 ([3], Pbl)] then () else
1216 error "ctree.sml: diff:behav.in complete pt: append_problem[3] afterins";
1217 (* use"systest/ctree.sml";
1221 "---(6-1) on S(606)..S(608)--------";
1222 val (pt', cuts) = cappend_atomic pt [3,1] e_istate (str2term "Inform[3,1]")
1223 (Tac "test") (str2term "Inres[3,1]",[]) Complete;
1227 if cuts = [([3, 2, 1], Frm), ([3, 2, 1], Res), ([3, 2, 2], Res),
1229 (*WN060727 added*)([3], Res), ([4], Res), ([], Res)] then () else
1230 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] cuts";
1231 val afterins = get_allp [] ([], ([],Frm)) pt';
1235 (*WN060727 replaced after overwriting cutlevup by test_trans
1236 if afterins = [([1], Frm), ([1], Res),
1237 ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
1238 ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res),
1241 ([3, 1], Frm), ([3, 1], Res)(*replaced*), (*([3, 2], Res) cut!*)
1242 ([3], Res)(*cutlevup=false*),
1244 ([], Res)(*cutlevup=false*)] then () else
1245 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] insrtd";
1247 if afterins = [([1], Frm), ([1], Res),
1248 ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
1249 ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res),
1252 ([3, 1], Frm), ([3, 1], Res)] then () else
1253 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] insrtd";
1255 if term2str (get_obj g_form pt' [3,1]) = "Inform [3, 1]" then () else
1256 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,1] Inform";
1258 "---(6) on S(606)..S(608)--------";
1259 val (pt', cuts) = cappend_atomic pt [3,2] e_istate (str2term "Inform[3,2]")
1260 (Tac "test") (str2term "Inres[3,2]",[]) Complete;
1264 if cuts = [(*just after is: cutlevup=false in [3]*)
1265 (*WN060727 after test_trans instead cutlevup added:*)
1266 ([3], Res), ([4], Res), ([], Res)] then () else
1267 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] cuts";
1268 val afterins = get_allp [] ([], ([],Frm)) pt';
1272 (*WN060727 replaced after overwriting cutlevup by test_trans
1273 if afterins = [([1], Frm), ([1], Res),
1274 ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
1275 ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res),
1278 ([3, 1], Frm), ([3, 1], Res), ([3, 2], Frm), ([3, 2], Res),
1280 ([4], Res), ([], Res)] then () else
1281 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] insrtd";
1283 if afterins = [([1], Frm), ([1], Res),
1284 ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
1285 ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res),
1288 ([3, 1], Frm), ([3, 1], Res), ([3, 2], Frm), ([3, 2], Res)]
1290 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] insrtd";
1292 if term2str (get_obj g_form pt' [3,2]) = "Inform [3, 2]" then () else
1293 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2] Inform";
1295 "---(6++) on S(606)..S(608)--------";
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;
1302 if cuts = [([3, 2, 2], Res), ([3, 2], Res),
1303 (*WN060727 {cutlevup->test_trans} added:*)([3], Res), ([4], Res), ([], Res)]
1305 error "ctree.sml: diff:behav. in complete pt: append_atomic[3,2,1] cuts";
1306 val afterins = get_allp [] ([], ([],Frm)) pt';
1310 if afterins = [([1], Frm), ([1], Res),
1311 ([2, 1], Frm), ([2, 1], Res), ([2, 2], Res),
1312 ([2, 3], Res), ([2, 4], Res), ([2, 5], Res), ([2, 6], Res),
1315 ([3, 1], Frm), ([3, 1], Res),
1316 ([3, 2, 1], Frm), ([3, 2, 1], Res)] then () else
1317 error "ctree.sml: diff:behav. in complete pt: append_atom[3,2,1] insrtd";
1318 if term2str (get_obj g_form pt' [3,2,1]) = "Inform [3, 2, 1]" then () else
1319 error "ctree.sml: diff:behav. complete pt: append_atomic[3,2,1] Inform";