test/Tools/isac/Knowledge/diff.sml
author Walther Neuper <neuper@ist.tugraz.at>
Wed, 08 Sep 2010 17:20:03 +0200
branchisac-update-Isa09-2
changeset 37994 eb4c556a525b
parent 37991 028442673981
child 38014 3e11e3c2dc42
permissions -rw-r--r--
tuned

src/Knowledge + test/Knowledge:
find . -type f -exec sed -i s/"f_\""/"f_f\""/g {} \;
find . -type f -exec sed -i s/"f_,"/"f_f,"/g {} \;
find . -type f -exec sed -i s/"f_:"/"f_f:"/g {} \;
find . -type f -exec sed -i s/"f_'_"/"f_f'"/g {} \;
find . -type f -exec sed -i s/"eqs_"/"eqs"/g {} \;
find . -type f -exec sed -i s/"f'_ "/"f_f' "/g {} \;
find . -type f -exec sed -i s/"f'_)"/"f_f')"/g {} \;
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@37906
     7
"-----------------------------------------------------------------";
neuper@37906
     8
"table of contents -----------------------------------------------";
neuper@37906
     9
"-----------------------------------------------------------------";
neuper@37906
    10
" _________________ problemtype _________________ ";
neuper@37906
    11
"----------- for correction of diff_const ------------------------";
neuper@37906
    12
" _________________ for correction of diff_quot  _________________ ";
neuper@37906
    13
" _________________ differentiate by rewrite _________________ ";
neuper@37906
    14
" ______________ differentiate: me (*+ tacs input*) ______________ ";
neuper@37906
    15
" ________________ differentiate stdin: student active________________ ";
neuper@37906
    16
" _________________ differentiate stdin: tutor active_________________ ";
neuper@37906
    17
"---------------------1.5.02 me from script ---------------------";
neuper@37906
    18
"----------- primed id -------------------------------------------";
neuper@37906
    19
"----------- diff_conv, sym_diff_conv ----------------------------";
neuper@37906
    20
"----------- autoCalculate differentiate_on_R 2/x^2 --------------";
neuper@37906
    21
"----------- autoCalculate diff after_simplification -------------";
neuper@37906
    22
"----------- autoCalculate differentiate_equality ----------------";
neuper@37906
    23
"----------- tests for examples ----------------------------------";
neuper@37906
    24
"------------inform for x^2+x+1 ----------------------------------";
neuper@37906
    25
"-----------------------------------------------------------------";
neuper@37906
    26
"-----------------------------------------------------------------";
neuper@37906
    27
"-----------------------------------------------------------------";
neuper@37906
    28
neuper@37906
    29
neuper@37906
    30
val thy = Diff.thy;
neuper@37906
    31
neuper@37906
    32
" _________________ problemtype _________________ ";
neuper@37906
    33
" _________________ problemtype _________________ ";
neuper@37906
    34
" _________________ problemtype _________________ ";
neuper@37994
    35
val pbt = {Given =["functionTerm f_f", "differentiateFor v_v"],
neuper@37906
    36
	   Where =[],
neuper@37994
    37
	   Find  =["derivative f_f'"],
neuper@37906
    38
	   With  =[],
neuper@37906
    39
	   Relate=[]}:string ppc;
neuper@37906
    40
val chkpbt = ((map (the o (parse Diff.thy))) o ppc2list) pbt;
neuper@37906
    41
neuper@37906
    42
val org = ["functionTerm (d_d x (x ^^^ 2 + 3 * x + 4))", 
neuper@37994
    43
	   "differentiateFor x","derivative f_f'"];
neuper@37906
    44
val chkorg = map (the o (parse Diff.thy)) org;
neuper@37906
    45
neuper@37906
    46
get_pbt ["derivative_of","function"];
neuper@37906
    47
get_met ["diff","differentiate_on_R"];
neuper@37906
    48
neuper@37906
    49
(*erls should not be in ruleset'! Here only for tests*)
neuper@37906
    50
ruleset' := 
neuper@37906
    51
overwritelthy thy
neuper@37906
    52
    (!ruleset',
neuper@37906
    53
     [("erls",
neuper@37906
    54
       Rls {id = "erls",preconds = [], rew_ord = ("termlessI",termlessI), 
neuper@37906
    55
	    erls = e_rls, srls = Erls, calc = [], (*asm_thm = [],*)
neuper@37969
    56
	    rules = [Thm ("refl",num_str @{thm refl}),
neuper@37969
    57
		     Thm ("real_le_refl",num_str @{thm real_le_refl}}),
neuper@37969
    58
		     Thm ("radd_left_cancel_le",num_str @{thm radd_left_cancel_le}),
neuper@37969
    59
		     Thm ("not_true",num_str @{thm not_true}),
neuper@37969
    60
		     Thm ("not_false",num_str @{thm not_false}),
neuper@37969
    61
		     Thm ("and_true",num_str @{thm and_true}),
neuper@37969
    62
		     Thm ("and_false",num_str @{thm and_false}),
neuper@37969
    63
		     Thm ("or_true",num_str @{thm or_true}),
neuper@37969
    64
		     Thm ("or_false",num_str @{thm or_false}),
neuper@37969
    65
		     Thm ("and_commute",num_str @{and_commute}),
neuper@37969
    66
		     Thm ("or_commute",num_str @{or_commute}),
neuper@37906
    67
		     
neuper@37906
    68
		     Calc ("Atools.is'_const",eval_const "#is_const_"),
neuper@37906
    69
		     Calc ("Atools.occurs'_in", eval_occurs_in ""),
neuper@37906
    70
		     Calc ("Tools.matches",eval_matches ""),
neuper@37906
    71
		     
neuper@37906
    72
		     Calc ("op +",eval_binop "#add_"),
neuper@37906
    73
		     Calc ("op *",eval_binop "#mult_"),
neuper@37906
    74
		     Calc ("Atools.pow" ,eval_binop "#power_"),
neuper@37906
    75
		     
neuper@37906
    76
		     Calc ("op <",eval_equ "#less_"),
neuper@37906
    77
		     Calc ("op <=",eval_equ "#less_equal_"),
neuper@37906
    78
		     
neuper@37906
    79
		     Calc ("Atools.ident",eval_ident "#ident_")],
neuper@37906
    80
	    scr = Script ((term_of o the o (parse thy)) 
neuper@37906
    81
			      "empty_script")
neuper@37906
    82
	    }:rls
neuper@37906
    83
	      )]);
