test/Tools/isac/Interpret/solve.sml
author Walther Neuper <neuper@ist.tugraz.at>
Tue, 28 Sep 2010 09:06:56 +0200
branchisac-update-Isa09-2
changeset 38031 460c24a6a6ba
parent 37967 bd4f7a35e892
child 38043 6a36acec95d9
permissions -rw-r--r--
tuned error and writeln

# raise error --> error
# writeln in atomtyp, atomty, atomt and xmlsrc
neuper@37906
     1
(* tests on solve.sml
neuper@37906
     2
   author: Walther Neuper
neuper@37906
     3
   060508,
neuper@37906
     4
   (c) due to copyright terms 
neuper@37906
     5
neuper@37906
     6
is NOT ONLY dependent on Test, but on other thys:
neuper@37906
     7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
neuper@37906
     8
uses from Rational.ML: Rrls cancel_p, Rrls cancel
neuper@37906
     9
which in turn
neuper@37906
    10
uses from Poly.ML: Rls make_polynomial, Rls expand_binom 
neuper@37906
    11
neuper@37906
    12
use"../smltest/ME/solve.sml";
neuper@37906
    13
use"solve.sml";
neuper@37906
    14
*)
neuper@37906
    15
neuper@37906
    16
"-----------------------------------------------------------------";
neuper@37906
    17
"table of contents -----------------------------------------------";
neuper@37906
    18
"-----------------------------------------------------------------";
neuper@37906
    19
"--------- interSteps on norm_Rational ---------------------------";
neuper@37906
    20
(*---vvv NOT working after meNEW.04mmdd*)
neuper@37906
    21
"###### val intermediate_ptyps = !ptyps;val intermediate_mets = !mets";
neuper@37906
    22
"--------- prepare pbl, met --------------------------------------";
neuper@37906
    23
"-------- cancel, without detail ------------------------------";
neuper@37906
    24
"-------- cancel, detail rev-rew (cancel) afterwards ----------";
neuper@37906
    25
"-------------- cancel_p, without detail ------------------------------";
neuper@37906
    26
"-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
neuper@37906
    27
(*---^^^ NOT working*)
neuper@37906
    28
"on 'miniscript with mini-subpbl':";
neuper@37906
    29
"------ interSteps'donesteps': on 'miniscript with mini-subpbl'---";
neuper@37906
    30
"------ interSteps'detailrls' after CompleteCalc -----------------";
neuper@37906
    31
"------ interSteps after appendFormula ---------------------------";
neuper@37906
    32
(*---vvv not brought to work 0403*)
neuper@37906
    33
"------ Detail_Set -----------------------------------------------";
neuper@37906
    34
"###### ptyps:= intermediate_ptyps;met:= intermediate_mets;#######";
neuper@37906
    35
"-----------------------------------------------------------------";
neuper@37906
    36
"-----------------------------------------------------------------";
neuper@37906
    37
"-----------------------------------------------------------------";
neuper@37906
    38
neuper@37906
    39
neuper@37906
    40
"--------- interSteps on norm_Rational ---------------------------";
neuper@37906
    41
"--------- interSteps on norm_Rational ---------------------------";
neuper@37906
    42
"--------- interSteps on norm_Rational ---------------------------";
neuper@37906
    43
states:=[];(*exp_IsacCore_Simp_Rat_Double_No-7.xml*)
neuper@37967
    44
CalcTree [(["TERM ((2/(x+3) + 2/(x - 3)) / (8*x/(x^2 - 9)))","normalform N"],
neuper@37906
    45
	   ("Rational.thy", 
neuper@37906
    46
	    ["rational","simplification"],
neuper@37906
    47
	    ["simplification","of_rationals"]))];
neuper@37906
    48
moveActiveRoot 1;
neuper@37906
    49
autoCalculate 1 CompleteCalc; 
neuper@37906
    50
val ((pt,_),_) = get_calc 1; show_pt pt;
neuper@37906
    51
neuper@37906
    52
