test/Tools/isac/Knowledge/eqsystem-1a.sml
author wneuper <Walther.Neuper@jku.at>
Wed, 19 Oct 2022 10:43:04 +0200
changeset 60567 bb3140a02f3d
parent 60559 aba19e46dd84
child 60569 f5454fd2e013
permissions -rw-r--r--
eliminate term2str in src, Prog_Tac.*_adapt_to_type
Walther@60556
     1
(* Title: Knowledge/eqsystem-1a.sml
Walther@60556
     2
   author: Walther Neuper 050826,
Walther@60556
     3
*)
Walther@60556
     4
Walther@60567
     5
"-----------------------------------------------------------------------------------------------";
Walther@60567
     6
"table of contents -----------------------------------------------------------------------------";
Walther@60567
     7
"-----------------------------------------------------------------------------------------------";
Walther@60567
     8
"----------- occur_exactly_in ---------------------------------------------------equsystem-1.sml";
Walther@60567
     9
"----------- problems -----------------------------------------------------------equsystem-1.sml";
Walther@60567
    10
"----------- rewrite-order ord_simplify_System ----------------------------------equsystem-1.sml";
Walther@60567
    11
"----------- rewrite in [EqSystem,normalise,2x2] --------------------------------equsystem-1.sml";
Walther@60567
    12
"----------- rewrite example from 2nd [EqSystem,normalise,2x2] ------------------equsystem-1.sml";
Walther@60567
    13
"----------- rewrite in [EqSystem,top_down_substitution,2x2] --------------------equsystem-1.sml";
Walther@60567
    14
"----------- rewrite in [EqSystem,normalise,4x4] --------------------------------equsystem-1.sml";
Walther@60567
    15
"----------- script [EqSystem,top_down_substitution,2x2] Vers.1 -----------------equsystem-1.sml";
Walther@60567
    16
"----------- refine [linear,system]----------------------------------------------equsystem-1.sml";
Walther@60567
    17
"----------- refine [2x2,linear,system] search error-----------------------------equsystem-1.sml";
Walther@60567
    18
"----------- me [EqSystem,normalise,2x2], refine Subproblem ---------------------equsystem-1.sml";
Walther@60567
    19
"----------- me [EqSystem,normalise,2x2], refine Subproblem, step into istate---equsystem-1a.sml";
Walther@60567
    20
"----------- me [linear,system] ..normalise..top_down_sub..----------------------equsystem-2.sml";
Walther@60567
    21
"----------- all systems from Biegelinie ----------------------------------------equsystem-2.sml";
Walther@60567
    22
"----------- 4x4 systems from Biegelinie ----------------------------------------equsystem-2.sml";
Walther@60567
    23
"-----------------------------------------------------------------------------------------------";
Walther@60567
    24
"-----------------------------------------------------------------------------------------------";
Walther@60567
    25
"-----------------------------------------------------------------------------------------------";
Walther@60556
    26
Walther@60556
    27
Walther@60567
    28
"----------- me [EqSystem,normalise,2x2], refine Subproblem, step into istate---equsystem-1a.sml";
Walther@60567
    29
"----------- me [EqSystem,normalise,2x2], refine Subproblem, step into istate---equsystem-1a.sml";
Walther@60567
    30
"----------- me [EqSystem,normalise,2x2], refine Subproblem, step into istate---equsystem-1a.sml";
Walther@60556
    31
val fmz = ["equalities [0 = - 1 * q_0 * 0 \<up> 2 / 2 + 0 * c + c_2,\
Walther@60556
    32
	               \0 = - 1 * q_0 * L \<up> 2 / 2 + L * c + c_2]", 
Walther@60556
    33
	   "solveForVars [c, c_2]", "solution LL"];
Walther@60556
    34
