test/Tools/isac/Knowledge/diff.sml
author Walther Neuper <wneuper@ist.tugraz.at>
Sun, 25 Feb 2018 10:19:18 +0100
changeset 59384 d92ff7591a11
parent 59255 383722bfcff5
child 59395 862eb17f9e16
permissions -rw-r--r--
Rewrite: clean tests
neuper@37906
     1
(* 
neuper@37906
     2
neuper@37906
     3
use"../smltest/IsacKnowledge/diff.sml";
neuper@37906
     4
use"diff.sml";
neuper@37906
     5
*)
neuper@37906
     6
neuper@38081
     7
"--------------------------------------------------------";
neuper@38081
     8
"--------------------------------------------------------";
neuper@38081
     9
"table of contents --------------------------------------";
neuper@38081
    10
"--------------------------------------------------------";
neuper@38081
    11
"----------- problemtype --------------------------------";
neuper@38081
    12
"----------- for correction of diff_const ---------------";
neuper@38081
    13
"----------- for correction of diff_quot ----------------";
neuper@38081
    14
"----------- differentiate by rewrite -------------------";
neuper@38081
    15
"----------- differentiate: me (*+ tacs input*) ---------";
neuper@38081
    16
"----------- 1.5.02 me from script ----------------------";
neuper@38081
    17
"----------- primed id ----------------------------------";
neuper@38081
    18
"----------- diff_conv, sym_diff_conv -------------------";
wneuper@59248
    19
"----------- autoCalculate differentiate_on_R 2/x^2 -----";
wneuper@59248
    20
"----------- autoCalculate diff after_simplification ----";
wneuper@59248
    21
"----------- autoCalculate differentiate_equality -------";
neuper@38081
    22
"----------- tests for examples -------------------------";
neuper@38081
    23
"------------inform for x^2+x+1 -------------------------";
neuper@38081
    24
"--------------------------------------------------------";
neuper@38081
    25
"--------------------------------------------------------";
neuper@38081
    26
"--------------------------------------------------------";
neuper@37906
    27
neuper@37906
    28
neuper@41929
    29
val thy = @{theory "Diff"};
neuper@37906
    30
neuper@38081
    31
"----------- problemtype --------------------------------";
neuper@38081
    32
"----------- problemtype --------------------------------";
neuper@38081
    33
"----------- problemtype --------------------------------";
neuper@37994
    34
val pbt = {Given =["functionTerm f_f", "differentiateFor v_v"],
neuper@37906
    35
	   Where =[],
neuper@37994
    36
	   Find  =["derivative f_f'"],
neuper@37906
    37
	   With  =[],
neuper@37906
    38
	   Relate=[]}:string ppc;
neuper@38081
    39
val chkpbt = ((map (the o (parse thy))) o ppc2list) pbt;
neuper@37906
    40
neuper@37906
    41
val org = ["functionTerm (d_d x (x ^^^ 2 + 3 * x + 4))", 
neuper@37994
    42
	   "differentiateFor x","derivative f_f'"];
neuper@38081
    43
val chkorg = map (the o (parse thy)) org;
neuper@37906
    44
neuper@37906
    45
get_pbt ["derivative_of","function"];
neuper@37906
    46
get_met ["diff","differentiate_on_R"];
neuper@37906
    47
neuper@38081
    48
"----------- for correction of diff_const ---------------";
neuper@38081
    49
"----------- for correction of diff_const ---------------";
neuper@38081
    50
"----------- for correction of diff_const ---------------";
neuper@37906
    51
(*re-evaluate this file, otherwise > *** ME_Isa: 'erls' not known*)
wneuper@59384
    52
val t = (Thm.term_of o the o (parse thy)) "Not (x =!= a)";
wneuper@59384
    53
case rewrite_set_ thy false erls_diff t of
wneuper@59384
    54
  SOME (Const ("HOL.True", _), []) => ()
wneuper@59384
    55
| _ => error "rewrite_set_  Not (x =!= a)  changed";
neuper@37906
    56