(*with "Script SimplifyScript (t_::real) =       -----------------
neuper@37906
    53
       \  ((Rewrite_Set norm_Rational False) t_)"
neuper@37906
    54
case pt of Nd (PblObj _, [Nd _]) => ((*met only applies norm_Rational*))
neuper@38031
    55
	 | _ => error  "solve.sml: interSteps on norm_Rational 1";
neuper@37906
    56
interSteps 1 ([1], Res);
neuper@37906
    57
getFormulaeFromTo 1 ([1], Frm) ([1,12], Res) 99999 false;
neuper@37906
    58
interSteps 1 ([1,3], Res);
neuper@37906
    59
neuper@37906
    60
getTactic 1 ([1,4], Res)  (*here get the tactic, and ...*);
neuper@37906
    61
interSteps 1 ([1,5], Res) (*... here get the intermediate steps above*);
neuper@37906
    62
neuper@37906
    63
getTactic 1 ([1,5,1], Frm);
neuper@37906
    64
val ((pt,_),_) = get_calc 1; show_pt pt;
neuper@37906
    65
neuper@37906
    66
getTactic 1 ([1,8], Res) (*Rewrite_Set "common_nominator_p" *);
neuper@37906
    67
interSteps 1 ([1,9], Res)(*TODO.WN060606 reverse rew*);
neuper@37906
    68
--------------------------------------------------------------------*)
neuper@37906
    69
neuper@37906
    70
case pt of Nd (PblObj _, [Nd _, Nd _, Nd _, Nd _, Nd _, Nd _]) => ()
neuper@38031
    71
	 | _ => error  "solve.sml: interSteps on norm_Rational 1";
neuper@37906
    72
(*these have been done now by the script ^^^ immediately...
neuper@37906
    73
interSteps 1 ([1], Res);
neuper@37906
    74
getFormulaeFromTo 1 ([1], Frm) ([1,12], Res) 99999 false;
neuper@37906
    75
*)
neuper@37906
    76
interSteps 1 ([6], Res);
neuper@37906
    77
neuper@37906
    78
getTactic 1 ([6,1], Frm)  (*here get the tactic, and ...*);
neuper@37906
    79
interSteps 1 ([6,1], Res) (*... here get the intermediate steps above*);
neuper@37906
    80
neuper@37906
    81
getTactic 1 ([3,4,1], Frm);
neuper@37906
    82
val ((pt,_),_) = get_calc 1; show_pt pt;
neuper@37926
    83
val (Form form, SOME tac, asm) = pt_extract (pt, ([6], Res));
neuper@37906
    84
case (term2str form, tac, terms2strs asm) of
neuper@37906
    85
    ("1 / 2", Check_Postcond ["rational", "simplification"], 
neuper@37906
    86
     ["-36 * x + 4 * x ^^^ 3 ~= 0"]) => ()
neuper@38031
    87
  | _ => error "solve.sml: interSteps on norm_Rational 2";
neuper@37906
    88
neuper@37906
    89
neuper@37906
    90
neuper@37906
    91
"###### val intermediate_ptyps = !ptyps;val intermediate_mets = !mets";
neuper@37906
    92
"###### val intermediate_ptyps = !ptyps;val intermediate_mets = !mets";
neuper@37906
    93
"###### val intermediate_ptyps = !ptyps;val intermediate_mets = !mets";
neuper@37906
    94
val intermediate_ptyps = !ptyps;
neuper@37906
    95
val intermediate_mets = !mets;
neuper@37906
    96
neuper@37906
    97
"--------- prepare pbl, met --------------------------------------";
neuper@37906
    98
"--------- prepare pbl, met --------------------------------------";
neuper@37906
    99
"--------- prepare pbl, met --------------------------------------";
neuper@37906
   100
store_pbt
neuper@37906
   101
 (prep_pbt Test.thy "pbl_ttestt" [] e_pblID
neuper@37906
   102
 (["test"],
neuper@37906
   103
  [],
neuper@37926
   104
  e_rls, NONE, []));
neuper@37906
   105
store_pbt
neuper@37906
   106
 (prep_pbt Test.thy "pbl_ttestt_detail" [] e_pblID
neuper@37906
   107
 (["detail","test"],
neuper@37906
   108
  [("#Given" ,["realTestGiven t_"]),
neuper@37906
   109
   ("#Find"  ,["realTestFind s_"])
neuper@37906
   110
   ],
neuper@37926
   111
  e_rls, NONE, [["Test","test_detail"]]));
