[-Test_Isac] funpack: Const ("Partial_Fractions.AA",..) makes trick superfluous
authorWalther Neuper <wneuper@ist.tugraz.at>
Thu, 07 Mar 2019 17:22:20 +0100
changeset 59512e504168e7b01
parent 59511 f85d52f76dbd
child 59513 deb1efba3119
[-Test_Isac] funpack: Const ("Partial_Fractions.AA",..) makes trick superfluous
src/Tools/isac/Interpret/tactic.sml
src/Tools/isac/Knowledge/Inverse_Z_Transform.thy
src/Tools/isac/Knowledge/Partial_Fractions.thy
     1.1 --- a/src/Tools/isac/Interpret/tactic.sml	Thu Mar 07 16:50:20 2019 +0100
     1.2 +++ b/src/Tools/isac/Interpret/tactic.sml	Thu Mar 07 17:22:20 2019 +0100
     1.3 @@ -318,7 +318,6 @@
     1.4    This is useful for costly results, e.g. from rewriting;
     1.5    however, these results might be changed by Scripts like
     1.6        "      eq = (Rewrite_Set ''ansatz_rls'' False) eql;" ^
     1.7 -      "      eq = drop_questionmarks eq;" ^
     1.8        "      eq = (Rewrite_Set equival_trans False) eq;" ^
     1.9    TODO.WN120106 ANALOGOUSLY TO Substitute':
    1.10    So tac_ contains the term t the result was calculated from
     2.1 --- a/src/Tools/isac/Knowledge/Inverse_Z_Transform.thy	Thu Mar 07 16:50:20 2019 +0100
     2.2 +++ b/src/Tools/isac/Knowledge/Inverse_Z_Transform.thy	Thu Mar 07 17:22:20 2019 +0100
     2.3 @@ -150,7 +150,6 @@
     2.4        (eqr::real) = (Try (Rewrite_Set ''ansatz_rls'' False)) eql; \<comment> \<open>---\<close>
     2.5        (eq::bool) = Take (eql = eqr);                    \<comment> \<open>Maybe possible to use HOLogic.mk_eq ??\<close>
     2.6        eq = (Try (Rewrite_Set ''equival_trans'' False)) eq; \<comment> \<open>---\<close>
     2.7 -      eq = drop_questionmarks eq;                                                 
     2.8        (z1::real) = (rhs (NTH 1 L_L)); \<comment> \<open>prepare equation for a - eq_a therefor substitute z with solution 1 - z1\<close>
     2.9        (z2::real) = (rhs (NTH 2 L_L)); \<comment> \<open>---\<close>
    2.10        (eq_a::bool) = Take eq;                                                     
    2.11 @@ -169,14 +168,11 @@
    2.12                                [''univariate'',''equation''],[''no_met''])         
    2.13                                [BOOL eq_b, REAL (B::real)]);                       
    2.14        (b::real) = (rhs(NTH 1 sol_b)); \<comment> \<open>---\<close>
    2.15 -      eqr = drop_questionmarks eqr;                                               
    2.16        (pbz::real) = Take eqr;                                                     
    2.17        pbz = ((Substitute [A=a, B=b]) pbz); \<comment> \<open>---\<close>
    2.18        pbz = Rewrite ''ruleYZ'' False pbz;                                         
    2.19 -      pbz = drop_questionmarks pbz; \<comment> \<open>---\<close>
    2.20        (X_z::bool) = Take (X_z = pbz);                                             
    2.21 -      (n_eq::bool) = (Rewrite_Set ''inverse_z'' False) X_z;                       
    2.22 -      n_eq = drop_questionmarks n_eq                                              
    2.23 +      (n_eq::bool) = (Rewrite_Set ''inverse_z'' False) X_z
    2.24  in n_eq)"
    2.25  *)
    2.26  setup \<open>KEStore_Elems.add_mets
    2.27 @@ -216,7 +212,6 @@
    2.28             (*Maybe possible to use HOLogic.mk_eq ??*)
    2.29             "      eq = (Try (Rewrite_Set ''equival_trans'' False)) eq;         "^ 
    2.30        
    2.31 -           "      eq = drop_questionmarks eq;                              "^
    2.32             "      (z1::real) = (rhs (NTH 1 L_L));                          "^
    2.33             (* 
    2.34              * prepare equation for a - eq_a
    2.35 @@ -242,16 +237,13 @@
    2.36             "                              [BOOL eq_b, REAL (B::real)]);    "^
    2.37             "      (b::real) = (rhs(NTH 1 sol_b));                          "^
    2.38        
    2.39 -           "      eqr = drop_questionmarks eqr;                            "^
    2.40             "      (pbz::real) = Take eqr;                                  "^
    2.41             "      pbz = ((Substitute [A=a, B=b]) pbz);                     "^
    2.42        
    2.43             "      pbz = Rewrite ''ruleYZ'' False pbz;                          "^
    2.44 -           "      pbz = drop_questionmarks pbz;                            "^
    2.45        
    2.46             "      (X_z::bool) = Take (X_z = pbz);                          "^
    2.47 -           "      (n_eq::bool) = (Rewrite_Set ''inverse_z'' False) X_z;        "^
    2.48 -           "      n_eq = drop_questionmarks n_eq                           "^
    2.49 +           "      (n_eq::bool) = (Rewrite_Set ''inverse_z'' False) X_z     "^
    2.50             "in n_eq)")]
    2.51  \<close>
    2.52  (* same error as in         inverse_ztransform2
    2.53 @@ -280,14 +272,11 @@
    2.54  (*([3], Res), ?X' z = 4 * (?z / (z - 1 / 2)) + -4 * (?z / (z - -1 / 4))*)           
    2.55    pbz_eq = Rewrite ''ruleYZ'' False pbz_eq;                                         
    2.56  (*               4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)                  
    2.57 -  pbz_eq = drop_questionmarks pbz_eq;                                               
    2.58  (*([4], Frm), X_z = 4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)               
    2.59    (X_zeq::bool) = Take (X_z = rhs pbz_eq);                                          
    2.60  (*([4], Res), X_z = 4 * (1 / 2) ^^^ ?n * ?u [?n] + -4 * (-1 / 4) ^^^ ?n * ?u [?n]*)
    2.61 -  n_eq = (Rewrite_Set ''inverse_z'' False) X_zeq;                                   
    2.62 +  n_eq = (Rewrite_Set ''inverse_z'' False) X_zeq                                  
    2.63  (*            X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
    2.64 -  n_eq = drop_questionmarks n_eq                                                    
    2.65 -(*([], Res), X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
    2.66  in n_eq)                                                                            "
    2.67  *)
    2.68  setup \<open>KEStore_Elems.add_mets
    2.69 @@ -313,9 +302,8 @@
    2.70                    Rule.Calc ("Rational.get_denominator", eval_get_denominator "#get_denominator"),
    2.71                    Rule.Calc ("Rational.get_numerator", eval_get_numerator "#get_numerator"),
    2.72                    Rule.Calc ("Partial_Fractions.factors_from_solution",
    2.73 -                    eval_factors_from_solution "#factors_from_solution"),
    2.74 -                  Rule.Calc("Partial_Fractions.drop_questionmarks", eval_drop_questionmarks "#drop_?")],
    2.75 -              scr = Rule.EmptyScr},
    2.76 +                    eval_factors_from_solution "#factors_from_solution")
    2.77 +                  ], scr = Rule.EmptyScr},
    2.78            prls = Rule.e_rls, crls = Rule.e_rls, errpats = [], nrls = norm_Rational},
    2.79          (*([], Frm), Problem (Isac, [Inverse, Z_Transform, SignalProcessing])*)
    2.80          "Script InverseZTransform (X_eq::bool) =            "^
    2.81 @@ -341,13 +329,11 @@
    2.82            (*([3], Res), ?X' z = 4 * (?z / (z - 1 / 2)) + -4 * (?z / (z - -1 / 4))*)
    2.83            "  pbz_eq = Rewrite ''ruleYZ'' False pbz_eq;            "^
    2.84            (*               4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
    2.85 -          "  pbz_eq = drop_questionmarks pbz_eq;              "^
    2.86            (*([4], Frm), X_z = 4 * (z / (z - 1 / 2)) + -4 * (z / (z - -1 / 4))*)
    2.87            "  (X_zeq::bool) = Take (X_z = rhs pbz_eq);         "^
    2.88            (*([4], Res), X_z = 4 * (1 / 2) ^^^ ?n * ?u [?n] + -4 * (-1 / 4) ^^^ ?n * ?u [?n]*)
    2.89 -          "  n_eq = (Rewrite_Set ''inverse_z'' False) X_zeq;      "^
    2.90 +          "  n_eq = (Rewrite_Set ''inverse_z'' False) X_zeq "^
    2.91            (*            X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
    2.92 -          "  n_eq = drop_questionmarks n_eq                   "^
    2.93            (*([], Res), X_z = 4 * (1 / 2) ^^^ n * u [n] + -4 * (-1 / 4) ^^^ n * u [n]*)
    2.94            "in n_eq)")]
    2.95  \<close>
     3.1 --- a/src/Tools/isac/Knowledge/Partial_Fractions.thy	Thu Mar 07 16:50:20 2019 +0100
     3.2 +++ b/src/Tools/isac/Knowledge/Partial_Fractions.thy	Thu Mar 07 17:22:20 2019 +0100
     3.3 @@ -21,11 +21,8 @@
     3.4  subsection \<open>eval_ functions\<close>
     3.5  consts
     3.6    factors_from_solution :: "bool list => real"
     3.7 -  drop_questionmarks    :: "'a => 'a"
     3.8 -(* version for later switch to partial_function
     3.9 -  A                     :: real    \<comment> \<open>PROG redesign (Substitute [A = a, B = b]) pbz ?\<close>
    3.10 -  B                     :: real    \<comment> \<open>PROG redesign (Substitute [A = a, B = b]) pbz ?\<close>
    3.11 -*)
    3.12 +  AA                    :: real
    3.13 +  BB                    :: real
    3.14  
    3.15  text \<open>these might be used for variants of fac_from_sol\<close>
    3.16  ML \<open>
    3.17 @@ -70,56 +67,36 @@
    3.18   | eval_factors_from_solution _ _ _ _ = NONE;
    3.19  \<close>
    3.20  
    3.21 -text \<open>'ansatz' introduces '?Vars' (questionable design); drop these again\<close>
    3.22 -ML \<open>
    3.23 -(*("drop_questionmarks", ("Partial_Fractions.drop_questionmarks", eval_drop_questionmarks ""))*)
    3.24 -fun eval_drop_questionmarks (thmid:string) _
    3.25 -     (t as Const ("Partial_Fractions.drop_questionmarks", _) $ tm) thy =
    3.26 -        if TermC.contains_Var tm
    3.27 -        then
    3.28 -          let
    3.29 -            val tm' = TermC.var2free tm
    3.30 -            in SOME (TermC.mk_thmid thmid (Rule.term_to_string''' thy tm') "",
    3.31 -                 HOLogic.Trueprop $ (TermC.mk_equality (t, tm')))
    3.32 -            end
    3.33 -        else NONE
    3.34 -  | eval_drop_questionmarks _ _ _ _ = NONE;
    3.35 -\<close>
    3.36 -
    3.37 -text \<open>store eval_ functions for calls from Scripts\<close>
    3.38 -setup \<open>KEStore_Elems.add_calcs
    3.39 -  [("drop_questionmarks", ("Partial_Fractions.drop'_questionmarks", eval_drop_questionmarks ""))]\<close>
    3.40 -
    3.41  subsection \<open>'ansatz' for partial fractions\<close>
    3.42  axiomatization where
    3.43 -  ansatz_2nd_order: "n / (a*b) = A/a + B/b" and
    3.44 -  ansatz_3rd_order: "n / (a*b*c) = A/a + B/b + C/c" and
    3.45 -  ansatz_4th_order: "n / (a*b*c*d) = A/a + B/b + C/c + D/d" and
    3.46 +  ansatz_2nd_order: "n / (a*b) = AA/a + BB/b" and
    3.47 +  ansatz_3rd_order: "n / (a*b*c) = AA/a + BB/b + C/c" and
    3.48 +  ansatz_4th_order: "n / (a*b*c*d) = AA/a + BB/b + C/c + D/d" and
    3.49    (*version 1*)
    3.50 -  equival_trans_2nd_order: "(n/(a*b) = A/a + B/b) = (n = A*b + B*a)" and
    3.51 -  equival_trans_3rd_order: "(n/(a*b*c) = A/a + B/b + C/c) = (n = A*b*c + B*a*c + C*a*b)" and
    3.52 -  equival_trans_4th_order: "(n/(a*b*c*d) = A/a + B/b + C/c + D/d) = 
    3.53 -    (n = A*b*c*d + B*a*c*d + C*a*b*d + D*a*b*c)" and
    3.54 +  equival_trans_2nd_order: "(n/(a*b) = AA/a + BB/b) = (n = AA*b + BB*a)" and
    3.55 +  equival_trans_3rd_order: "(n/(a*b*c) = AA/a + BB/b + C/c) = (n = AA*b*c + BB*a*c + C*a*b)" and
    3.56 +  equival_trans_4th_order: "(n/(a*b*c*d) = AA/a + BB/b + C/c + D/d) = 
    3.57 +    (n = AA*b*c*d + BB*a*c*d + C*a*b*d + D*a*b*c)" and
    3.58    (*version 2: not yet used, see partial_fractions.sml*)
    3.59 -  multiply_2nd_order: "(n/x = A/a + B/b) = (a*b*n/x = A*b + B*a)" and
    3.60 -  multiply_3rd_order: "(n/x = A/a + B/b + C/c) = (a*b*c*n/x = A*b*c + B*a*c + C*a*b)" and
    3.61 +  multiply_2nd_order: "(n/x = AA/a + BB/b) = (a*b*n/x = AA*b + BB*a)" and
    3.62 +  multiply_3rd_order: "(n/x = AA/a + BB/b + C/c) = (a*b*c*n/x = AA*b*c + BB*a*c + C*a*b)" and
    3.63    multiply_4th_order: 
    3.64 -    "(n/x = A/a + B/b + C/c + D/d) = (a*b*c*d*n/x = A*b*c*d + B*a*c*d + C*a*b*d + D*a*b*c)"
    3.65 +    "(n/x = AA/a + BB/b + C/c + D/d) = (a*b*c*d*n/x = AA*b*c*d + BB*a*c*d + C*a*b*d + D*a*b*c)"
    3.66  
    3.67  text \<open>Probably the optimal formalization woudl be ...
    3.68  
    3.69 -  multiply_2nd_order: "x = a*b ==> (n/x = A/a + B/b) = (a*b*n/x = A*b + B*a)" and
    3.70 +  multiply_2nd_order: "x = a*b ==> (n/x = AA/a + BB/b) = (a*b*n/x = AA*b + BB*a)" and
    3.71    multiply_3rd_order: "x = a*b*c ==>
    3.72 -    (n/x = A/a + B/b + C/c) = (a*b*c*n/x = A*b*c + B*a*c + C*a*b)" and
    3.73 +    (n/x = AA/a + BB/b + C/c) = (a*b*c*n/x = AA*b*c + BB*a*c + C*a*b)" and
    3.74    multiply_4th_order: "x = a*b*c*d ==>
    3.75 -    (n/x = A/a + B/b + C/c + D/d) = (a*b*c*d*n/x = A*b*c*d + B*a*c*d + C*a*b*d + D*a*b*c)"
    3.76 +    (n/x = AA/a + BB/b + C/c + D/d) = (a*b*c*d*n/x = AA*b*c*d + BB*a*c*d + C*a*b*d + D*a*b*c)"
    3.77  
    3.78  ... because it would allow to start the ansatz as follows
    3.79  (1) 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z))) = 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z)))
    3.80  (2) 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z))) = AA / (z - 1 / 2) + BB / (z - -1 / 4)
    3.81  (3) (z - 1 / 2) * (z - -1 / 4) * 3 / (z * (z - 1 / 4 + -1 / 8 * (1 / z))) = 
    3.82      (z - 1 / 2) * (z - -1 / 4) * AA / (z - 1 / 2) + BB / (z - -1 / 4)
    3.83 -(4) 3 = A * (z - -1 / 4) + B * (z - 1 / 2)
    3.84 +(4) 3 = AA * (z - -1 / 4) + BB * (z - 1 / 2)
    3.85  
    3.86  ... (1==>2) ansatz
    3.87      (2==>3) multiply_*
    3.88 @@ -209,21 +186,10 @@
    3.89         Rule.Calc("Rational.get_denominator", eval_get_denominator "#get_denominator"),
    3.90         Rule.Calc("Rational.get_numerator", eval_get_numerator "#get_numerator"),
    3.91         Rule.Calc("Partial_Fractions.factors_from_solution",
    3.92 -         eval_factors_from_solution "#factors_from_solution"),
    3.93 -       Rule.Calc("Partial_Fractions.drop_questionmarks", eval_drop_questionmarks "#drop_?")],
    3.94 +         eval_factors_from_solution "#factors_from_solution")
    3.95 +       ],
    3.96      scr = Rule.EmptyScr};
    3.97  \<close>
    3.98 -ML \<open>
    3.99 -eval_drop_questionmarks;
   3.100 -\<close>
   3.101 -ML \<open>
   3.102 -val ctxt = Proof_Context.init_global @{theory};
   3.103 -val SOME t = TermC.parseNEW ctxt "eqr = drop_questionmarks eqr";
   3.104 -\<close>
   3.105 -ML \<open>
   3.106 -TermC.parseNEW ctxt "decomposedFunction p_p'''";
   3.107 -TermC.parseNEW ctxt "decomposedFunction";
   3.108 -\<close>
   3.109  
   3.110  (* current version, error outcommented *)
   3.111  (*ok
   3.112 @@ -245,28 +211,26 @@
   3.113            \<comment> \<open>([4], Frm), 3 / ((z - 1 / 2) * (z - -1 / 4)) = ?A / (z - 1 / 2) + ?B / (z - -1 / 4)\<close>
   3.114    eq = Take (eql = eqr);                  \<comment> \<open>([4], Res), 3 = ?A * (z - -1 / 4) + ?B * (z - 1 / 2)\<close>
   3.115    eq = (Try (Rewrite_Set ''equival_trans'' False)) eq; 
   3.116 -                                                  \<comment> \<open>eq = 3 = A * (z - -1 / 4) + B * (z - 1 / 2)\<close>
   3.117 -  eq = drop_questionmarks eq;                                                     \<comment> \<open>z1 = 1 / 2)\<close>
   3.118 +                                                 \<comment> \<open>eq = 3 = AA * (z - -1 / 4) + BB * (z - 1 / 2)\<close>
   3.119    z1 = rhs (NTH 1 L_L);                                                           \<comment> \<open>z2 = -1 / 4\<close>
   3.120 -  z2 = rhs (NTH 2 L_L);                  \<comment> \<open>([5], Frm), 3 = A * (z - -1 / 4) + B * (z - 1 / 2)\<close>
   3.121 -  eq_a = Take eq;                  \<comment> \<open>([5], Res), 3 = A * (1 / 2 - -1 / 4) + B * (1 / 2 - 1 / 2)\<close>
   3.122 -  eq_a = Substitute [zzz = z1] eq;                                \<comment> \<open>([6], Res), 3 = 3 * A / 4\<close>
   3.123 +  z2 = rhs (NTH 2 L_L);                   \<comment> \<open>([5], Frm), 3 = AA * (z - -1 / 4) + BB * (z - 1 / 2)\<close>
   3.124 +  eq_a = Take eq;                 \<comment> \<open>([5], Res), 3 = AA * (1 / 2 - -1 / 4) + BB * (1 / 2 - 1 / 2)\<close>
   3.125 +  eq_a = Substitute [zzz = z1] eq;                                \<comment> \<open>([6], Res), 3 = 3 * AA / 4\<close>
   3.126    eq_a = (Rewrite_Set ''norm_Rational'' False) eq_a;
   3.127 -\<comment> \<open>-----                                                    ([7], Pbl), solve (3 = 3 * A / 4, A)\<close>
   3.128 -                                                                          \<comment> \<open>([7], Res), [A = 4]\<close>
   3.129 +\<comment> \<open>-----                                                    ([7], Pbl), solve (3 = 3 * AA / 4, AA)\<close>
   3.130 +                                                                          \<comment> \<open>([7], Res), [AA = 4]\<close>
   3.131    sol_a = SubProblem (''Isac'', [''univariate'',''equation''], [''no_met''])
   3.132 -      [BOOL eq_a, REAL (A::real)] ;                                                     \<comment> \<open>a = 4\<close>
   3.133 -  a = rhs (NTH 1 sol_a);                   \<comment> \<open>([8], Frm), 3 = A * (z - -1 / 4) + B * (z - 1 / 2)\<close>
   3.134 -  eq_b = Take eq;                \<comment> \<open>([8], Res), 3 = A * (-1 / 4 - -1 / 4) + B * (-1 / 4 - 1 / 2)\<close>
   3.135 -  eq_b = Substitute [zzz = z2] eq_b;                               \<comment> \<open>([9], Res), 3 = -3 * B / 4\<close>
   3.136 -  eq_b = (Rewrite_Set ''norm_Rational'' False) eq_b;   \<comment> \<open>([10], Pbl), solve (3 = -3 * B / 4, B)\<close>
   3.137 -  sol_b = SubProblem (''Isac'',                                         \<comment> \<open>([10], Res), [B = -4]\<close>
   3.138 +      [BOOL eq_a, REAL (AA::real)] ;                                                     \<comment> \<open>a = 4\<close>
   3.139 +  a = rhs (NTH 1 sol_a);                   \<comment> \<open>([8], Frm), 3 = AA * (z - -1 / 4) + BB * (z - 1 / 2)\<close>
   3.140 +  eq_b = Take eq;                \<comment> \<open>([8], Res), 3 = AA * (-1 / 4 - -1 / 4) + BB * (-1 / 4 - 1 / 2)\<close>
   3.141 +  eq_b = Substitute [zzz = z2] eq_b;                               \<comment> \<open>([9], Res), 3 = -3 * BB / 4\<close>
   3.142 +  eq_b = (Rewrite_Set ''norm_Rational'' False) eq_b;   \<comment> \<open>([10], Pbl), solve (3 = -3 * BB / 4, BB)\<close>
   3.143 +  sol_b = SubProblem (''Isac'',                                         \<comment> \<open>([10], Res), [BB = -4]\<close>
   3.144        [''univariate'',''equation''], [''no_met''])
   3.145 -    [BOOL eq_b, REAL (B::real)];                                                       \<comment> \<open>b = -4\<close>
   3.146 -  b = rhs (NTH 1 sol_b);                             \<comment> \<open>eqr = A / (z - 1 / 2) + B / (z - -1 / 4)\<close>
   3.147 -  eqr = drop_questionmarks eqr;               \<comment> \<open>([11], Frm), A / (z - 1 / 2) + B / (z - -1 / 4)\<close>
   3.148 +    [BOOL eq_b, REAL (BB::real)];                                                       \<comment> \<open>b = -4\<close>
   3.149 +  b = rhs (NTH 1 sol_b);                             \<comment> \<open>eqr = AA / (z - 1 / 2) + BB / (z - -1 / 4)\<close>
   3.150    pbz = Take eqr;                            \<comment> \<open>([11], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)\<close>
   3.151 -  pbz = Substitute [A = a, B = b] pbz        \<comment> \<open>([], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)\<close>
   3.152 +  pbz = Substitute [AA = a, BB = b] pbz        \<comment> \<open>([], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)\<close>
   3.153  in pbz)                                                                                "
   3.154  *)
   3.155  setup \<open>KEStore_Elems.add_mets
   3.156 @@ -307,45 +271,43 @@
   3.157            "  (eq::bool) = Take (eql = eqr);                  " ^
   3.158            (*([4], Res), 3 = ?A * (z - -1 / 4) + ?B * (z - 1 / 2)*)
   3.159            "  eq = (Try (Rewrite_Set ''equival_trans'' False)) eq;" ^
   3.160 -          (*           eq = 3 = A * (z - -1 / 4) + B * (z - 1 / 2)*)
   3.161 -          "  eq = drop_questionmarks eq;                     " ^
   3.162 +          (*           eq = 3 = AA * (z - -1 / 4) + BB * (z - 1 / 2)*)
   3.163            (*           z1 = 1 / 2*)
   3.164            "  (z1::real) = (rhs (NTH 1 L_L));                 " ^
   3.165            (*           z2 = -1 / 4*)
   3.166            "  (z2::real) = (rhs (NTH 2 L_L));                 " ^
   3.167 -          (*([5], Frm), 3 = A * (z - -1 / 4) + B * (z - 1 / 2)*)
   3.168 +          (*([5], Frm), 3 = AA * (z - -1 / 4) + BB * (z - 1 / 2)*)
   3.169            "  (eq_a::bool) = Take eq;                         " ^
   3.170 -          (*([5], Res), 3 = A * (1 / 2 - -1 / 4) + B * (1 / 2 - 1 / 2)*)
   3.171 +          (*([5], Res), 3 = AA * (1 / 2 - -1 / 4) + BB * (1 / 2 - 1 / 2)*)
   3.172            "  eq_a = (Substitute [zzz = z1]) eq;              " ^
   3.173 -          (*([6], Res), 3 = 3 * A / 4*)
   3.174 +          (*([6], Res), 3 = 3 * AA / 4*)
   3.175            "  eq_a = (Rewrite_Set ''norm_Rational'' False) eq_a;  " ^
   3.176  
   3.177 -          (*([7], Pbl), solve (3 = 3 * A / 4, A)*)
   3.178 +          (*([7], Pbl), solve (3 = 3 * AA / 4, AA)*)
   3.179            "  (sol_a::bool list) =                            " ^
   3.180            "    (SubProblem (''Isac'', [''univariate'',''equation''], [''no_met''])   " ^
   3.181 -          (*([7], Res), [A = 4]*)
   3.182 -          "    [BOOL eq_a, REAL (A::real)]);                 " ^
   3.183 +          (*([7], Res), [AA = 4]*)
   3.184 +          "    [BOOL eq_a, REAL (AA::real)]);                 " ^
   3.185            (*           a = 4*)
   3.186            "  (a::real) = (rhs (NTH 1 sol_a));                " ^
   3.187 -          (*([8], Frm), 3 = A * (z - -1 / 4) + B * (z - 1 / 2)*)
   3.188 +          (*([8], Frm), 3 = AA * (z - -1 / 4) + BB * (z - 1 / 2)*)
   3.189            "  (eq_b::bool) = Take eq;                         " ^
   3.190 -          (*([8], Res), 3 = A * (-1 / 4 - -1 / 4) + B * (-1 / 4 - 1 / 2)*)
   3.191 +          (*([8], Res), 3 = AA * (-1 / 4 - -1 / 4) + BB * (-1 / 4 - 1 / 2)*)
   3.192            "  eq_b = (Substitute [zzz = z2]) eq_b;            " ^
   3.193 -          (*([9], Res), 3 = -3 * B / 4*)
   3.194 +          (*([9], Res), 3 = -3 * BB / 4*)
   3.195            "  eq_b = (Rewrite_Set ''norm_Rational'' False) eq_b;  " ^
   3.196 -          (*([10], Pbl), solve (3 = -3 * B / 4, B)*)
   3.197 +          (*([10], Pbl), solve (3 = -3 * BB / 4, BB)*)
   3.198            "  (sol_b::bool list) =                            " ^
   3.199            "    (SubProblem (''Isac'', [''univariate'',''equation''], [''no_met''])   " ^
   3.200 -          (*([10], Res), [B = -4]*)
   3.201 -          "    [BOOL eq_b, REAL (B::real)]);                 " ^
   3.202 +          (*([10], Res), [BB = -4]*)
   3.203 +          "    [BOOL eq_b, REAL (BB::real)]);                 " ^
   3.204            (*           b = -4*)
   3.205            "  (b::real) = (rhs (NTH 1 sol_b));                " ^
   3.206 -          (*           eqr = A / (z - 1 / 2) + B / (z - -1 / 4)*)
   3.207 -          "  eqr = drop_questionmarks eqr;                   " ^
   3.208 -          (*([11], Frm), A / (z - 1 / 2) + B / (z - -1 / 4)*)
   3.209 +          (*           eqr = AA / (z - 1 / 2) + BB / (z - -1 / 4)*)
   3.210 +          (*([11], Frm), AA / (z - 1 / 2) + BB / (z - -1 / 4)*)
   3.211            "  (pbz::real) = Take eqr;                         " ^
   3.212            (*([11], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
   3.213 -          "  pbz = ((Substitute [A = a, B = b]) pbz)         " ^
   3.214 +          "  pbz = ((Substitute [AA = a, BB = b]) pbz)         " ^
   3.215            (*([], Res), 4 / (z - 1 / 2) + -4 / (z - -1 / 4)*)
   3.216            "in pbz)"
   3.217  )]