wneuper@59384
    57
val t =(Thm.term_of o the o (parse thy)) "2 is_const";
wneuper@59384
    58
case rewrite_set_ thy false erls_diff t of
wneuper@59384
    59
  SOME (Const ("HOL.True", _), []) => ()
wneuper@59384
    60
| _ => error "rewrite_set_   2 is_const   changed";
neuper@37906
    61
wneuper@59384
    62
val thm = diff_const;
wneuper@59384
    63
val ct = (Thm.term_of o the o (parse thy)) "d_d x x";
wneuper@59384
    64
val NONE = (rewrite_inst_ thy tless_true erls_diff false subst thm ct);
neuper@37906
    65
neuper@38081
    66
"----------- for correction of diff_quot ----------------";
neuper@38081
    67
"----------- for correction of diff_quot ----------------";
neuper@38081
    68
"----------- for correction of diff_quot ----------------";
wneuper@59384
    69
val thy = @{theory "Diff"};
wneuper@59384
    70
val ct = (Thm.term_of o the o (parse thy)) "Not (x = 0)";
wneuper@59384
    71
rewrite_set_ thy false erls_diff ct;
neuper@37906
    72
wneuper@59384
    73
val ct = (Thm.term_of o the o (parse thy)) "d_d x ((x+1) / (x - 1))";
wneuper@59384
    74
val thm = @{thm diff_quot};
neuper@37926
    75
val SOME (ctt,_) =
wneuper@59384
    76
    (rewrite_inst_ thy tless_true erls_diff true subst thm ct);
neuper@37906
    77
neuper@38081
    78
"----------- differentiate by rewrite -------------------";
neuper@38081
    79
"----------- differentiate by rewrite -------------------";
neuper@38081
    80
"----------- differentiate by rewrite -------------------";
wneuper@59384
    81
val thy = @{theory "Diff"};
wneuper@59384
    82
val ct = (Thm.term_of o the o (parse thy)) "d_d x (x ^^^ 2 + 3 * x + 4)";
neuper@37906
    83
"--- 1 ---";
wneuper@59384
    84
val thm = @{thm "diff_sum"};
wneuper@59384
    85
val (ct, _) = the (rewrite_inst_ thy tless_true erls_diff true subst thm ct);
neuper@37906
    86
"--- 2 ---";
wneuper@59384
    87
val (ct, _) = the (rewrite_inst_ thy tless_true erls_diff true subst thm ct);
neuper@37906
    88
"--- 3 ---";
wneuper@59384
    89
val thm = @{thm "diff_prod_const"};
wneuper@59384
    90
val (ct, _) = the (rewrite_inst_ thy tless_true erls_diff true subst thm ct);
neuper@37906
    91
"--- 4 ---";
wneuper@59384
    92
val thm = @{thm "diff_pow"};
wneuper@59384
    93
val (ct, _) = the (rewrite_inst_ thy tless_true erls_diff true subst thm ct);
neuper@37906
    94
"--- 5 ---";
wneuper@59384
    95
val thm = @{thm "diff_const"};
wneuper@59384
    96
val (ct, _) = the (rewrite_inst_ thy tless_true erls_diff true subst thm ct);
neuper@37906
    97
"--- 6 ---";
wneuper@59384
    98
val thm = @{thm "diff_var"};
wneuper@59384
    99
val (ct, _) = the (rewrite_inst_ thy tless_true erls_diff true subst thm ct);
wneuper@59384
   100
if term2str ct = "2 * x ^^^ (2 - 1) + 3 * 1 + 0" then ()
neuper@38031
   101
else error "diff.sml diff.behav. in rewrite 1";
neuper@37906
   102
"--- 7 ---";
wneuper@59384
   103
"--- 7 ---";
wneuper@59384
   104
val rls = Test_simplify;
wneuper@59384
   105
val ct = (Thm.term_of o the o (parse thy)) "2 * x ^^^ (2 - 1) + 3 * 1 + 0";
wneuper@59384
   106