neuper@37906
   112
neuper@37906
   113
store_met
neuper@37906
   114
 (prep_met Test.thy "met_detbin" [] e_metID
neuper@37906
   115
 (["Test","test_detail_binom"]:metID,
neuper@37906
   116
  [("#Given" ,["realTestGiven t_"]),
neuper@37906
   117
   ("#Find"  ,["realTestFind s_"])
neuper@37906
   118
   ],
neuper@37906
   119
  {rew_ord'="sqrt_right",rls'=tval_rls,calc = [],srls=e_rls,prls=e_rls,
neuper@37906
   120
   crls=tval_rls, nrls=e_rls(*,
neuper@37906
   121
   asm_rls=[],asm_thm=[("real_mult_div_cancel2","")]*)},
neuper@37906
   122
 "Script Testterm (g_::real) =   \
neuper@37906
   123
 \(((Rewrite_Set expand_binoms False) @@\
neuper@37906
   124
 \  (Rewrite_Set cancel False)) g_)"
neuper@37906
   125
 ));
neuper@37906
   126
store_met
neuper@37906
   127
 (prep_met Test.thy "met_detpoly" [] e_metID
neuper@37906
   128
 (["Test","test_detail_poly"]:metID,
neuper@37906
   129
  [("#Given" ,["realTestGiven t_"]),
neuper@37906
   130
   ("#Find"  ,["realTestFind s_"])
neuper@37906
   131
   ],
neuper@37906
   132
  {rew_ord'="sqrt_right",rls'=tval_rls,calc=[],srls=e_rls,prls=e_rls,
neuper@37906
   133
   crls=tval_rls, nrls=e_rls(*,
neuper@37906
   134
   asm_rls=[],asm_thm=[("real_mult_div_cancel2","")]*)},
neuper@37906
   135
 "Script Testterm (g_::real) =   \
neuper@37906
   136
 \(((Rewrite_Set make_polynomial False) @@\
neuper@37906
   137
 \  (Rewrite_Set cancel_p False)) g_)"
neuper@37906
   138
 ));
neuper@37906
   139
neuper@37906
   140
(*---- funktionieren mit Rationals.ML: dummy-Funktionen(1)--------*)
neuper@37906
   141
neuper@37906
   142
"-------- cancel, without detail ------------------------------";
neuper@37906
   143
"-------- cancel, without detail ------------------------------";
neuper@37906
   144
"-------- cancel, without detail ------------------------------";
neuper@37906
   145
val fmz = ["realTestGiven (((3 + x) * (3 - x)) / ((3 + x) * (3 + x)))",
neuper@37906
   146
	   "realTestFind s"];
neuper@37906
   147
