neuper@42020
|
1 |
(* Title: 450-nxt-Check_Postcond
|
neuper@42020
|
2 |
Author: Walther Neuper 1105
|
neuper@42020
|
3 |
(c) copyright due to lincense terms.
|
neuper@42020
|
4 |
*)
|
neuper@42020
|
5 |
|
neuper@42020
|
6 |
"----------- Minisubplb/490-nxt-Check_Postcond -------------------";
|
neuper@42020
|
7 |
"----------- Minisubplb/490-nxt-Check_Postcond -------------------";
|
neuper@42020
|
8 |
"----------- Minisubplb/490-nxt-Check_Postcond -------------------";
|
neuper@42020
|
9 |
val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
|
neuper@42020
|
10 |
val (dI',pI',mI') =
|
neuper@42020
|
11 |
("Test", ["sqroot-test","univariate","equation","test"],
|
neuper@42020
|
12 |
["Test","squ-equ-test-subpbl1"]);
|
neuper@42020
|
13 |
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
|
neuper@42020
|
14 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
15 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
16 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
17 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
18 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
19 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
20 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["Test", "squ-equ-test-subpbl1"]*)
|
neuper@42020
|
21 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
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@42020
|
24 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
25 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
26 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
27 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
28 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
29 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
30 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
|
neuper@42020
|
31 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["Test", "solve_linear"]*)
|
neuper@42020
|
32 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set_Inst isolate_bdv*);
|
neuper@42020
|
33 |
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "Test_simplify"*);
|
neuper@42020
|
34 |
val (pt''''', p''''') = (pt, p);
|
neuper@42020
|
35 |
|
neuper@42020
|
36 |
"~~~~~ fun me, args:"; val (_,tac) = nxt;
|
neuper@42020
|
37 |
val (pt, p) = case locatetac tac (pt,p) of
|
neuper@42020
|
38 |
("ok", (_, _, ptp)) => ptp | _ => error "script.sml locatetac";
|
neuper@42020
|
39 |
val (pt'''', p'''') = (pt, p);
|
neuper@42022
|
40 |
"~~~~~ fun step, args:"; val (ip as (_,p_), (ptp as (pt,p), tacis)) = (p, ((pt, e_pos'), []))
|
neuper@42020
|
41 |
val pIopt = get_pblID (pt,ip); (*= SOME ["sqroot-test", "univariate", ...]*)
|
neuper@42020
|
42 |
tacis; (*= []*)
|
neuper@42020
|
43 |
val SOME pI = pIopt;
|
neuper@42020
|
44 |
member op = [Pbl,Met] p_ andalso is_none (get_obj g_env pt (fst p)); (*= false*)
|
wneuper@59562
|
45 |
"~~~~~ fun do_solve_step, args:"; val (ptp as (pt, pos as (p, p_))) = (pt, ip);
|
neuper@42020
|
46 |
e_metID = get_obj g_metID pt (par_pblobj pt p); (*false*)
|
neuper@42020
|
47 |
val thy' = get_obj g_domID pt (par_pblobj pt p);
|
neuper@42020
|
48 |
val (srls, is, sc) = from_pblobj_or_detail' thy' (p,p_) pt; (*is: which ctxt?*)
|
wneuper@59559
|
49 |
val (tac_,is,(t,_)) = determine_next_tactic (thy',srls) (pt,pos) sc is;
|
neuper@42020
|
50 |
;tac_; (* = Check_Postcond' *)
|
wneuper@59562
|
51 |
"~~~~~ fun begin_end_prog, args:"; val ((Check_Postcond' (pI,_)), _, (pt, pos as (p,p_))) =
|
neuper@42020
|
52 |
(tac_, is, ptp);
|
neuper@42020
|
53 |
val pp = par_pblobj pt p
|
neuper@42020
|
54 |
val asm =
|
neuper@42020
|
55 |
(case get_obj g_tac pt p of
|
neuper@42020
|
56 |
Check_elementwise _ => (*collects and instantiates asms*)
|
neuper@42020
|
57 |
(snd o (get_obj g_result pt)) p
|
neuper@42020
|
58 |
| _ => get_assumptions_ pt (p,p_))
|
neuper@42020
|
59 |
handle _ => [] (*FIXME.WN030527 asms in subpbls not completely clear*)
|
neuper@42020
|
60 |
val metID = get_obj g_metID pt pp;
|
neuper@42020
|
61 |
val {srls=srls,scr=sc,...} = get_met metID;
|
neuper@42020
|
62 |
val loc as (ScrState (E,l,a,_,_,b), ctxt) = get_loc pt (p,p_);
|
neuper@42020
|
63 |
val thy' = get_obj g_domID pt pp;
|
neuper@42020
|
64 |
val thy = assoc_thy thy';
|
wneuper@59559
|
65 |
val (_,_,(scval,scsaf)) = determine_next_tactic (thy',srls) (pt,(p,p_)) sc loc;
|
neuper@42020
|
66 |
;pp = []; (*false*)
|
neuper@42020
|
67 |
val ppp = par_pblobj pt (lev_up p);
|
neuper@42020
|
68 |
val thy' = get_obj g_domID pt ppp;
|
neuper@42020
|
69 |
val thy = assoc_thy thy';
|
neuper@42020
|
70 |
val metID = get_obj g_metID pt ppp;
|
neuper@42020
|
71 |
val {scr,...} = get_met metID;
|
neuper@42020
|
72 |
val (ScrState (E,l,a,_,_,b), ctxt') = get_loc pt (pp(*!/p/*),Frm)
|
neuper@42023
|
73 |
val ctxt'' = from_subpbl_to_caller ctxt scval ctxt'
|
neuper@42020
|
74 |
val tac_ = Check_Postcond' (pI, (scval, asm))
|
neuper@42020
|
75 |
val is = ScrState (E,l,a,scval,scsaf,b);
|
neuper@42020
|
76 |
"~~~~~ fun generate1, args:"; val (thy, (Check_Postcond' (pI, (scval, asm))), l, (p,p_), pt) =
|
neuper@42020
|
77 |
(thy, tac_, (is, ctxt''), (pp, Res), pt);
|
neuper@42020
|
78 |
val (pt,c) = append_result pt p l (scval, (*map str2term*) asm) Complete;
|
neuper@42020
|
79 |
(*----------------------------------------############### changed*)
|
neuper@42020
|
80 |
|
neuper@55279
|
81 |
val (p,_,f,nxt,_,pt) = me nxt p'''' [] pt''''; (*nxt = Check_Postcond ["LINEAR","uval (srls, is, sc) = from_pblobj_or_detail' thy' (p,p_) pt; (*is: which ctxt?*)nivariate", ...]) *);
|
wneuper@59253
|
82 |
case nxt of ("Check_Postcond", Check_Postcond ["LINEAR", "univariate", "equation", "test"]) => ()
|
wneuper@59253
|
83 |
| _ => error "450-nxt-Check_Postcond broken"
|
neuper@42020
|
84 |
|