val (ct, _) = the (rewrite_set_ thy true rls ct);
wneuper@59384
   107
if term2str ct = "3 + 2 * x" then () else error "rewrite_set_ Test_simplify 2 changed";
neuper@37906
   108
neuper@38081
   109
"----------- differentiate: me (*+ tacs input*) ---------";
neuper@38081
   110
"----------- differentiate: me (*+ tacs input*) ---------";
neuper@38081
   111
"----------- differentiate: me (*+ tacs input*) ---------";
neuper@37906
   112
val fmz = ["functionTerm (x ^^^ 2 + 3 * x + 4)", 
neuper@37994
   113
	   "differentiateFor x","derivative f_f'"];
neuper@37906
   114
val (dI',pI',mI') =
neuper@37991
   115
  ("Diff",["derivative_of","function"],
neuper@37906
   116
   ["diff","diff_simpl"]);
neuper@37906
   117
val p = e_pos'; val c = []; 
neuper@37906
   118
"--- s1 ---";
neuper@37906
   119
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   120
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   121
"--- s2 ---";
neuper@37906
   122
(*val nxt = ("Add_Given",
neuper@37906
   123
Add_Given "functionTerm (d_d x (x ^^^ #2 + #3 * x + #4))");*)
neuper@37906
   124
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   125
"--- s3 ---";
neuper@37906
   126
(*val nxt = ("Add_Given",Add_Given "differentiateFor x");*)
neuper@37906
   127
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   128
"--- s4 ---";
neuper@37994
   129
(*val nxt = ("Add_Find",Add_Find "derivative f_f'");*)
neuper@37906
   130
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   131
"--- s5 ---";
neuper@37906
   132
(*val nxt = ("Specify_Theory",Specify_Theory dI');*)
neuper@37906
   133
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   134
"--- s6 ---";
neuper@37906
   135
(*val nxt = ("Specify_Problem",Specify_Problem pI');*)
neuper@37906
   136
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   137
"--- s7 ---";
neuper@37906
   138
(*val nxt = ("Specify_Method",Specify_Method mI');*)
neuper@37906
   139
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   140
"--- s8 ---";
neuper@37906
   141
(*val nxt = ("Apply_Method",Apply_Method mI');*)
neuper@37906
   142
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   143
"--- 1 ---";
neuper@37906
   144
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_sum","")));*)
neuper@37906
   145
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   146
"--- 2 ---";
neuper@37906
   147
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_sum","")));*)
neuper@37906
   148
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   149
(*val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   150
val (p,_,f,nxt,_,pt) = me nxt p c pt;*)
neuper@37906
   151
"--- 3 ---";
neuper@37906
   152
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_prod_const",...;*)
neuper@37906
   153
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   154
(*val (p,_,f,nxt,_,pt) = me nxt p c pt;*)
neuper@37906
   155
"--- 4 ---";
neuper@37906
   156
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_pow","")));*)
neuper@37906
   157
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   158
(*val (p,_,f,nxt,_,pt) = me nxt p c pt;*)
neuper@37906
   159
"--- 5 ---";
neuper@37906
   160
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_prod_const",...;*)
neuper@37906
   161
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   162
(*val (p,_,f,nxt,_,pt) = me nxt p c pt;*)
neuper@37906
   163
"--- 6 ---";
neuper@37906
   164
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_var","")));*)
neuper@37906
   165
val (p,_,f,nxt,_,pt) = me nxt p c pt; 
neuper@37906
   166
if f2str f =  "2 * x ^^^ (2 - 1) + 3 * 1 + 0" then () 
neuper@38031
   167
else error "diff.sml: diff.behav. in d_d x ^^^ 2 + 3 * x + 4";
neuper@37906
   168
"--- 7 ---";
neuper@37906
   169
(*val nxt = ("Rewrite_Set",Rewrite_Set "make_polynomial");*)
neuper@37906
   170
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   171
"--- 8 ---";
neuper@42393
   172
(*val nxt = ("Check_Postcond",Check_Postcond ("Diff","differentiate_on_R"));*)
neuper@37906
   173
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   174
"--- 9 ---";
neuper@37906
   175
(*val nxt = ("End_Proof'",End_Proof');*)
neuper@37906
   176
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59253
   177
if f2str f = "3 + 2 * x"
wneuper@59253
   178
  then case nxt of ("End_Proof'", End_Proof') => ()
wneuper@59253
   179
  | _ => error "diff.sml: new.behav. in me (*+ tacs input*) 1"
wneuper@59253
   180
else error "diff.sml: new.behav. in me (*+ tacs input*) 2";
neuper@38031
   181
(*if f = EmptyMout then () else error "new behaviour in + tacs input";
neuper@37906
   182
meNEW extracts Form once more*)
neuper@37906
   183
neuper@38081
   184
"----------- 1.5.02 me from script ----------------------";
neuper@38081
   185
"----------- 1.5.02 me from script ----------------------";
neuper@38081
   186
"----------- 1.5.02 me from script ----------------------";
neuper@37906
   187
(*exp_Diff_No-1.xml*)
neuper@37906
   188
val fmz = ["functionTerm (x ^^^ 2 + 3 * x + 4)", 
neuper@37994
   189
	   "differentiateFor x","derivative f_f'"];
neuper@37906
   190
val (dI',pI',mI') =
neuper@37991
   191
  ("Diff",["derivative_of","function"],
neuper@37906
   192
   ["diff","diff_simpl"]);
neuper@37906
   193
(*val p = e_pos'; val c = []; 
neuper@37906
   194
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   195
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   196
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
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;
neuper@37906
   199
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   200
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   201
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   202
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   203
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37991
   204
(*nxt = ("Apply_Method",Apply_Method ("Diff","differentiate_on_R*)
neuper@37906
   205
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   206
neuper@37906
   207
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   208
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   209
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   210
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   211
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   212
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   213
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   214
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59253
   215
case nxt of ("End_Proof'",End_Proof') => ()
wneuper@59253
   216
| _ => error "new behaviour in tests/differentiate, 1.5.02 me from script";
neuper@37906
   217
neuper@38081
   218
"----------- primed id ----------------------------------";
neuper@38081
   219
"----------- primed id ----------------------------------";
neuper@38081
   220
"----------- primed id ----------------------------------";
neuper@37994
   221
val f_ = str2term "f_f::bool";
neuper@37906
   222
val f  = str2term "A = s * (a - s)";
neuper@38081
   223
val v_ = str2term "v_v";
neuper@37906
   224
val v  = str2term "s";
neuper@38081
   225
val screxp0 = str2term "Take ((primed (lhs f_f)) = d_d v_v (rhs f_f))";
neuper@37906
   226
atomty screxp0;
neuper@37906
   227
neuper@38081
   228
val screxp1 = subst_atomic [(f_, f), (v_, v)] screxp0;
neuper@37906
   229
term2str screxp1;
neuper@37906
   230
atomty screxp1;
neuper@37906
   231
neuper@41929
   232
val SOME (f'_,_) = rewrite_set_ (@{theory "Isac"}) false srls_diff screxp1; 
neuper@37906
   233
if term2str f'_= "Take (A' = d_d s (s * (a - s)))" then ()
neuper@38031
   234
else error "diff.sml: diff.behav. in 'primed'";
neuper@37906
   235
atomty f'_;
neuper@37906
   236
neuper@37994
   237
val str = "Script DiffEqScr (f_f::bool) (v_v::real) =                         \
neuper@38081
   238
\ (let f_f' = Take ((primed (lhs f_f)) = d_d v_v (rhs f_f))           \
neuper@37906
   239
\ in (((Try (Repeat (Rewrite frac_conv   False))) @@              \
neuper@37906
   240
 \ (Try (Repeat (Rewrite root_conv   False))) @@                  \
neuper@37906
   241
 \ (Try (Repeat (Rewrite realpow_pow False))) @@                  \
neuper@37906
   242
 \ (Repeat                                                        \
neuper@37991
   243
 \   ((Repeat (Rewrite_Inst [(bdv,v_v)] diff_sum        False)) Or \
neuper@37991
   244
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_prod_const False)) Or \
neuper@37991
   245
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_prod       False)) Or \
neuper@37991
   246
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_quot       True )) Or \
neuper@37991
   247
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sin        False)) Or \
neuper@37991
   248
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sin_chain  False)) Or \
neuper@37991
   249
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_cos        False)) Or \
neuper@37991
   250
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_cos_chain  False)) Or \
neuper@37991
   251
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_pow        False)) Or \
neuper@37991
   252
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_pow_chain  False)) Or \
neuper@37991
   253
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_ln         False)) Or \
neuper@37991
   254
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_ln_chain   False)) Or \
neuper@37991
   255
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_exp        False)) Or \
neuper@37991
   256
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_exp_chain  False)) Or \
neuper@37991
   257
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sqrt       False)) Or \
neuper@37991
   258
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sqrt_chain False)) Or \
neuper@37991
   259
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_const      False)) Or \
neuper@37991
   260
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_var        False)) Or \
neuper@37906
   261
 \    (Repeat (Rewrite_Set             make_polynomial False)))) @@ \
