test/Tools/isac/Minisubpbl/250-Rewrite_Set-from-method.sml
author Walther Neuper <walther.neuper@jku.at>
Tue, 01 Oct 2019 10:47:25 +0200
changeset 59635 9fc1bb69813c
parent 59618 80efccb7e5c1
child 59657 02aa92522815
permissions -rw-r--r--
lucin: drop unused bool argument in tactic Rewrite*Inst
wneuper@59569
     1
(* Title:  "Minisubpbl/250-Rewrite_Set-from-method.sml"
wneuper@59569
     2
   Author: Walther Neuper 1105
wneuper@59411
     3
   (c) copyright due to lincense terms.
wneuper@59411
     4
*)
wneuper@59411
     5
wneuper@59564
     6
"----------- Minisubpbl/250-Rewrite_Set-from-method.sml ----------";
wneuper@59564
     7
"----------- Minisubpbl/250-Rewrite_Set-from-method.sml ----------";
wneuper@59564
     8
"----------- Minisubpbl/250-Rewrite_Set-from-method.sml ----------";
wneuper@59411
     9
val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
wneuper@59411
    10
val (dI',pI',mI') =
wneuper@59411
    11
  ("Test", ["sqroot-test","univariate","equation","test"],
wneuper@59411
    12
   ["Test","squ-equ-test-subpbl1"]);
wneuper@59411
    13
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@59411
    14
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59411
    15
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59411
    16
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59411
    17
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59411
    18
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59411
    19
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59582
    20
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["Test", "squ-equ-test-subpbl1"]*);
wneuper@59582
    21
