216 |
216 |
217 "----------- primed id ----------------------------------"; |
217 "----------- primed id ----------------------------------"; |
218 "----------- primed id ----------------------------------"; |
218 "----------- primed id ----------------------------------"; |
219 "----------- primed id ----------------------------------"; |
219 "----------- primed id ----------------------------------"; |
220 val ctxt = Proof_Context.init_global @{theory Isac_Knowledge}; |
220 val ctxt = Proof_Context.init_global @{theory Isac_Knowledge}; |
221 val f_ = TermC.parse_test @{context} "f_f::bool"; |
221 val f_ = ParseC.parse_test @{context} "f_f::bool"; |
222 val f = TermC.parse_test @{context} "A = s * (a - s)"; |
222 val f = ParseC.parse_test @{context} "A = s * (a - s)"; |
223 val v_ = TermC.parse_test @{context} "v_v"; |
223 val v_ = ParseC.parse_test @{context} "v_v"; |
224 val v = TermC.parse_test @{context} "s"; |
224 val v = ParseC.parse_test @{context} "s"; |
225 val screxp0 = TermC.parse_test @{context} "Take ((primed (lhs f_f)) = d_d v_v (rhs f_f))"; |
225 val screxp0 = ParseC.parse_test @{context} "Take ((primed (lhs f_f)) = d_d v_v (rhs f_f))"; |
226 TermC.atom_trace_detail @{context} screxp0; |
226 TermC.atom_trace_detail @{context} screxp0; |
227 |
227 |
228 val screxp1 = subst_atomic [(f_, f), (v_, v)] screxp0; |
228 val screxp1 = subst_atomic [(f_, f), (v_, v)] screxp0; |
229 UnparseC.term screxp1; |
229 UnparseC.term screxp1; |
230 TermC.atom_trace_detail @{context} screxp1; |
230 TermC.atom_trace_detail @{context} screxp1; |
266 |
266 |
267 |
267 |
268 "----------- diff_conv, sym_diff_conv -------------------"; |
268 "----------- diff_conv, sym_diff_conv -------------------"; |
269 "----------- diff_conv, sym_diff_conv -------------------"; |
269 "----------- diff_conv, sym_diff_conv -------------------"; |
270 "----------- diff_conv, sym_diff_conv -------------------"; |
270 "----------- diff_conv, sym_diff_conv -------------------"; |
271 val subs = [(TermC.parse_test @{context} "bdv", TermC.parse_test @{context} "x")]; |
271 val subs = [(ParseC.parse_test @{context} "bdv", ParseC.parse_test @{context} "x")]; |
272 val rls = diff_conv; |
272 val rls = diff_conv; |
273 |
273 |
274 val t = TermC.parse_test @{context} "2/x \<up> 2"; |
274 val t = ParseC.parse_test @{context} "2/x \<up> 2"; |
275 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
275 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
276 if UnparseC.term t = "2 * x \<up> - 2" then () else error "diff.sml 1/x"; |
276 if UnparseC.term t = "2 * x \<up> - 2" then () else error "diff.sml 1/x"; |
277 |
277 |
278 val t = TermC.parse_test @{context} "sqrt (x \<up> 3)"; |
278 val t = ParseC.parse_test @{context} "sqrt (x \<up> 3)"; |
279 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
279 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
280 if UnparseC.term t = "x \<up> (3 / 2)" then () else error "diff.sml x \<up> 1/2"; |
280 if UnparseC.term t = "x \<up> (3 / 2)" then () else error "diff.sml x \<up> 1/2"; |
281 |
281 |
282 val t = TermC.parse_test @{context} "2 / sqrt x \<up> 3"; |
282 val t = ParseC.parse_test @{context} "2 / sqrt x \<up> 3"; |
283 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
283 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
284 if UnparseC.term t = "2 * x \<up> (- 3 / 2)" then () else error "diff.sml x \<up> - 1/2"; |
284 if UnparseC.term t = "2 * x \<up> (- 3 / 2)" then () else error "diff.sml x \<up> - 1/2"; |
285 |
285 |
286 val rls = diff_sym_conv; |
286 val rls = diff_sym_conv; |
287 |
287 |
288 val t = TermC.parse_test @{context} "2 * x \<up> - 2"; |
288 val t = ParseC.parse_test @{context} "2 * x \<up> - 2"; |
289 val SOME (t, _) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
289 val SOME (t, _) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
290 if UnparseC.term t = "2 / x \<up> 2" then () else error "diff.sml sym 1/x"; |
290 if UnparseC.term t = "2 / x \<up> 2" then () else error "diff.sml sym 1/x"; |
291 |
291 |
292 val t = TermC.parse_test @{context} "x \<up> (3 / 2)"; |
292 val t = ParseC.parse_test @{context} "x \<up> (3 / 2)"; |
293 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
293 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
294 if UnparseC.term t = "sqrt (x \<up> 3)" then ((*..wrong rewrite*)) else error"diff.sml sym x \<up> 1/x"; |
294 if UnparseC.term t = "sqrt (x \<up> 3)" then ((*..wrong rewrite*)) else error"diff.sml sym x \<up> 1/x"; |
295 |
295 |
296 val t = TermC.parse_test @{context} "2 * x \<up> (-3 / 2)"; |
296 val t = ParseC.parse_test @{context} "2 * x \<up> (-3 / 2)"; |
297 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
297 val SOME (t,_) = rewrite_set_inst_ ctxt false subs rls t; UnparseC.term t; |
298 if UnparseC.term t ="2 / sqrt (x \<up> 3)"then()else error"diff.sml sym x \<up> - 1/x"; |
298 if UnparseC.term t ="2 / sqrt (x \<up> 3)"then()else error"diff.sml sym x \<up> - 1/x"; |
299 |
299 |
300 |
300 |
301 "----------- autoCalculate differentiate_on_R 2/x \<up> 2 -----"; |
301 "----------- autoCalculate differentiate_on_R 2/x \<up> 2 -----"; |
386 |
386 |
387 "----------- tests for examples -------------------------"; |
387 "----------- tests for examples -------------------------"; |
388 "----------- tests for examples -------------------------"; |
388 "----------- tests for examples -------------------------"; |
389 "----------- tests for examples -------------------------"; |
389 "----------- tests for examples -------------------------"; |
390 "----- TermC.parse errors"; |
390 "----- TermC.parse errors"; |
391 (*TermC.parse_test @{context} "F = sqrt( y \<up> 2 - O) * (z + O \<up> 2)"; |
391 (*ParseC.parse_test @{context} "F = sqrt( y \<up> 2 - O) * (z + O \<up> 2)"; |
392 TermC.parse_test @{context} "O"; |
392 ParseC.parse_test @{context} "O"; |
393 TermC.parse_test @{context} "OO"; ---errors*) |
393 ParseC.parse_test @{context} "OO"; ---errors*) |
394 TermC.parse_test @{context} "OOO"; |
394 ParseC.parse_test @{context} "OOO"; |
395 |
395 |
396 "----- thm 'diff_prod_const'"; |
396 "----- thm 'diff_prod_const'"; |
397 val subs = [(TermC.parse_test @{context} "bdv", TermC.parse_test @{context} "l")]; |
397 val subs = [(ParseC.parse_test @{context} "bdv", ParseC.parse_test @{context} "l")]; |
398 val f = TermC.parse_test @{context} "G' = d_d l (l * sqrt (7 * s \<up> 2 - l \<up> 2))"; |
398 val f = ParseC.parse_test @{context} "G' = d_d l (l * sqrt (7 * s \<up> 2 - l \<up> 2))"; |
399 |
399 |
400 "------------inform for x \<up> 2+x+1 -------------------------"; |
400 "------------inform for x \<up> 2+x+1 -------------------------"; |
401 "------------inform for x \<up> 2+x+1 -------------------------"; |
401 "------------inform for x \<up> 2+x+1 -------------------------"; |
402 "------------inform for x \<up> 2+x+1 -------------------------"; |
402 "------------inform for x \<up> 2+x+1 -------------------------"; |
403 States.reset (); |
403 States.reset (); |