neuper@37906
   262
 \ (Try (Repeat (Rewrite sym_frac_conv False))) @@              \
neuper@37994
   263
 \ (Try (Repeat (Rewrite sym_root_conv False))))) f_f')"
neuper@37906
   264
;
wneuper@59188
   265
val sc = ((inst_abs thy) o Thm.term_of o the o (parse thy)) str;
neuper@37906
   266
neuper@37906
   267
neuper@38081
   268
"----------- diff_conv, sym_diff_conv -------------------";
neuper@38081
   269
"----------- diff_conv, sym_diff_conv -------------------";
neuper@38081
   270
"----------- diff_conv, sym_diff_conv -------------------";
neuper@37906
   271
val subs = [(str2term "bdv", str2term "x")];
neuper@37906
   272
val rls = diff_conv;
neuper@37906
   273
neuper@37906
   274
val t = str2term "2/x^^^2"; 
neuper@37926
   275
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@38031
   276
if term2str t = "2 * x ^^^ -2" then () else error "diff.sml 1/x";
neuper@37906
   277
neuper@37906
   278
val t = str2term "sqrt (x^^^3)";
neuper@37926
   279
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@38031
   280
if term2str t = "x ^^^ (3 / 2)" then () else error "diff.sml x^1/2";
neuper@37906
   281
