test/Tools/isac/Minisubpbl/490-nxt-Check_Postcond.sml
author wneuper <Walther.Neuper@jku.at>
Thu, 20 Oct 2022 10:23:38 +0200
changeset 60571 19a172de0bb5
parent 60559 aba19e46dd84
child 60586 007ef64dbb08
permissions -rw-r--r--
followup 6a: tests run from @{context} without sessions
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