test/Tools/isac/Interpret/script.sml
author Alexander Kargl <akargl@brgkepler.net>
Thu, 21 Jul 2011 16:57:21 +0200
branchdecompose-isar
changeset 42145 43e7e9f835b1
parent 41999 2d5a8c47f0c2
child 42169 038eba5418b8
permissions -rw-r--r--
intermed: uncomment test
neuper@41999
     1
(* Title:  test/../script.sml
neuper@41999
     2
   Author: Walther Neuper 050908
neuper@37906
     3
   (c) copyright due to lincense terms.
neuper@37906
     4
*)
neuper@37906
     5
"-----------------------------------------------------------------";
neuper@37906
     6
"table of contents -----------------------------------------------";
neuper@37906
     7
"-----------------------------------------------------------------";
neuper@37906
     8
"----------- WN0509 why does next_tac doesnt find Substitute -----";
neuper@37906
     9
"----------- WN0509 Substitute 2nd part --------------------------";
neuper@37906
    10
"----------- fun sel_appl_atomic_tacs ----------------------------";
neuper@41969
    11
"----------- fun init_form, fun get_stac -------------------------";
neuper@41972
    12
"----------- x+1=2 start SubProblem 'stac2tac_ TODO: no match for ";
neuper@41982
    13
"----------- x+1=2 set ctxt in Subproblem ------------------------";
neuper@37906
    14
"-----------------------------------------------------------------";
neuper@37906
    15
"-----------------------------------------------------------------";
neuper@37906
    16
"-----------------------------------------------------------------";
neuper@37906
    17
neuper@37906
    18
neuper@37906
    19
"----------- WN0509 why does next_tac doesnt find Substitute -----";
neuper@37906
    20
"----------- WN0509 why does next_tac doesnt find Substitute -----";
neuper@37906
    21
"----------- WN0509 why does next_tac doesnt find Substitute -----";
neuper@37906
    22
neuper@37906
    23
(*replace met 'IntegrierenUndKonstanteBestimmen' with this script...*)
neuper@37906
    24