(*[1], Frm*)val (p'''',_,f'''',nxt'''',_,pt'''') = me nxt p [] pt; (*nxt = Rewrite_Set "norm_equation"*)
wneuper@59411
    22
wneuper@59582
    23
(*//--1 begin step into relevant call -----------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----\\
wneuper@59582
    24
      1 relevant for original decomposition                                                     *)
wneuper@59582
    25
(*[1], Res*)val (p'''_',_,f,nxt'''_',_,pt'''_') = me nxt'''' p'''' [] pt'''';(*nxt = Rewrite_Set "Test_simplify"*)
wneuper@59582
    26
wneuper@59582
    27
if p'''' = ([1],  Frm) andalso f'''' = FormKF "x + 1 = 2" andalso fst nxt'''' = "Rewrite_Set"
wneuper@59411
    28
then () else error "250-Rewrite_Set-from-method.sml: start of test CHANGED";
wneuper@59411
    29
wneuper@59482
    30
(* val (p,_,f,nxt,_,pt) = ERROR WAS: nxt = ("Empty_Tac",..*) me nxt p [] pt;
wneuper@59482
    31
(*                        ERROR WAS: assy: call by ([3], Pbl) *)
wneuper@59582
    32
"~~~~~ fun me , args:"; val ((_, tac), p, _(*NEW remove*), pt) = (nxt'''', p'''', [], pt'''');
wneuper@59411
    33
wneuper@59482
    34
(*ERROR WAS: assy: call by ([3], Pbl)*)
wneuper@59482
    35
val ("ok", (_, _, ptp''''')) = (*case*) locatetac tac (pt,p) (*of*);
wneuper@59482
    36
"~~~~~ fun locatetac, args:"; val (tac, (ptp as (pt, p))) = (tac, (pt,p));
wneuper@59482
    37
      val (mI, m) = Solve.mk_tac'_ tac;
wneuper@59482
    38
val Chead.Appl m = (*case*) Applicable.applicable_in p pt m (*of*);
wneuper@59482
    39
member op = Solve.specsteps mI (* = false*);
wneuper@59482
    40
wneuper@59482
    41
loc_solve_ (mI,m) ptp ;  (* assy: call by ([3], Pbl)*)
wneuper@59482
    42
"~~~~~ fun loc_solve_, args:"; val (m, (pt, pos)) = ((mI,m), ptp);
wneuper@59482
    43
Solve.solve m (pt, pos);  (* assy: call by ([3], Pbl)*)
wneuper@59482
    44
    (* step somewhere within a calculation *)
wneuper@59482
    45
"~~~~~ fun solve, args:"; val ((_, m), (pt, po as (p, p_))) = (m, (pt, pos));
wneuper@59482
    46
Celem.e_metID = get_obj g_metID pt (par_pblobj pt p) (* = false*);
wneuper@59482
    47
	      val thy' = get_obj g_domID pt (par_pblobj pt p);
wneuper@59482
    48
	      val (srls, is, sc) = Lucin.from_pblobj_or_detail' thy' (p,p_) pt;
wneuper@59482
    49
wneuper@59569
    50
   locate_input_tactic sc (pt, po) (fst is) (snd is) m;  (* assy: call by ([3], Pbl)*)
wneuper@59569
    51
"~~~~~ fun locate_input_tactic , args:"; val (progr, cstate, istate, ctxt, tac)
wneuper@59569
    52
     = (sc, (pt, po), (fst is), (snd is), m);
wneuper@59569
    53
       val srls = get_simplifier cstate;
wneuper@59569
    54
wneuper@59569
    55
         (*case*) execute_progr_2 srls m cstate (progr, e_rls(*!!!*)) (istate, ctxt)(*of*);
wneuper@59583
    56
"~~~~~ fun execute_progr_2 , args:"; val (((*thy',*) srls), m, (pt, p), (scr as Rule.Prog sc, d), (Istate.Pstate (E,l,a,v,S,b), ctxt))
wneuper@59569
    57
  = (srls, m, cstate, (progr, e_rls(*!!!*)), (istate, ctxt));
wneuper@59569
    58
   (*if*)l = [] orelse ((last_elem o fst) p = 0 andalso snd p = Res) (*then*);
wneuper@59482
    59
wneuper@59482
    60
(*val Assoc (scrstate, steps) =     in isabisacREP*)
wneuper@59482
    61
(*ERROR  assy: call by ([3], Pbl)   in isabisac*)
walther@59618
    62
assy (ctxt,srls,d,Aundef) ((E,[Celem.R],a,v,S,b), [(m,Generate.EmptyMout,pt,p,[])]) (Program.body_of sc);  
wneuper@59482
    63
wneuper@59482
    64
(* checked all arguments of assy for equality: isabisac -- isabisacREP *)
wneuper@59578
    65
"~~~~~ fun assy [1], args:"; val (ya, ((E,l,a,v,S,b),ss:step list), (Const ("HOL.Let",_) $ e $ (Abs (id,T,body)))) =
walther@59618
    66
  (((*thy',*)ctxt,srls,d,Aundef), ((E,[Celem.R],a,v,S,b), [(m,Generate.EmptyMout,pt,p,[])]), (Program.body_of sc));
wneuper@59482
    67
wneuper@59482
    68
(*val Assoc (scrstate, steps) =    in isabisacREP*)
wneuper@59482
    69
(*val NasApp ((E',l,a,v,S,_),ss) = in isabisac*) assy ya ((E , l @ [Celem.L, Celem.R], a,v,S,b), ss) e;
walther@59603
    70
"~~~~~ fun assy, args:"; val (ya, ((E,l,_,v,S,b),ss:step list), (Const ("Tactical.Seq"(*2[1]*),_) $e1 $ e2 $ a)) =
wneuper@59482
    71
  (ya, ((E , l @ [Celem.L, Celem.R], a,v,S,b), ss), e);
wneuper@59482
    72
wneuper@59482
    73
(*val Assoc (scrstate, steps) =    in isabisacREP*)
wneuper@59482
    74
(*val NasApp ((E,_,_,v,_,_),ss) =  in isabisac*)
wneuper@59482
    75
(*case*) assy ya ((E, l @ [Celem.L, Celem.L, Celem.R], SOME a,v,S,b),ss) e1 (*of*);
walther@59603
    76
"~~~~~ fun assy, args:"; val (ya, ((E,l,a,v,S,b),ss), (Const ("Tactical.Try"(*1*),_) $ e)) =
wneuper@59482
    77
  ( ya, ((E, l @ [Celem.L, Celem.L, Celem.R], SOME a,v,S,b),ss), e1);
wneuper@59482
    78
walther@59635
    79
term2str e1 = "Try (Rewrite_Set ''norm_equation'')"  (*in isabisac*);
walther@59635
    80
term2str e1 = "Try (Rewrite_Set norm_equation)"      (*in isabisacREP*);
wneuper@59482
    81
termopt2str a = "(SOME e_e)"  (*in isabisac + isabisacREP*);
wneuper@59482
    82
wneuper@59482
    83
(*val Assoc (scrstate, steps) =    in isabisacREP*)
wneuper@59482
    84
(*val NasApp ((E,_,_,v,_,_),ss) =  in isabisac*)
wneuper@59482
    85
assy ya ((E, l @ [Celem.R], a,v,S,b),ss) e ;
wneuper@59482
    86
    (*here is not a tactical like TRY etc, but a tactic creating a step in calculation*)
wneuper@59578
    87
"~~~~~ fun assy, args:"; val ((ctxt,sr,d,ap), ((E,l,a,v,S,_), (m,_,pt,(p,p_),c)::ss), t) =
wneuper@59482
    88
  (ya, ((E, l @ [Celem.R], a,v,S,b),ss), e);
wneuper@59601
    89
val (a', STac stac) = (*case*) handle_leaf "locate" thy' sr E a v t (*of*)
wneuper@59482
    90
           val p' = 
wneuper@59482
    91
             case p_ of Frm => p 
wneuper@59482
    92
             | Res => lev_on p
wneuper@59482
    93
		         | _ => error ("assy: call by " ^ pos'2str (p,p_));
wneuper@59482
    94
wneuper@59482
    95
(*val Ass (m,v') = in isabisacREP*)
wneuper@59482
    96
(*val NotAss =     in isabisac*)
wneuper@59584
    97
(*case*) associate pt ctxt (m, stac) (*of*);
wneuper@59578
    98
"~~~~~ fun associate, args:"; val (_, ctxt, (m as Tactic.Rewrite_Set' (_, _, rls, f, (f', _))), 
walther@59635
    99
      (Const ("Prog_Tac.Rewrite'_Set", _) $ rls_ $ f_)) = (pt, d, m, stac);
wneuper@59482
   100
walther@59603
   101
if Rule.id_rls rls = HOLogic.dest_string rls_ then () else error "Prog_Tac.associate changed";
wneuper@59482
   102
wneuper@59482
   103
"~~~~~ continue me[1] after locatetac";
wneuper@59482
   104
    val (pt, p) = ptp''''';
wneuper@59411
   105
(* isabisac17: val ("helpless", _) = (*case*) step p ((pt, Ctree.e_pos'),[]) (*of*)*)
wneuper@59411
   106
"~~~~~ fun step, args:"; val ((ip as (_, p_)), (ptp as (pt,p), tacis)) = (p, ((pt, e_pos'),[]));
wneuper@59411
   107
val pIopt = get_pblID (pt,ip);
wneuper@59411
   108
(*if*) ip = ([], Ctree.Res) = false;
wneuper@59411
   109
val _ = (*case*) tacis (*of*);
wneuper@59411
   110
(*if*) ip = p = false;
wneuper@59411
   111
(*if*) member op = [Pbl, Met] p_ = false;
wneuper@59411
   112
wneuper@59562
   113
"~~~~~ fun do_solve_step, args:"; val (ptp as (pt, pos as (p, p_))) = (pt, ip);
wneuper@59411
   114
e_metID = get_obj g_metID pt (par_pblobj pt p) = false;
wneuper@59411
   115
        val thy' = get_obj g_domID pt (par_pblobj pt p);
wneuper@59411
   116
	      val (srls, is, sc) = Lucin.from_pblobj_or_detail' thy' (p,p_) pt;
wneuper@59411
   117
wneuper@59559
   118
(* isabisac17: val (tac_, is, (t, _)) = determine_next_tactic (thy', srls) (pt, pos) sc is;
wneuper@59411
   119
go: no [L,L,R] *)
wneuper@59559
   120
"~~~~~ fun determine_next_tactic, args:"; val (thy, (ptp as (pt, (p, _))), (sc as Prog (_ $ body)), 
wneuper@59583
   121
	    (Pstate (E,l,a,v,s,_), ctxt) ) = ((thy', srls), (pt, pos), sc, is);
wneuper@59411
   122
(*if*) l = [] = false;
wneuper@59411
   123
wneuper@59411
   124
(* isabisac17:                             nstep_up thy ptp sc E l Skip_ a v   ERROR go: no [L,L,R] *)
wneuper@59411
   125
(* isabisac15: val Appy (tac_, scrstate) = nstep_up thy ptp sc E l Skip_ a v *)
wneuper@59411
   126
"~~~~~ fun nstep_up, args:"; val (thy, ptp, (Prog sc), E, l, ay, a, v) =
wneuper@59411
   127
  (thy, ptp, sc, E, l, Skip_, a, v);
wneuper@59411
   128
1 < length l = true;
wneuper@59411
   129
val up = drop_last l; 
wneuper@59411
   130
wneuper@59411
   131
if up = [R, L, R, L, L, R] then () else error "250-Rewrite_Set: nstep_up CHANGED";
wneuper@59411
   132
(*isabisac17: nxt_up thy ptp (Celem.Prog sc) E up ay (go up sc) a v    ERROR go: no [L,L,R]*)
wneuper@59411
   133
(*isabisac17:                                        (go up sc)        ERROR go: no [L,L,R]*)
wneuper@59411
   134
(*isabisac15:*)
walther@59635
   135
val ttt as Const ("Tactical.Try", _) $ (Const ("Prog_Tac.Rewrite'_Set", _) $ rls) = (go up sc)
walther@59603
   136
val (Const ("Tactical.Try"(*2*), _) $ _) = ttt;
walther@59635
   137
if term2str ttt = "Try (Rewrite_Set ''norm_equation'')"
wneuper@59411
   138
then () else error "250-Rewrite_Set: (go up sc) CHANGED";
wneuper@59411
   139
walther@59603
   140
"~~~~~ fun nxt_up, args:"; val (thy, ptp, scr, E, l, _, (Const ("Tactical.Try"(*2*), _) $ _), a, v) =
wneuper@59411
   141
  (thy, ptp, (Prog sc), E, up, ay, (go up sc), a, v );
wneuper@59582
   142
wneuper@59582
   143
(*\\--1 end step into relevant call ----------------------------------------------------------//*)
wneuper@59582
   144
                                                 
wneuper@59582
   145
(*                                               nxt'''_' = Rewrite_Set "Test_simplify"
wneuper@59582
   146
  //--2 begin step into relevant call -----------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-----\\
wneuper@59582
   147
      2 relevant for exception TERM raised (line 297 of "term.ML"): dest_Free -1 + x = 0                                                           *)
wneuper@59582
   148
(**)val (p,_,f,nxt,_,pt) = me nxt'''_' p'''_' [] pt'''_';(**)
wneuper@59582
   149
"~~~~~ fun me , args:"; val ((_, tac), p, _(*NEW remove*), pt) = (nxt'''_', p'''_', [], pt'''_');
wneuper@59582
   150
    val (pt, p) = 
wneuper@59582
   151
	    (*locatetac is here for testing by me; step would suffice in me*)
wneuper@59582
   152
	    case locatetac tac (pt, p) of
wneuper@59582
   153
		    ("ok", (_, _, ptp)) => ptp
wneuper@59582
   154
	    | ("unsafe-ok", (_, _, ptp)) => ptp
wneuper@59582
   155
	    | ("not-applicable",_) => (pt, p)
wneuper@59582
   156
	    | ("end-of-calculation", (_, _, ptp)) => ptp
wneuper@59582
   157
	    | ("failure", _) => error "sys-error"
wneuper@59582
   158
	    | _ => error "me: uncovered case"
wneuper@59582
   159
wneuper@59582
   160
  (*case*) step p ((pt, Ctree.e_pos'), []) (*of*);
wneuper@59582
   161
"~~~~~ fun step , args:"; val ((ip as (_, p_)), (ptp as (pt,p), tacis))
wneuper@59582
   162
  = (p, ((pt, Ctree.e_pos'), []));
wneuper@59582
   163
     val pIopt = get_pblID (pt,ip);
wneuper@59582
   164
    (*if*) ip = ([], Ctree.Res) (*else*);
wneuper@59582
   165
      val _ = (*case*) tacis (*of*);
wneuper@59582
   166
      val SOME _ = (*case*) pIopt (*of*);
wneuper@59582
   167
      (*if*) member op = [Ctree.Pbl, Ctree.Met] p_ 
wneuper@59582
   168
  	                    andalso is_none (Ctree.get_obj Ctree.g_env pt (fst p)) (*else*);
wneuper@59582
   169
wneuper@59582
   170
           do_solve_step (pt, ip);
wneuper@59582
   171
"~~~~~ and do_solve_step , args:"; val (ptp as (pt, pos as (p, p_))) = (pt, ip);
wneuper@59582
   172
    (*if*) Celem.e_metID = get_obj g_metID pt (par_pblobj pt p) (*else*);
wneuper@59582
   173
        val thy' = get_obj g_domID pt (par_pblobj pt p);
wneuper@59582
   174
	      val (srls, is, sc) = Lucin.from_pblobj_or_detail' thy' (p,p_) pt;
wneuper@59582
   175
wneuper@59582
   176
	      (*val (tac_, is, (t, _)) =*) determine_next_tactic (thy', srls) (pt, pos) sc is;
wneuper@59583
   177
"~~~~~ fun determine_next_tactic , args:"; val (thy, (ptp as (pt, (p, _))), sc, (Istate.Pstate (E,l,a,v,s,_), ctxt))
wneuper@59582
   178
  = ((thy', srls), (pt, pos), sc, is);
wneuper@59582
   179
wneuper@59583
   180
     (*case*) execute_progr_1 thy ptp sc (Istate.Pstate (E,l,a,v,s,false)) (*of*);
wneuper@59583
   181
"~~~~~ fun execute_progr_1 , args:"; val (thy, ptp, (sc as Rule.Prog prog), (Istate.Pstate (E, l, a, v, _, _)))
wneuper@59583
   182
  = (thy, ptp, sc, (Istate.Pstate (E,l,a,v,s,false)));
wneuper@59582
   183
    (*if*) l = [] (*else*);
wneuper@59582
   184
wneuper@59582
   185
      nstep_up thy ptp sc E l Skip_ a v;
wneuper@59582
   186
"~~~~~ and nstep_up , args:"; val (thy, ptp, (Rule.Prog sc), E, l, ay, a, v)
wneuper@59582
   187
  = (thy, ptp, sc, E, l, Skip_, a, v);
wneuper@59582
   188
    (*if*) 1 < length l (*then*);
wneuper@59582
   189
    val up = drop_last l; 
wneuper@59582
   190
wneuper@59582
   191
           nxt_up thy ptp (Rule.Prog sc) E up ay (go up sc) a v;
walther@59603
   192
"~~~~~ fun nxt_up , args:"; val (thy, ptp, scr, E, l, _, (Const ("Tactical.Try"(*1*),_) $ _ ), a, v)
wneuper@59582
   193
  = (thy, ptp, (Rule.Prog sc), E, up, ay, (go up sc), a, v);
wneuper@59582
   194
wneuper@59582
   195
           nstep_up thy ptp scr E l Skip_ a v;
wneuper@59582
   196
"~~~~~ and nstep_up , args:"; val (thy, ptp, (Rule.Prog sc), E, l, ay, a, v)
wneuper@59582
   197
  = (thy, ptp, scr, E, l, Skip_, a, v);
wneuper@59582
   198
    (*if*) 1 < length l (*then*);
wneuper@59582
   199
    val up = drop_last l; 
wneuper@59582
   200
wneuper@59582
   201
           nxt_up thy ptp (Rule.Prog sc) E up ay (go up sc) a v;
walther@59603
   202
"~~~~~ fun nxt_up , args:"; val (thy, ptp, scr, E, l, ay, (Const ("Tactical.Seq"(*2*), _) $ _ $ _), a, v)
wneuper@59582
   203
  = (thy, ptp, (Rule.Prog sc), E, up, ay, (go up sc), a, v);
wneuper@59582
   204
wneuper@59582
   205
    nstep_up thy ptp scr E l ay a v;
wneuper@59582
   206
"~~~~~ and nstep_up , args:"; val (thy, ptp, (Rule.Prog sc), E, l, ay, a, v)
wneuper@59582
   207
  = (thy, ptp, scr, E, l, ay, a, v);
wneuper@59582
   208
    (*if*) 1 < length l (*then*);
wneuper@59582
   209
    val up = drop_last l; 
wneuper@59582
   210
wneuper@59582
   211
           nxt_up thy ptp (Rule.Prog sc) E up ay (go up sc) a v;
walther@59603
   212
"~~~~~ fun nxt_up , args:"; val (thy, ptp, scr, E, l, ay, (Const ("Tactical.Seq"(*1*), _) $ _ $ _ $ _), a, v)
wneuper@59582
   213
  = (thy, ptp, (Rule.Prog sc), E, up, ay, (go up sc), a, v);
wneuper@59582
   214
wneuper@59582
   215
           nstep_up thy ptp scr E l ay a v;
wneuper@59582
   216
"~~~~~ and nstep_up , args:"; val (thy, ptp, (Rule.Prog sc), E, l, ay, a, v)
wneuper@59582
   217
  = (thy, ptp, scr, E, l, ay, a, v);
wneuper@59582
   218
    (*if*) 1 < length l (*then*);
wneuper@59582
   219
    val up = drop_last l; 
wneuper@59582
   220
wneuper@59582
   221
           nxt_up thy ptp (Rule.Prog sc) E up ay (go up sc) a v;
wneuper@59582
   222
"~~~~~ fun nxt_up , args:"; val (thy, ptp, scr, E, l, ay, (Const ("HOL.Let", _) $ _), a, v)
wneuper@59582
   223
  = (thy, ptp, (Rule.Prog sc), E, up, ay, (go up sc), a, v);
wneuper@59582
   224
    (*if*) ay = Napp_ (*else*);
wneuper@59582
   225
        val up = drop_last l
wneuper@59582
   226
        val (i, T, body) =
wneuper@59582
   227
          (case go up sc of
wneuper@59582
   228
             Const ("HOL.Let",_) $ _ $ (Abs aa) => aa
wneuper@59582
   229
           | t => error ("nxt_up..HOL.Let $ _ with " ^ Rule.term2str t))
wneuper@59582
   230
        val i = TermC.mk_Free (i, T)
wneuper@59601
   231
        val E = upd_env E (i, v);
wneuper@59582
   232
wneuper@59582
   233
  (*case*) appy thy ptp E (up @ [Celem.R, Celem.D]) body a v (*of*);
wneuper@59582
   234
"~~~~~ fun appy , args:"; val (thy, ptp, E, l, (Const ("HOL.Let",_) $ e $ (Abs (i,T,b))), a, v)
wneuper@59582
   235
  = (thy, ptp, E, (up @ [Celem.R, Celem.D]), body, a, v);
wneuper@59582
   236
wneuper@59582
   237
  (*case*) appy thy ptp E (l @ [Celem.L, Celem.R]) e a v (*of*);
wneuper@59582
   238
"~~~~~ fun appy , args:"; val (((th,sr)), (pt, p), E, l, t, a, v)
wneuper@59582
   239
  = (thy, ptp, E, (l @ [Celem.L, Celem.R]), e, a, v);
wneuper@59601
   240
        val (a', STac stac) = (*case*) Lucin.handle_leaf "next  " th sr E a v t (*of*);
wneuper@59582
   241
wneuper@59582
   242
   (*val (m,m') = Lucin.*) stac2tac_ pt (Celem.assoc_thy th) stac;
wneuper@59601
   243
"~~~~~ fun stac2tac_ , args:"; val (pt, _, (stac as Const ("Prog_Tac.SubProblem", _) $ spec' $ ags'))
wneuper@59582
   244
  = (pt, (Celem.assoc_thy th), stac);
walther@59618
   245
      val (dI, pI, mI) = Prog_Tac.dest_spec spec'
wneuper@59582
   246
      val thy = Stool.common_subthy (Celem.assoc_thy dI, rootthy pt);
wneuper@59582
   247
	    val ags = TermC.isalist2list ags';
wneuper@59582
   248
	      (*if*) mI = ["no_met"] (*else*);
wneuper@59582
   249
	    val (pI, pors, mI) = 
wneuper@59582
   250
        (pI, (Chead.match_ags thy ((#ppc o Specify.get_pbt) pI) ags)
wneuper@59582
   251
		       handle ERROR "actual args do not match formal args"
wneuper@59582
   252
		       => (Chead.match_ags_msg pI stac ags(*raise exn*); []), mI)
wneuper@59582
   253
      val (fmz_, vals) = Chead.oris2fmz_vals pors;
wneuper@59582
   254
	    val {cas,ppc,thy,...} = Specify.get_pbt pI
wneuper@59582
   255
	    val dI = Rule.theory2theory' thy (*.take dI from _refined_ pbl.*)
wneuper@59582
   256
	    val dI = Rule.theory2theory' (Stool.common_subthy (Celem.assoc_thy dI, rootthy pt));
wneuper@59582
   257
      val ctxt = ContextC.initialise dI (map TermC.vars vals |> flat |> distinct);
wneuper@59582
   258
(*\\--2 end step into relevant call ----------------------------------------------------------//*)
wneuper@59582
   259
wneuper@59582
   260
if p = ([2], Res) andalso f2str f = "-1 + x = 0" then
wneuper@59582
   261
  case nxt of
wneuper@59582
   262
    ("Subproblem", Subproblem ("Test", ["LINEAR", "univariate", "equation", "test"])) => ()
wneuper@59582
   263
  | _ => error "Minisubpbl/250-Rewrite_Set-from-method changed 1"
wneuper@59582
   264
else error "Minisubpbl/250-Rewrite_Set-from-method changed 2";
wneuper@59582
   265
wneuper@59582
   266
(*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Model_Problem*)