val (dI',pI',mI') =
neuper@37906
   148
  ("Test.thy",["detail","test"],["Test","test_detail_binom"]);
neuper@37906
   149
neuper@37906
   150
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   151
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   152
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   153
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   154
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   155
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   156
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   157
(*nxt = ("Apply_Method",Apply_Method ("Test.thy","test_detail"))*)
neuper@37906
   158
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   159
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   160
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   161
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   162
(*"(3 + -1 * x) / (3 + x)"*)
neuper@37906
   163
if nxt = ("End_Proof'",End_Proof') then ()
neuper@38031
   164
else error "details.sml, changed behaviour in: without detail";
neuper@37906
   165
neuper@37906
   166
 val str = pr_ptree pr_short pt;
neuper@37906
   167
 writeln str;
neuper@37906
   168
neuper@37906
   169
neuper@37906
   170
"-------- cancel, detail rev-rew (cancel) afterwards ----------";
neuper@37906
   171
"-------- cancel, detail rev-rew (cancel) afterwards ----------";
neuper@37906
   172
"-------- cancel, detail rev-rew (cancel) afterwards ----------";
neuper@37906
   173
 val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   174
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   175
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   176
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   177
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   178
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   179
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   180
 (*nxt = ("Apply_Method",Apply_Method ("Test.thy","test_detail"))*)
neuper@37906
   181
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   182
 (*val nxt = ("Rewrite_Set",Rewrite_Set "expand_binoms")*)
neuper@37906
   183
 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (* rewrite must exist for Detail*)
neuper@37906
   184
(* val nxt = ("Detail",Detail);"----------------------";*)
neuper@37906
   185
neuper@37906
   186
neuper@37906
   187
(*WN.11.9.03: after meNEW not yet implemented -------------------------*)
neuper@37906
   188
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   189
(*FIXXXXXME.040216 #####################################################
neuper@37906
   190
# val nxt = ("Detail", Detail) : string * tac
neuper@37906
   191
val it = "----------------------" : string
neuper@37906
   192
>  val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   193
val f = Form' (FormKF (~1, EdUndef, ...)) : mout
neuper@37906
   194
val nxt = ("Empty_Tac", Empty_Tac) : string * tac
neuper@37906
   195
val p = ([2, 1], Res) : pos'
neuper@37906
   196
#########################################################################
neuper@37906
   197
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   198
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   199
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   200
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   201
 (*val nxt = ("End_Detail",End_Detail)*)
neuper@37906
   202
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   203
 (*val nxt = ("Rewrite_Set",Rewrite_Set "cancel")*)
neuper@37906
   204
 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (* rewrite must exist for Detail*)
neuper@37906
   205
 val nxt = ("Detail",Detail);"----------------------";
neuper@37906
   206
 val (p,_,f,nxt,_,pt) = (me nxt p [] pt) handle e => print_exn e;
neuper@37906
   207
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   208
(*15.10.02*)
neuper@37906
   209
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   210
(*
neuper@37906
   211
rewrite "Rationals.thy" "tless_true""e_rls"true("sym_real_plus_minus_binom","")
neuper@37906
   212
	"3 ^^^ 2 - x ^^^ 2";
neuper@37906
   213
*)
neuper@37906
   214
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   215
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   216
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   217
 val (p,_,f,nxt,_,pt) = (me nxt p [] pt) handle e => print_exn e;
neuper@37906
   218
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   219
if f = Form' (FormKF (~1,EdUndef,0,Nundef,"(3 - x) / (3 + x)"))
neuper@37906
   220
   andalso nxt = ("End_Proof'",End_Proof') then ()
neuper@38031
   221
else error "new behaviour in details.sml, \
neuper@37906
   222
		 \cancel, rev-rew (cancel) afterwards";
neuper@37906
   223
FIXXXXXME.040216 #####################################################*)
neuper@37906
   224
neuper@37906
   225
(*---- funktionieren mit Rationals.ML: dummy-Funktionen(1)--------*)
neuper@37906
   226
neuper@37906
   227
"-------------- cancel_p, without detail ------------------------------";
neuper@37906
   228
"-------------- cancel_p, without detail ------------------------------";
neuper@37906
   229
"-------------- cancel_p, without detail ------------------------------";
neuper@37906
   230
val fmz = ["realTestGiven (((3 + x)*(3+(-1)*x)) / ((3+x) * (3+x)))",
neuper@37906
   231
	   "realTestFind s"];
neuper@37906
   232
val (dI',pI',mI') =
neuper@37906
   233
  ("Test.thy",["detail","test"],["Test","test_detail_poly"]);
neuper@37906
   234
neuper@37906
   235
(*val p = e_pos'; val c = [];
neuper@37906
   236
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   237
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   238
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   239
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   240
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   241
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   242
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   243
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   244
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   245
(*nxt = ("Apply_Method",Apply_Method ("Test.thy","test_detail"))*)
neuper@37906
   246
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   247
"(3 + x) * (3 + -1 * x) / ((3 + x) * (3 + x))";
neuper@37906
   248
neuper@37906
   249
 (*14.3.03*)
neuper@37906
   250
(*---------------WN060614?!?---
neuper@37906
   251
 val t = str2term "(3 + x) * (3 + -1 * x) / ((3 + x) * (3 + x))";
neuper@37926
   252
 val SOME (t,_) = rewrite_set_ thy false make_polynomial t; term2str t;
neuper@37906
   253
 "(9 + - (x ^^^ 2)) / (9 + 6 * x + x ^^^ 2)";
neuper@37926
   254
 val SOME (t,_) = rewrite_set_ thy false cancel_p t; term2str t;
neuper@37906
   255
 cancel_p_ thy t;
neuper@37906
   256
(---------------WN060614?!?---*)
neuper@37906
   257
neuper@37906
   258
 val t = str2term "(3 + x) * (3 + -1 * x)";
neuper@37926
   259
 val SOME (t,_) = rewrite_set_ thy false expand_poly t; term2str t;
neuper@37906
   260
 "3 * 3 + 3 * (-1 * x) + (x * 3 + x * (-1 * x))";
neuper@37926
   261
 val SOME (t,_) = rewrite_set_ thy false order_add_mult t; term2str t;
neuper@37906
   262
 "3 * 3 + (3 * x + (-1 * (3 * x) + -1 * (x * x)))";
neuper@37926
   263
 val SOME (t,_) = rewrite_set_ thy false simplify_power t; term2str t;
neuper@37906
   264
 "3 ^^^ 2 + (3 * x + (-1 * (3 * x) + -1 * x ^^^ 2))";
neuper@37926
   265
 val SOME (t,_) = rewrite_set_ thy false collect_numerals t; term2str t;
neuper@37906
   266
 "9 + (0 * x + -1 * x ^^^ 2)";
neuper@37926
   267
 val SOME (t,_) = rewrite_set_ thy false reduce_012 t; term2str t;
neuper@37906
   268
 "9 + - (x ^^^ 2)"; 
neuper@37906
   269
 (*14.3.03*)
neuper@37906
   270
neuper@37906
   271
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   272
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   273
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   274
(*"(3 + -1 * x) / (3 + x)"*)
neuper@37906
   275
if nxt = ("End_Proof'",End_Proof') then ()
neuper@38031
   276
else error "details.sml, changed behaviour in: cancel_p, without detail";
neuper@37906
   277
neuper@37906
   278
"-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
neuper@37906
   279
"-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
neuper@37906
   280
"-------------- cancel_p, detail rev-rew (cancel) afterwards ----------";
neuper@37906
   281
(* val p = e_pos'; val c = [];
neuper@37906
   282
 val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   283
 val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   284
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   285
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   286
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   287
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   288
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   289
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   290
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   291
 (*nxt = ("Apply_Method",Apply_Method ("Test.thy","test_detail_poly"))*)
neuper@37906
   292
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   293
 (*val nxt = ("Rewrite_Set",Rewrite_Set "make_polynomial")*)
neuper@37906
   294
 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (* rewrite must exist for Detail*)
neuper@37906
   295
neuper@37906
   296
(*14.3.03.FIXXXXXME since Isa02/reverse-rew.sml:
neuper@37906
   297
  fun make_deriv ...  Rls_ not yet impl. (| Thm | Calc) 
neuper@37906
   298
  Rls_ needed for make_polynomial ----------------------
neuper@37906
   299
 val nxt = ("Detail",Detail);"----------------------";
neuper@37906
   300
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   301
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   302
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   303
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   304
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   305
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   306
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   307
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   308
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   309
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   310
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   311
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   312
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   313
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   314
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   315
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   316
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   317
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   318
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   319
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   320
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   321
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   322
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   323
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   324
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   325
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   326
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   327
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   328
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   329
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   330
 if nxt = ("End_Detail",End_Detail) then ()
neuper@38031
   331
 else error "details.sml: new behav. in Detail make_polynomial";
neuper@37906
   332
----------------------------------------------------------------------*)
neuper@37906
   333
neuper@37906
   334
(*---------------
neuper@37906
   335
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   336
 (*val nxt = ("Rewrite_Set",Rewrite_Set "cancel_p")*)
neuper@37906
   337
 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (* rewrite must exist for Detail*)
neuper@37906
   338
 val nxt = ("Detail",Detail);"----------------------";
neuper@37906
   339
 val (p,_,f,nxt,_,pt) = (me nxt p [] pt) handle e => print_exn e;
neuper@37906
   340
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   341
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   342
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   343
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   344
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   345
 val (p,_,f,nxt,_,pt) = (me nxt p [] pt) handle e => print_exn e;
neuper@37906
   346
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   347
if f = Form' (FormKF (~1,EdUndef,0,Nundef,"(3 + x) / (3 - x)"))
neuper@37906
   348
   andalso nxt = ("End_Proof'",End_Proof') then ()
neuper@38031
   349
else error "new behaviour in details.sml, cancel_p afterwards";
neuper@37906
   350
neuper@37906
   351
----------------*)
neuper@37906
   352
neuper@37906
   353
neuper@37906
   354
neuper@37906
   355
neuper@37906
   356
neuper@37906
   357
val fmz = ["realTestGiven ((x+3)+(-1)*(2+6*x))",
neuper@37906
   358
	   "realTestFind s"];
neuper@37906
   359
val (dI',pI',mI') =
neuper@37906
   360
  ("Test.thy",["detail","test"],["Test","test_detail_poly"]);
neuper@37906
   361
neuper@37906
   362
(* val p = e_pos'; val c = [];
neuper@37906
   363
 val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   364
 val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   365
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   366
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   367
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   368
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   369
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   370
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   371
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   372
 (*nxt = ("Apply_Method",Apply_Method ("Test.thy","test_detail_poly"))*)
neuper@37906
   373
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   374
(*16.10.02 --- kommt auf POLY_EXCEPTION ?!??? ----------------------------
neuper@37906
   375
 (*val nxt = ("Rewrite_Set",Rewrite_Set "make_polynomial")*)
neuper@37906
   376
 val (p,_,f,nxt,_,pt) = me nxt p [] pt; (* rewrite must exist for Detail*)
neuper@37906
   377
 val nxt = ("Detail",Detail);"----------------------";
neuper@37906
   378
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   379
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   380
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   381
 val (p,_,f,nxt,_,pt) = me nxt p [] pt;
neuper@37906
   382
-------------------------------------------------------------------------*)
neuper@37906
   383
neuper@37906
   384
neuper@37906
   385
"------ interSteps'donesteps': on 'miniscript with mini-subpbl'---";
neuper@37906
   386
"------ interSteps'donesteps': on 'miniscript with mini-subpbl'---";
neuper@37906
   387
"------ interSteps'donesteps': on 'miniscript with mini-subpbl'---";
neuper@37906
   388
 states:=[];
neuper@37906
   389
 CalcTree
neuper@37906
   390
 [(["equality (x+1=2)", "solveFor x","solutions L"], 
neuper@37906
   391
   ("Test.thy", 
neuper@37906
   392
    ["sqroot-test","univariate","equation","test"],
neuper@37906
   393
    ["Test","squ-equ-test-subpbl1"]))];
neuper@37906
   394
 Iterator 1;
neuper@37906
   395
 moveActiveRoot 1;
neuper@37906
   396
 autoCalculate 1 CompleteCalc; 
neuper@37906
   397
 moveActiveRoot 1; 
neuper@37906
   398
neuper@37906
   399
 interSteps 1 ([],Res);
neuper@37906
   400
 val [(_,(((pt,_),_),[(_,ip)]))] = !states;
neuper@37906
   401
 val ("donesteps",_(*,ss*), lastpos) = detailstep pt ip;
neuper@37906
   402
 (*case ss of [(_,_,t1),(_,_,t2),(_,_,t3),(_,_,t4),(_,_,t5),(_,_,t6)] => 
neuper@37906
   403
	    (writeln o terms2str) [t1,t2,t3,t4,t5,t6]
neuper@38031
   404
	  | _ => error "details.sml: diff.behav. in detail miniscript";*) if lastpos = ([4], Res) then ()
neuper@38031
   405
 else error "details.sml: diff.behav. in interSteps'donesteps' 1";
neuper@37906
   406
neuper@37906
   407
 moveActiveDown 1;
neuper@37906
   408
 moveActiveDown 1;
neuper@37906
   409
 moveActiveDown 1;
neuper@37906
   410
 moveActiveDown 1; 
neuper@37906
   411
neuper@37906
   412
 interSteps 1 ([3],Pbl) (*subproblem*);
neuper@37906
   413
 val [(_,(((pt,_),_),[(_,ip)]))] = !states;
neuper@37906
   414
 val ("donesteps",_(*,ss*), lastpos) = detailstep pt ip;
neuper@37906
   415
 (*case ss of [(_,_,t1),(_,_,t2),(_,_,t3)] => 
neuper@37906
   416
	    (writeln o terms2str) [t1,t2,t3]
neuper@38031
   417
	  | _ => error "details.sml: diff.behav. in detail miniscript";*) if lastpos = ([3, 2], Res) then ()
neuper@38031
   418
 else error "details.sml: diff.behav. in interSteps'donesteps' 1";
neuper@37906
   419
neuper@37906
   420
neuper@37906
   421
(* val [(_,(((pt,_),_),[(_,ip)]))] = !states;
neuper@37906
   422
   writeln (pr_ptree pr_short pt);
neuper@37906
   423
   get_obj g_tac pt [4];
neuper@37906
   424
   *)
neuper@37906
   425
neuper@37906
   426
neuper@37906
   427
"------ interSteps'detailrls' after CompleteCalc -----------------";
neuper@37906
   428
"------ interSteps'detailrls' after CompleteCalc -----------------";
neuper@37906
   429
"------ interSteps'detailrls' after CompleteCalc -----------------";
neuper@37906
   430
 states:=[];
neuper@37906
   431
 CalcTree
neuper@37906
   432
 [(["equality (x+1=2)", "solveFor x","solutions L"], 
neuper@37906
   433
   ("Test.thy", 
neuper@37906
   434
    ["sqroot-test","univariate","equation","test"],
neuper@37906
   435
    ["Test","squ-equ-test-subpbl1"]))];
neuper@37906
   436
 Iterator 1;
neuper@37906
   437
 moveActiveRoot 1;
neuper@37906
   438
 autoCalculate 1 CompleteCalc;
neuper@37906
   439
 interSteps 1 ([],Res);
neuper@37906
   440
 moveActiveRoot 1; 
neuper@37906
   441
 moveActiveDown 1;
neuper@37906
   442
 moveActiveDown 1;
neuper@37906
   443
 moveActiveDown 1;  
neuper@37906
   444
 refFormula 1 (get_pos 1 1); (* 2 Res, <ISA> -1 + x = 0 </ISA> *)
neuper@37906
   445
neuper@37906
   446
 interSteps 1 ([2],Res);
neuper@37906
   447
 val [(_,(((pt,_),_),[(_,(p,_))]))] = !states;
neuper@37906
   448
 if length (children (get_nd pt p)) = 6 then ()
neuper@38031
   449
 else error "details.sml: diff.behav. in interSteps'detailrls' 1";
neuper@37906
   450
neuper@37906
   451
 moveActiveDown 1;
neuper@37906
   452
 moveActiveDown 1; refFormula 1 (get_pos 1 1); (* 3,1 Frm, <ISA> -1 + x = 0 </ISA>  *);
neuper@37906
   453
neuper@37906
   454
 interSteps 1 ([3,1],Frm) (*<ERROR> first formula on level has NO detail </E*);
neuper@37906
   455
 val [(_,(((pt,_),_),[(_,(p,_))]))] = !states;
neuper@37906
   456
 if length (children (get_nd pt p)) = 0 then () (*NO detail at ([xxx,1],Frm)*)
neuper@38031
   457
 else error "details.sml: diff.behav. in interSteps'detailrls' 2";
neuper@37906
   458
neuper@37906
   459
 moveActiveDown 1; 
neuper@37906
   460
 refFormula 1 (get_pos 1 1); (* 3,1 Res, <ISA> x = 0 + -1 * -1 </ISA> *)
neuper@37906
   461
neuper@37906
   462
 interSteps 1 ([3,1],Res);
neuper@37906
   463
 val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   464
 term2str (get_obj g_res pt [3,1,1]);(*"x = 0 + -1 * -1"  ok*)
neuper@37906
   465
 term2str (get_obj g_form pt [3,2]); (*"x = 0 + -1 * -1"  ok*)
neuper@37906
   466
 get_obj g_tac pt [3,1,1];           (*Rewrite_Inst.."risolate_bdv_add ok*)
neuper@37906
   467
neuper@37906
   468
 moveActiveDown 1; 
neuper@37906
   469
 refFormula 1 (get_pos 1 1); (* 3,2 Res, <ISA> x = 1 </ISA> *)
neuper@37906
   470
neuper@37906
   471
 interSteps 1 ([3,2],Res);
neuper@37906
   472
 val [(_,(((pt,_),_),[(_,(p,_))]))] = !states;
neuper@37906
   473
 if length (children (get_nd pt p)) = 2 then ()
neuper@38031
   474
 else error "details.sml: diff.behav. in interSteps'detailrls' 3";
neuper@37906
   475
neuper@37906
   476
 val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   477
neuper@37906
   478
neuper@37906
   479
"------ interSteps after appendFormula ---------------------------";
neuper@37906
   480
"------ interSteps after appendFormula ---------------------------";
neuper@37906
   481
"------ interSteps after appendFormula ---------------------------";
neuper@37906
   482
states:=[];
neuper@37906
   483
CalcTree
neuper@37906
   484
[(["equality (x+1=2)", "solveFor x","solutions L"], 
neuper@37906
   485
  ("Test.thy", 
neuper@37906
   486
   ["sqroot-test","univariate","equation","test"],
neuper@37906
   487
   ["Test","squ-equ-test-subpbl1"]))];
neuper@37906
   488
Iterator 1;
neuper@37906
   489
moveActiveRoot 1;
neuper@37906
   490
autoCalculate 1 CompleteCalcHead;
neuper@37906
   491
autoCalculate 1 (Step 1);
neuper@37906
   492
autoCalculate 1 (Step 1);
neuper@37906
   493
appendFormula 1 "x - 1 = 0"(*generates intermediate steps*);
neuper@37906
   494
(*these are not shown, because the resulting formula is on the same
neuper@37906
   495
  level as the previous formula*)
neuper@37906
   496
interSteps 1 ([2],Res) (*error: last unchanged was ([2, 9], Res)*); 
neuper@37906
   497
(*...and these are the internals*)
neuper@37906
   498
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   499
val (_,_,lastpos) =detailstep pt p;
neuper@37906
   500
if p = ([2], Res) andalso lastpos = ([2, 9], Res) then ()
neuper@38031
   501
else error "solve.sml: diff.beh. after appendFormula x - 1 = 0";
neuper@37906
   502
neuper@37906
   503
neuper@37906
   504
"------ Detail_Set -----------------------------------------------";
neuper@37906
   505
"------ Detail_Set -----------------------------------------------";
neuper@37906
   506
"------ Detail_Set -----------------------------------------------";
neuper@37906
   507
 states:=[];
neuper@37906
   508
 CalcTree      (*start of calculation, return No.1*)
neuper@37906
   509
 [(["equality (x+1=2)", "solveFor x","solutions L"], 
neuper@37906
   510
   ("Test.thy", 
neuper@37906
   511
    ["sqroot-test","univariate","equation","test"],
neuper@37906
   512
    ["Test","squ-equ-test-subpbl1"]))];
neuper@37906
   513
 Iterator 1; moveActiveRoot 1; 
neuper@37906
   514
 autoCalculate 1 CompleteCalcHead;
neuper@37906
   515
 autoCalculate 1 (Step 1);
neuper@37906
   516
 autoCalculate 1 (Step 1);
neuper@37906
   517
neuper@37906
   518
 fetchProposedTactic 1 (*DG decides to do this tactic in detail*);
neuper@37906
   519
 (*TODO ...*)
neuper@37906
   520
 setNextTactic 1 (Detail_Set "Test_simplify");
neuper@37906
   521
neuper@37906
   522
neuper@37906
   523
 val ((pt,p),tacis) = get_calc 1;
neuper@37906
   524
 val str = pr_ptree pr_short pt;
neuper@37906
   525
 writeln str;
neuper@37906
   526
neuper@37906
   527
 print_depth 3;
neuper@37906
   528
 term2str (fst (get_obj g_result pt [1]));
neuper@37906
   529
neuper@37906
   530
neuper@37906
   531
neuper@37906
   532
neuper@37906
   533
"###### ptyps:= intermediate_ptyps;met:= intermediate_mets;#######";
neuper@37906
   534
"###### ptyps:= intermediate_ptyps;met:= intermediate_mets;#######";
neuper@37906
   535
"###### ptyps:= intermediate_ptyps;met:= intermediate_mets;#######";
neuper@37906
   536
ptyps:= intermediate_ptyps;
neuper@37906
   537
mets:= intermediate_mets;