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";