test/Tools/isac/Minisubpbl/490-nxt-Check_Postcond.sml
author Walther Neuper <wneuper@ist.tugraz.at>
Wed, 03 Jul 2019 15:09:16 +0200
changeset 59562 d50fe358f04a
parent 59559 f25ce1922b60
child 59583 cfc0dd8b6849
permissions -rw-r--r--
lucin: fix Test_Isac, rename aux-funs in lucas-interpreter.
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