test/Tools/isac/ME/me.sml
author Walther Neuper <neuper@ist.tugraz.at>
Wed, 18 Aug 2010 13:40:09 +0200
branchisac-update-Isa09-2
changeset 37924 6c53fe2519e5
parent 37906 e2b23ba9df13
permissions -rw-r--r--
established thy-ctxt strategy (1..2) for ME/mstools.sml

strategy in 2 steps:
(1) update isac to Isabelle2009-2 with minimal changes
(a) 'parse thy' left as is
'str2t' --> 'str2term_' according to (b)
'comp_dts thy' left as is, but returns term NOT cterm
(b) pretty printing '*2str' always without thy | ctxt
pretty printing '*2str_' always with ctxt
(2) make parsing dependent on context of calculation
(a) 'parse thy' --> 'parse ctxt' simplified by searchin 'thy'
(b) nothin to do
neuper@37906
     1
(* tests on me.sml
neuper@37906
     2
   author: Walther Neuper
neuper@37906
     3
   060225,
neuper@37906
     4
   (c) due to copyright terms 
neuper@37906
     5
neuper@37906
     6
use"../smltest/ME/me.sml";
neuper@37906
     7
use"me.sml";
neuper@37906
     8
*)
neuper@37906
     9
neuper@37906
    10
"-----------------------------------------------------------------";
neuper@37906
    11
"table of contents -----------------------------------------------";
neuper@37906
    12
"-----------------------------------------------------------------";
neuper@37906
    13
"=====new ptree 1: crippled by cut_level_'_ ======================";
neuper@37906
    14
"-------------- get_interval from ctree with move_dn:modspec.sml -";
neuper@37906
    15
"=====new ptree 2 without changes ================================";
neuper@37906
    16
"-------------- getFormulaeFromTo --------------------------------";
neuper@37906
    17
"autoCalculate"; 
neuper@37906
    18
"--------- solve_linear as rootpbl AUTOCALCULATE CompleteModel ---";
neuper@37906
    19
"--------- solve_linear as rootpbl AUTOCALCULATE CompleteCalcHead-";
neuper@37906
    20
"--------- maximum-example: complete_metitms ---------------------";
neuper@37906
    21
"--------- maximum-example: complete_mod -------------------------";
neuper@37906
    22
"-----------------------------------------------------------------";
neuper@37906
    23
"-----------------------------------------------------------------";
neuper@37906
    24
"-----------------------------------------------------------------";
neuper@37906
    25
neuper@37906
    26
neuper@37906
    27
neuper@37906
    28
"=====new ptree 1: crippled by cut_level_'_ ======================";
neuper@37906
    29
"=====new ptree 1: crippled by cut_level_'_ ======================";
neuper@37906
    30
"=====new ptree 1: crippled by cut_level_'_ ======================";
neuper@37906
    31
states:=[];
neuper@37906
    32
CalcTree
neuper@37906
    33
[(["equality (x/(x^2 - 6*x+9) - 1/(x^2 - 3*x) =1/x)",
neuper@37906
    34
	   "solveFor x","solutions L"], 
neuper@37906
    35
  ("RatEq.thy",["univariate","equation"],["no_met"]))];
neuper@37906
    36
Iterator 1; moveActiveRoot 1;
neuper@37906
    37
autoCalculate 1 CompleteCalc; 
neuper@37906
    38
neuper@37906
    39
getTactic 1 ([1],Res);(*Rewrite_Set RatEq_simplify*)
neuper@37906
    40
getTactic 1 ([2],Res);(*Rewrite_Set norm_Rational*)
neuper@37906
    41
getTactic 1 ([3],Res);(*Rewrite_Set RatEq_eliminate*)
neuper@37906
    42
getTactic 1 ([4,1],Res);(*Rewrite all_left*)
neuper@37906
    43
getTactic 1 ([4,2],Res);(*Rewrite_Set expand_binoms*)
neuper@37906
    44
getTactic 1 ([4,3],Res);(*Rewrite_Set_Inst make_ratpoly_in*)
neuper@37906
    45
neuper@37906
    46
moveActiveFormula 1 ([1],Res)(*1.1...1.4*);
neuper@37906
    47
moveActiveFormula 1 ([2],Res)(**ME_Isa: 'expand' not known*);
neuper@37906
    48
moveActiveFormula 1 ([3],Res)(*3.1.*);
neuper@37906
    49
moveActiveFormula 1 ([4,2],Res)(*4.2.1.*);
neuper@37906
    50
moveActiveFormula 1 ([4,3],Res)(**one_scr_arg: called by Script Stepwise t_=*);
neuper@37906
    51
neuper@37906
    52
moveActiveFormula 1 ([1],Res)(*1.1...1.4*);
neuper@37906
    53
interSteps 1 ([1],Res)(*..is activeFormula !?!*);
neuper@37906
    54
neuper@37906
    55
getTactic 1 ([1,1],Res);(*Rewrite real_diff_minus*)
neuper@37906
    56
getTactic 1 ([1,2],Res);(*Rewrite real_diff_minus*)
neuper@37906
    57
getTactic 1 ([1,3],Res);(*Rewrite real_diff_minus*)
neuper@37906
    58
getTactic 1 ([1,4],Res);(*Rewrite real_rat_mult_1*)
neuper@37906
    59
neuper@37906
    60
moveActiveFormula 1 ([4,2],Res)(*4.2.1.*);
neuper@37906
    61
interSteps 1 ([4,2],Res)(*..is activeFormula !?!*);
neuper@37906
    62
