src/Pure/isac/smltest/OLDTESTS/scriptnew.sml
author Walther Neuper <neuper@ist.tugraz.at>
Wed, 21 Jul 2010 13:53:39 +0200
branchisac-from-Isabelle2009-2
changeset 37871 875b6efa7ced
permissions -rw-r--r--
added isac-hook in Pure/thm and isac-code
neuper@37871
     1
(* use"../systest/scriptnew.sml";
neuper@37871
     2
   use"systest/scriptnew.sml";
neuper@37871
     3
   use"scriptnew.sml";
neuper@37871
     4
   *)
neuper@37871
     5
neuper@37871
     6
(*contents*)
neuper@37871
     7
" --- test 30.4.02 Testterm:  Repeat Repeat Or ------------------ ";
neuper@37871
     8
" --- test  9.5.02 Testeq: While Try Repeat @@ ------------------ ";
neuper@37871
     9
" --- test 11.5.02 Testeq: let e_ =... in [e_] ------------------ ";
neuper@37871
    10
" _________________ me + nxt_step from script ___________________ ";
neuper@37871
    11
" _________________ me + sqrt-equ-test: 1.norm_equation  ________ ";
neuper@37871
    12
" _________________ equation with x =(-12)/5, but L ={} ------- ";
neuper@37871
    13
"------------------ script with Map, Subst (biquadr.equ.)---------";
neuper@37871
    14
(*contents*)
neuper@37871
    15
neuper@37871
    16
neuper@37871
    17
neuper@37871
    18
neuper@37871
    19
"  --- test 30.4.02 Testterm:  Repeat Repeat Or ------------------ ";
neuper@37871
    20
"  --- test 30.4.02 Testterm:  Repeat Repeat Or ------------------ ";
neuper@37871
    21
"  --- test 30.4.02 Testterm:  Repeat Repeat Or ------------------ ";
neuper@37871
    22
store_pbt
neuper@37871
    23
 (prep_pbt Test.thy "pbl_testss" [] e_pblID
neuper@37871
    24
 (["tests"],
neuper@37871
    25
  []:(string * string list) list,
neuper@37871
    26
  e_rls, None, []));
neuper@37871
    27
store_pbt
neuper@37871
    28
 (prep_pbt Test.thy "pbl_testss_term" [] e_pblID
neuper@37871
    29
 (["met_testterm","tests"],
neuper@37871
    30
  [("#Given" ,["realTestGiven g_"]),
neuper@37871
    31
   ("#Find"  ,["realTestFind f_"])
neuper@37871
    32
  ],
neuper@37871
    33
  e_rls, None, []));
neuper@37871
    34
store_met
neuper@37871
    35
 (prep_met Test.thy "met_test_simp" [] e_metID
neuper@37871
    36
 (*test for simplification*)
neuper@37871
    37
 (["Test","met_testterm"]:metID,
neuper@37871
    38
  [("#Given" ,["realTestGiven g_"]),
neuper@37871
    39
   ("#Find"  ,["realTestFind f_"])
neuper@37871
    40
   ],
neuper@37871
    41
   {rew_ord'="tless_true",rls'=tval_rls,srls=e_rls,prls=e_rls,calc=[],
neuper@37871
    42
    crls=tval_rls, nrls=e_rls(*,
neuper@37871
    43
    asm_rls=[],asm_thm=[]*)},
neuper@37871
    44
 "Script Testterm (g_::real) =   \
neuper@37871
    45
 \Repeat\
neuper@37871
    46
 \  ((Repeat (Rewrite rmult_1 False)) Or\
neuper@37871
    47
 \   (Repeat (Rewrite rmult_0 False)) Or\
neuper@37871
    48
 \   (Repeat (Rewrite radd_0 False))) g_"
neuper@37871
    49
 ));
neuper@37871
    50
val fmz = ["realTestGiven ((0+0)*(1*(1*a)))","realTestFind F"];
neuper@37871
    51
val (dI',pI',mI') = ("Test.thy",["met_testterm","tests"],
neuper@37871
    52
		     ["Test","met_testterm"]);
