test/Tools/isac/Interpret/solve.sml
branchisac-update-Isa09-2
changeset 38031 460c24a6a6ba
parent 37967 bd4f7a35e892
child 38043 6a36acec95d9
equal deleted inserted replaced
38030:95d956108461 38031:460c24a6a6ba
    50 val ((pt,_),_) = get_calc 1; show_pt pt;
    50 val ((pt,_),_) = get_calc 1; show_pt pt;
    51 
    51 
    52 (*with "Script SimplifyScript (t_::real) =       -----------------
    52 (*with "Script SimplifyScript (t_::real) =       -----------------
    53        \  ((Rewrite_Set norm_Rational False) t_)"
    53        \  ((Rewrite_Set norm_Rational False) t_)"
    54 case pt of Nd (PblObj _, [Nd _]) => ((*met only applies norm_Rational*))
    54 case pt of Nd (PblObj _, [Nd _]) => ((*met only applies norm_Rational*))
    55 	 | _ => raise error  "solve.sml: interSteps on norm_Rational 1";
    55 	 | _ => error  "solve.sml: interSteps on norm_Rational 1";
    56 interSteps 1 ([1], Res);
    56 interSteps 1 ([1], Res);
    57 getFormulaeFromTo 1 ([1], Frm) ([1,12], Res) 99999 false;
    57 getFormulaeFromTo 1 ([1], Frm) ([1,12], Res) 99999 false;
    58 interSteps 1 ([1,3], Res);
    58 interSteps 1 ([1,3], Res);
    59 
    59 
    60 getTactic 1 ([1,4], Res)  (*here get the tactic, and ...*);
    60 getTactic 1 ([1,4], Res)  (*here get the tactic, and ...*);
    66 getTactic 1 ([1,8], Res) (*Rewrite_Set "common_nominator_p" *);
    66 getTactic 1 ([1,8], Res) (*Rewrite_Set "common_nominator_p" *);
    67 interSteps 1 ([1,9], Res)(*TODO.WN060606 reverse rew*);
    67 interSteps 1 ([1,9], Res)(*TODO.WN060606 reverse rew*);
    68 --------------------------------------------------------------------*)
    68 --------------------------------------------------------------------*)
    69 
    69 
    70 case pt of Nd (PblObj _, [Nd _, Nd _, Nd _, Nd _, Nd _, Nd _]) => ()
    70 case pt of Nd (PblObj _, [Nd _, Nd _, Nd _, Nd _, Nd _, Nd _]) => ()
    71 	 | _ => raise error  "solve.sml: interSteps on norm_Rational 1";
    71 	 | _ => error  "solve.sml: interSteps on norm_Rational 1";
    72 (*these have been done now by the script ^^^ immediately...
    72 (*these have been done now by the script ^^^ immediately...
    73 interSteps 1 ([1], Res);
    73 interSteps 1 ([1], Res);
    74 getFormulaeFromTo 1 ([1], Frm) ([1,12], Res) 99999 false;
    74 getFormulaeFromTo 1 ([1], Frm) ([1,12], Res) 99999 false;
    75 *)
    75 *)
    76 interSteps 1 ([6], Res);
    76 interSteps 1 ([6], Res);
    82 val ((pt,_),_) = get_calc 1; show_pt pt;
    82 val ((pt,_),_) = get_calc 1; show_pt pt;
    83 val (Form form, SOME tac, asm) = pt_extract (pt, ([6], Res));
    83 val (Form form, SOME tac, asm) = pt_extract (pt, ([6], Res));
    84 case (term2str form, tac, terms2strs asm) of
    84 case (term2str form, tac, terms2strs asm) of
    85     ("1 / 2", Check_Postcond ["rational", "simplification"], 
    85     ("1 / 2", Check_Postcond ["rational", "simplification"], 
    86      ["-36 * x + 4 * x ^^^ 3 ~= 0"]) => ()
    86      ["-36 * x + 4 * x ^^^ 3 ~= 0"]) => ()
    87   | _ => raise error "solve.sml: interSteps on norm_Rational 2";
    87   | _ => error "solve.sml: interSteps on norm_Rational 2";
    88 
    88 
    89 
    89 
    90 
    90 
    91 "###### val intermediate_ptyps = !ptyps;val intermediate_mets = !mets";
    91 "###### val intermediate_ptyps = !ptyps;val intermediate_mets = !mets";
    92 "###### val intermediate_ptyps = !ptyps;val intermediate_mets = !mets";
    92 "###### val intermediate_ptyps = !ptyps;val intermediate_mets = !mets";
   159 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   159 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   160 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   160 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   161 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   161 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   162 (*"(3 + -1 * x) / (3 + x)"*)
   162 (*"(3 + -1 * x) / (3 + x)"*)
   163 if nxt = ("End_Proof'",End_Proof') then ()
   163 if nxt = ("End_Proof'",End_Proof') then ()
   164 else raise error "details.sml, changed behaviour in: without detail";
   164 else error "details.sml, changed behaviour in: without detail";
   165 
   165 
   166  val str = pr_ptree pr_short pt;
   166  val str = pr_ptree pr_short pt;
   167  writeln str;
   167  writeln str;
   168 
   168 
   169 
   169 
   216  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   216  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   217  val (p,_,f,nxt,_,pt) = (me nxt p [] pt) handle e => print_exn e;
   217  val (p,_,f,nxt,_,pt) = (me nxt p [] pt) handle e => print_exn e;
   218  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   218  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   219 if f = Form' (FormKF (~1,EdUndef,0,Nundef,"(3 - x) / (3 + x)"))
   219 if f = Form' (FormKF (~1,EdUndef,0,Nundef,"(3 - x) / (3 + x)"))
   220    andalso nxt = ("End_Proof'",End_Proof') then ()
   220    andalso nxt = ("End_Proof'",End_Proof') then ()
   221 else raise error "new behaviour in details.sml, \
   221 else error "new behaviour in details.sml, \
   222 		 \cancel, rev-rew (cancel) afterwards";
   222 		 \cancel, rev-rew (cancel) afterwards";
   223 FIXXXXXME.040216 #####################################################*)
   223 FIXXXXXME.040216 #####################################################*)
   224 
   224 
   225 (*---- funktionieren mit Rationals.ML: dummy-Funktionen(1)--------*)
   225 (*---- funktionieren mit Rationals.ML: dummy-Funktionen(1)--------*)
   226 
   226 
   271 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   271 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   272 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   272 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   273 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   273 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   274 (*"(3 + -1 * x) / (3 + x)"*)
   274 (*"(3 + -1 * x) / (3 + x)"*)
   275 if nxt = ("End_Proof'",End_Proof') then ()
   275 if nxt = ("End_Proof'",End_Proof') then ()
   276 else raise error "details.sml, changed behaviour in: cancel_p, without detail";
   276 else error "details.sml, changed behaviour in: cancel_p, without detail";
   277 
   277 
   278 "-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
   278 "-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
   279 "-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
   279 "-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
   280 "-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
   280 "-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
   281 (* val p = e_pos'; val c = [];
   281 (* val p = e_pos'; val c = [];
   326  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   326  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   327  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   327  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   328  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   328  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   329  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   329  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   330  if nxt = ("End_Detail",End_Detail) then ()
   330  if nxt = ("End_Detail",End_Detail) then ()
   331  else raise error "details.sml: new behav. in Detail make_polynomial";
   331  else error "details.sml: new behav. in Detail make_polynomial";
   332 ----------------------------------------------------------------------*)
   332 ----------------------------------------------------------------------*)
   333 
   333 
   334 (*---------------
   334 (*---------------
   335  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   335  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   336  (*val nxt = ("Rewrite_Set",Rewrite_Set "cancel_p")*)
   336  (*val nxt = ("Rewrite_Set",Rewrite_Set "cancel_p")*)
   344  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   344  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   345  val (p,_,f,nxt,_,pt) = (me nxt p [] pt) handle e => print_exn e;
   345  val (p,_,f,nxt,_,pt) = (me nxt p [] pt) handle e => print_exn e;
   346  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   346  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
   347 if f = Form' (FormKF (~1,EdUndef,0,Nundef,"(3 + x) / (3 - x)"))
   347 if f = Form' (FormKF (~1,EdUndef,0,Nundef,"(3 + x) / (3 - x)"))
   348    andalso nxt = ("End_Proof'",End_Proof') then ()
   348    andalso nxt = ("End_Proof'",End_Proof') then ()
   349 else raise error "new behaviour in details.sml, cancel_p afterwards";
   349 else error "new behaviour in details.sml, cancel_p afterwards";
   350 
   350 
   351 ----------------*)
   351 ----------------*)
   352 
   352 
   353 
   353 
   354 
   354 
   399  interSteps 1 ([],Res);
   399  interSteps 1 ([],Res);
   400  val [(_,(((pt,_),_),[(_,ip)]))] = !states;
   400  val [(_,(((pt,_),_),[(_,ip)]))] = !states;
   401  val ("donesteps",_(*,ss*), lastpos) = detailstep pt ip;
   401  val ("donesteps",_(*,ss*), lastpos) = detailstep pt ip;
   402  (*case ss of [(_,_,t1),(_,_,t2),(_,_,t3),(_,_,t4),(_,_,t5),(_,_,t6)] => 
   402  (*case ss of [(_,_,t1),(_,_,t2),(_,_,t3),(_,_,t4),(_,_,t5),(_,_,t6)] => 
   403 	    (writeln o terms2str) [t1,t2,t3,t4,t5,t6]
   403 	    (writeln o terms2str) [t1,t2,t3,t4,t5,t6]
   404 	  | _ => raise error "details.sml: diff.behav. in detail miniscript";*) if lastpos = ([4], Res) then ()
   404 	  | _ => error "details.sml: diff.behav. in detail miniscript";*) if lastpos = ([4], Res) then ()
   405  else raise error "details.sml: diff.behav. in interSteps'donesteps' 1";
   405  else error "details.sml: diff.behav. in interSteps'donesteps' 1";
   406 
   406 
   407  moveActiveDown 1;
   407  moveActiveDown 1;
   408  moveActiveDown 1;
   408  moveActiveDown 1;
   409  moveActiveDown 1;
   409  moveActiveDown 1;
   410  moveActiveDown 1; 
   410  moveActiveDown 1; 
   412  interSteps 1 ([3],Pbl) (*subproblem*);
   412  interSteps 1 ([3],Pbl) (*subproblem*);
   413  val [(_,(((pt,_),_),[(_,ip)]))] = !states;
   413  val [(_,(((pt,_),_),[(_,ip)]))] = !states;
   414  val ("donesteps",_(*,ss*), lastpos) = detailstep pt ip;
   414  val ("donesteps",_(*,ss*), lastpos) = detailstep pt ip;
   415  (*case ss of [(_,_,t1),(_,_,t2),(_,_,t3)] => 
   415  (*case ss of [(_,_,t1),(_,_,t2),(_,_,t3)] => 
   416 	    (writeln o terms2str) [t1,t2,t3]
   416 	    (writeln o terms2str) [t1,t2,t3]
   417 	  | _ => raise error "details.sml: diff.behav. in detail miniscript";*) if lastpos = ([3, 2], Res) then ()
   417 	  | _ => error "details.sml: diff.behav. in detail miniscript";*) if lastpos = ([3, 2], Res) then ()
   418  else raise error "details.sml: diff.behav. in interSteps'donesteps' 1";
   418  else error "details.sml: diff.behav. in interSteps'donesteps' 1";
   419 
   419 
   420 
   420 
   421 (* val [(_,(((pt,_),_),[(_,ip)]))] = !states;
   421 (* val [(_,(((pt,_),_),[(_,ip)]))] = !states;
   422    writeln (pr_ptree pr_short pt);
   422    writeln (pr_ptree pr_short pt);
   423    get_obj g_tac pt [4];
   423    get_obj g_tac pt [4];
   444  refFormula 1 (get_pos 1 1); (* 2 Res, <ISA> -1 + x = 0 </ISA> *)
   444  refFormula 1 (get_pos 1 1); (* 2 Res, <ISA> -1 + x = 0 </ISA> *)
   445 
   445 
   446  interSteps 1 ([2],Res);
   446  interSteps 1 ([2],Res);
   447  val [(_,(((pt,_),_),[(_,(p,_))]))] = !states;
   447  val [(_,(((pt,_),_),[(_,(p,_))]))] = !states;
   448  if length (children (get_nd pt p)) = 6 then ()
   448  if length (children (get_nd pt p)) = 6 then ()
   449  else raise error "details.sml: diff.behav. in interSteps'detailrls' 1";
   449  else error "details.sml: diff.behav. in interSteps'detailrls' 1";
   450 
   450 
   451  moveActiveDown 1;
   451  moveActiveDown 1;
   452  moveActiveDown 1; refFormula 1 (get_pos 1 1); (* 3,1 Frm, <ISA> -1 + x = 0 </ISA>  *);
   452  moveActiveDown 1; refFormula 1 (get_pos 1 1); (* 3,1 Frm, <ISA> -1 + x = 0 </ISA>  *);
   453 
   453 
   454  interSteps 1 ([3,1],Frm) (*<ERROR> first formula on level has NO detail </E*);
   454  interSteps 1 ([3,1],Frm) (*<ERROR> first formula on level has NO detail </E*);
   455  val [(_,(((pt,_),_),[(_,(p,_))]))] = !states;
   455  val [(_,(((pt,_),_),[(_,(p,_))]))] = !states;
   456  if length (children (get_nd pt p)) = 0 then () (*NO detail at ([xxx,1],Frm)*)
   456  if length (children (get_nd pt p)) = 0 then () (*NO detail at ([xxx,1],Frm)*)
   457  else raise error "details.sml: diff.behav. in interSteps'detailrls' 2";
   457  else error "details.sml: diff.behav. in interSteps'detailrls' 2";
   458 
   458 
   459  moveActiveDown 1; 
   459  moveActiveDown 1; 
   460  refFormula 1 (get_pos 1 1); (* 3,1 Res, <ISA> x = 0 + -1 * -1 </ISA> *)
   460  refFormula 1 (get_pos 1 1); (* 3,1 Res, <ISA> x = 0 + -1 * -1 </ISA> *)
   461 
   461 
   462  interSteps 1 ([3,1],Res);
   462  interSteps 1 ([3,1],Res);
   469  refFormula 1 (get_pos 1 1); (* 3,2 Res, <ISA> x = 1 </ISA> *)
   469  refFormula 1 (get_pos 1 1); (* 3,2 Res, <ISA> x = 1 </ISA> *)
   470 
   470 
   471  interSteps 1 ([3,2],Res);
   471  interSteps 1 ([3,2],Res);
   472  val [(_,(((pt,_),_),[(_,(p,_))]))] = !states;
   472  val [(_,(((pt,_),_),[(_,(p,_))]))] = !states;
   473  if length (children (get_nd pt p)) = 2 then ()
   473  if length (children (get_nd pt p)) = 2 then ()
   474  else raise error "details.sml: diff.behav. in interSteps'detailrls' 3";
   474  else error "details.sml: diff.behav. in interSteps'detailrls' 3";
   475 
   475 
   476  val ((pt,p),_) = get_calc 1; show_pt pt;
   476  val ((pt,p),_) = get_calc 1; show_pt pt;
   477 
   477 
   478 
   478 
   479 "------ interSteps after appendFormula ---------------------------";
   479 "------ interSteps after appendFormula ---------------------------";
   496 interSteps 1 ([2],Res) (*error: last unchanged was ([2, 9], Res)*); 
   496 interSteps 1 ([2],Res) (*error: last unchanged was ([2, 9], Res)*); 
   497 (*...and these are the internals*)
   497 (*...and these are the internals*)
   498 val ((pt,p),_) = get_calc 1; show_pt pt;
   498 val ((pt,p),_) = get_calc 1; show_pt pt;
   499 val (_,_,lastpos) =detailstep pt p;
   499 val (_,_,lastpos) =detailstep pt p;
   500 if p = ([2], Res) andalso lastpos = ([2, 9], Res) then ()
   500 if p = ([2], Res) andalso lastpos = ([2, 9], Res) then ()
   501 else raise error "solve.sml: diff.beh. after appendFormula x - 1 = 0";
   501 else error "solve.sml: diff.beh. after appendFormula x - 1 = 0";
   502 
   502 
   503 
   503 
   504 "------ Detail_Set -----------------------------------------------";
   504 "------ Detail_Set -----------------------------------------------";
   505 "------ Detail_Set -----------------------------------------------";
   505 "------ Detail_Set -----------------------------------------------";
   506 "------ Detail_Set -----------------------------------------------";
   506 "------ Detail_Set -----------------------------------------------";