neuper@37906
   282
val t = str2term "2 / sqrt x^^^3";
neuper@37926
   283
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@38031
   284
if term2str t = "2 * x ^^^ (-3 / 2)" then () else error"diff.sml x^-1/2";
neuper@37906
   285
(* trace_rewrite := true;
neuper@37906
   286
   trace_rewrite := false;
neuper@37906
   287
   *)
neuper@37906
   288
val rls = diff_sym_conv; 
neuper@37906
   289
neuper@37906
   290
val t = str2term "2 * x ^^^ -2";
neuper@37926
   291
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@38031
   292
if term2str t = "2 / x ^^^ 2" then () else error "diff.sml sym 1/x";
neuper@37906
   293
neuper@37906
   294
neuper@37906
   295
val t = str2term "x ^^^ (3 / 2)";
neuper@37926
   296
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@38031
   297
if term2str t = "sqrt (x ^^^ 3)" then () else error"diff.sml sym x^1/x";
neuper@37906
   298
neuper@37906
   299
val t = str2term "2 * x ^^^ (-3 / 2)";
neuper@37926
   300
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@38031
   301
if term2str t ="2 / sqrt (x ^^^ 3)"then()else error"diff.sml sym x^-1/x";
neuper@37906
   302
neuper@37906
   303
neuper@37906
   304