val (dI',pI',mI') =
Walther@60556
    35
  ("Biegelinie",["normalise", "2x2", "LINEAR", "system"],
Walther@60556
    36
   ["EqSystem", "normalise", "2x2"]);
Walther@60556
    37
val p = e_pos'; val c = []; 
Walther@60556
    38
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
Walther@60556
    39
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60556
    40
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60556
    41
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60556
    42
val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60556
    43
case nxt of Specify_Method ["EqSystem", "normalise", "2x2"] => ()
Walther@60556
    44
	  | _ => error "eqsystem.sml [EqSystem,normalise,2x2] specify";
Walther@60556
    45
Walther@60556
    46
val (p,_,f,nxt,_,pt) = me nxt p c pt; 
Walther@60556
    47
(*nxt = Apply_Method ["EqSystem", "normalise", "2x2"]*)
Walther@60556
    48
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f = "[0 = - 1 * q_0 * 0 \<up> 2 / 2 + 0 * c + c_2,\n 0 = - 1 * q_0 * L \<up> 2 / 2 + L * c + c_2]";
Walther@60556
    49
(*nxt = Rewrite_Set "norm_Rational" *)
Walther@60556
    50
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f = "[0 = c_2," ^                              " 0 = (2 * c_2 + 2 * L * c + - 1 * L \<up> 2 * q_0) / 2]"; 
Walther@60556
    51
(*nxt = Rewrite_Set_Inst (["(''bdv_1'', c)", "(''bdv_2'', c_2)"], "simplify_System_parenthesized")*)
Walther@60556
    52
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f = "[0 = c_2," ^                              " 0 = - 1 * q_0 * L \<up> 2 / 2 + (L * c + c_2)]";
Walther@60556
    53
(*nxt = Rewrite_Set_Inst (["(''bdv_1'', c)", "(''bdv_2'', c_2)"], "isolate_bdvs")*)
Walther@60556
    54
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f = "[c_2 = 0," ^                              " L * c + c_2 = 0 + - 1 * (- 1 * q_0 * L \<up> 2 / 2)]";
Walther@60556
    55
(*nxt = Rewrite_Set_Inst (["(''bdv_1'', c)", "(''bdv_2'', c_2)"], "simplify_System_parenthesized")*);
Walther@60556
    56
(*next in solve_EqSystem:solve_system2: Try (Rewrite_Set ''order_system'') ..is skipped*)
Walther@60556
    57
val (p''''',_,f''''',nxt''''',_,pt''''') = me nxt p c pt;f2str f = "[c_2 = 0," ^          " L * c + c_2 = q_0 * L \<up> 2 / 2]";
Walther@60556
    58
(*nxt = Subproblem ("Biegelinie", ["triangular", "2x2", "LINEAR", "system"])*)
Walther@60556
    59
Walther@60556
    60
(*/------------------- step into me -----------------------------------------------------\*)
Walther@60556
    61
(*+*)val (NONE, SOME (ist, ctxt)) = Ctree.get_obj g_loc pt (fst p);
Walther@60556
    62
Walther@60556
    63
"~~~~~ fun me , args:"; val (tac, p, _, pt) = (nxt, p, c, pt);
Walther@60556
    64
      val (pt, p) = 
Walther@60556
    65
  	    (*Step.by_tactic is here for testing by me; do_next would suffice in me*)
Walther@60556
    66
  	    case Step.by_tactic tac (pt, p) of
Walther@60556
    67
  		    ("ok", (_, _, ptp)) => ptp;
Walther@60556
    68
      (*case*) 
Walther@60556
    69
      Step.do_next p ((pt, Pos.e_pos'), []) (*of*);
Walther@60556
    70
"~~~~~ fun do_next , args:"; val ((ip as (_, p_)), (ptp as (pt, p), tacis) ) = 
Walther@60556
    71
  (p, ((pt, Pos.e_pos'), []));
Walther@60556
    72
  (*if*) Pos.on_calc_end ip (*else*);
Walther@60556
    73
      val (_, probl_id, _) = Calc.references (pt, p);
Walther@60556
    74
val _ = (*case*) tacis (*of*);
Walther@60556
    75
        (*if*) probl_id = Problem.id_empty (*else*);
Walther@60556
    76
Walther@60556
    77
           switch_specify_solve p_ (pt, ip);
Walther@60556
    78
"~~~~~ fun switch_specify_solve , args:"; val (state_pos, (pt, input_pos)) = (p_, (pt, ip));
Walther@60556
    79
      (*if*) Pos.on_specification ([], state_pos) (*else*);
Walther@60556
    80
Walther@60556
    81
        LI.do_next (pt, input_pos);
Walther@60556
    82
"~~~~~ and do_next , args:"; val (ptp as (pt, pos as (p, p_))) = (pt, input_pos);
Walther@60556
    83
    (*if*) MethodC.id_empty = get_obj g_metID pt (par_pblobj pt p) (*else*);
Walther@60556
    84
        val thy' = get_obj g_domID pt (par_pblobj pt p);
Walther@60559
    85
	      val ((ist, ctxt), sc) = LItool.resume_prog (p,p_) pt;
Walther@60556
    86
Walther@60556
    87
val Next_Step (Pstate {act_arg = t, ...}, _, _) = (*case*)
Walther@60556
    88
        LI.find_next_step sc (pt, pos) ist ctxt (*of*);
Walther@60556
    89
"~~~~~ fun find_next_step , args:"; val ((Rule.Prog prog), (ptp as (pt, pos as (p, _))), (Pstate ist), ctxt) =
Walther@60556
    90
  (sc, (pt, pos), ist, ctxt);
Walther@60556
    91
Walther@60556
    92
val Accept_Tac ((*tac*)Subproblem' _, _(*ist*), _(*ctxt*)) =
Walther@60556
    93
  (*case*) scan_to_tactic (prog, (ptp, ctxt)) (Pstate ist) (*of*);
Walther@60556
    94
"~~~~~ fun scan_to_tactic , args:"; val ((prog, cc), (Pstate (ist as {path, ...}))) = 
Walther@60556
    95
  ((prog, (ptp, ctxt)), (Pstate ist));
Walther@60556
    96
  (*if*) path = [] (*else*);
Walther@60556
    97
(*+*)path = [R, L, R, L, R, R, R, L, R, R];
Walther@60556
    98
Walther@60556
    99
val Accept_Tac (Subproblem' _, _(*ist*), _(*ctxt*)) =
Walther@60556
   100
           go_scan_up (prog, cc) (trans_scan_up ist);
Walther@60556
   101
"~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...})) = 
Walther@60556
   102
((prog, cc), (trans_scan_up ist));
Walther@60556
   103
    (*if*) path = [R] (*else*);
Walther@60556
   104
(*+*)val [R, L, R, L, R, R, R, L, R, R] = path;
Walther@60556
   105
val Accept_Tac (Subproblem'
Walther@60556
   106
  (("Biegelinie", ["triangular", "2x2", "LINEAR", "system"], ["EqSystem", "top_down_substitution", "2x2"]), _, _, _, _, _), 
Walther@60556
   107
  istist, _) =
Walther@60556
   108
           scan_up pcc (ist |> path_up) (go_up path sc);
Walther@60556
   109
"~~~~~ and scan_up , args:"; val (pcc, ist, (Const (\<^const_name>\<open>Tactical.Try\<close>(*2*), _) $ _ )) = 
Walther@60556
   110
  (pcc, (ist |> path_up), (go_up path sc));
Walther@60556
   111
           go_scan_up pcc ist;
Walther@60556
   112
"~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...})) =
Walther@60556
   113
  (pcc, ist);
Walther@60556
   114
   (*if*) path = [R] (*else*);
Walther@60556
   115
(*+*)val [R, L, R, L, R, R, R, L, R] = path;
Walther@60556
   116
           scan_up pcc (ist |> path_up) (go_up path sc);
Walther@60556
   117
"~~~~~ and scan_up , args:"; val ((pcc as (sc, cc)), ist, (Const (\<^const_name>\<open>Tactical.Chain\<close>(*3*), _) $ _)) =
Walther@60556
   118
  (pcc, (ist |> path_up), (go_up path sc));
Walther@60556
   119
        val e2 = check_Seq_up ist sc
Walther@60556
   120
val Term_Val v =
Walther@60556
   121
        (*case*) scan_dn cc (ist |> path_up_down [R]) e2 (*of*);
Walther@60556
   122
           go_scan_up pcc (ist |> path_up |> set_act v |> set_found);
Walther@60556
   123
"~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...})) =
Walther@60556
   124
  (pcc, (ist |> path_up |> set_act v |> set_found));
Walther@60556
   125
   (*if*) path = [R] (*else*);
Walther@60556
   126
(*+*)path = [R, L, R, L, R, R, R];
Walther@60556
   127
           scan_up pcc (ist |> path_up) (go_up path sc);
Walther@60556
   128
"~~~~~ and scan_up , args:"; val (pcc, ist, (Const (\<^const_name>\<open>Tactical.Chain\<close>(*2*), _) $ _ $ _ )) = 
Walther@60556
   129
  (pcc, (ist |> path_up), (go_up path sc));
Walther@60556
   130
           go_scan_up pcc ist;
Walther@60556
   131
"~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...})) =
Walther@60556
   132
  (pcc, ist);
Walther@60556
   133
   (*if*) path = [R] (*else*);
Walther@60556
   134
(*+*)path = [R, L, R, L, R, R];
Walther@60556
   135
           scan_up pcc (ist |> path_up) (go_up path sc);
Walther@60556
   136
"~~~~~ and scan_up , args:"; val (pcc, ist, (Const (\<^const_name>\<open>Tactical.Chain\<close>(*2*), _) $ _ $ _ )) =
Walther@60556
   137
  (pcc, (ist |> path_up), (go_up path sc));
Walther@60556
   138
           go_scan_up pcc ist;
Walther@60556
   139
"~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...})) =
Walther@60556
   140
  (pcc, ist);
Walther@60556
   141
   (*if*) path = [R] (*else*);
Walther@60556
   142
(*+*)path = [R, L, R, L, R];
Walther@60556
   143
           scan_up pcc (ist |> path_up) (go_up path sc);
Walther@60556
   144
"~~~~~ and scan_up , args:"; val (pcc, ist, (Const (\<^const_name>\<open>Tactical.Chain\<close>(*2*), _) $ _ $ _ )) = 
Walther@60556
   145
  (pcc, (ist |> path_up), (go_up path sc));
Walther@60556
   146
          go_scan_up pcc ist;
Walther@60556
   147
"~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...})) =
Walther@60556
   148
  (pcc, ist);
Walther@60556
   149
   (*if*) path = [R] (*else*);
Walther@60556
   150
(*+*)path = [R, L, R, L];
Walther@60556
   151
           scan_up pcc (ist |> path_up) (go_up path sc);
Walther@60556
   152
"~~~~~ and scan_up , args:"; val (pcc, ist, (Const (\<^const_name>\<open>Tactical.Chain\<close>(*1*), _) $ _ $ _ $ _)) = 
Walther@60556
   153
  (pcc, (ist |> path_up), (go_up path sc));
Walther@60556
   154
          go_scan_up pcc ist;
Walther@60556
   155
"~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...})) =
Walther@60556
   156
  (pcc, ist);
Walther@60556
   157
   (*if*) path = [R] (*else*);
Walther@60556
   158
(*+*)path = [R, L, R];
Walther@60556
   159
           scan_up pcc (ist |> path_up) (go_up path sc);
Walther@60556
   160
"~~~~~ and scan_up , args:"; val ((pcc as (sc, cc)), ist, (Const (\<^const_name>\<open>Let\<close>(*1*), _) $ _)) = 
Walther@60556
   161
  (pcc, (ist |> path_up), (go_up path sc));
Walther@60556
   162
        val (i, body) = check_Let_up ist sc
Walther@60556
   163
Walther@60556
   164
val Accept_Tac _ = (*case*)
Walther@60556
   165
           scan_dn cc (ist |> path_up_down [R, D] |> upd_env i) body (*of*);
Walther@60556
   166
"~~~~~ fun scan_dn , args:"; val ((cc as (_, ctxt)), (ist as {eval, ...}), t) =
Walther@60556
   167
  (cc, (ist |> path_up_down [R, D] |> upd_env i), body);
Walther@60556
   168
    (*if*) Tactical.contained_in t (*else*);
Walther@60556
   169
val (Program.Tac prog_tac, form_arg) =
Walther@60556
   170
      (*case*) LItool.check_leaf "next  " ctxt eval (get_subst ist) t (*of*);
Walther@60556
   171
Walther@60556
   172
           check_tac cc ist (prog_tac, form_arg);
Walther@60556
   173
"~~~~~ fun check_tac , args:"; val (((pt, p), ctxt), ist, (prog_tac, form_arg)) = 
Walther@60556
   174
  (cc, ist, (prog_tac, form_arg));
Walther@60556
   175
Walther@60556
   176
    val m =
Walther@60556
   177
    LItool.tac_from_prog pt (Proof_Context.theory_of ctxt) prog_tac;
Walther@60556
   178
"~~~~~ fun tac_from_prog , args:"; val (pt, _, (ptac as Const (\<^const_name>\<open>Prog_Tac.SubProblem\<close>, _) $ _ $ _)) =
Walther@60556
   179
  (pt, (Proof_Context.theory_of ctxt), prog_tac);
Walther@60556
   180
"~~~~~ from fun tac_from_prog \<longrightarrow>fun check_tac , return:"; val (m) =
Walther@60556
   181
  (fst (
Walther@60556
   182
Sub_Problem.tac_from_prog pt ptac));
Walther@60556
   183
"~~~~~ fun tac_from_prog , args:"; val (pt, (stac as Const (\<^const_name>\<open>Prog_Tac.SubProblem\<close>, _) $ spec' $ ags')) =
Walther@60556
   184
  (pt, ptac);
Walther@60556
   185
      val (dI, pI, mI) = Prog_Tac.dest_spec spec'
Walther@60556
   186
      val thy = ThyC.sub_common (ThyC.get_theory dI, Ctree.rootthy pt);;
Walther@60556
   187
      val ctxt = Proof_Context.init_global thy (*BETTER USE user_ctxt ?*)
Walther@60556
   188
	    val ags = TermC.isalist2list ags';
Walther@60556
   189
	      (*if*) mI = ["no_met"] (*then*);
Walther@60559
   190
            val pors = (M_Match.arguments thy ((#ppc o (Problem.from_store ctxt)) pI) ags): O_Model.T
Walther@60556
   191
		        val pI' = 
Walther@60559
   192
    Refine.refine_ori' ctxt pors pI;
Walther@60556
   193
val return = (pI', pors (* refinement over models with diff.prec only *), 
Walther@60559
   194
		          (hd o #met o Problem.from_store ctxt) pI');
Walther@60556
   195
(*-------------^^ THIS CAUSED THE ERROR Empty*)
Walther@60556
   196
Walther@60556
   197
(*+*)val ["LINEAR", "system"] = pI;
Walther@60556
   198
(*+*)fun app_ptyp x = Store.apply (get_pbls ()) x; (*redefine locally hidden*)
Walther@60556
   199
Walther@60559
   200
"~~~~~ fun refine_ori' , args:"; val (oris, pblID) = (pors, pI);
Walther@60556
   201
val SOME ["system", "LINEAR", "2x2", "triangular"] = 
Walther@60559
   202
           app_ptyp (Refine.refin ctxt ((rev o tl) pblID) oris) pblID (rev pblID);
Walther@60556
   203
Walther@60556
   204
"~~~~~ fun app_ptyp , args:"; val () = (); (*considered too expensive for testing*)
Walther@60556
   205
(*+*)val fmz = ["equalities [c_2 = (0::real), L * c + c_2 = q_0 * L \<up> 2 / 2]", 
Walther@60556
   206
	   "solveForVars [c, c_2]", "solution LL"];
Walther@60556
   207
(*+isa<>isa2*)Refine.refine_PIDE @{context} fmz ["LINEAR", "system"];(*
Walther@60556
   208
*** pass ["system", "LINEAR"] 
Walther@60556
   209
*** pass ["system", "LINEAR", "2x2"] 
Walther@60556
   210
*** pass ["system", "LINEAR", "3x3"] 
Walther@60556
   211
*** pass ["system", "LINEAR", "4x4"] 
Walther@60556
   212
val it =
Walther@60556
   213
   [Matches (["LINEAR", "system"], {Find = [Correct "solution LL"], Given = [Correct "equalities [c_2 = 0, L * c + c_2 = q_0 * L \<up> 2 / 2]", Correct "solveForVars [c, c_2]"], Relate = [], Where = [], With = []}),
Walther@60556
   214
    NoMatch
Walther@60556
   215
     (["2x2", "LINEAR", "system"],
Walther@60556
   216
      {Find = [Correct "solution LL"], Given = [Correct "equalities [c_2 = 0, L * c + c_2 = q_0 * L \<up> 2 / 2]", Correct "solveForVars [c, c_2]"], Relate = [], Where =
Walther@60556
   217
       [Correct "Length [c_2 = 0, L * c + c_2 = q_0 * L \<up> 2 / 2] = 2", False "Length v_s = 2"], With = []}),
Walther@60556
   218
-------------------------------------------------------- [c, c_2] NOT SUBSTUTED -----^^^
Walther@60556
   219
    NoMatch
Walther@60556
   220
     (["3x3", "LINEAR", "system"],
Walther@60556
   221
      {Find = [Correct "solution LL"], Given = [Correct "equalities [c_2 = 0, L * c + c_2 = q_0 * L \<up> 2 / 2]", Correct "solveForVars [c, c_2]"], Relate = [], Where =
Walther@60556
   222
       [False "Length [c_2 = 0, L * c + c_2 = q_0 * L \<up> 2 / 2] = 3", False "Length v_s = 3"], With = []}),
Walther@60556
   223
------------------------------------------------------ [c, c_2] NOT SUBSTUTED -----^^^
Walther@60556
   224
    NoMatch
Walther@60556
   225
     (["4x4", "LINEAR", "system"],
Walther@60556
   226
      {Find = [Correct "solution LL"], Given = [Correct "equalities [c_2 = 0, L * c + c_2 = q_0 * L \<up> 2 / 2]", Correct "solveForVars [c, c_2]"], Relate = [], Where =
Walther@60556
   227
       [False "Length [c_2 = 0, L * c + c_2 = q_0 * L \<up> 2 / 2] = 4", False "Length v_s = 4"], With = []})]:
Walther@60556
   228
------------------------------------------------------ [c, c_2] NOT SUBSTUTED -----^^^
Walther@60556
   229
   M_Match.T list*)
Walther@60556
   230
(*-------------------- stop step into me -------------------------------------------------*)
Walther@60556
   231
(*\------------------- step into me -----------------------------------------------------/*)
Walther@60556
   232
case nxt''''' of
Walther@60556
   233
    (Subproblem ("Biegelinie", ["triangular", "2x2", "LINEAR",_])) => ()
Walther@60556
   234
  | _ => error "eqsystem.sml me [EqSystem,normalise,2x2] SubProblem";
Walther@60556
   235
val (p,f,nxt,pt) = (p''''',f''''',nxt''''',pt''''');
Walther@60556
   236
Walther@60556
   237
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60556
   238
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60556
   239
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60556
   240
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60556
   241
case nxt of
Walther@60556
   242
    (Specify_Method ["EqSystem", "top_down_substitution", "2x2"]) => ()
Walther@60556
   243
  | _ => error "eqsystem.sml me [EqSys...2x2] top_down_substitution";
Walther@60556
   244
Walther@60556
   245
val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60556
   246
val PblObj {probl,...} = get_obj I pt [5];
Walther@60556
   247
    (writeln o (I_Model.to_string (Proof_Context.init_global @{theory Isac_Knowledge}))) probl;
Walther@60556
   248
(*[
Walther@60556
   249
(1 ,[1] ,true ,#Given ,Cor equalities [c_2 = 0, L * c + c_2 = q_0 * L \<up> 2 / 2] ,(es_, [[c_2 = 0, L * c + c_2 = q_0 * L \<up> 2 / 2]])),
Walther@60556
   250
(2 ,[1] ,true ,#Given ,Cor solveForVars [c, c_2] ,(v_s, [[c, c_2]])),
Walther@60556
   251
(3 ,[1] ,true ,#Find ,Cor solution ss___ ,(ss___, [ss___]))]
Walther@60556
   252
*)
Walther@60556
   253
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   254
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   255
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   256
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   257
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   258
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   259
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   260
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   261
Walther@60556
   262
case nxt of
Walther@60556
   263
    (Check_Postcond ["triangular", "2x2", "LINEAR", "system"]) => ()
Walther@60556
   264
  | _ => error "eqsystem.sml me Subpbl .[EqSys...2x2] finished";
Walther@60556
   265
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   266
val (p,_,f,nxt,_,pt) = me nxt p c pt;f2str f;
Walther@60556
   267
if f2str f = "[c = L * q_0 / 2, c_2 = 0]" then ()
Walther@60556
   268
else error "eqsystem.sml me [EqSys...2x2] finished f2str f";
Walther@60556
   269
case nxt of
Walther@60556
   270
    (End_Proof') => ()
Walther@60556
   271
  | _ => error "eqsystem.sml me [EqSys...2x2] finished End_Proof'";