test/Tools/isac/Knowledge/partial_fractions.sml
changeset 42413 a8303098408a
parent 42405 f813ece49902
child 42451 bc03b5d60547
     1.1 --- a/test/Tools/isac/Knowledge/partial_fractions.sml	Fri May 04 08:51:42 2012 +0200
     1.2 +++ b/test/Tools/isac/Knowledge/partial_fractions.sml	Fri May 04 17:33:31 2012 +0200
     1.3 @@ -12,6 +12,7 @@
     1.4  "----------- Logic.unvarify_global ----------------------";
     1.5  "----------- eval_drop_questionmarks --------------------";
     1.6  "----------- = me for met_partial_fraction --------------";
     1.7 +"----------- autoCalculate for met_partial_fraction -----";
     1.8  "----------- progr.vers.2: check erls for multiply_ansatz";
     1.9  "----------- progr.vers.2: improve program --------------";
    1.10  "--------------------------------------------------------";
    1.11 @@ -221,6 +222,94 @@
    1.12  if f2str f = "4 / (z - 1 / 2) + -4 / (z - -1 / 4)" then() 
    1.13  else error "= me .. met_partial_fraction broken";
    1.14  
    1.15 +"----------- autoCalculate for met_partial_fraction -----";
    1.16 +"----------- autoCalculate for met_partial_fraction -----";
    1.17 +"----------- autoCalculate for met_partial_fraction -----";
    1.18 +states:= [];
    1.19 +  val fmz =                                             
    1.20 +    ["functionTerm (3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z))))", 
    1.21 +      "solveFor z", "decomposedFunction p_p"];
    1.22 +  val (dI', pI', mI') =
    1.23 +    ("Partial_Fractions", 
    1.24 +      ["partial_fraction", "rational", "simplification"],
    1.25 +      ["simplification","of_rationals","to_partial_fraction"]);
    1.26 +CalcTree [(fmz, (dI' ,pI' ,mI'))];
    1.27 +Iterator 1;
    1.28 +moveActiveRoot 1;
    1.29 +autoCalculate 1 CompleteCalc; 
    1.30 +
    1.31 +val ((pt,p),_) = get_calc 1; val ip = get_pos 1 1;
    1.32 +if p = ip andalso ip = ([], Res) then ()
    1.33 +  else error "autoCalculate for met_partial_fraction changed: final pos'";
    1.34 +
    1.35 +val (Form f, tac, asms) = pt_extract (pt, p);
    1.36 +if term2str f = "4 / (z - 1 / 2) + -4 / (z - -1 / 4)" andalso
    1.37 +  tac = NONE andalso
    1.38 +  terms2str' asms = "[~ matches (?a = 0) (3 = -3 * B / 4) | ~ lhs (3 = -3 * B / 4) is_poly_in B," ^
    1.39 +  "B = -4,lhs (3 + 3 / 4 * B = 0) is_poly_in B,lhs (3 + 3 / 4 * B = 0) has_degree_in B = 1," ^
    1.40 +  "B is_polyexp,A is_polyexp," ^
    1.41 +  "~ matches (?a = 0) (3 = 3 * A / 4) | ~ lhs (3 = 3 * A / 4) is_poly_in A," ^
    1.42 +  "A = 4,lhs (3 + -3 / 4 * A = 0) is_poly_in A,lhs (3 + -3 / 4 * A = 0) has_degree_in A = 1," ^
    1.43 +  "lhs (-1 + -2 * z + 8 * z ^^^ 2 = 0) has_degree_in z = 2," ^
    1.44 +  "lhs (-1 + -2 * z + 8 * z ^^^ 2 = 0) is_poly_in z,z = 1 / 2,z = -1 / 4,z ~= 0,z is_polyexp]"
    1.45 +then ()
    1.46 +  else error "autoCalculate for met_partial_fraction changed: final result"
    1.47 +
    1.48 +show_pt pt;
    1.49 +(*[
    1.50 +(([], Frm), Problem (Partial_Fractions, [partial_fraction, rational, simplification])),
    1.51 +(([1], Frm), 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))),
    1.52 +(([1], Res), 24 / (-1 + -2 * z + 8 * z ^^^ 2)),
    1.53 +(([2], Pbl), solve (-1 + -2 * z + 8 * z ^^^ 2 = 0, z)),
    1.54 +(([2,1], Frm), -1 + -2 * z + 8 * z ^^^ 2 = 0),
    1.55 +(([2,1], Res), z = (- -2 + sqrt (-2 ^^^ 2 - 4 * 8 * -1)) / (2 * 8) |
    1.56 +z = (- -2 - sqrt (-2 ^^^ 2 - 4 * 8 * -1)) / (2 * 8)),
    1.57 +(([2,2], Res), z = 1 / 2 | z = -1 / 4),
    1.58 +(([2,3], Res), [z = 1 / 2, z = -1 / 4]),
    1.59 +(([2,4], Res), [z = 1 / 2, z = -1 / 4]),
    1.60 +(([2], Res), [z = 1 / 2, z = -1 / 4]),
    1.61 +(([3], Frm), 3 / ((z - 1 / 2) * (z - -1 / 4))),
    1.62 +(([3], Res), ?A / (z - 1 / 2) + ?B / (z - -1 / 4)),
    1.63 +(([4], Frm), 3 / ((z - 1 / 2) * (z - -1 / 4)) = ?A / (z - 1 / 2) + ?B / (z - -1 / 4)),
    1.64 +(([4], Res), 3 = ?A * (z - -1 / 4) + ?B * (z - 1 / 2)),
    1.65 +(([5], Frm), 3 = A * (z - -1 / 4) + B * (z - 1 / 2)),
    1.66 +(([5], Res), 3 = A * (1 / 2 - -1 / 4) + B * (1 / 2 - 1 / 2)),
    1.67 +(([6], Res), 3 = 3 * A / 4),
    1.68 +(([7], Pbl), solve (3 = 3 * A / 4, A)),
    1.69 +(([7,1], Frm), 3 = 3 * A / 4),
    1.70 +(([7,1], Res), 3 - 3 * A / 4 = 0),
    1.71 +(([7,2], Res), 3 / 1 + -3 / 4 * A = 0),
    1.72 +(([7,3], Res), 3 + -3 / 4 * A = 0),
    1.73 +(([7,4], Pbl), solve (3 + -3 / 4 * A = 0, A)),
    1.74 +(([7,4,1], Frm), 3 + -3 / 4 * A = 0),
    1.75 +(([7,4,1], Res), A = -1 * 3 / (-3 / 4)),
    1.76 +(([7,4,2], Res), A = -3 / (-3 / 4)),
    1.77 +(([7,4,3], Res), A = 4),
    1.78 +(([7,4,4], Res), [A = 4]),
    1.79 +(([7,4,5], Res), [A = 4]),
    1.80 +(([7,4], Res), [A = 4]),
    1.81 +(([7], Res), [A = 4]),
    1.82 +(([8], Frm), 3 = A * (z - -1 / 4) + B * (z - 1 / 2)),
    1.83 +(([8], Res), 3 = A * (-1 / 4 - -1 / 4) + B * (-1 / 4 - 1 / 2)),
    1.84 +(([9], Res), 3 = -3 * B / 4),
    1.85 +(([10], Pbl), solve (3 = -3 * B / 4, B)),
    1.86 +(([10,1], Frm), 3 = -3 * B / 4),
    1.87 +(([10,1], Res), 3 - -3 * B / 4 = 0),
    1.88 +(([10,2], Res), 3 / 1 + 3 / 4 * B = 0),
    1.89 +(([10,3], Res), 3 + 3 / 4 * B = 0),
    1.90 +(([10,4], Pbl), solve (3 + 3 / 4 * B = 0, B)),
    1.91 +(([10,4,1], Frm), 3 + 3 / 4 * B = 0),
    1.92 +(([10,4,1], Res), B = -1 * 3 / (3 / 4)),
    1.93 +(([10,4,2], Res), B = -3 / (3 / 4)),
    1.94 +(([10,4,3], Res), B = -4),
    1.95 +(([10,4,4], Res), [B = -4]),
    1.96 +(([10,4,5], Res), [B = -4]),
    1.97 +(([10,4], Res), [B = -4]),
    1.98 +(([10], Res), [B = -4]),
    1.99 +(([11], Frm), A / (z - 1 / 2) + B / (z - -1 / 4)),
   1.100 +(([11], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)),
   1.101 +(([], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4))] *)
   1.102 +
   1.103  "----------- progr.vers.2: check erls for multiply_ansatz";
   1.104  "----------- progr.vers.2: check erls for multiply_ansatz";
   1.105  "----------- progr.vers.2: check erls for multiply_ansatz";