test/Tools/isac/Knowledge/diff.sml
author Walther Neuper <neuper@ist.tugraz.at>
Thu, 30 Dec 2010 14:24:43 +0100
branchdecompose-isar
changeset 38081 89480ba7be8d
parent 38050 4c52ad406c20
child 41929 e4b645e5f25b
permissions -rw-r--r--
analysed error *** nxt_add: EX itm. not(dat(itm)<=dat(ori))

this error is caused in test/../polyminus
by wrong input data to me, autoCalculate, and NOT by bugs in me,
because me work in test/../integrate.sml and test/../diff.sml,
the latter checked in this changeset.

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