val ((pt,_),_) = get_calc 1;
neuper@37906
    63
writeln(pr_ptree pr_short pt);
neuper@37906
    64
(*delete [4,1] in order to make pos [4],[4,4] for pblobjs differen [4],[4,3]:
neuper@37906
    65
 ###########################################################################*)
neuper@37906
    66
val (pt, _) = cut_level_'_ [] [] pt ([4,1],Frm);                         (*#*)
neuper@37906
    67
(*##########################################################################*)
neuper@37906
    68
writeln(pr_ptree pr_short pt);
neuper@37906
    69
(*##########################################################################
neuper@37906
    70
  attention: the ctree in states is still the old (perfect) !!!
neuper@37906
    71
############################################################################*)
neuper@37906
    72
neuper@37906
    73
neuper@37906
    74
neuper@37906
    75
"-------------- get_interval from ctree with move_dn:modspec.sml -";
neuper@37906
    76
"-------------- get_interval from ctree with move_dn:modspec.sml -";
neuper@37906
    77
"-------------- get_interval from ctree with move_dn:modspec.sml -";
neuper@37906
    78
writeln(pr_ptree pr_short pt);
neuper@37906
    79
writeln(posterms2str (get_interval ([],Frm) ([],Res) 99999 pt));
neuper@37906
    80
neuper@37906
    81
case map fst (get_interval ([],Frm) ([],Res) 99999 pt) of
neuper@37906
    82
    [([], Frm), 
neuper@37906
    83
     ([1], Frm), 
neuper@37906
    84
     ([1, 1], Frm), 
neuper@37906
    85
     ([1, 1], Res), 
neuper@37906
    86
     ([1, 2], Res),
neuper@37906
    87
     ([1, 3], Res), 
neuper@37906
    88
     ([1, 4], Res), 
neuper@37906
    89
     ([1], Res), 
neuper@37906
    90
     ([2], Res), 
neuper@37906
    91
     ([3], Res),
neuper@37906
    92
     ([4], Pbl), 
neuper@37906
    93
     ([4, 1], Frm), 
neuper@37906
    94
     ([4, 1, 1], Frm), 
neuper@37906
    95
     ([4, 1, 1], Res),
neuper@37906
    96
     ([4, 1], Res), 
neuper@37906
    97
     ([4, 2], Res), 
neuper@37906
    98
     ([4, 3], Pbl), 
neuper@37906
    99
     ([4, 3, 1], Frm),
neuper@37906
   100
     ([4, 3, 1], Res), 
neuper@37906
   101
     ([4, 3, 2], Res), 
neuper@37906
   102
     ([4, 3, 3], Res), 
neuper@37906
   103
     ([4, 3, 4], Res),
neuper@37906
   104
     ([4, 3, 5], Res), 
neuper@37906
   105
     ([4, 3], Res), 
neuper@37906
   106
     ([4], Res), 
neuper@37906
   107
     ([5], Res), 
neuper@37906
   108
     ([], Res)] => () 
neuper@37906
   109
  | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1f";
neuper@37906
   110
case map fst (get_interval ([],Frm) ([],Res) 1 pt) of
neuper@37906
   111
    [([], Frm), 
neuper@37906
   112
     ([1], Frm), 
neuper@37906
   113
     ([1], Res), 
neuper@37906
   114
     ([2], Res), 
neuper@37906
   115
     ([3], Res),
neuper@37906
   116
     ([4], Pbl), 
neuper@37906
   117
     ([4], Res), 
neuper@37906
   118
     ([5], Res), 
neuper@37906
   119
     ([], Res)] => () 
neuper@37906
   120
  | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1f";
neuper@37906
   121
case map fst (get_interval ([],Frm) ([],Res) 0 pt) of
neuper@37906
   122
    [([], Frm), 
neuper@37906
   123
     ([], Res)] => () 
neuper@37906
   124
  | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1f";
neuper@37906
   125
neuper@37906
   126
case map fst (get_interval ([1,3],Res) ([4,1,1],Frm) 99999 pt) of
neuper@37906
   127
    [([1, 3], Res), 
neuper@37906
   128
     ([1, 4], Res), 
neuper@37906
   129
     ([1], Res), 
neuper@37906
   130
     ([2], Res), 
neuper@37906
   131
     ([3], Res),
neuper@37906
   132
     ([4], Pbl), 
neuper@37906
   133
     ([4, 1], Frm), 
neuper@37906
   134
     ([4, 1, 1], Frm)] => () 
neuper@37906
   135
  | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1a";
neuper@37906
   136
neuper@37906
   137
(*this pos' is not generated bu move_dn:......vvv: goes to end of calc*)
neuper@37906
   138
case map fst (get_interval ([2],Res) ([4,3,2],Frm) 99999 pt) of
neuper@37906
   139
    [([2], Res), 
neuper@37906
   140
     ([3], Res), 
neuper@37906
   141
     ([4], Pbl), 
neuper@37906
   142
     ([4, 1], Frm), 
neuper@37906
   143
     ([4, 1, 1], Frm),
neuper@37906
   144
     ([4, 1, 1], Res), 
neuper@37906
   145
     ([4, 1], Res), 
neuper@37906
   146
     ([4, 2], Res), 
neuper@37906
   147
     ([4, 3], Pbl),
neuper@37906
   148
     ([4, 3, 1], Frm), 
neuper@37906
   149
     ([4, 3, 1], Res), 
neuper@37906
   150
     ([4, 3, 2], Res), 
neuper@37906
   151
     ([4, 3, 3], Res),(*this is beyond 'to'*)
neuper@37906
   152
     ([4, 3, 4], Res),(*this is beyond 'to'*) 
neuper@37906
   153
     ([4, 3, 5], Res),(*this is beyond 'to'*) 
neuper@37906
   154
     ([4, 3], Res),   (*this is beyond 'to'*)
neuper@37906
   155
     ([4], Res),      (*this is beyond 'to'*)
neuper@37906
   156
     ([5], Res),      (*this is beyond 'to'*)
neuper@37906
   157
     ([], Res)] => () (*this is beyond 'to'*)
neuper@37906
   158
  | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1b";
neuper@37906
   159
case map fst (get_interval ([1,4],Res) ([4,3,1],Frm) 99999 pt) of
neuper@37906
   160
    [([1, 4], Res), 
neuper@37906
   161
     ([1], Res), 
neuper@37906
   162
     ([2], Res), 
neuper@37906
   163
     ([3], Res), 
neuper@37906
   164
     ([4], Pbl),
neuper@37906
   165
     ([4, 1], Frm), 
neuper@37906
   166
     ([4, 1, 1], Frm), 
neuper@37906
   167
     ([4, 1, 1], Res), 
neuper@37906
   168
     ([4, 1], Res),
neuper@37906
   169
     ([4, 2], Res), 
neuper@37906
   170
     ([4, 3], Pbl), 
neuper@37906
   171
     ([4, 3, 1], Frm)] => () 
neuper@37906
   172
  | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1c";
neuper@37906
   173
case map fst (get_interval ([4,2],Res) ([5],Res) 99999 pt) of
neuper@37906
   174
    [([4, 2], Res), 
neuper@37906
   175
     ([4, 3], Pbl), 
neuper@37906
   176
     ([4, 3, 1], Frm), 
neuper@37906
   177
     ([4, 3, 1], Res),
neuper@37906
   178
     ([4, 3, 2], Res), 
neuper@37906
   179
     ([4, 3, 3], Res), 
neuper@37906
   180
     ([4, 3, 4], Res), 
neuper@37906
   181
     ([4, 3, 5], Res),
neuper@37906
   182
     ([4, 3], Res), 
neuper@37906
   183
     ([4], Res), 
neuper@37906
   184
     ([5], Res)]=>()
neuper@37906
   185
  | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1d";
neuper@37906
   186
case map fst (get_interval ([],Frm) ([4,3,2],Res) 99999 pt) of
neuper@37906
   187
    [([], Frm), 
neuper@37906
   188
     ([1], Frm), 
neuper@37906
   189
     ([1, 1], Frm), 
neuper@37906
   190
     ([1, 1], Res), 
neuper@37906
   191
     ([1, 2], Res),
neuper@37906
   192
     ([1, 3], Res), 
neuper@37906
   193
     ([1, 4], Res), 
neuper@37906
   194
     ([1], Res), 
neuper@37906
   195
     ([2], Res), 
neuper@37906
   196
     ([3], Res),
neuper@37906
   197
     ([4], Pbl), 
neuper@37906
   198
     ([4, 1], Frm), 
neuper@37906
   199
     ([4, 1, 1], Frm), 
neuper@37906
   200
     ([4, 1, 1], Res),
neuper@37906
   201
     ([4, 1], Res), 
neuper@37906
   202
     ([4, 2], Res), 
neuper@37906
   203
     ([4, 3], Pbl), 
neuper@37906
   204
     ([4, 3, 1], Frm),
neuper@37906
   205
     ([4, 3, 1], Res), 
neuper@37906
   206
     ([4, 3, 2], Res)] => () 
neuper@37906
   207
  | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1e";
neuper@37906
   208
case map fst (get_interval ([4,3],Frm) ([4,3],Res) 99999 pt) of
neuper@37906
   209
    [([4, 3], Frm), 
neuper@37906
   210
     ([4, 3, 1], Frm), 
neuper@37906
   211
     ([4, 3, 1], Res), 
neuper@37906
   212
     ([4, 3, 2], Res),
neuper@37906
   213
     ([4, 3, 3], Res), 
neuper@37906
   214
     ([4, 3, 4], Res), 
neuper@37906
   215
     ([4, 3, 5], Res), 
neuper@37906
   216
     ([4, 3], Res)] => () 
neuper@37906
   217
  | _ => raise error "diff.behav.in ctree.sml: get_interval lev 1g";
neuper@37906
   218
neuper@37906
   219
neuper@37906
   220
neuper@37906
   221
neuper@37906
   222
"=====new ptree 2 without changes ================================";
neuper@37906
   223
"=====new ptree 2 without changes ================================";
neuper@37906
   224
"=====new ptree 2 without changes ================================";
neuper@37906
   225
states:=[];
neuper@37906
   226
CalcTree
neuper@37906
   227
[(["equality (x/(x^2 - 6*x+9) - 1/(x^2 - 3*x) =1/x)",
neuper@37906
   228
	   "solveFor x","solutions L"], 
neuper@37906
   229
  ("RatEq.thy",["univariate","equation"],["no_met"]))];
neuper@37906
   230
Iterator 1; moveActiveRoot 1;
neuper@37906
   231
autoCalculate 1 CompleteCalc; 
neuper@37906
   232
val ((pt,_),_) = get_calc 1;
neuper@37906
   233
writeln(pr_ptree pr_short pt);
neuper@37906
   234
 
neuper@37906
   235
neuper@37906
   236
"-------------- getFormulaeFromTo --------------------------------";
neuper@37906
   237
"-------------- getFormulaeFromTo --------------------------------";
neuper@37906
   238
"-------------- getFormulaeFromTo --------------------------------";
neuper@37906
   239
getFormulaeFromTo 1 ([4, 2], Res) ([4, 4], Pbl) 000;
neuper@37906
   240
(*
neuper@37906
   241
"@@@@@begin@@@@@" //...................................................
neuper@37906
   242
+ " 1" //..............................................................
neuper@37906
   243
+ "<GETELEMENTSFROMTO>" //...................................................
neuper@37906
   244
+ "  <CALCID> 1 </CALCID>" //..........................................
neuper@37906
   245
+ "  <POSFORMHEADS>" //................................................
neuper@37906
   246
+ "    <POSFORM>" //...................................................
neuper@37906
   247
+ "      <GENERATED>" //...............................................
neuper@37906
   248
+ "        <INTLIST>" //...............................................
neuper@37906
   249
+ "          <INT> 4 </INT>" //........................................
neuper@37906
   250
+ "          <INT> 3 </INT>" //........................................
neuper@37906
   251
+ "        </INTLIST>" //..............................................
neuper@37906
   252
+ "        <POS> Res </POS>" //........................................
neuper@37906
   253
+ "      </GENERATED>" //..............................................
neuper@37906
   254
+ "      <FORMULA>" //.................................................
neuper@37906
   255
+ "        <MATHML>" //................................................
neuper@37906
   256
+ "          <ISA> -6 * x + 5 * x ^^^ 2 = 0 </ISA>" //.................
neuper@37906
   257
+ "        </MATHML>" //...............................................
neuper@37906
   258
+ "      </FORMULA>" //................................................
neuper@37906
   259
+ "    </POSFORM>" //..................................................
neuper@37906
   260
+ "    <POSHEAD>" //...................................................
neuper@37906
   261
+ "      <GENERATED>" //...............................................
neuper@37906
   262
+ "        <INTLIST>" //...............................................
neuper@37906
   263
+ "          <INT> 4 </INT>" //........................................
neuper@37906
   264
+ "          <INT> 4 </INT>" //........................................
neuper@37906
   265
+ "        </INTLIST>" //..............................................
neuper@37906
   266
+ "        <POS> Pbl </POS>" //........................................
neuper@37906
   267
+ "      </GENERATED>" //..............................................
neuper@37906
   268
+ "      <CALCHEAD status = "correct">" //.............................
neuper@37906
   269
+ "       <HEAD>" //...................................................
neuper@37906
   270
+ "         <MATHML>" //...............................................
neuper@37906
   271
+ "           <ISA> solve (-6 * x + 5 * x ^^^ 2 = 0, x) </ISA>" //.....
neuper@37906
   272
+ "         </MATHML>" //..............................................
neuper@37906
   273
+ "       </HEAD>" //..................................................
neuper@37906
   274
+ "        <MODEL>" //.................................................
neuper@37906
   275
+ "          <GIVEN>" //...............................................
neuper@37906
   276
+ "            <ITEM status="correct">" //.............................
neuper@37906
   277
+ "              <MATHML>" //..........................................
neuper@37906
   278
+ "                <ISA> equality (-6 * x + 5 * x ^^^ 2 = 0) </ISA>" //
neuper@37906
   279
+ "              </MATHML>" //.........................................
neuper@37906
   280
+ "            </ITEM>" //.............................................
neuper@37906
   281
+ "            <ITEM status="correct">" //.............................
neuper@37906
   282
+ "              <MATHML>" //..........................................
neuper@37906
   283
+ "                <ISA> solveFor x </ISA>" //.........................
neuper@37906
   284
+ "              </MATHML>" //.........................................
neuper@37906
   285
+ "            </ITEM>" //.............................................
neuper@37906
   286
+ "          </GIVEN>" //..............................................
neuper@37906
   287
+ "          <WHERE>" //...............................................
neuper@37906
   288
+ "            <ITEM status="correct">" //.............................
neuper@37906
   289
+ "              <MATHML>" //..........................................
neuper@37906
   290
+ "                <ISA> matches (?a * ?v_ + ?v_ ^^^ 2 = 0) (-6 * x + 5 * x ^^^ 2 = 0) |"
neuper@37906
   291
+ "matches (?v_ + ?v_ ^^^ 2 = 0) (-6 * x + 5 * x ^^^ 2 = 0) |" //......
neuper@37906
   292
+ "matches (?v_ + ?b * ?v_ ^^^ 2 = 0) (-6 * x + 5 * x ^^^ 2 = 0) |"
neuper@37906
   293
+ "matches (?a * ?v_ + ?b * ?v_ ^^^ 2 = 0) (-6 * x + 5 * x ^^^ 2 = 0) |"
neuper@37906
   294
+ "matches (?v_ ^^^ 2 = 0) (-6 * x + 5 * x ^^^ 2 = 0) |" //............
neuper@37906
   295
+ "matches (?b * ?v_ ^^^ 2 = 0) (-6 * x + 5 * x ^^^ 2 = 0) </ISA>" //..
neuper@37906
   296
+ "              </MATHML>" //.........................................
neuper@37906
   297
+ "            </ITEM>" //.............................................
neuper@37906
   298
+ "          </WHERE>" //..............................................
neuper@37906
   299
+ "          <FIND>" //................................................
neuper@37906
   300
+ "            <ITEM status="correct">" //.............................
neuper@37906
   301
+ "              <MATHML>" //..........................................
neuper@37906
   302
+ "                <ISA> solutions x_i </ISA>" //......................
neuper@37906
   303
+ "              </MATHML>" //.........................................
neuper@37906
   304
+ "            </ITEM>" //.............................................
neuper@37906
   305
+ "          </FIND>" //...............................................
neuper@37906
   306
+ "          <RELATE>  </RELATE>" //...................................
neuper@37906
   307
+ "        </MODEL>" //................................................
neuper@37906
   308
+ "        <BELONGSTO> Pbl </BELONGSTO>" //............................
neuper@37906
   309
+ "        <SPECIFICATION>" //.........................................
neuper@37906
   310
+ "          <THEORYID> PolyEq.thy </THEORYID>" //.....................
neuper@37906
   311
+ "          <PROBLEMID>" //...........................................
neuper@37906
   312
+ "            <STRINGLIST>" //........................................
neuper@37906
   313
+ "              <STRING> bdv_only </STRING>" //.......................
neuper@37906
   314
+ "              <STRING> degree_2 </STRING>" //.......................
neuper@37906
   315
+ "              <STRING> polynomial </STRING>" //.....................
neuper@37906
   316
+ "              <STRING> univariate </STRING>" //.....................
neuper@37906
   317
+ "              <STRING> equation </STRING>" //.......................
neuper@37906
   318
+ "            </STRINGLIST>" //.......................................
neuper@37906
   319
+ "          </PROBLEMID>" //..........................................
neuper@37906
   320
+ "          <METHODID>" //............................................
neuper@37906
   321
+ "            <STRINGLIST>" //........................................
neuper@37906
   322
+ "              <STRING> PolyEq </STRING>" //.........................
neuper@37906
   323
+ "              <STRING> solve_d2_polyeq_bdvonly_equation </STRING>" 
neuper@37906
   324
+ "            </STRINGLIST>" //.......................................
neuper@37906
   325
+ "          </METHODID>" //...........................................
neuper@37906
   326
+ "        </SPECIFICATION>" //........................................
neuper@37906
   327
+ "      </CALCHEAD>" //...............................................
neuper@37906
   328
+ "    </POSHEAD>" //..................................................
neuper@37906
   329
+ "  <POSFORMHEADS>" //................................................
neuper@37906
   330
+ "</GETELEMENTSFROMTO>" //..................................................
neuper@37906
   331
+ "@@@@@end@@@@@"
neuper@37906
   332
*)
neuper@37906
   333
neuper@37906
   334
neuper@37906
   335
"--------- solve_linear as rootpbl AUTOCALCULATE CompleteModel ---";
neuper@37906
   336
"--------- solve_linear as rootpbl AUTOCALCULATE CompleteModel ---";
neuper@37906
   337
"--------- solve_linear as rootpbl AUTOCALCULATE CompleteModel ---";
neuper@37906
   338
 val c = [];
neuper@37906
   339
 val (p,_,f,nxt,_,pt) = CalcTreeTEST 
neuper@37906
   340
     [(["equality (1+-1*2+x=0)", "solveFor x","solutions L"],
neuper@37906
   341
       ("Test.thy", 
neuper@37906
   342
	["linear","univariate","equation","test"],
neuper@37906
   343
	["Test","solve_linear"]))];
neuper@37906
   344
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   345
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   346
 (*xt = Add_Given "solveFor x"*)
neuper@37924
   347
 writeln (itms2str_ ctxt (get_obj g_pbl pt (fst p)));   
neuper@37906
   348
(*[
neuper@37906
   349
(0 ,[] ,false ,#Given ,Inc solveFor ,(??.empty, [])),
neuper@37906
   350
(0 ,[] ,false ,#Find ,Inc solutions [] ,(??.empty, [])),
neuper@37906
   351
(1 ,[1] ,true ,#Given ,Cor equality (1 + -1 * 2 + x = 0) ,(e_, [1 + -1 * 2 + x = 0]))]*)
neuper@37906
   352
 val (pt,p) = complete_mod (pt, p);
neuper@37924
   353
 if itms2str_ ctxt (get_obj g_pbl pt (fst p)) = "[\n(1 ,[1] ,true ,#Given ,Cor equality (1 + -1 * 2 + x = 0) ,(e_, [1 + -1 * 2 + x = 0])),\n(2 ,[1] ,true ,#Given ,Cor solveFor x ,(v_, [x])),\n(3 ,[1] ,true ,#Find ,Cor solutions L ,(v_i_, [L]))]" then ()
neuper@37906
   354
 else raise error "completetest.sml: new behav. in complete_mod 1";
neuper@37924
   355
 writeln (itms2str_ ctxt (get_obj g_pbl pt (fst p)));   
neuper@37906
   356
(*[
neuper@37906
   357
(1 ,[1] ,true ,#Given ,Cor equality (1 + -1 * 2 + x = 0) ,(e_, [1 + -1 * 2 + x = 0])),
neuper@37906
   358
(2 ,[1] ,true ,#Given ,Cor solveFor x ,(solveFor, [x])),
neuper@37906
   359
(3 ,[1] ,true ,#Find ,Cor solutions L ,(solutions, [L]))]*)
neuper@37906
   360
 val mits = get_obj g_met pt (fst p);
neuper@37924
   361
 if itms2str_ ctxt mits = "[\n(1 ,[1] ,true ,#Given ,Cor equality (1 + -1 * 2 + x = 0) ,(e_, [1 + -1 * 2 + x = 0])),\n(2 ,[1] ,true ,#Given ,Cor solveFor x ,(v_, [x])),\n(3 ,[1] ,true ,#Find ,Cor solutions L ,(v_i_, [L]))]" 
neuper@37906
   362
 then () else raise error "completetest.sml: new behav. in complete_mod 2";
neuper@37924
   363
 writeln (itms2str_ ctxt mits);   
neuper@37906
   364
(*[
neuper@37906
   365
(1 ,[1] ,true ,#Given ,Cor equality (1 + -1 * 2 + x = 0) ,(e_, [1 + -1 * 2 + x = 0])),
neuper@37906
   366
(2 ,[1] ,true ,#Given ,Cor solveFor x ,(solveFor, [x])),
neuper@37906
   367
(3 ,[1] ,true ,#Find ,Cor solutions L ,(solutions, [L]))]*)
neuper@37906
   368
neuper@37906
   369
neuper@37906
   370
neuper@37906
   371
"--------- solve_linear as rootpbl AUTOCALCULATE CompleteCalcHead-";
neuper@37906
   372
"--------- solve_linear as rootpbl AUTOCALCULATE CompleteCalcHead-";
neuper@37906
   373
"--------- solve_linear as rootpbl AUTOCALCULATE CompleteCalcHead-";
neuper@37906
   374
 states:=[];
neuper@37906
   375
 CalcTree      (*start of calculation, return No.1*)
neuper@37906
   376
     [(["equality (1+-1*2+x=0)", "solveFor x","solutions L"],
neuper@37906
   377
       ("Test.thy", 
neuper@37906
   378
	["linear","univariate","equation","test"],
neuper@37906
   379
	["Test","solve_linear"]))];
neuper@37906
   380
 Iterator 1; moveActiveRoot 1;
neuper@37906
   381
neuper@37906
   382
(* 
neuper@37906
   383
 autoCalculate 1 CompleteCalcHead;
neuper@37906
   384
 autoCalculate 1 (Step 1); 
neuper@37906
   385
 refFormula 1 (get_pos 1 1); 
neuper@37906
   386
neuper@37906
   387
... works 
neuper@37906
   388
neuper@37906
   389
 autoCalculate 1 CompleteCalcHead;
neuper@37906
   390
 fetchProposedTactic 1; (*-> Apply_Method*);
neuper@37906
   391
 setNextTactic 1 (Apply_Method ["Test","solve_linear"]);
neuper@37906
   392
 autoCalculate 1 (Step 1); 
neuper@37906
   393
 refFormula 1 (get_pos 1 1); 
neuper@37906
   394
neuper@37906
   395
... works *)
neuper@37906
   396
neuper@37906
   397
 autoCalculate 1 (Step 1); 
neuper@37906
   398
 refFormula 1 (get_pos 1 1);
neuper@37906
   399
neuper@37906
   400
 autoCalculate 1 CompleteModel;
neuper@37906
   401
 refFormula 1 (get_pos 1 1);
neuper@37906
   402
neuper@37906
   403
 autoCalculate 1 CompleteCalcHead;
neuper@37906
   404
(* *** complete_mod: only impl.for Pbl, called with ([], Met) FIXXXXXXXXXXME*)
neuper@37906
   405
neuper@37906
   406
neuper@37906
   407
neuper@37906
   408
"--------- maximum-example: complete_metitms ---------------------";
neuper@37906
   409
"--------- maximum-example: complete_metitms ---------------------";
neuper@37906
   410
"--------- maximum-example: complete_metitms ---------------------";
neuper@37906
   411
 val (p,_,f,nxt,_,pt) = 
neuper@37906
   412
     CalcTreeTEST 
neuper@37906
   413
     [(["fixedValues [r=Arbfix]","maximum A",
neuper@37906
   414
	"valuesFor [a,b]",
neuper@37906
   415
	"relations [A=a*b, (a/2)^^^2 + (b/2)^^^2 = r^^^2]",
neuper@37906
   416
	"relations [A=a*b, (a/2)^^^2 + (b/2)^^^2 = r^^^2]",
neuper@37906
   417
	"relations [A=a*b, a/2=r*sin alpha, b/2=r*cos alpha]",
neuper@37906
   418
	
neuper@37906
   419
	"boundVariable a","boundVariable b","boundVariable alpha",
neuper@37906
   420
	"interval {x::real. 0 <= x & x <= 2*r}",
neuper@37906
   421
	"interval {x::real. 0 <= x & x <= 2*r}",
neuper@37906
   422
	"interval {x::real. 0 <= x & x <= pi}",
neuper@37906
   423
	"errorBound (eps=(0::real))"],
neuper@37906
   424
       ("DiffApp.thy",["maximum_of","function"],["DiffApp","max_by_calculus"])
neuper@37906
   425
       )];
neuper@37906
   426
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   427
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   428
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   429
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   430
 val (p,_,f,nxt,_,pt) = (me nxt p c pt) handle e => print_exn e;
neuper@37906
   431
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   432
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   433
 (*nxt = Specify_Theory "DiffApp.thy"*)
neuper@37906
   434
 val (oris, _, _) = get_obj g_origin pt (fst p);
neuper@37906
   435
 writeln (oris2str oris);
neuper@37906
   436
(*[
neuper@37906
   437
(1, ["1","2","3"], #Given,fixedValues, ["[r = Arbfix]"]),
neuper@37906
   438
(2, ["1","2","3"], #Find,maximum, ["A"]),
neuper@37906
   439
(3, ["1","2","3"], #Find,valuesFor, ["[a]","[b]"]),
neuper@37906
   440
(4, ["1","2"], #Relate,relations, ["[A = a * b]","[(a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]"]),
neuper@37906
   441
(5, ["3"], #Relate,relations, ["[A = a * b]","[a / 2 = r * sin alpha]","[b / 2 = r * cos alpha]"]),
neuper@37906
   442
(6, ["1"], #undef,boundVariable, ["a"]),
neuper@37906
   443
(7, ["2"], #undef,boundVariable, ["b"]),
neuper@37906
   444
(8, ["3"], #undef,boundVariable, ["alpha"]),
neuper@37906
   445
(9, ["1","2"], #undef,interval, ["{x. 0 <= x & x <= 2 * r}"]),
neuper@37906
   446
(10, ["3"], #undef,interval, ["{x. 0 <= x & x <= pi}"]),
neuper@37906
   447
(11, ["1","2","3"], #undef,errorBound, ["eps = 0"])]*)
neuper@37906
   448
 val pits = get_obj g_pbl pt (fst p);
neuper@37924
   449
 writeln (itms2str_ ctxt pits);
neuper@37906
   450
(*[
neuper@37906
   451
(1 ,[1,2,3] ,true,#Given ,Cor fixedValues [r = Arbfix],(fix_, [[r = Arbfix]])),
neuper@37906
   452
(2 ,[1,2,3] ,true,#Find ,Cor maximum A ,(m_, [A])),
neuper@37906
   453
(3 ,[1,2,3] ,true,#Find ,Cor valuesFor [a, b] ,(vs_, [[a, b]])),
neuper@37906
   454
(4 ,[1,2] ,true,#Relate ,Cor relations [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^
neuper@37906
   455
2 = r ^^^ 2] ,(rs_, [[A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]]))]*)
neuper@37906
   456
 val mits = get_obj g_met pt (fst p);
neuper@37906
   457
 val mits = complete_metitms oris pits [] 
neuper@37906
   458
			((#ppc o get_met) ["DiffApp","max_by_calculus"]);
neuper@37924
   459
 writeln (itms2str_ ctxt mits);
neuper@37906
   460
(*[
neuper@37906
   461
(1 ,[1,2,3] ,true ,#Given ,Cor fixedValues [r = Arbfix] ,(fix_, [[r = Arbfix]])),
neuper@37906
   462
(2 ,[1,2,3] ,true ,#Find ,Cor maximum A ,(m_, [A])),
neuper@37906
   463
(3 ,[1,2,3] ,true ,#Find ,Cor valuesFor [a, b] ,(vs_, [[a, b]])),
neuper@37906
   464
(4 ,[1,2] ,true ,#Relate ,Cor relations [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^
neuper@37906
   465
2 = r ^^^ 2] ,(rs_, [[A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]])),
neuper@37906
   466
(6 ,[1] ,true ,#undef ,Cor boundVariable a ,(boundVariable, [a])),
neuper@37906
   467
(9 ,[1,2] ,true ,#undef ,Cor interval {x. 0 <= x & x <= 2 * r} ,(interval, [{x.
neuper@37906
   468
0 <= x & x <= 2 * r}])),
neuper@37906
   469
(11 ,[1,2,3] ,true ,#undef ,Cor errorBound (eps = 0) ,(errorBound, [eps = 0]))]*)
neuper@37924
   470
 if itms2str_ ctxt mits = "[\n(1 ,[1,2,3] ,true ,#Given ,Cor fixedValues [r = Arbfix] ,(fix_, [[r = Arbfix]])),\n(2 ,[1,2,3] ,true ,#Find ,Cor maximum A ,(m_, [A])),\n(3 ,[1,2,3] ,true ,#Find ,Cor valuesFor [a, b] ,(vs_, [[a, b]])),\n(4 ,[1,2] ,true ,#Relate ,Cor relations [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2] ,(rs_, [[A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]])),\n(6 ,[1] ,true ,#undef ,Cor boundVariable a ,(v_, [a])),\n(9 ,[1,2] ,true ,#undef ,Cor interval {x. 0 <= x & x <= 2 * r} ,(itv_, [{x. 0 <= x & x <= 2 * r}])),\n(11 ,[1,2,3] ,true ,#undef ,Cor errorBound (eps = 0) ,(err_, [eps = 0]))]" then ()
neuper@37906
   471
 else raise error "completetest.sml: new behav. in complete_metitms 1";
neuper@37906
   472
neuper@37906
   473
neuper@37906
   474
"--------- maximum-example: complete_mod -------------------------";
neuper@37906
   475
"--------- maximum-example: complete_mod -------------------------";
neuper@37906
   476
"--------- maximum-example: complete_mod -------------------------";
neuper@37906
   477
 val (p,_,f,nxt,_,pt) = 
neuper@37906
   478
     CalcTreeTEST 
neuper@37906
   479
     [(["fixedValues [r=Arbfix]","maximum A",
neuper@37906
   480
	"valuesFor [a,b]",
neuper@37906
   481
	"relations [A=a*b, (a/2)^^^2 + (b/2)^^^2 = r^^^2]",
neuper@37906
   482
	"relations [A=a*b, (a/2)^^^2 + (b/2)^^^2 = r^^^2]",
neuper@37906
   483
	"relations [A=a*b, a/2=r*sin alpha, b/2=r*cos alpha]",
neuper@37906
   484
	
neuper@37906
   485
	"boundVariable a","boundVariable b","boundVariable alpha",
neuper@37906
   486
	"interval {x::real. 0 <= x & x <= 2*r}",
neuper@37906
   487
	"interval {x::real. 0 <= x & x <= 2*r}",
neuper@37906
   488
	"interval {x::real. 0 <= x & x <= pi}",
neuper@37906
   489
	"errorBound (eps=(0::real))"],
neuper@37906
   490
       ("DiffApp.thy",["maximum_of","function"],["DiffApp","max_by_calculus"])
neuper@37906
   491
       )];
neuper@37906
   492
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   493
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   494
 val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   495
 (*nxt = nxt = Add_Find "valuesFor [a]" FIXME.12.03 +handle Inc !*)
neuper@37906
   496
 val pits = get_obj g_pbl pt (fst p);
neuper@37924
   497
 writeln (itms2str_ ctxt pits);
neuper@37906
   498
(*[
neuper@37906
   499
(0 ,[] ,false ,#Find ,Inc valuesFor ,(??.empty, [])),
neuper@37906
   500
(0 ,[] ,false ,#Relate ,Inc relations [] ,(??.empty, [])),
neuper@37906
   501
(1 ,[1,2,3] ,true,#Given,Cor fixedValues [r = Arbfix] ,(fix_, [[r = Arbfix]])),
neuper@37906
   502
(2 ,[1,2,3] ,true ,#Find ,Cor maximum A ,(m_, [A]))]*) 
neuper@37906
   503
 val (pt,p) = complete_mod (pt,p);
neuper@37906
   504
 val pits = get_obj g_pbl pt (fst p);
neuper@37924
   505
 if itms2str_ ctxt pits = "[\n(1 ,[1,2,3] ,true ,#Given ,Cor fixedValues [r = Arbfix] ,(fix_, [[r = Arbfix]])),\n(2 ,[1,2,3] ,true ,#Find ,Cor maximum A ,(m_, [A])),\n(3 ,[1,2,3] ,true ,#Find ,Cor valuesFor [a, b] ,(vs_, [[a],[b]])),\n(4 ,[1,2] ,true ,#Relate ,Cor relations [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2] ,(rs_, [[A = a * b],[(a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]]))]" 
neuper@37906
   506
 then () else raise error "completetest.sml: new behav. in complete_mod 3";
neuper@37924
   507
 writeln (itms2str_ ctxt pits);
neuper@37906
   508
(*[
neuper@37906
   509
(1 ,[1,2,3] ,true,#Given,Cor fixedValues [r = Arbfix] ,(fix_, [[r = Arbfix]])),
neuper@37906
   510
(2 ,[1,2,3] ,true ,#Find ,Cor maximum A ,(m_, [A])),
neuper@37906
   511
(3 ,[1,2,3] ,true ,#Find ,Cor valuesFor [a, b] ,(valuesFor, [[a],[b]])),
neuper@37906
   512
(4 ,[1,2] ,true ,#Relate ,Cor relations [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^
neuper@37906
   513
2 = r ^^^ 2] ,(relations, [[A = a * b],[(a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]]))]*)
neuper@37906
   514
 val mits = get_obj g_met pt (fst p);
neuper@37924
   515
 if itms2str_ ctxt mits = "[\n(1 ,[1,2,3] ,true ,#Given ,Cor fixedValues [r = Arbfix] ,(fix_, [[r = Arbfix]])),\n(2 ,[1,2,3] ,true ,#Find ,Cor maximum A ,(m_, [A])),\n(3 ,[1,2,3] ,true ,#Find ,Cor valuesFor [a, b] ,(vs_, [[a],[b]])),\n(4 ,[1,2] ,true ,#Relate ,Cor relations [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2] ,(rs_, [[A = a * b],[(a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]])),\n(6 ,[1] ,true ,#undef ,Cor boundVariable a ,(v_, [a])),\n(9 ,[1,2] ,true ,#undef ,Cor interval {x. 0 <= x & x <= 2 * r} ,(itv_, [{x. 0 <= x & x <= 2 * r}])),\n(11 ,[1,2,3] ,true ,#undef ,Cor errorBound (eps = 0) ,(err_, [eps = 0]))]" 
neuper@37906
   516
 then () else raise error "completetest.sml: new behav. in complete_mod 3";
neuper@37924
   517
 writeln (itms2str_ ctxt mits);
neuper@37906
   518
(*[
neuper@37906
   519
(1 ,[1,2,3] ,true ,#Given ,Cor fixedValues [r = Arbfix] ,(fix_, [[r = Arbfix]])),
neuper@37906
   520
(2 ,[1,2,3] ,true ,#Find ,Cor maximum A ,(m_, [A])),
neuper@37906
   521
(3 ,[1,2,3] ,true ,#Find ,Cor valuesFor [a, b] ,(valuesFor, [[a],[b]])),
neuper@37906
   522
(4 ,[1,2] ,true ,#Relate ,Cor relations [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^
neuper@37906
   523
2 = r ^^^ 2] ,(relations, [[A = a * b],[(a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]])),
neuper@37906
   524
(6 ,[1] ,true ,#undef ,Cor boundVariable a ,(boundVariable, [a])),
neuper@37906
   525
(9 ,[1,2] ,true ,#undef ,Cor interval {x. 0 <= x & x <= 2 * r} ,(interval, [{x.
neuper@37906
   526
0 <= x & x <= 2 * r}])),
neuper@37906
   527
(11 ,[1,2,3] ,true ,#undef ,Cor errorBound (eps = 0) ,(errorBound, [eps = 0]))]*)
neuper@37906
   528