test/Tools/isac/Minisubpbl/400-start-meth-subpbl.sml
author Walther Neuper <walther.neuper@jku.at>
Tue, 11 Feb 2020 11:58:45 +0100
changeset 59804 403f00b309ef
parent 59790 a1944acd8dcf
child 59806 1e69c59424e5
permissions -rw-r--r--
introduce Step.by_tactic, part 1
wneuper@59578
     1
(* Title:  "Minisubplb/400-start-meth-subpbl.sml"
neuper@41985
     2
   Author: Walther Neuper 1105
neuper@41985
     3
   (c) copyright due to lincense terms.
neuper@41985
     4
*)
neuper@41985
     5
wneuper@59578
     6
"----------- Minisubpbl/400-start-meth-subpbl.sml ----------------";
wneuper@59578
     7
"----------- Minisubpbl/400-start-meth-subpbl.sml ----------------";
wneuper@59578
     8
"----------- Minisubpbl/400-start-meth-subpbl.sml ----------------";
neuper@41985
     9
val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
neuper@41985
    10
val (dI',pI',mI') =
neuper@41990
    11
   ("Test", ["sqroot-test","univariate","equation","test"],
neuper@41990
    12
    ["Test","squ-equ-test-subpbl1"]);
neuper@41985
    13
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@41985
    14
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    15
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    16
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    17
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    18
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    19
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41999
    20
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["Test", "squ-equ-test-subpbl1"]*)
neuper@41990
    21
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    22
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@55279
    23
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Subp ["LINEAR", "univariate", "equation", "test"]*)
neuper@41990
    24
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    25
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    26
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    27
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    28
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    29
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41990
    30
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59578
    31
val (p''',_,f,nxt''',_,pt''') = me nxt p [] pt; (*nxt = Apply_Method ["Test", "solve_linear"]*)
wneuper@59578
    32
(*//--1 begin step into relevant call ---------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-------\\
wneuper@59578
    33
      1 relevant for all Apply_Method                                                           *)
wneuper@59578
    34
(*+*)if get_ctxt pt p |> is_e_ctxt then error "ctxt no initialised by specify, PblObj{ctxt,...}" else ();
wneuper@59578
    35
(*+*)if get_ctxt pt p |> is_e_ctxt then error "ctxt NOT initialised by Subproblem'}" else ();
wneuper@59578
    36
(*+*)val SOME t = parseNEW (get_ctxt pt p) "Check_elementwise [x = 1] {(v_v::real). Assumptions}";
neuper@42020
    37
walther@59749
    38
"~~~~~ fun me , args:"; val (tac, p, _(*NEW remove*), pt) = (nxt''', p''', [], pt''');
walther@59686
    39
  val ("ok", (_, _, (pt'''', p''''))) = (*case*)
walther@59686
    40
walther@59804
    41
       Step.by_tactic tac (pt, p) (*of*);
walther@59804
    42
"~~~~~ fun Step.by_tactic , args:"; val (tac, (ptp as (pt, p))) = (tac, (pt,p));
walther@59755
    43
   val Appl m = (*case*) applicable_in p pt tac (*of*);
walther@59755
    44
  (*if*) Tactic.for_specify' m; (*false*)
wneuper@59578
    45
walther@59749
    46
           loc_solve_ m ptp;
walther@59749
    47
"~~~~~ fun loc_solve_ , args:"; val (m, (pt, pos) ) = (m, ptp);
wneuper@59578
    48
walther@59751
    49
           Step_Solve.by_tactic m (pt, pos);
walther@59751
    50
"~~~~~ fun Step_Solve.by_tactic , args:"; val (m as Tactic.Apply_Method' (mI, _, _, ctxt), (pt, (pos as (p, _))))
wneuper@59578
    51
  = (m, (pt, pos));
walther@59686
    52
      val itms = case get_obj I pt p of
walther@59686
    53
        PblObj {meth=itms, ...} => itms
walther@59751
    54
      | _ => error "Step_Solve.by_tactic Apply_Method: uncovered case get_obj"
walther@59686
    55
      val thy' = get_obj g_domID pt p;
walther@59686
    56
      val thy = Celem.assoc_thy thy';
walther@59790
    57
      val srls = LItool.get_simplifier (pt, pos)
walther@59790
    58
      val (is, env, ctxt, sc) = case LItool.init_pstate srls ctxt itms mI of
walther@59686
    59
        (is as Istate.Pstate {env, ...}, ctxt, sc) =>  (is, env, ctxt, sc)
walther@59751
    60
      | _ => error "Step_Solve.by_tactic Apply_Method: uncovered case init_pstate"
wneuper@59578
    61
walther@59804
    62
(*+*)val (pt, p) = case Step.by_tactic tac (pt, pos) of
walther@59804
    63
	("ok", (_, _, ptp))  => ptp | _ => error "script.sml Step.by_tactic";
wneuper@59578
    64
(*+*)val SOME t = parseNEW (get_ctxt pt p) "Check_elementwise [x = 1] {(v_v::real). Assumptions}";
neuper@42020
    65
walther@59751
    66
"~~~~~ from Step_Solve.by_tactic to..to me return"; val (pt, p) = (pt'''', p'''');
wneuper@59578
    67
walther@59686
    68
  val ("ok", ([(Rewrite_Set_Inst (["(''bdv'', x)"], "isolate_bdv"), _, (_, (Pstate _, _)))], _, _)) = (*case*)
walther@59765
    69
           Step.do_next p ((pt, e_pos'), []) (*of*);
wneuper@59578
    70
"~~~~~ fun step, args:"; val (ip as (_,p_), (ptp as (pt,p), tacis)) = (p'''', ((pt'''', e_pos'), []))
neuper@41999
    71
val pIopt = get_pblID (pt,ip);
neuper@41999
    72
tacis; (*= []*)
neuper@41999
    73
member op = [Pbl,Met] p_ andalso is_none (get_obj g_env pt (fst p)); (*= false*)
walther@59686
    74
walther@59760
    75
"~~~~~ and do_next , args:"; val (ptp as (pt, pos as (p, p_))) = (pt, ip);
neuper@41999
    76
val thy' = get_obj g_domID pt (par_pblobj pt p);
neuper@41999
    77
val (srls, is, sc) = from_pblobj_or_detail' thy' (p,p_) pt;
walther@59686
    78
walther@59772
    79
"~~~~~ fun find_next_step , args:"; val ((thy, _), (ptp as (pt, (p, _))), sc, (Istate.Pstate ist, _(*ctxt*)))
walther@59686
    80
  = ((thy',srls), (pt,pos), sc, is);
neuper@41990
    81
wneuper@59578
    82
(*+*)val SOME t = parseNEW (get_ctxt pt pos) "Check_elementwise [x = 1] {(v_v::real). Assumptions}";
wneuper@59578
    83
(*\\--1 end step into relevant call ----------------------------------------------------------//*)
wneuper@59578
    84
wneuper@59578
    85
val (p,_,f,nxt,_,pt) = me nxt''' p''' [] pt'''; (*nxt = Rewrite_Set_Inst isolate_bdv*);
wneuper@59578
    86
wneuper@59578
    87
if p = ([3, 1], Frm) andalso f2str f = "-1 + x = 0" andalso
walther@59749
    88
  tac2str nxt = "Rewrite_Set_Inst ([(''bdv'', x)], \"isolate_bdv\")"
wneuper@59578
    89
then () else error "Minisubpbl/400-start-meth-subpbl changed";