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";
|