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 -------------------";
|
walther@59997
|
9 |
val fmz = ["equality (x+1=(2::real))", "solveFor x", "solutions L"];
|
neuper@42020
|
10 |
val (dI',pI',mI') =
|
walther@59997
|
11 |
("Test", ["sqroot-test", "univariate", "equation", "test"],
|
walther@59997
|
12 |
["Test", "squ-equ-test-subpbl1"]);
|
Walther@60571
|
13 |
val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(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 |
|
walther@59749
|
36 |
"~~~~~ fun me , args:"; val tac = nxt;
|
walther@59804
|
37 |
val (pt, p) = case Step.by_tactic tac (pt,p) of
|
walther@59804
|
38 |
("ok", (_, _, ptp)) => ptp | _ => error "script.sml Step.by_tactic";
|
neuper@42020
|
39 |
val (pt'''', p'''') = (pt, p);
|
walther@59761
|
40 |
"~~~~~ fun do_next , 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", ...]*)
|
walther@59686
|
42 |
(*if*) tacis; (*= []*)
|
walther@59686
|
43 |
val SOME pI = pIopt;
|
walther@60017
|
44 |
(*if*) member op = [Pbl,Met] p_; (*= false*)
|
walther@59686
|
45 |
|
walther@59760
|
46 |
"~~~~~ and do_next , args:"; val (ptp as (pt, pos as (p, p_))) = (pt, ip);
|
walther@60154
|
47 |
(*if*) MethodC.id_empty = get_obj g_metID pt (par_pblobj pt p); (*false*)
|
neuper@42020
|
48 |
val thy' = get_obj g_domID pt (par_pblobj pt p);
|
Walther@60559
|
49 |
val ((ist, ctxt), sc) = resume_prog (p,p_) pt;
|
walther@59686
|
50 |
|
walther@59842
|
51 |
val End_Program (ist, tac) =
|
walther@59842
|
52 |
(*case*) LI.find_next_step sc (pt,pos) ist ctxt (*of*);
|
walther@59686
|
53 |
|
walther@59842
|
54 |
val ("ok", ([(Check_Postcond ["LINEAR", "univariate", "equation", "test"], _, _)], _, _)) =
|
walther@59842
|
55 |
LI.by_tactic tac (ist, ctxt) ptp;
|
walther@59842
|
56 |
"~~~~~ fun by_tactic , args:"; val ((Check_Postcond' (pI, _)), (sub_ist, sub_ctxt), (pt, pos as (p,_))) =
|
walther@59734
|
57 |
(tac, (ist, ctxt), ptp);
|
walther@59842
|
58 |
val parent_pos = par_pblobj pt p
|
Walther@60559
|
59 |
val {scr, ...} = MethodC.from_store ctxt (get_obj g_metID pt parent_pos);
|
walther@59842
|
60 |
val prog_res =
|
walther@59842
|
61 |
case LI.find_next_step scr (pt, pos) sub_ist sub_ctxt of
|
walther@59842
|
62 |
(*OLD*) Next_Step (_, _, Tactic.Check_elementwise' (_, _, (prog_res, _))) => prog_res
|
walther@59843
|
63 |
|(*OLD*) End_Program (_, Tactic.Check_Postcond' (_, prog_res)) => prog_res
|
walther@59842
|
64 |
(*OLD*) | _ => raise ERROR ("Step_Solve.by_tactic Check_Postcond " ^ strs2str' pI)
|
walther@59842
|
65 |
(*OLD* ) vvv--- handled by ctxt \<rightarrow> drop ( *OLD*)
|
walther@59842
|
66 |
(*OLD*)val asm = (*?!? Rfun,Rrls rm case*)(case get_obj g_tac pt p of
|
walther@59842
|
67 |
(*OLD*) Tactic.Check_elementwise _ => (snd o (get_obj g_result pt)) p
|
walther@59844
|
68 |
(*OLD*) | _ => Ctree.get_assumptions pt pos);
|
walther@59842
|
69 |
(*OLD* )val tac = Tactic.Check_Postcond' (pI, (prog_res, asm))
|
walther@59842
|
70 |
( *OLD*)
|
walther@59686
|
71 |
|
walther@59842
|
72 |
(*if*) parent_pos = []; (*else*)
|
walther@59686
|
73 |
|
walther@59842
|
74 |
(*NEW*) val (ist_parent, ctxt_parent) = case get_loc pt (parent_pos, Frm) of
|
walther@59842
|
75 |
(*NEW*) (Pstate i, c) => (i, c)
|
walther@59842
|
76 |
(*NEW*) | _ => error "LI.by_tactic Check_Postcond': uncovered case get_loc"
|
walther@59842
|
77 |
(*NEW*) val (prog_res', ctxt') = ContextC.subpbl_to_caller sub_ctxt prog_res ctxt_parent
|
walther@59843
|
78 |
(*NEW*) val tac = Tactic.Check_Postcond' (pI, prog_res')
|
walther@59842
|
79 |
(*NEW*) val ist' = Pstate (ist_parent |> set_act prog_res |> set_found)
|
walther@59686
|
80 |
;
|
walther@59932
|
81 |
"~~~~~ fun add , args:"; val ((Check_Postcond' (_, scval)), l, (pt, (p, _))) =
|
walther@59842
|
82 |
(tac, (ist', ctxt'), (pt, (parent_pos, Res)));
|
walther@59842
|
83 |
val (pt,c) = append_result pt p l (scval, asm) Complete;
|
neuper@42020
|
84 |
|
Walther@60559
|
85 |
val (p,_,f,nxt,_,pt) = me nxt p'''' [] pt''''; (*nxt = Check_Postcond ["LINEAR", "uval (is, sc) = resume_prog (p,p_) pt; (*is: which ctxt?*)nivariate", ...]) *);
|
walther@59749
|
86 |
case nxt of ( Check_Postcond ["LINEAR", "univariate", "equation", "test"]) => ()
|
Walther@60529
|
87 |
| _ => error "450-nxt-Check_Postcond broken";
|
Walther@60529
|
88 |
|
Walther@60533
|
89 |
Proof_Context.theory_of (Ctree.get_ctxt pt p); (*"Test"*)
|
Walther@60529
|
90 |
|