(* trace_rewrite:=true;
neuper@37906
   305
   *)
neuper@37906
   306
(* trace_rewrite:=false;
neuper@37906
   307
   *)
neuper@37906
   308
(*@@@@*)
neuper@37906
   309
wneuper@59248
   310
"----------- autoCalculate differentiate_on_R 2/x^2 -----";
wneuper@59248
   311
"----------- autoCalculate differentiate_on_R 2/x^2 -----";
wneuper@59248
   312
"----------- autoCalculate differentiate_on_R 2/x^2 -----";
s1210629013@55445
   313
reset_states ();
neuper@37906
   314
CalcTree
neuper@37906
   315
[(["functionTerm (x^2 + x+ 1/x + 2/x^2)",
neuper@37906
   316
   (*"functionTerm ((x^3)^5)",*)
neuper@37994
   317
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   318
  ("Isac", ["derivative_of","function"],
neuper@37906
   319
  ["diff","differentiate_on_R"]))];
neuper@37906
   320
Iterator 1;
neuper@37906
   321
moveActiveRoot 1;
wneuper@59248
   322
autoCalculate 1 CompleteCalc;
neuper@37906
   323
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   324
if p = ([], Res) andalso term2str (get_obj g_res pt (fst p)) = 
neuper@37906
   325
			  "1 + 2 * x + -1 / x ^^^ 2 + -4 / x ^^^ 3" then ()
neuper@38031
   326
else error "diff.sml: differentiate_on_R 2/x^2 changed";
neuper@37906
   327
neuper@38081
   328
"---------------------------------------------------------";
s1210629013@55445
   329
reset_states ();
neuper@37906
   330
CalcTree
neuper@37906
   331
[(["functionTerm (x^3 * x^5)",
neuper@37994
   332
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   333
  ("Isac", ["derivative_of","function"],
neuper@37906
   334
  ["diff","differentiate_on_R"]))];
neuper@37906
   335
Iterator 1;
neuper@37906
   336
moveActiveRoot 1;
neuper@37906
   337
(* trace_rewrite := true;
neuper@37906
   338
   trace_script := true;
neuper@37906
   339
   *)
wneuper@59248
   340
autoCalculate 1 CompleteCalc;
neuper@37906
   341
(* trace_rewrite := false;
neuper@37906
   342
   trace_script := false;
neuper@37906
   343
   *)
neuper@37906
   344
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   345
neuper@37906
   346
if p = ([], Res) andalso term2str (get_obj g_res pt (fst p)) = 
neuper@37906
   347
			 "8 * x ^^^ 7" then () 
neuper@38031
   348
else error "diff.sml: differentiate_on_R (x^3 * x^5) changed";
neuper@37906
   349
wneuper@59248
   350
"----------- autoCalculate diff after_simplification ----";
wneuper@59248
   351
"----------- autoCalculate diff after_simplification ----";
wneuper@59248
   352
"----------- autoCalculate diff after_simplification ----";
s1210629013@55445
   353
reset_states ();
neuper@37906
   354
CalcTree
neuper@37906
   355
[(["functionTerm (x^3 * x^5)",
neuper@37994
   356
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   357
  ("Isac", ["derivative_of","function"],
neuper@37906
   358
  ["diff","after_simplification"]))];
neuper@37906
   359
Iterator 1;
neuper@37906
   360
moveActiveRoot 1;
neuper@37906
   361
(* trace_rewrite := true;
neuper@37906
   362
   trace_script := true;
neuper@37906
   363
   *)
wneuper@59248
   364
autoCalculate 1 CompleteCalc;
neuper@37906
   365
(* trace_rewrite := false;
neuper@37906
   366
   trace_script := false;
neuper@37906
   367
   *)
neuper@37906
   368
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   369
if p = ([], Res) andalso term2str (get_obj g_res pt (fst p)) =  "8 * x ^^^ 7"
neuper@38031
   370
then () else error "biegelinie.sml: 1st biegelin.7.27 changed";
neuper@37906
   371
neuper@38081
   372
"--------------------------------------------------------";
s1210629013@55445
   373
reset_states ();
neuper@37906
   374
CalcTree
neuper@37906
   375
[(["functionTerm ((x^3)^5)",
neuper@37994
   376
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   377
  ("Isac", ["derivative_of","function"],
neuper@37906
   378
  ["diff","after_simplification"]))];
neuper@37906
   379
Iterator 1;
neuper@37906
   380
moveActiveRoot 1;
wneuper@59248
   381
autoCalculate 1 CompleteCalc;
neuper@37906
   382
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   383
if p = ([], Res) andalso term2str (get_obj g_res pt (fst p)) = "15 * x ^^^ 14"
neuper@38031
   384
then () else error "biegelinie.sml: 1st biegelin.7.27 changed";
neuper@37906
   385
wneuper@59248
   386
"----------- autoCalculate differentiate_equality -------";
wneuper@59248
   387
"----------- autoCalculate differentiate_equality -------";
wneuper@59248
   388
"----------- autoCalculate differentiate_equality -------";
s1210629013@55445
   389
reset_states ();
neuper@37906
   390
CalcTree
neuper@42393
   391
[(["functionEq (A = s * (a - (s::real)))", "differentiateFor s", "derivativeEq f_f'"], 
neuper@37991
   392
  ("Isac", ["named","derivative_of","function"],
neuper@37906
   393
  ["diff","differentiate_equality"]))];
neuper@37906
   394
Iterator 1;
neuper@37906
   395
moveActiveRoot 1;
wneuper@59248
   396
autoCalculate 1 CompleteCalc;
neuper@37906
   397
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   398
neuper@38081
   399
"----------- tests for examples -------------------------";
neuper@38081
   400
"----------- tests for examples -------------------------";
neuper@38081
   401
"----------- tests for examples -------------------------";
neuper@37906
   402
"----- parse errors";
neuper@38081
   403
(*str2term "F  =  sqrt( y^^^2 - O) * (z + O^^^2)";
neuper@38081
   404
str2term "O";
neuper@38081
   405
str2term "OO"; ---errors*)
neuper@38081
   406
str2term "OOO";
neuper@37906
   407
neuper@37906
   408
"----- thm 'diff_prod_const'";
neuper@37906
   409
val subs = [(str2term "bdv", str2term "l")];
neuper@38081
   410
val f = str2term "G' = d_d l (l * sqrt (7 * s ^^^ 2 - l ^^^ 2))";
neuper@37906
   411
neuper@38081
   412
"------------inform for x^2+x+1 -------------------------";
neuper@38081
   413
"------------inform for x^2+x+1 -------------------------";
neuper@38081
   414
"------------inform for x^2+x+1 -------------------------";
s1210629013@55445
   415
reset_states ();
neuper@37906
   416
CalcTree
neuper@37906
   417
[(["functionTerm (x^2 + x + 1)",
neuper@37994
   418
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   419
  ("Isac", ["derivative_of","function"],
neuper@37906
   420
  ["diff","differentiate_on_R"]))];
neuper@37906
   421
Iterator 1;
neuper@37906
   422
moveActiveRoot 1;
wneuper@59248
   423
autoCalculate 1 CompleteCalcHead;
wneuper@59248
   424
autoCalculate 1 (Step 1);
wneuper@59248
   425
autoCalculate 1 (Step 1);
wneuper@59248
   426
autoCalculate 1 (Step 1);
neuper@37906
   427
val ((pt,p),_) = get_calc 1; show_pt pt;
wneuper@59123
   428
appendFormula 1 "2*x + d_d x x + d_d x 1" (*|> Future.join*);
neuper@37906
   429
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   430
if existpt' ([3], Res) pt then ()
neuper@38031
   431
else error  "diff.sml: inform d_d x (x^2 + x + 1) doesnt work";
neuper@38081
   432