test/Tools/isac/Minisubpbl/530-error-Check_Elementwise.sml
author Walther Neuper <neuper@ist.tugraz.at>
Sat, 21 May 2011 09:40:02 +0200
branchdecompose-isar
changeset 42021 aab0a175688e
child 42387 767debe8a50c
permissions -rw-r--r--
tuned
neuper@42021
     1
(* Title: 530-error-Check_Elementwise.sml
neuper@42021
     2
Author: Walther Neuper 1105
neuper@42021
     3
(c) copyright due to lincense terms.
neuper@42021
     4
*)
neuper@42021
     5
neuper@42021
     6
"----------- Minisubplb/530-error-Check_Elementwise.sml ----------";
neuper@42021
     7
"----------- Minisubplb/530-error-Check_Elementwise.sml ----------";
neuper@42021
     8
"----------- Minisubplb/530-error-Check_Elementwise.sml ----------";
neuper@42021
     9
val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
neuper@42021
    10
val (dI',pI',mI') =
neuper@42021
    11
("Test", ["sqroot-test","univariate","equation","test"],
neuper@42021
    12
["Test","squ-equ-test-subpbl1"]);
neuper@42021
    13
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@42021
    14
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    15
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    16
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    17
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    18
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    19
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    20
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["Test", "squ-equ-test-subpbl1"]*)
neuper@42021
    21
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    22
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    23
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Subp ["linear", "univariate", "equation", "test"]*)
neuper@42021
    24
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    25
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    26
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    27
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    28
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    29
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    30
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@42021
    31
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["Test", "solve_linear"]*)
neuper@42021
    32
val (p,_,f,nxt,_,pt) = me nxt p'' [] pt''; (*nxt = Rewrite_Set_Inst isolate_bdv*);
neuper@42021
    33
get_ctxt pt p |> is_e_ctxt; (*false*)
neuper@42021
    34
val ctxt = get_ctxt pt p;
neuper@42021
    35
val SOME t = parseNEW ctxt "Check_elementwise [x = 1] {(v_v::real). Assumptions}";
neuper@42021
    36
get_loc pt p |> snd |> is_e_ctxt; (*false*)
neuper@42021
    37
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "Test_simplify"*);
neuper@42021
    38
get_ctxt pt p |> is_e_ctxt; (*false*)
neuper@42021
    39
val ctxt = get_ctxt pt p;
neuper@42021
    40
val SOME t = parseNEW ctxt "Check_elementwise [x = 1] {(v_v::real). Assumptions}";
neuper@42021
    41
get_loc pt p |> snd |> is_e_ctxt; (*false*)
neuper@42021
    42
val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_Postcond ["linear","univariate", ...]) *);
neuper@42021
    43
neuper@42021
    44
val (pt'''', p'''') = (pt, p);
neuper@42021
    45
"~~~~~ fun me, args:"; val (_,tac) = nxt;
neuper@42021
    46
val (pt, p) = case locatetac tac (pt,p) of
neuper@42021
    47
("ok", (_, _, ptp)) => ptp | _ => error "script.sml locatetac";
neuper@42021
    48
show_pt pt; (*...(([3], Res), [x = 1])]... back in root, OK *)
neuper@42021
    49
"~~~~~ fun step, args:"; val (ip as (_,p_), (ptp as (pt,p), tacis)) = (p, ((pt, e_pos'), []))
neuper@42021
    50
val pIopt = get_pblID (pt,ip); (*= SOME ["sqroot-test", "univariate", ...]*)
neuper@42021
    51
tacis; (*= []*)
neuper@42021
    52
member op = [Pbl,Met] p_ andalso is_none (get_obj g_env pt (fst p)); (*= false*)
neuper@42021
    53
"~~~~~ fun nxt_solve_, args:"; val (ptp as (pt, pos as (p, p_))) = (pt, ip);
neuper@42021
    54
val thy' = get_obj g_domID pt (par_pblobj pt p);
neuper@42021
    55
val (srls, is, sc) = from_pblobj_or_detail' thy' (p,p_) pt; (*is: which ctxt?*)
neuper@42021
    56
"~~~~~ fun next_tac, args:"; val (thy, (ptp as (pt, pos as (p, _)):ptree * pos'), (sc as Script (h $ body)),
neuper@42021
    57
(ScrState (E,l,a,v,s,b), ctxt)) = ((thy',srls), (pt,pos), sc, is);
neuper@42021
    58
val ctxt = get_ctxt pt pos
neuper@42021
    59
val SOME t = parseNEW ctxt "Check_elementwise [x = 1] {(v_v::real). Assumptions}";
neuper@42021
    60
l; (*= [R, R, D, L, R]*)
neuper@42021
    61
"~~~~~ fun nstep_up, args:"; val (thy, ptp, (Script sc), E, l, ay, a, v) =
neuper@42021
    62
(thy, ptp, sc, E, l, Skip_, a, v);
neuper@42021
    63
1 < length l; (*true*)
neuper@42021
    64
val up = drop_last l;
neuper@42021
    65
go up sc; (* = Const ("HOL.Let", *)
neuper@42021
    66
"~~~~~ fun nxt_up, args:"; val (thy, ptp, (scr as (Script sc)), E, l, ay,
neuper@42021
    67
(t as Const ("HOL.Let",_) $ _), a, v) =
neuper@42021
    68
(thy, ptp, (Script sc), E, up, ay, (go up sc), a, v);
neuper@42021
    69
ay = Napp_; (*false*)
neuper@42021
    70
val up = drop_last l;
neuper@42021
    71
val (Const ("HOL.Let",_) $ e $ (Abs (i,T,body))) = go up sc;
neuper@42021
    72
val i = mk_Free (i, T);
neuper@42021
    73
val E = upd_env E (i, v);
neuper@42021
    74
body; (*= Const ("Script.Check'_elementwise"*)
neuper@42021
    75
"~~~~~ fun appy, args:"; val ((thy as (th,sr)), (pt, p), E, l, t, a, v)=
neuper@42021
    76
(thy, ptp, E, (up@[R,D]), body, a, v);
neuper@42021
    77
handle_leaf "next " th sr E a v t; (*= (NONE, STac (Const ("Script.Check'_elementwise"*)
neuper@42021
    78
val (a', STac stac) = handle_leaf "next " th sr E a v t;
neuper@42021
    79
"~~~~~ fun stac2tac_, args:"; val (pt, thy, (Const("Script.Check'_elementwise",_) $ _ $
neuper@42021
    80
(set as Const ("Set.Collect",_) $ Abs (_,_,pred)))) = (pt, (assoc_thy th), stac);
neuper@42021
    81
(*2011 changed ^^^^^ *)
neuper@42021
    82
val (p,_,f,nxt,_,pt) = me nxt p'''' [] pt''''; (*WAS nxt = ("Empty_Tac", Empty_Tac)*)
neuper@42021
    83
if nxt = ("Check_elementwise", Check_elementwise "Assumptions") then ()
neuper@42021
    84
else error "Check_elementwise changed; after switch sub-->root-method"