val str = (*#1#*)
neuper@37906
    25
"Script BiegelinieScript                                             \
neuper@37906
    26
\(l_::real) (q__::real) (v_::real) (b_::real=>real)                    \
neuper@37906
    27
\(rb_::bool list) (rm_::bool list) =                                  \
neuper@37981
    28
\  (let q___ = Take (M_b v_v = q__);                                          \
neuper@37906
    29
\       (M1__::bool) = ((Substitute [v_ = 0])) q___           \
neuper@37906
    30
\ in True)";
akargl@42145
    31
(*========== inhibit exn 110721 ================================================
neuper@37906
    32
val sc' = ((inst_abs thy) o term_of o the o (parse thy)) str;
akargl@42145
    33
(========= inhibit exn 110721 ================================================*)
neuper@37906
    34
neuper@37906
    35
val str = (*#2#*)
neuper@37906
    36
"Script BiegelinieScript                                             \
neuper@37906
    37
\(l_::real) (q__::real) (v_::real) (b_::real=>real)                    \
neuper@37906
    38
\(rb_::bool list) (rm_::bool list) =                                  \
neuper@37981
    39
\  (let q___ = Take (q_ v_v = q__);                                          \
neuper@37906
    40
\       (M1__::bool) = ((Substitute [v_ = 0]) @@ \
neuper@37906
    41
\                       (Substitute [M_b 0 = 0]))  q___          \
neuper@37906
    42
\ in True)";(*..doesnt find Substitute with ..@@ !!!!!!!!!!!!!!!!!!!!!*)
neuper@37906
    43
neuper@37906
    44
val str = (*#3#*)
neuper@37906
    45
"Script BiegelinieScript                                             \
neuper@37906
    46
\(l_::real) (q__::real) (v_::real) (b_::real=>real)                    \
neuper@37906
    47
\(rb_::bool list) (rm_::bool list) =                                  \
neuper@37981
    48
\  (let q___ = Take (q_ v_v = q__);                                          \
neuper@37906
    49
\      (M1__::bool) = Substitute [v_ = 0]      q___ ;        \
neuper@37906
    50
\       M1__ =        Substitute [M_b 0 = 0]  M1__           \
neuper@37906
    51
\ in True)"
neuper@37906
    52
;
neuper@37906
    53
val str = (*#4#*)
neuper@37906
    54
"Script BiegelinieScript                                             \
neuper@37906
    55
\(l_::real) (q__::real) (v_::real) (b_::real=>real)                    \
neuper@37906
    56
\(rb_::bool list) (rm_::bool list) =                                  \
neuper@37981
    57
\  (let q___ = Take (q_ v_v = q__);                                          \
neuper@37906
    58
\      (M1__::bool) = Substitute [v_ = 0]      q___ ;        \
neuper@37906
    59
\       M1__ =        Substitute [v_ = 1]      q___ ;        \
neuper@37906
    60
\       M1__ =        Substitute [v_ = 2]      q___ ;        \
neuper@37906
    61
\       M1__ =        Substitute [v_ = 3]      q___ ;        \
neuper@37906
    62
\       M1__ =        Substitute [M_b 0 = 0]  M1__           \
neuper@37906
    63
\ in True)"
neuper@37906
    64
;
neuper@37906
    65
val str = (*#5#*)
neuper@37906
    66
"Script BiegelinieScript                                             \
neuper@37906
    67
\(l_::real) (q__::real) (v_::real) (b_::real=>real)                    \
neuper@37906
    68
\(rb_::bool list) (rm_::bool list) =                                  \
neuper@37981
    69
\  (let q___ = Take (M_b v_v = q__);                                          \
neuper@37906
    70
\      (M1__::bool) = Substitute [v_ = 0]      q___ ;        \
neuper@37906
    71
\       M2__ = Take q___ ;                                     \
neuper@37906
    72
\       M2__ =        Substitute [v_ = 2]      q___           \
neuper@37906
    73
\ in True)"
neuper@37906
    74
;
akargl@42145
    75
akargl@42145
    76
(*========== inhibit exn 110721 ================================================
neuper@37906
    77
val sc' = ((inst_abs thy) o term_of o the o (parse thy)) str;
neuper@37906
    78
atomty sc';
akargl@42145
    79
========== inhibit exn 110721 ================================================*)
akargl@42145
    80
neuper@37906
    81
val {scr=Script sc,...} = get_met ["IntegrierenUndKonstanteBestimmen"];
neuper@37906
    82
(*---------------------------------------------------------------------
neuper@38031
    83
if sc = sc' then () else error"script.sml, doesnt find Substitute #1";
neuper@37906
    84
---------------------------------------------------------------------*)
neuper@37906
    85
neuper@37906
    86
val fmz = ["Traegerlaenge L",
neuper@37906
    87
	   "Streckenlast (- q_0 * x^^^2 / 2 + x * c + c_2)",
neuper@37906
    88
	   "Biegelinie y",
neuper@37906
    89
	   "RandbedingungenBiegung [y 0 = 0, y L = 0]",
neuper@37906
    90
	   "RandbedingungenMoment [M_b 0 = 0, M_b L = 0]",
neuper@37906
    91
	   "FunktionsVariable x"];
akargl@42145
    92
neuper@37906
    93
val (dI',pI',mI') =
neuper@38058
    94
  ("Biegelinie",["MomentBestimmte","Biegelinien"],
neuper@37906
    95
   ["IntegrierenUndKonstanteBestimmen"]);
akargl@42145
    96
neuper@37906
    97
val p = e_pos'; val c = [];
akargl@42145
    98
neuper@37906
    99
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   100
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   101
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   102
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   103
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   104
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   105
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   106
val (p,_,f,nxt,_,pt) = me nxt p c pt;
akargl@42145
   107
neuper@37906
   108
case nxt of (_, Apply_Method ["IntegrierenUndKonstanteBestimmen"]) => ()
neuper@38031
   109
	  | _ => error "script.sml, doesnt find Substitute #2";
akargl@42145
   110
(*========== inhibit exn 110721 ================================================
neuper@37906
   111
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   112
(* *** generate1: not impl.for Substitute' !!!!!!!!!!(*#1#*)!!!!!!!!!!!*)
neuper@37906
   113
(* val nxt = ("Check_Postcond",.. !!!!!!!!!!!!!!!!!!!(*#2#*)!!!!!!!!!!!*)
neuper@37906
   114
neuper@37906
   115
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   116
(* *** generate1: not impl.for Empty_Tac_  !!!!!!!!!!(*#3#*)!!!!!!!!!!!*)
neuper@37906
   117
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   118
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   119
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   120
(*---------------------------------------------------------------------*)
akargl@42145
   121
neuper@37906
   122
case nxt of (_, End_Proof') => () 
neuper@38031
   123
	  | _ => error "script.sml, doesnt find Substitute #3";
neuper@37906
   124
(*---------------------------------------------------------------------*)
neuper@37906
   125
(*the reason, that next_tac didnt find the 2nd Substitute, was that
neuper@37906
   126
  the Take inbetween was missing, and thus the 2nd Substitute was applied
neuper@37906
   127
  the last formula in ctree, and not to argument from script*)
akargl@42145
   128
========== inhibit exn 110721 ================================================*)
akargl@42145
   129
neuper@37906
   130
neuper@37906
   131
neuper@37906
   132
"----------- WN0509 Substitute 2nd part --------------------------";
neuper@37906
   133
"----------- WN0509 Substitute 2nd part --------------------------";
neuper@37906
   134
"----------- WN0509 Substitute 2nd part --------------------------";
neuper@37906
   135
(*replace met 'IntegrierenUndKonstanteBestimmen' with this script...*)
neuper@37906
   136
val str = (*Substitute ; Substitute works*)
neuper@37906
   137
"Script BiegelinieScript                                             \
neuper@37906
   138
\(l_::real) (q__::real) (v_::real) (b_::real=>real)                    \
neuper@37906
   139
\(rb_::bool list) (rm_::bool list) =                                  "^
neuper@37906
   140
(*begin after the 2nd integrate*)
neuper@37981
   141
"  (let M__ = Take (M_b v_v = q__);                                     \
neuper@37906
   142
\       e1__ = nth_ 1 rm_ ;                                         \
neuper@37906
   143
\       (x1__::real) = argument_in (lhs e1__);                       \
neuper@37906
   144
\       (M1__::bool) = Substitute [v_ = x1__] M__;                   \
neuper@37906
   145
\        M1__        = Substitute [e1__] M1__                    \
neuper@37906
   146
\ in True)"
neuper@37906
   147
;
akargl@42145
   148
(*========== inhibit exn 110721 ================================================
neuper@37906
   149
(*---^^^-OK-----------------------------------------------------------------*)
neuper@37906
   150
val sc' = ((inst_abs thy) o term_of o the o (parse thy)) str;
neuper@37906
   151
atomty sc';
neuper@37906
   152
(*---vvv-NOT ok-------------------------------------------------------------*)
akargl@42145
   153
========== inhibit exn 110721 ================================================*)
akargl@42145
   154
neuper@37906
   155
val str = (*Substitute @@ Substitute does NOT work???*)
neuper@37906
   156
"Script BiegelinieScript                                             \
neuper@37906
   157
\(l_::real) (q__::real) (v_::real) (b_::real=>real)                    \
neuper@37906
   158
\(rb_::bool list) (rm_::bool list) =                                  "^
neuper@37906
   159
(*begin after the 2nd integrate*)
neuper@37981
   160
"  (let M__ = Take (M_b v_v = q__);                                     \
neuper@37906
   161
\       e1__ = nth_ 1 rm_ ;                                         \
neuper@37906
   162
\       (x1__::real) = argument_in (lhs e1__);                       \
neuper@37906
   163
\       (M1__::bool) = ((Substitute [v_ = x1__]) @@ \
neuper@37906
   164
\                       (Substitute [e1__]))        M__           \
neuper@37906
   165
\ in True)"
neuper@37906
   166
;
neuper@37906
   167
neuper@37906
   168
val {scr=Script sc,...} = get_met ["IntegrierenUndKonstanteBestimmen"];
neuper@37906
   169
(*---------------------------------------------------------------------
neuper@38031
   170
if sc = sc' then () else error"script.sml, doesnt find Substitute #1";
neuper@37906
   171
---------------------------------------------------------------------*)
neuper@37906
   172
val fmz = ["Traegerlaenge L",
neuper@37906
   173
	   "Streckenlast (- q_0 * x^^^2 / 2 + x * c + c_2)",
neuper@37906
   174
	   "Biegelinie y",
neuper@37906
   175
	   "RandbedingungenBiegung [y 0 = 0, y L = 0]",
neuper@37906
   176
	   "RandbedingungenMoment [M_b 0 = 0, M_b L = 0]",
neuper@37906
   177
	   "FunktionsVariable x"];
neuper@37906
   178
val (dI',pI',mI') =
neuper@38058
   179
  ("Biegelinie",["MomentBestimmte","Biegelinien"],
neuper@37906
   180
   ["IntegrierenUndKonstanteBestimmen"]);
neuper@37906
   181
val p = e_pos'; val c = [];
neuper@37906
   182
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   183
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   184
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   185
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   186
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   187
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   188
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   189
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   190
case nxt of (_, Apply_Method ["IntegrierenUndKonstanteBestimmen"]) => ()
neuper@38031
   191
	  | _ => error "script.sml, doesnt find Substitute #2";
akargl@42145
   192
akargl@42145
   193
(*========== inhibit exn 110721 ================================================
neuper@37906
   194
trace_rewrite:=true;
neuper@37906
   195
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f(*------------------------*);
neuper@37906
   196
trace_rewrite:=false;
neuper@37906
   197
(*Exception TYPE raised:
neuper@41922
   198
Illegal type for constant "HOL.eq" :: "[real, bool] => bool"
neuper@37906
   199
Atools.argument'_in (Tools.lhs (ListG.nth_ (1 + -1 + -1) [])) =
neuper@37906
   200
ListG.nth_ (1 + -1 + -1) []
neuper@37906
   201
Exception-
neuper@37906
   202
   TYPE
neuper@37906
   203
      ("Illegal type for constant \"op =\" :: \"[real, bool] => bool\"",
neuper@37906
   204
         [],
neuper@41924
   205
         [Const ("HOL.Trueprop", "bool => prop") $
neuper@41922
   206
               (Const ("HOL.eq", "[RealDef.real, bool] => bool") $ ... $ ...)])
neuper@37906
   207
   raised
neuper@37906
   208
... this was because eval_argument_in took "argument_in (lhs (M_b 0 = 0))"
neuper@37906
   209
ie. the argument had not been simplified before          ^^^^^^^^^^^^^^^
neuper@37906
   210
thus corrected eval_argument_in OK*)
akargl@42145
   211
========== inhibit exn 110721 ================================================*)
neuper@37906
   212
neuper@37906
   213
val {srls,...} = get_met ["IntegrierenUndKonstanteBestimmen"];
akargl@42145
   214
val e1__ = str2term "nth_nth 1 [M_b 0 = 0, M_b L = 0]";
akargl@42145
   215
(*========== inhibit exn 110721 ================================================
neuper@37906
   216
val e1__ = eval_listexpr_ Biegelinie.thy srls e1__; term2str e1__;
akargl@42145
   217
neuper@37906
   218
if term2str e1__ = "M_b 0 = 0" then () else 
akargl@42145
   219
error"script.sml diff.beh. eval_listexpr_ nth_nth 1 [...";
akargl@42145
   220
========== inhibit exn 110721 ================================================*)
neuper@37906
   221
neuper@37906
   222
(*TODO.WN050913 ??? doesnt eval_listexpr_ go into subterms ???...
neuper@37906
   223
val x1__ = str2term"argument_in (lhs (M_b 0 = 0))";
neuper@37906
   224
val x1__ = eval_listexpr_ Biegelinie.thy srls x1__; term2str x1__;
neuper@37906
   225
(*no rewrite*)
neuper@37906
   226
calculate_ Biegelinie.thy ("Tools.lhs", eval_rhs"eval_lhs_") x1__;
neuper@37926
   227
val SOME (str, t) = eval_lhs 0 "Tools.lhs" (str2term"lhs (M_b 0 = 0)") 0;*)
neuper@37906
   228
neuper@37906
   229
val l__ = str2term"lhs (M_b 0 = 0)";
akargl@42145
   230
(*========== inhibit exn 110721 ================================================
neuper@37906
   231
val l__ = eval_listexpr_ Biegelinie.thy srls l__; term2str l__;
neuper@37926
   232
val SOME (str, t) = eval_lhs 0 "Tools.lhs" (str2term"lhs (M_b 0 = 0)") 0;
neuper@37906
   233
neuper@37906
   234
neuper@37906
   235
trace_rewrite:=true;
neuper@37906
   236
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f(*------------------------*);
neuper@37906
   237
trace_rewrite:=false;
akargl@42145
   238
========== inhibit exn 110721 ================================================*)
neuper@37906
   239
neuper@37906
   240
show_mets();
neuper@37906
   241
neuper@37906
   242
"----------- fun sel_appl_atomic_tacs ----------------------------";
neuper@37906
   243
"----------- fun sel_appl_atomic_tacs ----------------------------";
neuper@37906
   244
"----------- fun sel_appl_atomic_tacs ----------------------------";
akargl@42145
   245
neuper@37906
   246
states:=[];
neuper@41970
   247
CalcTree [(["equality (x+1=(2::real))", "solveFor x","solutions L"], 
neuper@41970
   248
  ("Test", ["sqroot-test","univariate","equation","test"],
neuper@37906
   249
   ["Test","squ-equ-test-subpbl1"]))];
neuper@37906
   250
Iterator 1;
neuper@37906
   251
moveActiveRoot 1;
neuper@37906
   252
autoCalculate 1 CompleteCalcHead;
neuper@37906
   253
autoCalculate 1 (Step 1);
neuper@37906
   254
autoCalculate 1 (Step 1);
neuper@37906
   255
val ((pt, p), _) = get_calc 1; show_pt pt;
neuper@37906
   256
val appltacs = sel_appl_atomic_tacs pt p;
akargl@42145
   257
akargl@42145
   258
(*
akargl@42145
   259
(*These SHOULD be the same*)
akargl@42145
   260
 print_depth(999);
akargl@42145
   261
 appltacs;
akargl@42145
   262
 [Rewrite ("radd_commute", "?m + ?n = ?n + ?m"),
akargl@42145
   263
    Rewrite ("radd_assoc", "?m + ?n + ?k = ?m + (?n + ?k)"),
akargl@42145
   264
    Calculate "times"];*)
akargl@42145
   265
akargl@42145
   266
(*========== inhibit exn 110721 ================================================
neuper@37906
   267
if appltacs = 
neuper@37906
   268
   [Rewrite ("radd_commute", "?m + ?n = ?n + ?m"),
neuper@37906
   269
    Rewrite ("radd_assoc", "?m + ?n + ?k = ?m + (?n + ?k)"),
neuper@37906
   270
    Calculate "times"] then ()
neuper@38031
   271
else error "script.sml fun sel_appl_atomic_tacs diff.behav.";
akargl@42145
   272
========== inhibit exn 110721 ================================================*)
neuper@37906
   273
neuper@37906
   274
trace_script := true;
neuper@37906
   275
trace_script := false;
neuper@37906
   276
applyTactic 1 p (hd appltacs);
neuper@37906
   277
val ((pt, p), _) = get_calc 1; show_pt pt;
neuper@37906
   278
val appltacs = sel_appl_atomic_tacs pt p;
neuper@37906
   279
akargl@42145
   280
(*========== inhibit exn 110721 ================================================
neuper@37906
   281
"----- WN080102 these vvv do not work, because locatetac starts the search\
neuper@37906
   282
 \1 stac too low";
akargl@42145
   283
(* ERROR: assy: call by ([3], Pbl) *)
neuper@37906
   284
applyTactic 1 p (hd appltacs);
neuper@37906
   285
autoCalculate 1 CompleteCalc;
akargl@42145
   286
============ inhibit exn 110721 ==============================================*)
neuper@37906
   287
neuper@41969
   288
"----------- fun init_form, fun get_stac -------------------------";
neuper@41969
   289
"----------- fun init_form, fun get_stac -------------------------";
neuper@41969
   290
"----------- fun init_form, fun get_stac -------------------------";
neuper@41969
   291
val fmz = ["equality (x+1=(2::real))", "solveFor x", "solutions L"];
neuper@41969
   292
val (dI',pI',mI') = ("Test",["sqroot-test","univariate","equation","test"],
neuper@41969
   293
  ["Test","squ-equ-test-subpbl1"]);
neuper@41969
   294
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@41969
   295
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41969
   296
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41969
   297
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41969
   298
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41969
   299
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41969
   300
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41969
   301
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@41969
   302
"~~~~~ fun me, args:"; val (_,tac) = nxt;
neuper@41969
   303
"~~~~~ fun locatetac, args:"; val ptp as (pt, p) = (pt, p);
neuper@41969
   304
val (mI,m) = mk_tac'_ tac;
neuper@41969
   305
val Appl m = applicable_in p pt m;
neuper@41969
   306
member op = specsteps mI; (*false*)
neuper@41969
   307
"~~~~~ fun loc_solve_, args:"; val (m, (pt, pos) ) = ((mI, m), ptp);
neuper@41969
   308
"~~~~~ fun solve, args:"; val (("Apply_Method", Apply_Method' (mI,_,_,_)), pos as (p,_)) = (m, pos);
neuper@41969
   309
val {srls, ...} = get_met mI;
neuper@41969
   310
val PblObj {meth=itms, ...} = get_obj I pt p;
neuper@41969
   311
val thy' = get_obj g_domID pt p;
neuper@41969
   312
val thy = assoc_thy thy';
neuper@41969
   313
val (is as ScrState (env,_,_,_,_,_), ctxt, sc) = init_scrstate thy itms mI;
neuper@41969
   314
val ini = init_form thy sc env;
neuper@41969
   315
"----- fun init_form, args:"; val (Script sc) = sc;
neuper@41969
   316
"----- fun get_stac, args:"; val (y, h $ body) = (thy, sc);
neuper@41969
   317
case get_stac thy sc of SOME (Free ("e_e", _)) => ()
neuper@41969
   318
| _ => error "script: Const (?, ?) in script (as term) changed";;
neuper@41969
   319
neuper@41972
   320
neuper@41972
   321
"----------- x+1=2 start SubProblem 'stac2tac_ TODO: no match for ";
neuper@41972
   322
"----------- x+1=2 start SubProblem 'stac2tac_ TODO: no match for ";
neuper@41972
   323
"----------- x+1=2 start SubProblem 'stac2tac_ TODO: no match for ";
neuper@41972
   324
val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
neuper@41972
   325
val (dI',pI',mI') =
neuper@41972
   326
  ("Test", ["sqroot-test","univariate","equation","test"],
neuper@41972
   327
   ["Test","squ-equ-test-subpbl1"]);
neuper@41972
   328
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@41972
   329
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41972
   330
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41972
   331
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41972
   332
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41972
   333
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41972
   334
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41972
   335
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41972
   336
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41972
   337
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@41972
   338
(*val (p,_,f,nxt,_,pt) = me nxt p [1] pt; WAS: Empty_Tac, helpless*)
neuper@41972
   339
show_pt pt;
neuper@41972
   340
"~~~~~ fun me, args:"; val (_,tac) = nxt;
neuper@41973
   341
val (pt, p) = case locatetac tac (pt,p) of
neuper@41973
   342
	("ok", (_, _, ptp))  => ptp | _ => error "script.sml locatetac";
neuper@41972
   343
"~~~~~ fun step, args:"; val (ip as (_,p_), (ptp as (pt,p), tacis)) = (p, ((pt, e_pos'), []))
neuper@41999
   344
val pIopt = get_pblID (pt,ip); (*SOME ["linear", "univariate", "equation", "test"]*)
neuper@41972
   345
tacis; (*= []*)
neuper@41972
   346
member op = [Pbl,Met] p_ andalso is_none (get_obj g_env pt (fst p)); (*= false*)
neuper@41972
   347
"~~~~~ fun nxt_solve_, args:"; val (ptp as (pt, pos as (p, p_))) = (pt, ip);
neuper@41972
   348
                                 (*WAS stac2tac_ TODO: no match for SubProblem*)
neuper@41972
   349
val thy' = get_obj g_domID pt (par_pblobj pt p);
neuper@41972
   350
val (srls, is, sc) = from_pblobj_or_detail' thy' (p,p_) pt;
neuper@41972
   351
"~~~~~ fun next_tac, args:"; val (thy, (ptp as (pt,(p,_)):ptree * pos'), (sc as Script (h $ body)), 
neuper@41972
   352
	                               (ScrState (E,l,a,v,s,b), ctxt)) = ((thy',srls), (pt,pos), sc, is);
neuper@41972
   353
l; (*= [R, L, R, L, R, R]*)
neuper@41972
   354
val Appy (m', scrst as (_,_,_,v,_,_)) = nstep_up thy ptp sc E l Skip_ a v;
neuper@41972
   355
"~~~~~ dont like to go into nstep_up...";
neuper@41972
   356
val t = str2term ("SubProblem" ^ 
neuper@41972
   357
  "(Test', [linear, univariate, equation, test], [Test, solve_linear])" ^
neuper@41972
   358
  "[BOOL (-1 + x = 0), REAL x]");
neuper@41972
   359
val (tac, tac_) = stac2tac_ pt @{theory "Isac"} t; (*WAS stac2tac_ TODO: no match for SubProblem*)
neuper@41972
   360
case tac_ of 
neuper@41972
   361
  Subproblem' _ => ()
neuper@41972
   362
| _ => error "script.sml x+1=2 start SubProblem from script";
neuper@41972
   363
neuper@41972
   364
neuper@41982
   365
"----------- x+1=2 set ctxt in Subproblem ------------------------";
neuper@41982
   366
"----------- x+1=2 set ctxt in Subproblem ------------------------";
neuper@41982
   367
"----------- x+1=2 set ctxt in Subproblem ------------------------";
neuper@41982
   368