test/Tools/isac/Minisubpbl/470-Check_elementwise-NEXT_STEP.sml
author wneuper <Walther.Neuper@jku.at>
Mon, 01 Jan 2024 11:31:16 +0100
changeset 60789 8fa678b678e8
parent 60725 25233d8f7019
permissions -rw-r--r--
Doc/Specify_Phase 4: start use antiquotations from isar-ref
     1 (* Title:  "Minisubpbl/470-Check_elementwise-NEXT_STEP.sml"
     2    Author: Walther Neuper 1911
     3    (c) copyright due to lincense terms.
     4 *)
     5 
     6 "----------- Minisubpbl/470-Check_elementwise-NEXT_STEP.sml -----------------------------------";
     7 "----------- Minisubpbl/470-Check_elementwise-NEXT_STEP.sml -----------------------------------";
     8 "----------- Minisubpbl/470-Check_elementwise-NEXT_STEP.sml -----------------------------------";
     9 
    10 val fmz = ["equality (x+1=(2::real))", "solveFor x", "solutions L"];
    11 val (dI',pI',mI') =
    12   ("Test", ["sqroot-test", "univariate", "equation", "test"],
    13    ["Test", "squ-equ-test-subpbl1"]);
    14 val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
    15 (*[], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, Pos.e_pos'), []); val Model_Problem = tac;
    16 (*[], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, Pos.e_pos'), []); val Specify_Theory "Test" = tac;
    17 (*[], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, Pos.e_pos'), []); val Specify_Problem ["sqroot-test", "univariate", "equation", "test"] = tac;
    18 (*[], Met*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Specify_Method ["Test", "squ-equ-test-subpbl1"] = tac;
    19 (*[1], Frm*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Apply_Method ["Test", "squ-equ-test-subpbl1"] = tac;
    20 (*[2], Res*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Rewrite_Set "norm_equation" = tac;
    21 (*[3], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Rewrite_Set "Test_simplify" = tac;
    22 (*[3], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Subproblem ("Test", ["LINEAR", "univariate", "equation", "test"]) = tac;
    23 (*[3], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Model_Problem = tac;
    24 (*[3], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Specify_Theory "Test" = tac;
    25 (*[3], Met*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Specify_Problem ["LINEAR", "univariate", "equation", "test"] = tac;
    26 (*[3], Met*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Specify_Method ["Test", "solve_linear"] = tac;
    27 (*[3, 1], Frm*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Apply_Method ["Test", "solve_linear"] = tac;
    28 (*[3, 1], Res*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Rewrite_Set_Inst (["(''bdv'', x)"], "isolate_bdv") = tac;
    29 (*[3, 2], Res*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []); val Rewrite_Set "Test_simplify" = tac;
    30 
    31 (*+*)if ((get_obj g_result pt (fst p)) |> snd |> UnparseC.terms @{context}) = "[]"
    32 (*+*)then () else error "470-Check_elementwise-NEXT_STEP: Rewrite_Set changed asms";
    33 
    34 (*+*)case tac of Rewrite_Set "Test_simplify" => (
    35 (*+*)  if p = ([3, 2], Res) then (
    36 (*+*)    if pr_ctree ctxt pr_short pt = ".    ----- pblobj -----\n1.   x + 1 = 2\n2.   x + 1 + - 1 * 2 = 0\n3.    ----- pblobj -----\n3.1.   - 1 + x = 0\n3.2.   x = 0 + - 1 * - 1\n"
    37 (*+*)    then () else error "470-Check_elementwise-NEXT_STEP: Rewrite_Set changed pt"
    38 (*+*)  ) else error "470-Check_elementwise-NEXT_STEP: Rewrite_Set changed p") 
    39 (*+*)| _ => error "470-Check_elementwise-NEXT_STEP: Rewrite_Set changed tac";
    40 
    41 (*+*)if (get_ctxt pt p |> Proof_Context.theory_of |> Context.theory_name) = "Test" then ()
    42 (*+*)else error "470-Check_elementwise-NEXT_STEP: Rewrite_Set changed ctxt";
    43 
    44 (*[3], Res*)val return_do_next_Rewrite_Set_Test_simplify = Step.do_next p ((pt, e_pos'), []);
    45 (*//------------------ step into do_next_Rewrite_Set_Test_simplify -------------------------\\*)
    46 "~~~~~ fun do_next , args:"; val ((ip as (_, p_)), (ptp as (pt,p), tacis)) = (p, ((pt, e_pos'), []));
    47     val pIopt = get_pblID (pt,ip);
    48     (*if*) ip = ([], Pos.Res) (*else*);
    49       val _ = (*case*) tacis (*of*);
    50           (*if*) ip = p (*else*);
    51       (*if*) member op = [Pos.Pbl, Pos.Met] p_ (*else*);
    52 
    53            LI.do_next (pt, ip);
    54 "~~~~~ and do_next , args:"; val ((ptp as (pt, pos as (p, p_)))) = ((pt, ip));
    55     (*if*) MethodC.id_empty = get_obj g_metID pt (par_pblobj pt p) (*else*);
    56         val thy' = get_obj g_domID pt (par_pblobj pt p);
    57 	      val ((ist, ctxt), sc) = LItool.resume_prog (p,p_) pt;
    58 
    59            LI.find_next_step sc (pt, pos) ist ctxt;
    60 "~~~~~ fun find_next_step , args:"; val (Rule.Prog prog, (ptp as(pt, (p, _))), Istate.Pstate ist, ctxt)
    61   = (sc, (pt, pos), ist, ctxt);
    62 
    63   (*case*) scan_to_tactic (prog, (ptp, ctxt)) (Istate.Pstate ist) (*of*);
    64 "~~~~~ fun scan_to_tactic , args:"; val ((prog, cc), (Istate.Pstate (ist as {path, ...})))
    65   = ((prog, (ptp, ctxt)), (Istate.Pstate ist));
    66   (*if*) path = [] (*else*);
    67 
    68            go_scan_up (prog, cc) (trans_scan_up ist |> set_found);
    69 "~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...}))
    70   = ((prog, cc), (trans_scan_up ist |> set_found));
    71     (*if*) 1 < length path (*then*);
    72 
    73            scan_up pcc (ist |> path_up) (go_up ctxt path sc);
    74 "~~~~~ and scan_up , args:"; val (pcc, ist, (Const (\<^const_name>\<open>Chain\<close>(*2*), _) $ _ $ _))
    75   = (pcc, (ist |> path_up), (go_up ctxt path sc));
    76 
    77            go_scan_up pcc ist;
    78 "~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...}))
    79   = (pcc, ist);
    80     (*if*) 1 < length path (*then*);
    81 
    82            scan_up pcc (ist |> path_up) (go_up ctxt path sc);
    83 "~~~~~ and scan_up , args:"; val ((pcc as (_, cc)), ist, (Const (\<^const_name>\<open>Repeat\<close>(*2*), _) $ e))
    84 = (pcc, (ist |> path_up), (go_up ctxt path sc));
    85 
    86   (*case*) scan_dn cc (ist |> path_down [R]) e (*of*);
    87 "~~~~~ fun scan_dn , args:"; val (pcc, ist, (Const (\<^const_name>\<open>Chain\<close>(*2*), _) $ _ $ _)) 
    88   = (cc, (ist |> path_down [R]), e);
    89 (*\\------------------ step into do_next_Rewrite_Set_Test_simplify -------------------------//*)
    90 (*[3], Res*)val (_, ([(tac, _, _)], _, (pt, p))) = return_do_next_Rewrite_Set_Test_simplify;
    91                               val Check_Postcond ["LINEAR", "univariate", "equation", "test"] = tac;
    92 (*[4], Res*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []);(**)
    93                               val Check_elementwise "Assumptions" = tac;
    94 (*[], Res*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []);
    95                               val Check_Postcond ["sqroot-test", "univariate", "equation", "test"] = tac
    96 (*[], Res*)val ("end-of-calculation", _) = Step.do_next p ((pt, e_pos'), []);(**)
    97 
    98 (*+*)val (res, asm) = (get_obj g_result pt (fst p));
    99 (*+*)if p = ([], Res) andalso
   100 (*+*)  UnparseC.term ctxt res = "[x = 1]" andalso 
   101 (*+*)  map (UnparseC.term @{context}) asm = []
   102 (*+*)then () else error "Minisubpbl/470-Check_elementwise-NEXT_STEP.sml CHANGED";