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

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