integration by rewrite_set, still trying
authorwneuper
Sat, 20 Aug 2005 18:25:14 +0200
changeset 2916730089aebfcf
parent 2915 5596b0a58aa4
child 2917 2488337fd0dd
integration by rewrite_set, still trying
src/sml/IsacKnowledge/Integrate.ML
src/sml/IsacKnowledge/Integrate.thy
src/smltest/IsacKnowledge/integrate.sml
     1.1 --- a/src/sml/IsacKnowledge/Integrate.ML	Sat Aug 20 18:04:54 2005 +0200
     1.2 +++ b/src/sml/IsacKnowledge/Integrate.ML	Sat Aug 20 18:25:14 2005 +0200
     1.3 @@ -15,7 +15,7 @@
     1.4   ("integral_var",num_str integral_var),
     1.5   ("integral_add",num_str integral_add),
     1.6   ("integral_mult",num_str integral_mult),
     1.7 - ("add_new_c",num_str add_new_c),
     1.8 + ("call_for_new_c",num_str call_for_new_c),
     1.9   ("integral_pow",num_str integral_pow)
    1.10  ]);
    1.11  
    1.12 @@ -81,6 +81,22 @@
    1.13  			    Calc ("op +", eval_binop "#add_")(*for n+1*)
    1.14  			    ],
    1.15  		   scr = EmptyScr});
    1.16 +val add_new_c = 
    1.17 +    prep_rls (Seq {id="add_new_c", preconds = [], 
    1.18 +		   rew_ord = ("termlessI",termlessI), 
    1.19 +		   erls = Rls {id="conditions_in_add_new_c", 
    1.20 +			       preconds = [], 
    1.21 +			       rew_ord = ("termlessI",termlessI), 
    1.22 +			       erls = Erls, 
    1.23 +			       srls = Erls, calc = [],
    1.24 +			       rules = [Calc ("Tools.matches", eval_matches "")
    1.25 +					],
    1.26 +			       scr = EmptyScr}, 
    1.27 +		   srls = Erls, calc = [],
    1.28 +		   rules = [ Thm ("call_for_new_c", num_str call_for_new_c),
    1.29 +			     Calc("Integrate.new'_c", eval_new_c "new_c_")
    1.30 +			    ],
    1.31 +		   scr = EmptyScr});
    1.32  val integration = 
    1.33      prep_rls (Seq {id="integration", preconds = [], 
    1.34  		   rew_ord = ("termlessI",termlessI), 
    1.35 @@ -89,16 +105,16 @@
    1.36  			       rew_ord = ("termlessI",termlessI), 
    1.37  			       erls = Erls, 
    1.38  			       srls = Erls, calc = [],
    1.39 -			       rules = [Calc ("Tools.matches", eval_matches "")
    1.40 -					],
    1.41 +			       rules = [],
    1.42  			       scr = EmptyScr}, 
    1.43  		   srls = Erls, calc = [],
    1.44  		   rules = [ Rls_ integration_rules,
    1.45 -			     Thm ("add_new_c",num_str add_new_c),
    1.46 -			     Calc ("Integrate.new'_c", eval_new_c "new_c_")
    1.47 +			     Rls_ add_new_c,
    1.48 +			     Rls_ norm_Poly
    1.49  			    ],
    1.50  		   scr = EmptyScr});
    1.51  ruleset' := overwritel (!ruleset', [("integration_rules", integration_rules),
    1.52 +				    ("add_new_c", add_new_c),
    1.53  				    ("integration", integration)]);
    1.54  
    1.55  (** problems **)
     2.1 --- a/src/sml/IsacKnowledge/Integrate.thy	Sat Aug 20 18:04:54 2005 +0200
     2.2 +++ b/src/sml/IsacKnowledge/Integrate.thy	Sat Aug 20 18:25:14 2005 +0200
     2.3 @@ -43,7 +43,7 @@
     2.4  		    \(Integral u D bdv) + (Integral v D bdv)"
     2.5    integral_mult     "[| Not (bdv occurs_in u); bdv occurs_in v |] ==> \
     2.6  		    \Integral (u * v) D bdv = u * (Integral v D bdv)"
     2.7 -  add_new_c         "Not (matches (u + new_c v) a) ==> a = a + new_c a"
     2.8 +  call_for_new_c    "Not (matches (u + new_c v) a) ==> a = a + new_c a"
     2.9  
    2.10    integral_pow      "Integral bdv ^^^ n D bdv = bdv ^^^ (n+1) / (n + 1)"
    2.11  
     3.1 --- a/src/smltest/IsacKnowledge/integrate.sml	Sat Aug 20 18:04:54 2005 +0200
     3.2 +++ b/src/smltest/IsacKnowledge/integrate.sml	Sat Aug 20 18:25:14 2005 +0200
     3.3 @@ -109,8 +109,8 @@
     3.4  (*
     3.5  trace_rewrite := true;
     3.6  *)
     3.7 -val str = rewrit add_new_c (str2t "x ^^^ 2 / 2"); term2s str;
     3.8 -val str = (rewrit add_new_c str)
     3.9 +val str = rewrit call_for_new_c (str2t "x ^^^ 2 / 2"); term2s str;
    3.10 +val str = (rewrit call_for_new_c str)
    3.11      handle OPTION =>  str2t "no_rewrite";;
    3.12  
    3.13  (*