neuper@37871
    53
(*val p = e_pos'; val c = []; 
neuper@37871
    54
val nxt = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37871
    55
val (p,_,f,nxt,_,pt) = me nxt p c EmptyPtree;*)
neuper@37871
    56
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37871
    57
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    58
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    59
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    60
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    61
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    62
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    63
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","met_testterm"))*)
neuper@37871
    64
(*----script 111 ------------------------------------------------*)
neuper@37871
    65
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    66
(*"(#0 + #0) * (#1 * (#1 * a))"  nxt= Rewrite ("rmult_1",*)
neuper@37871
    67
(*----script 222 ------------------------------------------------*)
neuper@37871
    68
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    69
(*"(#0 + #0) * (#1 * a)"         nxt= Rewrite ("rmult_1",*)
neuper@37871
    70
(*----script 333 ------------------------------------------------*)
neuper@37871
    71
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    72
(*"(#0 + #0) * a"                nxt= Rewrite ("radd_0",*)
neuper@37871
    73
(*----script 444 ------------------------------------------------*)
neuper@37871
    74
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    75
(*"#0 * a"*)
neuper@37871
    76
(*----script 555 ------------------------------------------------*)
neuper@37871
    77
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    78
(*"#0"*)
neuper@37871
    79
if p=([4],Res) then ()
neuper@37871
    80
else raise error ("new behaviour in 30.4.02 Testterm: p="^(pos'2str p));
neuper@37871
    81
(*----script 666 ------------------------------------------------*)
neuper@37871
    82
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
    83
(*"#0"*)
neuper@37871
    84
if nxt=("End_Proof'",End_Proof') then ()
neuper@37871
    85
else raise error "new behaviour in 30.4.02 Testterm: End_Proof";
neuper@37871
    86
neuper@37871
    87
neuper@37871
    88
neuper@37871
    89
neuper@37871
    90
neuper@37871
    91
"  --- test 9.5.02 Testeq: While Try Repeat @@ ------------------ ";
neuper@37871
    92
"  --- test 9.5.02 Testeq: While Try Repeat @@ ------------------ ";
neuper@37871
    93
"  --- test 9.5.02 Testeq: While Try Repeat @@ ------------------ ";
neuper@37871
    94
store_pbt
neuper@37871
    95
 (prep_pbt Test.thy "pbl_testss_eq" [] e_pblID
neuper@37871
    96
 (["met_testeq","tests"],
neuper@37871
    97
  [("#Given" ,["boolTestGiven e_"]),
neuper@37871
    98
   ("#Find"  ,["boolTestFind v_i_"])
neuper@37871
    99
  ],
neuper@37871
   100
  e_rls, None, []));
neuper@37871
   101
neuper@37871
   102
store_met
neuper@37871
   103
 (prep_met Test.thy "met_test_eq1" [] e_metID
neuper@37871
   104
 (["Test","testeq1"]:metID,
neuper@37871
   105
   [("#Given",["boolTestGiven e_"]),
neuper@37871
   106
   ("#Where" ,[]), 
neuper@37871
   107
   ("#Find"  ,["boolTestFind v_i_"]) 
neuper@37871
   108
   ],
neuper@37871
   109
   {rew_ord'="tless_true",rls'=tval_rls,
neuper@37871
   110
    srls=append_rls "testeq1_srls" e_rls 
neuper@37871
   111
		    [Calc ("Test.contains'_root", eval_contains_root"")],
neuper@37871
   112
    prls=e_rls,calc=[], crls=tval_rls, nrls=e_rls
neuper@37871
   113
		  (*,asm_rls=[],asm_thm=[("square_equation_left","")]*)},
neuper@37871
   114
 "Script Testeq (e_::bool) =                                        \
neuper@37871
   115
   \(While (contains_root e_) Do                                     \
neuper@37871
   116
   \((Try (Repeat (Rewrite rroot_square_inv False))) @@    \
neuper@37871
   117
   \  (Try (Repeat (Rewrite square_equation_left True))) @@ \
neuper@37871
   118
   \  (Try (Repeat (Rewrite radd_0 False)))))\
neuper@37871
   119
   \ e_"
neuper@37871
   120
 ));
neuper@37871
   121
neuper@37871
   122
val fmz = ["boolTestGiven (0+(sqrt(sqrt(sqrt a))^^^2)^^^2=0)",
neuper@37871
   123
	   "boolTestFind v_i_"];
neuper@37871
   124
val (dI',pI',mI') = ("Test.thy",["met_testeq","tests"],
neuper@37871
   125
		     ["Test","testeq1"]);
neuper@37871
   126
val Script sc = (#scr o get_met) ["Test","testeq1"];
neuper@37871
   127
atomt sc;
neuper@37871
   128
(*val p = e_pos'; val c = []; 
neuper@37871
   129
val nxt = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37871
   130
val (p,_,f,nxt,_,pt) = me nxt p c EmptyPtree;*)
neuper@37871
   131
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37871
   132
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   133
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   134
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   135
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   136
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   137
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   138
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","testeq1")) *)
neuper@37871
   139
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   140
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   141
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   142
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"#0 + sqrt a = #0"))
neuper@37871
   143
val nxt = ("Rewrite",Rewrite ("radd_0","#0 + ?k = ?k"))*)
neuper@37871
   144
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   145
neuper@37871
   146
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   147
(*** No such constant: "Test.contains'_root"  *)
neuper@37871
   148
neuper@37871
   149
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   150
if f=(Form' (FormKF (~1,EdUndef,0,Nundef,"a = 0 ^^^ 2"))) andalso
neuper@37871
   151
   nxt=("End_Proof'",End_Proof') then ()
neuper@37871
   152
else raise error "different behaviour test 9.5.02 Testeq: While Try Repeat @@";
neuper@37871
   153
neuper@37871
   154
neuper@37871
   155
neuper@37871
   156
neuper@37871
   157
" --- test 11.5.02 Testeq: let e_ =... in [e_] --------- ";
neuper@37871
   158
" --- test 11.5.02 Testeq: let e_ =... in [e_] --------- ";
neuper@37871
   159
" --- test 11.5.02 Testeq: let e_ =... in [e_] --------- ";
neuper@37871
   160
store_met
neuper@37871
   161
 (prep_met Test.thy "met_test_let" [] e_metID
neuper@37871
   162
 (["Test","testlet"]:metID,
neuper@37871
   163
   [("#Given",["boolTestGiven e_"]),
neuper@37871
   164
   ("#Where" ,[]), 
neuper@37871
   165
   ("#Find"  ,["boolTestFind v_i_"]) 
neuper@37871
   166
   ],
neuper@37871
   167
   {rew_ord'="tless_true",rls'=tval_rls,
neuper@37871
   168
    srls=append_rls "testlet_srls" e_rls 
neuper@37871
   169
		    [Calc ("Test.contains'_root",eval_contains_root"")],
neuper@37871
   170
    prls=e_rls,calc=[], crls=tval_rls, nrls=e_rls
neuper@37871
   171
		  (*,asm_rls=[],asm_thm=[("square_equation_left","")]*)},
neuper@37871
   172
   "Script Testeq2 (e_::bool) =                                        \
neuper@37871
   173
   \(let e_ =\
neuper@37871
   174
   \  ((While (contains_root e_) Do                                     \
neuper@37871
   175
   \   (Rewrite square_equation_left True))\
neuper@37871
   176
   \   e_)\
neuper@37871
   177
   \in [e_::bool])"
neuper@37871
   178
   ));
neuper@37871
   179
val Script sc = (#scr o get_met) ["Test","testlet"];
neuper@37871
   180
writeln(term2str sc);
neuper@37871
   181
val fmz = ["boolTestGiven (sqrt a = 0)",
neuper@37871
   182
	   "boolTestFind v_i_"];
neuper@37871
   183
val (dI',pI',mI') = ("Test.thy",["met_testeq","tests"],
neuper@37871
   184
		     ["Test","testlet"]);
neuper@37871
   185
(*val p = e_pos'; val c = []; 
neuper@37871
   186
val nxt = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37871
   187
val (p,_,f,nxt,_,pt) = me nxt p c EmptyPtree;*)
neuper@37871
   188
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37871
   189
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   190
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   191
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   192
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   193
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   194
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   195
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","testlet"))*)
neuper@37871
   196
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   197
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   198
val (p,_,f,nxt,_,pt) = (me nxt p c pt) handle e => print_exn e;
neuper@37871
   199
if f=(Form' (FormKF (~1,EdUndef,0,Nundef,"[a = 0 ^^^ 2]"))) andalso
neuper@37871
   200
   nxt=("End_Proof'",End_Proof') then ()
neuper@37871
   201
else raise error "different behaviour in test 11.5.02 Testeq: let e_ =... in [e_]";
neuper@37871
   202
neuper@37871
   203
neuper@37871
   204
neuper@37871
   205
neuper@37871
   206
" _________________ me + nxt_step from script _________________ ";
neuper@37871
   207
" _________________ me + nxt_step from script _________________ ";
neuper@37871
   208
" _________________ me + nxt_step from script _________________ ";
neuper@37871
   209
val fmz = ["equality (sqrt(9+4*x)=sqrt x + sqrt(5+x))",
neuper@37871
   210
	   "solveFor x","solutions L"];
neuper@37871
   211
val (dI',pI',mI') =
neuper@37871
   212
  ("Test.thy",["sqroot-test","univariate","equation","test"],
neuper@37871
   213
   ["Test","sqrt-equ-test"]);
neuper@37871
   214
val Script sc = (#scr o get_met) ["Test","sqrt-equ-test"];
neuper@37871
   215
writeln(term2str sc);
neuper@37871
   216
neuper@37871
   217
"--- s1 ---";
neuper@37871
   218
(*val p = e_pos'; val c = []; 
neuper@37871
   219
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37871
   220
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37871
   221
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37871
   222
"--- s2 ---";
neuper@37871
   223
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   224
(* val nxt =
neuper@37871
   225
  ("Add_Given",
neuper@37871
   226
   Add_Given "equality (sqrt (#9 + #4 * x) = sqrt x + sqrt (#5 + x))");*)
neuper@37871
   227
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   228
"--- s3 ---";
neuper@37871
   229
(* val nxt = ("Add_Given",Add_Given "solveFor x");*)
neuper@37871
   230
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   231
"--- s4 ---";
neuper@37871
   232
(* val nxt = ("Add_Given",Add_Given "errorBound (eps = #0)");*)
neuper@37871
   233
"--- s5 ---";
neuper@37871
   234
(* val nxt = ("Add_Find",Add_Find "solutions L");*)
neuper@37871
   235
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   236
"--- s6 ---";
neuper@37871
   237
(* val nxt = ("Specify_Theory",Specify_Theory "Test.thy");*)
neuper@37871
   238
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   239
"--- s7 ---";
neuper@37871
   240
(* val nxt =
neuper@37871
   241
  ("Specify_Problem",
neuper@37871
   242
   Specify_Problem ["sqroot-test","univariate","equation","test"]);*)
neuper@37871
   243
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   244
"--- s8 ---";
neuper@37871
   245
(* val nxt = ("Specify_Method",Specify_Method ("Test.thy","sqrt-equ-test"));*)
neuper@37871
   246
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   247
"--- s9 ---";
neuper@37871
   248
(* val nxt = ("Apply_Method",Apply_Method ("Test.thy","sqrt-equ-test"));*)
neuper@37871
   249
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   250
"--- 1 ---";
neuper@37871
   251
(* val nxt = ("Rewrite",Rewrite ("square_equation_left",""));*)
neuper@37871
   252
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   253
"--- 2 ---";
neuper@37871
   254
(* val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify");*)
neuper@37871
   255
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   256
"--- 3 ---";
neuper@37871
   257
(* val nxt = ("Rewrite_Set",Rewrite_Set "rearrange_assoc");*)
neuper@37871
   258
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   259
"--- 4 ---";
neuper@37871
   260
(* val nxt = ("Rewrite_Set",Rewrite_Set "isolate_root");*)
neuper@37871
   261
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   262
"--- 5 ---";
neuper@37871
   263
(* val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify");*)
neuper@37871
   264
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   265
"--- 6 ---";
neuper@37871
   266
(* val nxt = ("Rewrite",Rewrite ("square_equation_left",""));*)
neuper@37871
   267
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   268
"--- 7 ---";
neuper@37871
   269
(* val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify");*)
neuper@37871
   270
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   271
"--- 8<> ---";
neuper@37871
   272
(* val nxt = ("Rewrite_Set",Rewrite_Set "rearrange_assoc");*)
neuper@37871
   273
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   274
"--- 9<> ---";
neuper@37871
   275
(* val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify");*)
neuper@37871
   276
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   277
"--- 10<> ---";
neuper@37871
   278
(* val nxt = ("Rewrite_Set",Rewrite_Set "norm_equation");*)
neuper@37871
   279
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   280
"--- 11<> ---";
neuper@37871
   281
(* val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify");*)
neuper@37871
   282
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   283
"--- 12<> ---.";
neuper@37871
   284
(* val nxt = ("Rewrite_Set_Inst",Rewrite_Set_Inst (["(bdv,x)"],"isolate_bdv"));*)
neuper@37871
   285
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   286
"--- 13<> ---";
neuper@37871
   287
(* val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify");*)
neuper@37871
   288
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   289
"--- 14<> ---";
neuper@37871
   290
(* nxt = ("Check_Postcond",Check_Postcond ("Test.thy","sqrt-equ-test"));*)
neuper@37871
   291
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   292
if f<>(Form' (FormKF (~1,EdUndef,0,Nundef,"[x = 4]")))
neuper@37871
   293
then raise error "scriptnew.sml 1: me + tacs from script: new behaviour" 
neuper@37871
   294
else ();
neuper@37871
   295
"--- 15<> ---";
neuper@37871
   296
(* val nxt = ("End_Proof'",End_Proof');*)
neuper@37871
   297
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   298
neuper@37871
   299
writeln (pr_ptree pr_short pt);
neuper@37871
   300
writeln("result: "^((term2str o fst o (get_obj g_result pt)) [])^
neuper@37871
   301
"\n=============================================================");
neuper@37871
   302
(*get_obj g_asm pt [];
neuper@37871
   303
val it = [("#0 <= sqrt x + sqrt (#5 + x)",[1]),("#0 <= #9 + #4 * x",[1]),...*)
neuper@37871
   304
neuper@37871
   305
neuper@37871
   306
neuper@37871
   307
neuper@37871
   308
neuper@37871
   309
" _________________ me + sqrt-equ-test: 1.norm_equation  _________________ ";
neuper@37871
   310
" _________________ me + sqrt-equ-test: 1.norm_equation  _________________ ";
neuper@37871
   311
" _________________ me + sqrt-equ-test: 1.norm_equation  _________________ ";
neuper@37871
   312
val fmz = ["equality (sqrt(9+4*x)=sqrt x + sqrt(5+x))",
neuper@37871
   313
	   "solveFor x","errorBound (eps=0)",
neuper@37871
   314
	   "solutions L"];
neuper@37871
   315
val (dI',pI',mI') =
neuper@37871
   316
  ("Test.thy",["sqroot-test","univariate","equation","test"],
neuper@37871
   317
   ["Test","sqrt-equ-test"]);
neuper@37871
   318
 val Script sc = (#scr o get_met) ["Test","sqrt-equ-test"];
neuper@37871
   319
 (writeln o term2str) sc;
neuper@37871
   320
"--- s1 ---";
neuper@37871
   321
(*val p = e_pos'; val c = []; 
neuper@37871
   322
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37871
   323
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37871
   324
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37871
   325
"--- s2 ---";
neuper@37871
   326
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   327
(* val nxt = ("Add_Given",
neuper@37871
   328
   Add_Given "equality (sqrt (#9 + #4 * x) = sqrt x + sqrt (#5 + x))");*)
neuper@37871
   329
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   330
"--- s3 ---";
neuper@37871
   331
(* val nxt = ("Add_Given",Add_Given "solveFor x");*)
neuper@37871
   332
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   333
"--- s4 ---";
neuper@37871
   334
(* val nxt = ("Add_Given",Add_Given "errorBound (eps = #0)");*)
neuper@37871
   335
(*val (p,_,f,nxt,_,pt) = me nxt p [1] pt;*)
neuper@37871
   336
"--- s5 ---";
neuper@37871
   337
(* val nxt = ("Add_Find",Add_Find "solutions L");*)
neuper@37871
   338
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   339
"--- s6 ---";
neuper@37871
   340
(* val nxt = ("Specify_Theory",Specify_Theory "Test.thy");*)
neuper@37871
   341
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   342
"--- s7 ---";
neuper@37871
   343
(* val nxt = ("Specify_Problem",
neuper@37871
   344
   Specify_Problem ["sqroot-test","univariate","equation","test"]);*)
neuper@37871
   345
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   346
"--- s8 ---";
neuper@37871
   347
(* val nxt = ("Specify_Method",Specify_Method ("Test.thy","sqrt-equ-test"));*)
neuper@37871
   348
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   349
"--- s9 ---";
neuper@37871
   350
(* val nxt = ("Apply_Method",Apply_Method ("Test.thy","sqrt-equ-test"));*)
neuper@37871
   351
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   352
(*"sqrt (9 + 4 * x) = sqrt x + sqrt (5 + x)"*)
neuper@37871
   353
"--- !!! x1 --- 1.norm_equation";
neuper@37871
   354
(*###*)val nxt = ("Rewrite_Set",Rewrite_Set "norm_equation");
neuper@37871
   355
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   356
"--- !!! x2 --- 1.norm_equation";
neuper@37871
   357
(*meNEW: "9 + 4 * x = (sqrt x + sqrt (5 + x)) ^^^ 2" -- NICHT norm_equation!!*)
neuper@37871
   358
(*meOLD: "sqrt (9 + 4 * x) + -1 * (sqrt x + sqrt (5 + x)) = 0"*)
neuper@37871
   359
(* val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify");*)
neuper@37871
   360
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   361
(*"-1 * sqrt x + (-1 * sqrt (5 + x) + sqrt (9 + 4 * x)) = 0"*)
neuper@37871
   362
(*(me nxt p [1] pt) handle e => print_exn_G e;*)
neuper@37871
   363
"--- !!! x3 --- 1.norm_equation";
neuper@37871
   364
(*val nxt = ("Empty_Tac",Empty_Tac) ### helpless*)
neuper@37871
   365
(*###*)val nxt = ("Rewrite_Set",Rewrite_Set "rearrange_assoc");
neuper@37871
   366
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   367
"--- !!! x4 --- 1.norm_equation";
neuper@37871
   368
(*"-1 * sqrt x + -1 * sqrt (5 + x) + sqrt (9 + 4 * x) = 0"*)
neuper@37871
   369
(*val nxt = ("Rewrite_Set",Rewrite_Set "isolate_root")*)
neuper@37871
   370
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   371
"--- !!! x5 --- 1.norm_equation";
neuper@37871
   372
(*"sqrt (9 + 4 * x) = 0 + -1 * (-1 * sqrt x + -1 * sqrt (5 + x))"*)
neuper@37871
   373
(* val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify");*)
neuper@37871
   374
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   375
neuper@37871
   376
(*FIXXXXXXXXXXXXXXXXXXXXXXXME reestablish check:
neuper@37871
   377
if f= Form'(FormKF(~1,EdUndef,1,Nundef,"sqrt (9 + 4 * x) = sqrt x + sqrt (5 + x)"))
neuper@37871
   378
then() else raise error "new behaviour in test-example 1.norm sqrt-equ-test";
neuper@37871
   379
#################################################*)
neuper@37871
   380
neuper@37871
   381
(* use"../tests/scriptnew.sml";
neuper@37871
   382
   *)
neuper@37871
   383
neuper@37871
   384
" _________________ equation with x =(-12)/5, but L ={} ------- ";
neuper@37871
   385
neuper@37871
   386
val fmz = ["equality (sqrt(9+4*x)=sqrt x + sqrt(-3+x))",
neuper@37871
   387
	   "solveFor x","errorBound (eps=0)",
neuper@37871
   388
	   "solutions L"];
neuper@37871
   389
val (dI',pI',mI') =
neuper@37871
   390
  ("Test.thy",["sqroot-test","univariate","equation","test"],
neuper@37871
   391
   ["Test","square_equation"]);
neuper@37871
   392
neuper@37871
   393
(*val p = e_pos'; val c = []; 
neuper@37871
   394
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37871
   395
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37871
   396
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37871
   397
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37871
   398
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   399
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   400
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   401
(*val nxt = ("Apply_Method",Apply_Method ["Test","square_equation"])*)
neuper@37871
   402
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   403
(*val nxt = "square_equation_left",
neuper@37871
   404
      "[| 0 <= ?a; 0 <= ?b |] ==> (sqrt ?a = ?b) = (?a = ?b ^^^ 2)"))*)
neuper@37871
   405
get_assumptions_ pt p;
neuper@37871
   406
(*it = [] : string list;*)
neuper@37871
   407
trace_rewrite:=true;
neuper@37871
   408
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   409
trace_rewrite:=false;
neuper@37871
   410
val asms = get_assumptions_ pt p;
neuper@37871
   411
if asms = [(str2term "0 <= 9 + 4 * x",[1]),
neuper@37871
   412
	   (str2term "0 <= x",[1]),
neuper@37871
   413
	   (str2term "0 <= -3 + x",[1])] then ()
neuper@37871
   414
else raise error "scriptnew.sml diff.behav. in sqrt assumptions 1";
neuper@37871
   415
neuper@37871
   416
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   417
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   418
(*val nxt = Rewrite ("square_equation_left",     *)
neuper@37871
   419
val asms = get_assumptions_ pt p;
neuper@37871
   420
[("0 <= 9 + 4 * x",[1]),("0 <= x",[1]),("0 <= -3 + x",[1])];
neuper@37871
   421
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   422
val asms = get_assumptions_ pt p;
neuper@37871
   423
if asms = [(str2term "0 <= 9 + 4 * x",[1]),
neuper@37871
   424
	   (str2term "0 <= x",[1]),
neuper@37871
   425
	   (str2term "0 <= -3 + x",[1]),
neuper@37871
   426
	   (str2term "0 <= x ^^^ 2 + -3 * x",[6]),
neuper@37871
   427
	   (str2term "0 <= 6 + x",[6])] then ()
neuper@37871
   428
else raise error "scriptnew.sml diff.behav. in sqrt assumptions 2";
neuper@37871
   429
neuper@37871
   430
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   431
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   432
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   433
(*val nxt = Subproblem ("Test.thy",["linear","univariate","equation","test"*)
neuper@37871
   434
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   435
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   436
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   437
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   438
(*val nxt = ("Apply_Method",Apply_Method ["Test","solve_linear"])*)
neuper@37871
   439
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   440
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   441
(*val nxt =
neuper@37871
   442
  ("Check_Postcond",Check_Postcond ["linear","univariate","equation","test"])*)
neuper@37871
   443
val asms = get_assumptions_ pt p;
neuper@37871
   444
if asms = [] then ()
neuper@37871
   445
else raise error "scriptnew.sml diff.behav. in sqrt assumptions 3";
neuper@37871
   446
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   447
(*val nxt = ("Check_elementwise",Check_elementwise "Assumptions")*)
neuper@37871
   448
neuper@37871
   449
val asms = get_assumptions_ pt p;
neuper@37871
   450
if asms = [(str2term "0 <= 9 + 4 * x",[1]),
neuper@37871
   451
	   (str2term "0 <= x",[1]),
neuper@37871
   452
	   (str2term "0 <= -3 + x",[1]),
neuper@37871
   453
	   (str2term "0 <= x ^^^ 2 + -3 * x",[6]),
neuper@37871
   454
	   (str2term "0 <= 6 + x",[6])] then ()
neuper@37871
   455
else raise 
neuper@37871
   456
    error "scriptnew.sml: diff.behav. at Check_elementwise [x = -12 / 5]";
neuper@37871
   457
neuper@37871
   458
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   459
(*val nxt = Check_Postcond ["sqroot-test","univariate","equation","test"])*)
neuper@37871
   460
val asms = get_assumptions_ pt p;
neuper@37871
   461
[("0 <= 9 + 4 * x",[1]),("0 <= x",[1]),("0 <= -3 + x",[1]),
neuper@37871
   462
   ("0 <= x ^^^ 2 + -3 * x",[6]),("0 <= 6 + x",[6]),
neuper@37871
   463
   ("0 <= 6 + -12 / 5 &\n0 <= (-12 / 5) ^^^ 2 + -3 * (-12 / 5) &\n0 <= -3 + -12 / 5 & 0 <= -12 / 5 & 0 <= 9 + 4 * (-12 / 5)",
neuper@37871
   464
    [13])];
neuper@37871
   465
neuper@37871
   466
neuper@37871
   467
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37871
   468
val Form' (FormKF (_,_,_,_,ff)) = f;
neuper@37871
   469
if ff="[x = -12 / 5]"
neuper@37871
   470
then writeln("there should be L = []\nthere should be L = []\nthere should be L = []\nthere should be L = []\nthere should be L = []\n")
neuper@37871
   471
else raise error "diff.behav. in scriptnew.sml; root-eq: L = []";
neuper@37871
   472
neuper@37871
   473
val asms = get_assumptions_ pt p;
neuper@37871
   474
if asms = [(str2term "0 <= 9 + 4 * (-12 / 5)",[]),
neuper@37871
   475
	   (str2term "0 <= -12 / 5", []),
neuper@37871
   476
	   (str2term "0 <= -3 + -12 / 5", []),
neuper@37871
   477
	   (str2term "0 <= (-12 / 5) ^^^ 2 + -3 * (-12 / 5)", []),
neuper@37871
   478
	   (str2term "0 <= 6 + -12 / 5", [])] then ()
neuper@37871
   479
else raise error "scriptnew.sml diff.behav. in sqrt assumptions 4";
neuper@37871
   480
neuper@37871
   481
neuper@37871
   482
"------------------ script with Map, Subst (biquadr.equ.)---------";
neuper@37871
   483
"------------------ script with Map, Subst (biquadr.equ.)---------";
neuper@37871
   484
"------------------ script with Map, Subst (biquadr.equ.)---------";
neuper@37871
   485
neuper@37871
   486
neuper@37871
   487
(*GoOn.5.03. script with Map, Subst (biquadr.equ.)
neuper@37871
   488
val scr = Script (((inst_abs thy) o term_of o the o (parse thy))
neuper@37871
   489
    "Script Biquadrat_poly (e_::bool) (v_::real) =                       \
neuper@37871
   490
    \(let e_ = Substitute [(v_^^^4, v_0_^^^2),(v_^^^2, v_0_)] e_;        \ 
neuper@37871
   491
    \     L_0_ = (SubProblem (PolyEq_,[univariate,equation], [no_met])   \
neuper@37871
   492
    \             [bool_ e_, real_ v_0_]);                               \ 
neuper@37871
   493
    \     L_i_ = Map (((Substitute [(v_0_, v_^^^2)]) @@                  \
neuper@37871
   494
    \                  ((Rewrite real_root_positive False) Or            \
neuper@37871
   495
    \                   (Rewrite real_root_negative False)) @@           \
neuper@37871
   496
    \                  OrToList) L_0_                                    \ 
neuper@37871
   497
    \ in (flat ....))"
neuper@37871
   498
);
neuper@37871
   499
neuper@37871
   500
*)
neuper@37871
   501