neuper@37906
    84
    
neuper@37906
    85
"----------- for correction of diff_const ------------------------";
neuper@37906
    86
"----------- for correction of diff_const ------------------------";
neuper@37906
    87
"----------- for correction of diff_const ------------------------";
neuper@37906
    88
(*re-evaluate this file, otherwise > *** ME_Isa: 'erls' not known*)
neuper@37991
    89
val thy' = "Diff";
neuper@37906
    90
val ct = "Not (x =!= a)";
neuper@37906
    91
rewrite_set thy' false "erls" ct;
neuper@37906
    92
val ct = "2 is_const";
neuper@37906
    93
rewrite_set thy' false "erls" ct;
neuper@37906
    94
neuper@37906
    95
val thm = ("diff_const","");
neuper@37906
    96
val ct = "d_d x x";
neuper@37926
    97
val NONE =
neuper@37906
    98
    (rewrite_inst thy' "tless_true" "erls" false [("bdv","x")] thm ct);
neuper@37906
    99
val ct = "d_d x 2";
neuper@37926
   100
val SOME (ctt,_) =
neuper@37906
   101
    (rewrite_inst thy' "tless_true" "erls" false [("bdv","x")] thm ct);
neuper@37906
   102
"----- for 'd_d s a' we got 'a is_const' --> False --------vvv-----";
neuper@37906
   103
trace_rewrite := true;
neuper@37906
   104
val ct = "d_d s a";
neuper@37906
   105
    (rewrite_inst thy' "tless_true" "erls" false [("bdv","s")] thm ct);
neuper@37926
   106
(*got: NONE instead SOME*)
neuper@37906
   107
eval_true Isac.thy [str2term "a is_const"] (assoc_rls"erls");
neuper@37906
   108
(*got: false instead true;   ~~~~~~~~~~~ replaced by 'is_atom'*)
neuper@37926
   109
val SOME (ctt,_) =
neuper@37906
   110
    (rewrite_inst thy' "tless_true" "erls" false [("bdv","s")] thm ct);
neuper@37906
   111
if ctt = "0" then () else raise error "diff.sml: thm 'diff_const' diff.behav.";
neuper@37906
   112
trace_rewrite := false;
neuper@37906
   113
"----- for 'd_d s a' we had 'a is_const' --> False --------^^^-----";
neuper@37906
   114
neuper@37906
   115
val thm = ("diff_var","");
neuper@37906
   116
val ct = "d_d x x";
neuper@37926
   117
val SOME (ctt,_) =
neuper@37906
   118
    (rewrite_inst thy' "tless_true" "erls" false [("bdv","x")] thm ct);
neuper@37906
   119
val ct = "d_d x a";
neuper@37926
   120
val NONE =
neuper@37906
   121
    (rewrite_inst thy' "tless_true" "erls" false [("bdv","x")] thm ct);
neuper@37906
   122
val ct = "d_d x (x+x)";
neuper@37926
   123
val NONE =
neuper@37906
   124
(rewrite_inst thy' "tless_true" "erls" false [("bdv","x")] thm ct);
neuper@37906
   125
neuper@37906
   126
neuper@37906
   127
" _________________ for correction of diff_quot  _________________ ";
neuper@37906
   128
" _________________ for correction of diff_quot  _________________ ";
neuper@37906
   129
" _________________ for correction of diff_quot  _________________ ";
neuper@37991
   130
val thy' = "Diff";
neuper@37906
   131
val ct = "Not (x = 0)";
neuper@37906
   132
rewrite_set thy' false "erls" ct;
neuper@37906
   133
neuper@37906
   134
val ct = "d_d x ((x+1) / (x - 1))";
neuper@37906
   135
val thm = ("diff_quot","");
neuper@37926
   136
val SOME (ctt,_) =
neuper@37906
   137
    (rewrite_inst thy' "tless_true" "erls" true [("bdv","x")] thm ct);
neuper@37906
   138
neuper@37906
   139
neuper@37906
   140
neuper@37906
   141
neuper@37906
   142
neuper@37906
   143
neuper@37906
   144
neuper@37906
   145
" _________________ differentiate by rewrite _________________ ";
neuper@37906
   146
" _________________ differentiate by rewrite _________________ ";
neuper@37906
   147
" _________________ differentiate by rewrite _________________ ";
neuper@37991
   148
val thy' = "Diff";
neuper@37906
   149
val ct = "d_d x (x ^^^ 2 + 3 * x + 4)";
neuper@37906
   150
"--- 1 ---";
neuper@37906
   151
val thm = ("diff_sum","");
neuper@37906
   152
val (ct,_) = the (rewrite_inst thy' "tless_true" "erls" true 
neuper@37906
   153
		  [("bdv","x::real")] thm ct);
neuper@37906
   154
"--- 2 ---";
neuper@37906
   155
val (ct,_) = the (rewrite_inst thy' "tless_true" "erls" true 
neuper@37906
   156
		  [("bdv","x::real")] thm ct);
neuper@37906
   157
"--- 3 ---";
neuper@37906
   158
val thm = ("diff_prod_const","");
neuper@37906
   159
val (ct,_) = the (rewrite_inst thy' "tless_true" "erls" true 
neuper@37906
   160
		  [("bdv","x::real")] thm ct);
neuper@37906
   161
"--- 4 ---";
neuper@37906
   162
val thm = ("diff_pow","");
neuper@37906
   163
val (ct,_) = the (rewrite_inst thy' "tless_true" "erls" true 
neuper@37906
   164
		  [("bdv","x::real")] thm ct);
neuper@37906
   165
"--- 5 ---";
neuper@37906
   166
val thm = ("diff_const","");
neuper@37906
   167
val (ct,_) = the (rewrite_inst thy' "tless_true" "erls" true 
neuper@37906
   168
		  [("bdv","x::real")] thm ct);
neuper@37906
   169
"--- 6 ---";
neuper@37906
   170
val thm = ("diff_var","");
neuper@37906
   171
val (ct,_) = the (rewrite_inst thy' "tless_true" "erls" true 
neuper@37906
   172
		  [("bdv","x::real")] thm ct);
neuper@37906
   173
if ct = "2 * x ^^^ (2 - 1) + 3 * 1 + 0" then ()
neuper@37906
   174
else raise error "diff.sml diff.behav. in rewrite 1";
neuper@37906
   175
"--- 7 ---";
neuper@37906
   176
val rls = ("Test_simplify");
neuper@37906
   177
val (ct,_) = the (rewrite_set thy' false rls ct);
neuper@37906
   178
if ct="3 + 2 * x" then () else raise error "new behaviour in test-example";
neuper@37906
   179
neuper@37906
   180
val ct = "2 * x ^^^ (2 - 1) + 3 * 1 + 0";
neuper@37906
   181
val (ct,_) = the (rewrite_set thy' true rls ct);
neuper@37906
   182
neuper@37906
   183
neuper@37906
   184
(*---
neuper@37906
   185
val t = str2term "x ^^^ (2 - 1)";
neuper@37926
   186
val SOME (t',_) = rewrite_set_ thy false Test_simplify t;
neuper@37906
   187
term2str t';
neuper@37906
   188
neuper@37906
   189
val t = str2term "-1 * 1";
neuper@37926
   190
val SOME (thmID,thm) = get_calculation_ thy (the(assoc(calclist,"times"))) t;
neuper@37906
   191
*)
neuper@37906
   192
neuper@37906
   193
neuper@37906
   194
" ______________ differentiate: me (*+ tacs input*) ______________ ";
neuper@37906
   195
" ______________ differentiate: me (*+ tacs input*) ______________ ";
neuper@37906
   196
" ______________ differentiate: me (*+ tacs input*) ______________ ";
neuper@37906
   197
val fmz = ["functionTerm (x ^^^ 2 + 3 * x + 4)", 
neuper@37994
   198
	   "differentiateFor x","derivative f_f'"];
neuper@37906
   199
val (dI',pI',mI') =
neuper@37991
   200
  ("Diff",["derivative_of","function"],
neuper@37906
   201
   ["diff","diff_simpl"]);
neuper@37906
   202
val p = e_pos'; val c = []; 
neuper@37906
   203
"--- s1 ---";
neuper@37906
   204
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   205
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   206
"--- s2 ---";
neuper@37906
   207
(*val nxt = ("Add_Given",
neuper@37906
   208
Add_Given "functionTerm (d_d x (x ^^^ #2 + #3 * x + #4))");*)
neuper@37906
   209
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   210
"--- s3 ---";
neuper@37906
   211
(*val nxt = ("Add_Given",Add_Given "differentiateFor x");*)
neuper@37906
   212
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   213
"--- s4 ---";
neuper@37994
   214
(*val nxt = ("Add_Find",Add_Find "derivative f_f'");*)
neuper@37906
   215
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   216
"--- s5 ---";
neuper@37906
   217
(*val nxt = ("Specify_Theory",Specify_Theory dI');*)
neuper@37906
   218
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   219
"--- s6 ---";
neuper@37906
   220
(*val nxt = ("Specify_Problem",Specify_Problem pI');*)
neuper@37906
   221
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   222
"--- s7 ---";
neuper@37906
   223
(*val nxt = ("Specify_Method",Specify_Method mI');*)
neuper@37906
   224
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   225
"--- s8 ---";
neuper@37906
   226
(*val nxt = ("Apply_Method",Apply_Method mI');*)
neuper@37906
   227
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   228
"--- 1 ---";
neuper@37906
   229
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_sum","")));*)
neuper@37906
   230
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   231
"--- 2 ---";
neuper@37906
   232
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_sum","")));*)
neuper@37906
   233
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   234
(*val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   235
val (p,_,f,nxt,_,pt) = me nxt p c pt;*)
neuper@37906
   236
"--- 3 ---";
neuper@37906
   237
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_prod_const",...;*)
neuper@37906
   238
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   239
(*val (p,_,f,nxt,_,pt) = me nxt p c pt;*)
neuper@37906
   240
"--- 4 ---";
neuper@37906
   241
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_pow","")));*)
neuper@37906
   242
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   243
(*val (p,_,f,nxt,_,pt) = me nxt p c pt;*)
neuper@37906
   244
"--- 5 ---";
neuper@37906
   245
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_prod_const",...;*)
neuper@37906
   246
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   247
(*val (p,_,f,nxt,_,pt) = me nxt p c pt;*)
neuper@37906
   248
"--- 6 ---";
neuper@37906
   249
(*val nxt = ("Rewrite_Inst",Rewrite_Inst (["(bdv,x)"],("diff_var","")));*)
neuper@37906
   250
val (p,_,f,nxt,_,pt) = me nxt p c pt; 
neuper@37906
   251
if f2str f =  "2 * x ^^^ (2 - 1) + 3 * 1 + 0" then () 
neuper@37906
   252
else raise error "diff.sml: diff.behav. in d_d x ^^^ 2 + 3 * x + 4";
neuper@37906
   253
"--- 7 ---";
neuper@37906
   254
(*------------------------------11.3.03--------------------
neuper@37906
   255
 trace_rewrite:=true;
neuper@37906
   256
 val (_,_,f,_,_,_) = me nxt p c pt;
neuper@37906
   257
 val Form' (FormKF (_,_,_,_,res)) = f;
neuper@37906
   258
 trace_rewrite:=false;
neuper@37906
   259
neuper@37906
   260
 val ct = "2 * x ^^^ (2 - 1) + 3 * 1 + 0";
neuper@37991
   261
 val SOME (ct',_) = rewrite_set "Isac" false "make_polynomial" ct;
neuper@37906
   262
neuper@37906
   263
 trace_rewrite:=true;
neuper@37906
   264
 val t = str2term ct; 
neuper@37906
   265
 term2str t;
neuper@37926
   266
 val SOME (t',_) = rewrite_set_ Isac.thy false make_polynomial t;
neuper@37906
   267
 term2str t';
neuper@37906
   268
 trace_rewrite:=false;
neuper@37906
   269
neuper@37926
   270
 val SOME (t'',_) = rewrite_set_ Isac.thy false make_polynomial t';
neuper@37906
   271
 term2str t'';
neuper@37906
   272
 
neuper@37969
   273
 val thm = num_str @{thm realpow_eq_oneI;
neuper@37906
   274
 case string_of_thm thm of
neuper@37906
   275
neuper@37906
   276
neuper@37991
   277
 val Rewrite_Set' ("Diff",false,"make_polynomial",ff,(ff',[])) = m;
neuper@37906
   278
 term2str ff; term2str ff';
neuper@37906
   279
neuper@37906
   280
neuper@37906
   281
neuper@37906
   282
--------------------------------11.3.03--------------------*)
neuper@37906
   283
neuper@37906
   284
(*val nxt = ("Rewrite_Set",Rewrite_Set "make_polynomial");*)
neuper@37906
   285
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   286
"--- 8 ---";
neuper@37906
   287
(*val nxt =
neuper@37991
   288
("Check_Postcond",Check_Postcond ("Diff","differentiate_on_R"));*)
neuper@37906
   289
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   290
"--- 9 ---";
neuper@37906
   291
(*val nxt = ("End_Proof'",End_Proof');*)
neuper@37906
   292
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
neuper@37906
   293
if nxt = ("End_Proof'",End_Proof') andalso f2str f = "3 + 2 * x" then ()
neuper@37906
   294
else raise error "diff.sml: new.behav. in me (*+ tacs input*)";
neuper@37906
   295
(*if f = EmptyMout then () else raise error "new behaviour in + tacs input";
neuper@37906
   296
meNEW extracts Form once more*)
neuper@37906
   297
neuper@37906
   298
neuper@37906
   299
neuper@37906
   300
neuper@37906
   301
(*---------------- 1.5.02 -----------------------------------------
neuper@37906
   302
neuper@37906
   303
" _________________ script-eval corrected _________________ ";
neuper@37906
   304
" _________________ script-eval corrected _________________ ";
neuper@37906
   305
" _________________ script-eval corrected _________________ ";
neuper@37991
   306
val scr = Script (((inst_abs (assoc_thy "Test")) o 
neuper@37906
   307
	   term_of o the o (parse Diff.thy))
neuper@37994
   308
  "Script Differentiate (f_f::real) (v_v::real) =                                 \
neuper@37906
   309
   \(let f_ = Try (Repeat (Rewrite frac_conv False f_));                        \
neuper@37906
   310
   \     f_ = Try (Repeat (Rewrite root_conv False f_));                        \
neuper@37906
   311
   \     f_ = Repeat                                                            \
neuper@37991
   312
   \            ((Repeat (Rewrite_Inst [(bdv,v_v)] diff_sum        False f_)) Or \
neuper@37991
   313
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_prod_const False f_)) Or \
neuper@37991
   314
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_prod       False f_)) Or \
neuper@37991
   315
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_quot       False f_)) Or \
neuper@37991
   316
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sin        False f_)) Or \
neuper@37991
   317
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sin_chain  False f_)) Or \
neuper@37991
   318
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_cos        False f_)) Or \
neuper@37991
   319
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_cos_chain  False f_)) Or \
neuper@37991
   320
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_pow        False f_)) Or \
neuper@37991
   321
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_pow_chain  False f_)) Or \
neuper@37991
   322
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_ln         False f_)) Or \
neuper@37991
   323
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_ln_chain   False f_)) Or \
neuper@37991
   324
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_exp        False f_)) Or \
neuper@37991
   325
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_exp_chain  False f_)) Or \
neuper@37991
   326
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_const      False f_)) Or \
neuper@37991
   327
   \             (Repeat (Rewrite_Inst [(bdv,v_v)] diff_var        False f_)) Or \
