src/Tools/isac/Knowledge/Integrate.thy
changeset 59857 cbb3fae0381d
parent 59852 ea7e6679080e
child 59861 65ec9f679c3f
equal deleted inserted replaced
59856:e0bb6d6b5168 59857:cbb3fae0381d
   161 (*.rulesets for simplifying Integrals.*)
   161 (*.rulesets for simplifying Integrals.*)
   162 
   162 
   163 (*.for simplify_Integral adapted from 'norm_Rational_rls'.*)
   163 (*.for simplify_Integral adapted from 'norm_Rational_rls'.*)
   164 val norm_Rational_rls_noadd_fractions = 
   164 val norm_Rational_rls_noadd_fractions = 
   165 Rule_Def.Repeat {id = "norm_Rational_rls_noadd_fractions", preconds = [], 
   165 Rule_Def.Repeat {id = "norm_Rational_rls_noadd_fractions", preconds = [], 
   166      rew_ord = ("dummy_ord",Rule.dummy_ord), 
   166      rew_ord = ("dummy_ord",Rewrite_Ord.dummy_ord), 
   167      erls = norm_rat_erls, srls = Rule_Set.Empty, calc = [], errpatts = [],
   167      erls = norm_rat_erls, srls = Rule_Set.Empty, calc = [], errpatts = [],
   168      rules = [(*Rule.Rls_ add_fractions_p_rls,!!!*)
   168      rules = [(*Rule.Rls_ add_fractions_p_rls,!!!*)
   169 	      Rule.Rls_ (*rat_mult_div_pow original corrected WN051028*)
   169 	      Rule.Rls_ (*rat_mult_div_pow original corrected WN051028*)
   170 		  (Rule_Def.Repeat {id = "rat_mult_div_pow", preconds = [], 
   170 		  (Rule_Def.Repeat {id = "rat_mult_div_pow", preconds = [], 
   171 		       rew_ord = ("dummy_ord",Rule.dummy_ord), 
   171 		       rew_ord = ("dummy_ord",Rewrite_Ord.dummy_ord), 
   172 		       erls = (*FIXME.WN051028 Rule_Set.empty,*)
   172 		       erls = (*FIXME.WN051028 Rule_Set.empty,*)
   173 		       Rule_Set.append_rules "Rule_Set.empty-is_polyexp" Rule_Set.empty
   173 		       Rule_Set.append_rules "Rule_Set.empty-is_polyexp" Rule_Set.empty
   174 				  [Rule.Num_Calc ("Poly.is'_polyexp", 
   174 				  [Rule.Num_Calc ("Poly.is'_polyexp", 
   175 					 eval_is_polyexp "")],
   175 					 eval_is_polyexp "")],
   176 				  srls = Rule_Set.Empty, calc = [], errpatts = [],
   176 				  srls = Rule_Set.Empty, calc = [], errpatts = [],
   205        };
   205        };
   206 
   206 
   207 (*.for simplify_Integral adapted from 'norm_Rational'.*)
   207 (*.for simplify_Integral adapted from 'norm_Rational'.*)
   208 val norm_Rational_noadd_fractions = 
   208 val norm_Rational_noadd_fractions = 
   209    Rule_Set.Seqence {id = "norm_Rational_noadd_fractions", preconds = [], 
   209    Rule_Set.Seqence {id = "norm_Rational_noadd_fractions", preconds = [], 
   210        rew_ord = ("dummy_ord",Rule.dummy_ord), 
   210        rew_ord = ("dummy_ord",Rewrite_Ord.dummy_ord), 
   211        erls = norm_rat_erls, srls = Rule_Set.Empty, calc = [], errpatts = [],
   211        erls = norm_rat_erls, srls = Rule_Set.Empty, calc = [], errpatts = [],
   212        rules = [Rule.Rls_ discard_minus,
   212        rules = [Rule.Rls_ discard_minus,
   213 		Rule.Rls_ rat_mult_poly,(* removes double fractions like a/b/c    *)
   213 		Rule.Rls_ rat_mult_poly,(* removes double fractions like a/b/c    *)
   214 		Rule.Rls_ make_rat_poly_with_parentheses, (*WN0510 also in(#)below*)
   214 		Rule.Rls_ make_rat_poly_with_parentheses, (*WN0510 also in(#)below*)
   215 		Rule.Rls_ cancel_p_rls, (*FIXME.MG:cancel_p does NOT order sometim*)
   215 		Rule.Rls_ cancel_p_rls, (*FIXME.MG:cancel_p does NOT order sometim*)
   239 			  ***** TermC.num_str @{thm add_divide_distrib})
   239 			  ***** TermC.num_str @{thm add_divide_distrib})
   240 			  (*"(?x + ?y) / ?z = ?x / ?z + ?y / ?z"*)----------*)
   240 			  (*"(?x + ?y) / ?z = ?x / ?z + ?y / ?z"*)----------*)
   241 		];
   241 		];
   242 val simplify_Integral = 
   242 val simplify_Integral = 
   243   Rule_Set.Seqence {id = "simplify_Integral", preconds = []:term list, 
   243   Rule_Set.Seqence {id = "simplify_Integral", preconds = []:term list, 
   244        rew_ord = ("dummy_ord", Rule.dummy_ord),
   244        rew_ord = ("dummy_ord", Rewrite_Ord.dummy_ord),
   245       erls = Atools_erls, srls = Rule_Set.Empty,
   245       erls = Atools_erls, srls = Rule_Set.Empty,
   246       calc = [],  errpatts = [],
   246       calc = [],  errpatts = [],
   247       rules = [Rule.Thm ("distrib_right", TermC.num_str @{thm distrib_right}),
   247       rules = [Rule.Thm ("distrib_right", TermC.num_str @{thm distrib_right}),
   248  	       (*"(?z1.0 + ?z2.0) * ?w = ?z1.0 * ?w + ?z2.0 * ?w"*)
   248  	       (*"(?z1.0 + ?z2.0) * ?w = ?z1.0 * ?w + ?z2.0 * ?w"*)
   249 	       Rule.Thm ("add_divide_distrib", TermC.num_str @{thm add_divide_distrib}),
   249 	       Rule.Thm ("add_divide_distrib", TermC.num_str @{thm add_divide_distrib}),
   265    This is a copy from 'make_polynomial_in' with insertions from 
   265    This is a copy from 'make_polynomial_in' with insertions from 
   266    'make_ratpoly_in' 
   266    'make_ratpoly_in' 
   267 THIS IS KEPT FOR COMPARISON ............................................   
   267 THIS IS KEPT FOR COMPARISON ............................................   
   268 * val simplify_Integral = prep_rls'(
   268 * val simplify_Integral = prep_rls'(
   269 *   Rule_Set.Seqence {id = "", preconds = []:term list, 
   269 *   Rule_Set.Seqence {id = "", preconds = []:term list, 
   270 *        rew_ord = ("dummy_ord", Rule.dummy_ord),
   270 *        rew_ord = ("dummy_ord", Rewrite_Ord.dummy_ord),
   271 *       erls = Atools_erls, srls = Rule_Set.Empty,
   271 *       erls = Atools_erls, srls = Rule_Set.Empty,
   272 *       calc = [], (*asm_thm = [],*)
   272 *       calc = [], (*asm_thm = [],*)
   273 *       rules = [Rule.Rls_ expand_poly,
   273 *       rules = [Rule.Rls_ expand_poly,
   274 * 	       Rule.Rls_ order_add_mult_in,
   274 * 	       Rule.Rls_ order_add_mult_in,
   275 * 	       Rule.Rls_ simplify_power,
   275 * 	       Rule.Rls_ simplify_power,