neuper@37906
   328
   \             (Repeat (Rewrite_Set             Test_simplify False f_)));  \
neuper@37906
   329
   \     f_ = Try (Repeat (Rewrite sym_frac_conv False f_))                     \
neuper@37906
   330
   \ in       Try (Repeat (Rewrite sym_root_conv False f_)))");
neuper@37906
   331
val d = e_rls;
neuper@37906
   332
val (dI',pI',mI') =
neuper@37991
   333
  ("Diff",e_pblID,
neuper@37991
   334
   ("Diff","differentiate_on_R"));
neuper@37906
   335
val p = e_pos'; val c = []; 
neuper@37906
   336
val (mI,m) = ("Init_Proof",Init_Proof ([], (dI',pI',mI')));
neuper@37906
   337
val (p,_,_,_,_,pt) = me (mI,m) p c  EmptyPtree;
neuper@37906
   338
val nxt = ("Specify_Theory",Specify_Theory dI');
neuper@37906
   339
val (p,_,_,_,_,pt) = me nxt p c pt;
neuper@37906
   340
val nxt = ("Specify_Method",Specify_Method mI');
neuper@37906
   341
val (p,_,_,_,_,pt) = me nxt p c pt;
neuper@37906
   342
val p = ([1],Frm):pos';
neuper@37906
   343
neuper@37906
   344
neuper@37906
   345
val parseee = (term_of o the o (parse Diff.thy));
neuper@37906
   346
val ct =   "d_d x (x ^^^ #2 + #3 * x + #4)";
neuper@37994
   347
val envvv = [(parseee"f_f",parseee ct),(parseee"v_",parseee"x")];
neuper@37906
   348
val ets0=[([],(Tac'(Script.thy,"BS","",""),envvv,envvv,empty,empty,Safe)),
neuper@37906
   349
	  ([],(User', [],                [],        empty, empty,Sundef))]:ets;
neuper@37906
   350
val l0 = [];
neuper@37906
   351
" --------------- 1. ---------------------------------------------";
neuper@37906
   352
val (pt,_) = cappend_atomic pt[1]e_loc ct (Rewrite("test","")) ct Complete;
neuper@37906
   353
val Appl m'=applicable_in p pt (Rewrite_Inst (["(bdv,x)"],("diff_sum","")));
neuper@37906
   354
neuper@37991
   355
val NextStep(l1,m') = nxt_tac "Diff" (pt,p) scr ets0 l0;
neuper@37906
   356
(*("diff_sum","")*)
neuper@37906
   357
val Steps[(Form' (FormKF (_,_,_,_,res)),pt,p,_,s,ets1)] = 
neuper@37991
   358
  locate_gen "Diff" m' (pt,p) (scr,d) ets0 l0;
neuper@37906
   359
val ets1 = (drop_last ets0) @ ets1;val pt = update_ets pt [] [(1,ets1)];
neuper@37906
   360
" --------------- 2. ---------------------------------------------";
neuper@37906
   361
val Appl m'=applicable_in p pt (Rewrite_Inst (["(bdv,x)"],("diff_sum","")));
neuper@37991
   362
val NextStep(l2,m') = nxt_tac "Diff" (pt,p) scr ets1 l1;
neuper@37906
   363
(*("diff_sum","")*)
neuper@37906
   364
val Steps[(Form' (FormKF (_,_,_,_,res)),pt,p,_,s,ets2)] = 
neuper@37991
   365
  locate_gen "Diff" m' (pt,p) (scr,d) ets1 l1;
neuper@37906
   366
val ets2 = (drop_last ets1) @ ets2;val pt = update_ets pt [] [(1,ets2)];
neuper@37906
   367
" --------------- 3. ---------------------------------------------";
neuper@37906
   368
val Appl m'=applicable_in p pt (Rewrite_Inst (["(bdv,x)"],("diff_prod_const","")));
neuper@37991
   369
val NextStep(l3,m') = nxt_tac "Diff" (pt,p) scr ets2 l2;
neuper@37906
   370
(*("diff_prod_const","")*)
neuper@37906
   371
val Steps[(Form' (FormKF (_,_,_,_,res)),pt,p,_,s,ets3)] = 
neuper@37991
   372
  locate_gen "Diff" m' (pt,p) (scr,d) ets2 l2;
neuper@37906
   373
val ets3 = (drop_last ets2) @ ets3; val pt = update_ets pt [] [(1,ets3)];
neuper@37906
   374
" --------------- 4. ---------------------------------------------";
neuper@37906
   375
val Appl m'=applicable_in p pt (Rewrite_Inst (["(bdv,x)"],("diff_pow","")));
neuper@37991
   376
val NextStep(l4,m') = nxt_tac "Diff" (pt,p) scr ets3 l3;
neuper@37906
   377
(*("diff_pow","")*)
neuper@37906
   378
val Steps[(Form' (FormKF (_,_,_,_,res)),pt,p,_,s,ets4)] = 
neuper@37991
   379
    locate_gen "Diff" m' (pt,p) (scr,d) ets3 l3;
neuper@37906
   380
val ets4 = (drop_last ets3) @ ets4; val pt = update_ets pt [] [(1,ets4)];
neuper@37906
   381
" --------------- 5. ---------------------------------------------";
neuper@37906
   382
val Appl m'=applicable_in p pt (Rewrite_Inst (["(bdv,x)"],("diff_const","")));
neuper@37991
   383
val NextStep(l5,m') = nxt_tac "Diff" (pt,p) scr ets4 l4;
neuper@37906
   384
(*("diff_const","")*)
neuper@37906
   385
val Steps[ (Form' (FormKF (_,_,_,_,res)),pt,p,_,s,ets5)] = 
neuper@37991
   386
    locate_gen "Diff" m' (pt,p) (scr,d) ets4 l4;
neuper@37906
   387
val ets5 = (drop_last ets4) @ ets5; val pt = update_ets pt [] [(1,ets5)];
neuper@37906
   388
" --------------- 6. ---------------------------------------------";
neuper@37906
   389
val Appl m'=applicable_in p pt (Rewrite_Inst (["(bdv,x)"],("diff_var","")));
neuper@37991
   390
val NextStep(l6,m') = nxt_tac "Diff" (pt,p) scr ets5 l5;
neuper@37906
   391
(*("diff_var","")ok; here was("diff_const","")because of wrong rule in *.thy*)
neuper@37906
   392
val Steps[(Form' (FormKF (_,_,_,_,res)),pt,p,_,s,ets6)] = 
neuper@37991
   393
    locate_gen "Diff" m' (pt,p) (scr,d) ets5 l5;
neuper@37906
   394
val ets6 = (drop_last ets5) @ ets6; val pt = update_ets pt [] [(1,ets6)];
neuper@37906
   395
" --------------- 7. ---------------------------------------------";
neuper@37906
   396
val Appl m'=applicable_in p pt (Rewrite_Set "Test_simplify");
neuper@37906
   397
neuper@37906
   398
neuper@37906
   399
 ---------------- 1.5.02 -----------------------------------------*)
neuper@37906
   400
neuper@37906
   401
neuper@37906
   402
neuper@37906
   403
neuper@37906
   404
" ________________ differentiate stdin: student active________________ ";
neuper@37906
   405
" ________________ differentiate stdin: student active________________ ";
neuper@37906
   406
" ________________ differentiate stdin: student active________________ ";
neuper@37906
   407
(*
neuper@37906
   408
proofs:= []; dials:=([],[],[]); 
neuper@37906
   409
StdinSML 0 0 0 0 New_User;
neuper@37906
   410
set_dstate 1 test_hide 4 1;(*SelRule,St..PutRuleRes,TskipS..*)
neuper@37906
   411
StdinSML 1 0 0 0 New_Proof;
neuper@37906
   412
val fmz = ["functionTerm (d_d x (x ^^^ 2 + 3 * x + 4))", 
neuper@37994
   413
	   "differentiateFor x","derivative f_f'"];
neuper@37906
   414
val (dI',pI',mI') =
neuper@37991
   415
  ("Diff",["derivative_of","function"],
neuper@37906
   416
   ["diff","differentiate_on_R"]);
neuper@37906
   417
*)
neuper@37906
   418
neuper@37906
   419
neuper@37906
   420
" _________________ differentiate stdin: tutor active_________________ ";
neuper@37906
   421
" _________________ differentiate stdin: tutor active_________________ ";
neuper@37906
   422
" _________________ differentiate stdin: tutor active_________________ ";
neuper@37906
   423
(*proofs:= []; dials:=([],[],[]); 
neuper@37906
   424
StdinSML 0 0 0 0 New_User;
neuper@37906
   425
set_dstate 1 test_hide 0 2;(*PutRule,TskipS..PutRuleRes,Tt..*)
neuper@37906
   426
StdinSML 1 0 0 0 New_Proof;
neuper@37906
   427
val fmz = ["functionTerm (d_d x (x ^^^ 2 + 3 * x + 4))", 
neuper@37994
   428
	   "differentiateFor x","derivative f_f'"];
neuper@37906
   429
val (dI',pI',mI') =
neuper@37991
   430
  ("Diff",["derivative_of","function"],
neuper@37906
   431
   ["diff","differentiate_on_R"]);
neuper@37906
   432
*)
neuper@37906
   433
neuper@37906
   434
neuper@37906
   435
"---------------------1.5.02 me from script ---------------------";
neuper@37906
   436
"---------------------1.5.02 me from script ---------------------";
neuper@37906
   437
"---------------------1.5.02 me from script ---------------------";
neuper@37906
   438
(*exp_Diff_No-1.xml*)
neuper@37906
   439
val fmz = ["functionTerm (x ^^^ 2 + 3 * x + 4)", 
neuper@37994
   440
	   "differentiateFor x","derivative f_f'"];
neuper@37906
   441
val (dI',pI',mI') =
neuper@37991
   442
  ("Diff",["derivative_of","function"],
neuper@37906
   443
   ["diff","diff_simpl"]);
neuper@37906
   444
(*val p = e_pos'; val c = []; 
neuper@37906
   445
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   446
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   447
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   448
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   449
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   450
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   451
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   452
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   453
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   454
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37991
   455
(*nxt = ("Apply_Method",Apply_Method ("Diff","differentiate_on_R*)
neuper@37906
   456
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   457
neuper@37906
   458
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   459
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   460
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   461
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   462
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   463
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   464
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   465
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   466
if nxt = ("End_Proof'",End_Proof') then ()
neuper@37906
   467
else raise error "new behaviour in tests/differentiate, 1.5.02 me from script";
neuper@37906
   468
neuper@37906
   469
"----------- primed id -------------------------------------------";
neuper@37906
   470
"----------- primed id -------------------------------------------";
neuper@37906
   471
"----------- primed id -------------------------------------------";
neuper@37906
   472
neuper@37994
   473
val f_ = str2term "f_f::bool";
neuper@37906
   474
val f  = str2term "A = s * (a - s)";
neuper@37981
   475
val v_v = str2term "v_";
neuper@37906
   476
val v  = str2term "s";
neuper@37981
   477
val screxp0 = str2term "Take ((primed (lhs f_)) = d_d v_v (rhs f_))";
neuper@37906
   478
atomty screxp0;
neuper@37906
   479
neuper@37994
   480
val screxp1 = subst_atomic [(f_f, f), (v_, v)] screxp0;
neuper@37906
   481
term2str screxp1;
neuper@37906
   482
atomty screxp1;
neuper@37906
   483
neuper@37926
   484
val SOME (f'_,_) = rewrite_set_ Isac.thy false srls_diff screxp1; 
neuper@37906
   485
if term2str f'_= "Take (A' = d_d s (s * (a - s)))" then ()
neuper@37906
   486
else raise error "diff.sml: diff.behav. in 'primed'";
neuper@37906
   487
atomty f'_;
neuper@37906
   488
neuper@37994
   489
val str = "Script DiffEqScr (f_f::bool) (v_v::real) =                         \
neuper@37994
   490
\ (let f_f' = Take ((primed (lhs f_)) = d_d v_v (rhs f_))           \
neuper@37906
   491
\ in (((Try (Repeat (Rewrite frac_conv   False))) @@              \
neuper@37906
   492
 \ (Try (Repeat (Rewrite root_conv   False))) @@                  \
neuper@37906
   493
 \ (Try (Repeat (Rewrite realpow_pow False))) @@                  \
neuper@37906
   494
 \ (Repeat                                                        \
neuper@37991
   495
 \   ((Repeat (Rewrite_Inst [(bdv,v_v)] diff_sum        False)) Or \
neuper@37991
   496
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_prod_const False)) Or \
neuper@37991
   497
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_prod       False)) Or \
neuper@37991
   498
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_quot       True )) Or \
neuper@37991
   499
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sin        False)) Or \
neuper@37991
   500
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sin_chain  False)) Or \
neuper@37991
   501
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_cos        False)) Or \
neuper@37991
   502
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_cos_chain  False)) Or \
neuper@37991
   503
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_pow        False)) Or \
neuper@37991
   504
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_pow_chain  False)) Or \
neuper@37991
   505
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_ln         False)) Or \
neuper@37991
   506
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_ln_chain   False)) Or \
neuper@37991
   507
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_exp        False)) Or \
neuper@37991
   508
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_exp_chain  False)) Or \
neuper@37991
   509
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sqrt       False)) Or \
neuper@37991
   510
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_sqrt_chain False)) Or \
neuper@37991
   511
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_const      False)) Or \
neuper@37991
   512
 \    (Repeat (Rewrite_Inst [(bdv,v_v)] diff_var        False)) Or \
neuper@37906
   513
 \    (Repeat (Rewrite_Set             make_polynomial False)))) @@ \
neuper@37906
   514
 \ (Try (Repeat (Rewrite sym_frac_conv False))) @@              \
neuper@37994
   515
 \ (Try (Repeat (Rewrite sym_root_conv False))))) f_f')"
neuper@37906
   516
;
neuper@37906
   517
val sc = ((inst_abs thy) o term_of o the o (parse thy)) str;
neuper@37906
   518
neuper@37906
   519
neuper@37906
   520
"----------- diff_conv, sym_diff_conv ----------------------------";
neuper@37906
   521
"----------- diff_conv, sym_diff_conv ----------------------------";
neuper@37906
   522
"----------- diff_conv, sym_diff_conv ----------------------------";
neuper@37906
   523
val subs = [(str2term "bdv", str2term "x")];
neuper@37906
   524
val rls = diff_conv;
neuper@37906
   525
neuper@37906
   526
val t = str2term "2/x^^^2"; 
neuper@37926
   527
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@37906
   528
if term2str t = "2 * x ^^^ -2" then () else raise error "diff.sml 1/x";
neuper@37906
   529
neuper@37906
   530
val t = str2term "sqrt (x^^^3)";
neuper@37926
   531
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@37906
   532
if term2str t = "x ^^^ (3 / 2)" then () else raise error "diff.sml x^1/2";
neuper@37906
   533
neuper@37906
   534
val t = str2term "2 / sqrt x^^^3";
neuper@37926
   535
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@37906
   536
if term2str t = "2 * x ^^^ (-3 / 2)" then () else raise error"diff.sml x^-1/2";
neuper@37906
   537
(* trace_rewrite := true;
neuper@37906
   538
   trace_rewrite := false;
neuper@37906
   539
   *)
neuper@37906
   540
val rls = diff_sym_conv; 
neuper@37906
   541
neuper@37906
   542
val t = str2term "2 * x ^^^ -2";
neuper@37926
   543
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@37906
   544
if term2str t = "2 / x ^^^ 2" then () else raise error "diff.sml sym 1/x";
neuper@37906
   545
neuper@37906
   546
neuper@37906
   547
val t = str2term "x ^^^ (3 / 2)";
neuper@37926
   548
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@37906
   549
if term2str t = "sqrt (x ^^^ 3)" then () else raise error"diff.sml sym x^1/x";
neuper@37906
   550
neuper@37906
   551
val t = str2term "2 * x ^^^ (-3 / 2)";
neuper@37926
   552
val SOME (t,_) = rewrite_set_inst_ thy false subs rls t; term2str t;
neuper@37906
   553
if term2str t ="2 / sqrt (x ^^^ 3)"then()else raise error"diff.sml sym x^-1/x";
neuper@37906
   554
neuper@37906
   555
neuper@37906
   556
(* trace_rewrite:=true;
neuper@37906
   557
   *)
neuper@37906
   558
(* trace_rewrite:=false;
neuper@37906
   559
   *)
neuper@37906
   560
(*@@@@*)
neuper@37906
   561
neuper@37906
   562
neuper@37906
   563
"----------- autoCalculate differentiate_on_R 2/x^2 --------------";
neuper@37906
   564
"----------- autoCalculate differentiate_on_R 2/x^2 --------------";
neuper@37906
   565
"----------- autoCalculate differentiate_on_R 2/x^2 --------------";
neuper@37906
   566
states:=[];
neuper@37906
   567
CalcTree
neuper@37906
   568
[(["functionTerm (x^2 + x+ 1/x + 2/x^2)",
neuper@37906
   569
   (*"functionTerm ((x^3)^5)",*)
neuper@37994
   570
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   571
  ("Isac", ["derivative_of","function"],
neuper@37906
   572
  ["diff","differentiate_on_R"]))];
neuper@37906
   573
Iterator 1;
neuper@37906
   574
moveActiveRoot 1;
neuper@37906
   575
autoCalculate 1 CompleteCalc;
neuper@37906
   576
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   577
if p = ([], Res) andalso term2str (get_obj g_res pt (fst p)) = 
neuper@37906
   578
			  "1 + 2 * x + -1 / x ^^^ 2 + -4 / x ^^^ 3" then ()
neuper@37906
   579
else raise error "diff.sml: differentiate_on_R 2/x^2 changed";
neuper@37906
   580
neuper@37906
   581
"-----------------------------------------------------------------";
neuper@37906
   582
states:=[];
neuper@37906
   583
CalcTree
neuper@37906
   584
[(["functionTerm (x^3 * x^5)",
neuper@37994
   585
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   586
  ("Isac", ["derivative_of","function"],
neuper@37906
   587
  ["diff","differentiate_on_R"]))];
neuper@37906
   588
Iterator 1;
neuper@37906
   589
moveActiveRoot 1;
neuper@37906
   590
(* trace_rewrite := true;
neuper@37906
   591
   trace_script := true;
neuper@37906
   592
   *)
neuper@37906
   593
autoCalculate 1 CompleteCalc;
neuper@37906
   594
(* trace_rewrite := false;
neuper@37906
   595
   trace_script := false;
neuper@37906
   596
   *)
neuper@37906
   597
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   598
neuper@37906
   599
if p = ([], Res) andalso term2str (get_obj g_res pt (fst p)) = 
neuper@37906
   600
			 "8 * x ^^^ 7" then () 
neuper@37906
   601
else raise error "diff.sml: differentiate_on_R (x^3 * x^5) changed";
neuper@37906
   602
neuper@37906
   603
neuper@37906
   604
"----------- autoCalculate diff after_simplification -------------";
neuper@37906
   605
"----------- autoCalculate diff after_simplification -------------";
neuper@37906
   606
"----------- autoCalculate diff after_simplification -------------";
neuper@37906
   607
states:=[];
neuper@37906
   608
CalcTree
neuper@37906
   609
[(["functionTerm (x^3 * x^5)",
neuper@37994
   610
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   611
  ("Isac", ["derivative_of","function"],
neuper@37906
   612
  ["diff","after_simplification"]))];
neuper@37906
   613
Iterator 1;
neuper@37906
   614
moveActiveRoot 1;
neuper@37906
   615
(* trace_rewrite := true;
neuper@37906
   616
   trace_script := true;
neuper@37906
   617
   *)
neuper@37906
   618
autoCalculate 1 CompleteCalc;
neuper@37906
   619
(* trace_rewrite := false;
neuper@37906
   620
   trace_script := false;
neuper@37906
   621
   *)
neuper@37906
   622
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   623
if p = ([], Res) andalso term2str (get_obj g_res pt (fst p)) =  "8 * x ^^^ 7"
neuper@37906
   624
then () else raise error "biegelinie.sml: 1st biegelin.7.27 changed";
neuper@37906
   625
neuper@37906
   626
"-----------------------------------------------------------------";
neuper@37906
   627
states:=[];
neuper@37906
   628
CalcTree
neuper@37906
   629
[(["functionTerm ((x^3)^5)",
neuper@37994
   630
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   631
  ("Isac", ["derivative_of","function"],
neuper@37906
   632
  ["diff","after_simplification"]))];
neuper@37906
   633
Iterator 1;
neuper@37906
   634
moveActiveRoot 1;
neuper@37906
   635
autoCalculate 1 CompleteCalc;
neuper@37906
   636
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   637
if p = ([], Res) andalso term2str (get_obj g_res pt (fst p)) = "15 * x ^^^ 14"
neuper@37906
   638
then () else raise error "biegelinie.sml: 1st biegelin.7.27 changed";
neuper@37906
   639
neuper@37906
   640
neuper@37906
   641
neuper@37906
   642
"----------- autoCalculate differentiate_equality ----------------";
neuper@37906
   643
"----------- autoCalculate differentiate_equality ----------------";
neuper@37906
   644
"----------- autoCalculate differentiate_equality ----------------";
neuper@37906
   645
states:=[];
neuper@37906
   646
CalcTree
neuper@37994
   647
[(["functionEq (A = s * (a - s))", "differentiateFor s", "derivativeEq f_f'"], 
neuper@37991
   648
  ("Isac", ["named","derivative_of","function"],
neuper@37906
   649
  ["diff","differentiate_equality"]))];
neuper@37906
   650
Iterator 1;
neuper@37906
   651
moveActiveRoot 1;
neuper@37906
   652
autoCalculate 1 CompleteCalc;
neuper@37906
   653
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   654
neuper@37906
   655
neuper@37906
   656
"----------- tests for examples ----------------------------------";
neuper@37906
   657
"----------- tests for examples ----------------------------------";
neuper@37906
   658
"----------- tests for examples ----------------------------------";
neuper@37906
   659
"----- parse errors";
neuper@37906
   660
(*str2term "F  =  sqrt( y^2 - O) * (z + O^2)";
neuper@37906
   661
str2term "O";*)
neuper@37906
   662
str2term "OO";
neuper@37906
   663
neuper@37906
   664
"----- thm 'diff_prod_const'";
neuper@37906
   665
val subs = [(str2term "bdv", str2term "l")];
neuper@37906
   666
val f = str2term "G' = d_d l (l * sqrt (7 * s ^ 2 - l ^ 2))";
neuper@37906
   667
(*
neuper@37906
   668
trace_rewrite := true;
neuper@37906
   669
rewrite_inst_ Isac.thy tless_true erls_diff true subs diff_prod_const f;
neuper@37906
   670
trace_rewrite := false;
neuper@37906
   671
*)
neuper@37906
   672
neuper@37906
   673
"------------inform for x^2+x+1 ----------------------------------";
neuper@37906
   674
"------------inform for x^2+x+1 ----------------------------------";
neuper@37906
   675
"------------inform for x^2+x+1 ----------------------------------";
neuper@37906
   676
states:=[];
neuper@37906
   677
CalcTree
neuper@37906
   678
[(["functionTerm (x^2 + x + 1)",
neuper@37994
   679
   "differentiateFor x", "derivative f_f'"], 
neuper@37991
   680
  ("Isac", ["derivative_of","function"],
neuper@37906
   681
  ["diff","differentiate_on_R"]))];
neuper@37906
   682
Iterator 1;
neuper@37906
   683
moveActiveRoot 1;
neuper@37906
   684
autoCalculate 1 CompleteCalcHead;
neuper@37906
   685
autoCalculate 1 (Step 1);
neuper@37906
   686
autoCalculate 1 (Step 1);
neuper@37906
   687
autoCalculate 1 (Step 1);
neuper@37906
   688
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   689
appendFormula 1 "2*x + d_d x x + d_d x 1";
neuper@37906
   690
val ((pt,p),_) = get_calc 1; show_pt pt;
neuper@37906
   691
if existpt' ([3], Res) pt then ()
neuper@37906
   692
else raise error  "diff.sml: inform d_d x (x^2 + x + 1) doesnt work";