test/Tools/isac/Knowledge/partial_fractions.sml
author wneuper <Walther.Neuper@jku.at>
Sun, 09 Oct 2022 07:44:22 +0200
changeset 60565 f92963a33fe3
parent 60549 c0a775618258
child 60571 19a172de0bb5
permissions -rwxr-xr-x
eliminate term2str in test/*
wneuper@59549
     1
(* Title:  "Knowledge/partial_fractions.sml"
wneuper@59549
     2
     partial fraction decomposition
neuper@42289
     3
   Author: Jan Rocnik
neuper@42289
     4
   (c) due to copyright terms
neuper@42289
     5
*)
neuper@42289
     6
neuper@42289
     7
"--------------------------------------------------------";
neuper@42289
     8
"table of contents --------------------------------------";
neuper@42289
     9
"--------------------------------------------------------";
neuper@42305
    10
"----------- why helpless here ? ------------------------";
neuper@42310
    11
"----------- why not nxt = Model_Problem here ? ---------";
neuper@42359
    12
"----------- fun factors_from_solution ------------------";
neuper@42359
    13
"----------- Logic.unvarify_global ----------------------";
neuper@42359
    14
"----------- eval_drop_questionmarks --------------------";
neuper@42376
    15
"----------- = me for met_partial_fraction --------------";
wneuper@59248
    16
"----------- autoCalculate for met_partial_fraction -----";
neuper@42386
    17
"----------- progr.vers.2: check erls for multiply_ansatz";
neuper@42386
    18
"----------- progr.vers.2: improve program --------------";
wneuper@59550
    19
"----------- isolate SubProblem [simplification, of_rationals, to_partial_fraction] me ---------";
wneuper@59550
    20
"----------- isolate SubProblem [simplification, of_rationals, to_partial_fraction] auto -------";
neuper@42289
    21
"--------------------------------------------------------";
neuper@42289
    22
"--------------------------------------------------------";
neuper@42289
    23
"--------------------------------------------------------";
neuper@42289
    24
neuper@42289
    25
neuper@42305
    26
"----------- why helpless here ? ------------------------";
neuper@42305
    27
"----------- why helpless here ? ------------------------";
neuper@42305
    28
"----------- why helpless here ? ------------------------";
walther@60329
    29
val fmz = ["filterExpression (X z = 3 / (z - 1/4 + - 1/8 * (1/(z::real))))", 
wneuper@59550
    30
  "functionName X_z", "stepResponse (x[n::real]::bool)"];
wneuper@59592
    31
val (dI,pI,mI) = ("Isac_Knowledge", ["Inverse", "Z_Transform", "SignalProcessing"], 
walther@59997
    32
  ["SignalProcessing", "Z_Transform", "Inverse"]);
neuper@42305
    33
val (p,_,f,nxt,_,pt)  = CalcTreeTEST [(fmz, (dI,pI,mI))]; 
neuper@42305
    34
val (p,_,f,nxt,_,pt) = me nxt p [] pt; "Add_Given";
neuper@42305
    35
val (p,_,f,nxt,_,pt) = me nxt p [] pt; "Add_Find";
neuper@42305
    36
val (p,_,f,nxt,_,pt) = me nxt p [] pt; "Specify_Theory";
neuper@42305
    37
val (p,_,f,nxt,_,pt) = me nxt p [] pt; "Specify_Problem";
neuper@42305
    38
val (p,_,f,nxt,_,pt) = me nxt p [] pt; "Specify_Method";
neuper@42305
    39
val (p,_,f,nxt,_,pt) = me nxt p [] pt; "nxt = Apply_Method";
walther@60329
    40
val (p,_,f,nxt,_,pt) = me nxt p [] pt; "nxt = Rewrite (ruleZY, Inverse_Z_Transform.ruleZY) --> X z = 3 / (z - 1 / 4 + - 1 / 8 * (1 / z))";
walther@60329
    41
val (p''',_,f,nxt''',_,pt''') = me nxt p [] pt; "nxt = Rewrite_Set norm_Rational --> X' z = 3 / (z * (z - 1 / 4 + - 1 / 8 * (1 / z)))";
walther@59749
    42
"~~~~~ fun me, args:"; val (tac, (p:pos'), _, (pt:ctree)) = (nxt, p, [], pt);
walther@59804
    43
val ("ok", (_, _, ptp)) = Step.by_tactic tac (pt,p)
neuper@42305
    44
val (pt, p) = ptp;
walther@59765
    45
"~~~~~ fun Step.do_next, args:"; val (((ip as (_,p_)):pos'), ((ptp as (pt,p), tacis):calcstate)) = 
neuper@42305
    46
                           (p, ((pt, e_pos'),[]));
neuper@42305
    47
val pIopt = get_pblID (pt,ip);
neuper@42305
    48
ip = ([],Res); "false";
neuper@42305
    49
tacis; " = []";
neuper@42405
    50
pIopt; (* = SOME ["Inverse", "Z_Transform", "SignalProcessing"]*)
walther@60017
    51
member op = [Pbl,Met] p_ ; "false";
walther@59760
    52
(*Step_Solve.do_next (pt,ip); "WAS isalist2list applied to NON-list 'no_meth'"
wneuper@59585
    53
   THIS MEANS: replace no_meth by [no_meth] in Program.*)
walther@59765
    54
(*WAS val ("helpless",_) = Step.do_next p ((pt, e_pos'),[]) *)
neuper@42305
    55
(*WAS val (p,_,f,nxt,_,pt) = me nxt p [] pt; "Empty_Tac instead SubProblem";*)
neuper@42289
    56
neuper@42310
    57
"----------- why not nxt = Model_Problem here ? ---------";
neuper@42310
    58
"----------- why not nxt = Model_Problem here ? ---------";
neuper@42310
    59
"----------- why not nxt = Model_Problem here ? ---------";
neuper@42313
    60
val (p,_,f,nxt,_,pt) = me nxt''' p''' [] pt'''; 
walther@59749
    61
"~~~~~ fun me, args:"; val (tac, (p:pos'), _, (pt:ctree)) = (nxt, p, c, pt);
walther@59804
    62
val ("ok", (_, _, ptp)) = Step.by_tactic tac (pt,p);
neuper@42313
    63
val (pt, p) = ptp;
walther@59765
    64
"~~~~~ fun Step.do_next, args:"; val (((ip as (_,p_)):pos'), ((ptp as (pt,p), tacis):calcstate)) =
neuper@42313
    65
                           (p, ((pt, e_pos'),[]));
neuper@42313
    66
val pIopt = get_pblID (pt,ip);
neuper@42313
    67
ip = ([],Res); " = false";
neuper@42313
    68
tacis; " = []";                                         
neuper@42405
    69
pIopt (* = SOME ["Inverse", "Z_Transform", "SignalProcessing"]*);
walther@60017
    70
member op = [Pbl,Met] p_; " = false";
walther@60242
    71
(*                               \<up> \<up> \<up> \<up> \<up> \<up> \<up> \<up> \<up> \<up>  \<up> ^ leads into
walther@59760
    72
Step_Solve.do_next, which is definitely WRONG (should be nxt_specify_ for FIND_ADD).
walther@59845
    73
This ERROR seems to be introduced together with ctxt, concerns Apply_Method without implicit_take.
neuper@42313
    74
See TODO.txt
neuper@42313
    75
*)
neuper@42310
    76
neuper@42359
    77
"----------- fun factors_from_solution ------------------";
neuper@42359
    78
"----------- fun factors_from_solution ------------------";
neuper@42359
    79
"----------- fun factors_from_solution ------------------";
wneuper@59592
    80
val ctxt = Proof_Context.init_global @{theory Isac_Knowledge};
walther@60329
    81
val SOME t = parseNEW ctxt "factors_from_solution [(z::real) = 1 / 2, z = - 1 / 4]";
jan@42352
    82
val SOME (_, t') = eval_factors_from_solution "" 0 t thy;
walther@59868
    83
if UnparseC.term t' =
walther@60329
    84
 "factors_from_solution [z = 1 / 2, z = - 1 / 4] = (z - 1 / 2) * (z - - 1 / 4)"
jan@42352
    85
then () else error "factors_from_solution broken";
jan@42352
    86
neuper@42359
    87
"----------- Logic.unvarify_global ----------------------";
neuper@42359
    88
"----------- Logic.unvarify_global ----------------------";
neuper@42359
    89
"----------- Logic.unvarify_global ----------------------";
neuper@42359
    90
val A_var = parseNEW ctxt "A::real" |> the |> Logic.varify_global
neuper@42359
    91
val B_var = parseNEW ctxt "B::real" |> the |> Logic.varify_global
jan@42352
    92
walther@60329
    93
val denom1 = parseNEW ctxt "(z + - 1 * (1 / 2))::real" |> the;
walther@60329
    94
val denom2 = parseNEW ctxt "(z + - 1 * (- 1 / 4))::real" |> the;
neuper@42359
    95
wenzelm@60309
    96
val test = HOLogic.mk_binop \<^const_name>\<open>plus\<close>
wenzelm@60309
    97
  (HOLogic.mk_binop \<^const_name>\<open>divide\<close> (A_var, denom1),
wenzelm@60309
    98
   HOLogic.mk_binop \<^const_name>\<open>divide\<close> (B_var, denom2));
neuper@42359
    99
walther@60329
   100
if UnparseC.term test = "?A / (z + - 1 * (1 / 2)) + ?B / (z + - 1 * (- 1 / 4))" then ()
neuper@42359
   101
  else error "HOLogic.mk_binop broken ?";
neuper@42359
   102
neuper@42359
   103
(* Logic.unvarify_global test
neuper@42359
   104
---> exception TERM raised (line 539 of "logic.ML"): Illegal fixed variable: "z"
neuper@42359
   105
thus we need another fun var2free in termC.sml*)
neuper@42359
   106
neuper@42376
   107
"----------- = me for met_partial_fraction --------------";
neuper@42376
   108
"----------- = me for met_partial_fraction --------------";
neuper@42376
   109
"----------- = me for met_partial_fraction --------------";
wneuper@59534
   110
val fmz =
walther@60329
   111
  ["functionTerm (3 / (z * (z - 1 / 4 + - 1 / 8 * (1 / z))))",
wneuper@59534
   112
    "solveFor z", "decomposedFunction p_p"];
wneuper@59534
   113
val (dI',pI',mI') =
wneuper@59534
   114
  ("Partial_Fractions", 
wneuper@59534
   115
    ["partial_fraction", "rational", "simplification"],
walther@59997
   116
    ["simplification", "of_rationals", "to_partial_fraction"]);
wneuper@59534
   117
(*[ ], Pbl*)val (p,_,f,nxt,_,pt) =
wneuper@59534
   118
              CalcTreeTEST [(fmz, (dI',pI',mI'))]; (*nxt = Model_Problem*)
walther@60329
   119
(*[ ], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "functionTerm (3 / (z * (z - 1 / 4 + - 1 / 8 * (1 / z))))")*)
wneuper@59534
   120
(*[ ], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "solveFor z")*)
wneuper@59534
   121
(*[ ], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Find "decomposedFunction p_p")*)
wneuper@59534
   122
(*[ ], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Theory "Partial_Fractions")*)
wneuper@59534
   123
           (*05*)
wneuper@59534
   124
(*[ ], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Problem ["partial_fraction", "rational", "simplification"])*)
wneuper@59534
   125
(*[ ], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Method ["simplification", "of_rationals", "to_partial_fraction"])*)
wneuper@59534
   126
(*[ ], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["simplification", "of_rationals", "to_partial_fraction"])*)
wneuper@59534
   127
(*[1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "norm_Rational")*)
wneuper@59534
   128
(*[1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Subproblem ("PolyEq", ["abcFormula", "degree_2", "polynomial", "univariate", "equation"]))*)
wneuper@59534
   129
            (*10*)
wneuper@59534
   130
(*[2], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Model_Problem)*)
walther@60329
   131
(*[2], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "equality (- 1 + - 2 * z + 8 * z \<up> 2 = 0)")*)
wneuper@59534
   132
(*[2], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "solveFor z")*)
wneuper@59534
   133
(*[2], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Find "solutions z_i")*)
wneuper@59534
   134
(*[2], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Theory "PolyEq")*)
wneuper@59534
   135
(*[2], Pbl*)(*15*)
wneuper@59534
   136
(*[2], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Problem ["abcFormula", "degree_2", "polynomial", "univariate", "equation"])*)
wneuper@59534
   137
(*[2], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Method ["PolyEq", "solve_d2_polyeq_abc_equation"])*)
wneuper@59534
   138
(*[2], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["PolyEq", "solve_d2_polyeq_abc_equation"])*)
wneuper@59534
   139
(*[2, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set_Inst (["(''bdv'', z)"], "d2_polyeq_abcFormula_simplify"))*)
wneuper@59534
   140
(*[2, 1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "polyeq_simplify")*)
wneuper@59534
   141
            (*20*)
wneuper@59534
   142
(*[2, 2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Or_to_List)*)
wneuper@59534
   143
(*[2, 3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_elementwise "Assumptions")*)
wneuper@59534
   144
(*[2, 4], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_Postcond ["abcFormula", "degree_2", "polynomial", "univariate", "equation"])*)
walther@60329
   145
(*[2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Take "3 / ((z - 1 / 2) * (z - - 1 / 4))")*)
wneuper@59534
   146
(*[3], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "ansatz_rls")*)
wneuper@59534
   147
            (*25*)
walther@60329
   148
(*[3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Take "3 / ((z - 1 / 2) * (z - - 1 / 4)) = ?A / (z - 1 / 2) + ?B / (z - - 1 / 4)")*)
wneuper@59534
   149
(*[4], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "equival_trans")*)
walther@60329
   150
(*[4], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Take "3 = AA * (z - - 1 / 4) + BB * (z - 1 / 2)"*)
wneuper@59534
   151
(*[5], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Substitute ["z = 1 / 2"])*)
wneuper@59534
   152
(*[5], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt;(*nxt = Rewrite_Set "norm_Rational"*)
wneuper@59592
   153
(*[6], Res*)val (p''',_,f,nxt''',_,pt''') = me nxt p [] pt;(*nxt = Subproblem ("Isac_Knowledge", ["normalise", "polynomial", "univariate", "equation"]*)
wneuper@59534
   154
            (*30+1*)
wneuper@59534
   155
(*[7], Pbl*)val (p'''',_,f,nxt'''',_,pt'''') = me nxt''' p''' [] pt'''; (*nxt = Model_Problem*)
wneuper@59534
   156
(*[7], Pbl*)val (p'v,_,f,nxt'v,_,pt'v) = me nxt'''' p'''' [] pt''''; (*nxt = Add_Given "equality (3 = 3 * AA / 4)")*)
wneuper@59534
   157
(*[7], Pbl*)val (p'v',_,f,nxt'v',_,pt'v') = me nxt'v p'v [] pt'v; (*nxt = Add_Given "solveFor AA")*)
wneuper@59534
   158
(*[7], Pbl*)val (p'v'',_,f,nxt'v'',_,pt'v'') = me nxt'v' p'v' [] pt'v'; (*nxt = Add_Find "solutions AA_i")*)
wneuper@59592
   159
(*[7], Pbl*)val (p,_,f,nxt,_,pt) = me nxt'v'' p'v'' [] pt'v''; (*nxt = Specify_Theory "Isac_Knowledge"*)
wneuper@59534
   160
            (*35*)
wneuper@59534
   161
(*[7], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Problem ["normalise", "polynomial", "univariate", "equation"])*)
wneuper@59534
   162
(*[7], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Method ["PolyEq", "normalise_poly"])*)
wneuper@59534
   163
(*[7], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["PolyEq", "normalise_poly"])*)
wneuper@59534
   164
(*[7, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite ("all_left", "\<not> ?b =!= 0 \<Longrightarrow> (?a = ?b) = (?a - ?b = 0)"))*)
wneuper@59534
   165
(*[7, 1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set_Inst (["(''bdv'', AA)"], "make_ratpoly_in")*)
wneuper@59534
   166
               (*40*)
wneuper@59534
   167
(*[7, 2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "polyeq_simplify"*)
wneuper@59592
   168
(*[7, 3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Subproblem ("Isac_Knowledge", ["degree_1", "polynomial", "univariate", "equation"])*)
wneuper@59534
   169
(*[7, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Model_Problem*)
wneuper@59534
   170
(*[7, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "equality (3 + -3 / 4 * AA = 0)"*)
wneuper@59534
   171
(*[7, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "solveFor AA"*)
wneuper@59534
   172
    (*45*)
wneuper@59534
   173
(*[7, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   174
(*[7, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   175
(*[7, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   176
(*[7, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   177
(*[7, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   178
    (*50*)
wneuper@59534
   179
(*[7, 4], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   180
(*[7, 4, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   181
(*[7, 4, 1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   182
(*[7, 4, 2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   183
(*[7, 4, 3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   184
    (*55*)
wneuper@59534
   185
(*[7, 4, 4], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   186
(*[7, 4, 5], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   187
(*[7, 4], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   188
(*[7], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   189
(*[8], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   190
    (*60*)
wneuper@59534
   191
(*[8], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   192
(*[9], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   193
(*[10], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   194
(*[10], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   195
(*[10], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   196
    (*65*)
wneuper@59534
   197
(*[10], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   198
(*[10], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   199
(*[10], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   200
(*[10], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   201
(*[10], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   202
    (*70*)
wneuper@59534
   203
(*[10, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   204
(*[10, 1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   205
(*[10, 2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   206
(*[10, 3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   207
(*[10, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   208
    (*75*)
wneuper@59534
   209
(*[10, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   210
(*[10, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   211
(*[10, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   212
(*[10, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   213
(*[10, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   214
    (*80*)
wneuper@59534
   215
(*[10, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   216
(*[10, 4], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   217
(*[10, 4, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   218
(*[10, 4, 1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   219
(*[10, 4, 2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   220
    (*85*)
wneuper@59534
   221
(*[10, 4, 3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = *)
wneuper@59534
   222
(*[10, 4, 4], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_elementwise "Assumptions"*)
wneuper@59534
   223
(*[10, 4, 5], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_Postcond ["degree_1", "polynomial", "univariate", "equation"*)
wneuper@59534
   224
(*[10, 4], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_Postcond ["normalise", "polynomial", "univariate", "equation"]*)
neuper@42376
   225
walther@60329
   226
(*[10], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Take "AA / (z - 1 / 2) + BB / (z - - 1 / 4)"*)
wneuper@59534
   227
    (*90*)
wneuper@59534
   228
(*[11], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Substitute ["AA = 4", "BB = -4"]*)
wneuper@59534
   229
(*[11], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_Postcond ["partial_fraction", "rational", "simplification"]*)
wneuper@59534
   230
(*[], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = End_Proof'*) 
wneuper@59534
   231
wneuper@59534
   232
case nxt of
walther@60329
   233
  (_, End_Proof') => if f2str f = "4 / (z - 1 / 2) + -4 / (z - - 1 / 4)" then () 
wneuper@59534
   234
                     else error "= me .. met_partial_fraction f changed"
wneuper@59534
   235
| _ => error "= me .. met_partial_fraction nxt changed";
wneuper@59534
   236
walther@59983
   237
Test_Tool.show_pt_tac pt; (**)
neuper@42376
   238
wneuper@59248
   239
"----------- autoCalculate for met_partial_fraction -----";
wneuper@59248
   240
"----------- autoCalculate for met_partial_fraction -----";
wneuper@59248
   241
"----------- autoCalculate for met_partial_fraction -----";
Walther@60549
   242
States.reset ();
neuper@42413
   243
  val fmz =                                             
walther@60329
   244
    ["functionTerm (3 / (z * (z - 1 / 4 + - 1 / 8 * (1 / z))))", 
neuper@42413
   245
      "solveFor z", "decomposedFunction p_p"];
neuper@42413
   246
  val (dI', pI', mI') =
neuper@42413
   247
    ("Partial_Fractions", 
neuper@42413
   248
      ["partial_fraction", "rational", "simplification"],
walther@59997
   249
      ["simplification", "of_rationals", "to_partial_fraction"]);
neuper@42413
   250
CalcTree [(fmz, (dI' ,pI' ,mI'))];
neuper@42413
   251
Iterator 1;
neuper@42413
   252
moveActiveRoot 1;
wneuper@59248
   253
autoCalculate 1 CompleteCalc; 
neuper@42413
   254
Walther@60549
   255
val ((pt,p),_) = States.get_calc 1; val ip = States.get_pos 1 1;
neuper@42413
   256
if p = ip andalso ip = ([], Res) then ()
wneuper@59248
   257
  else error "autoCalculate for met_partial_fraction changed: final pos'";
neuper@42413
   258
walther@59983
   259
val (Form f, tac, asms) = ME_Misc.pt_extract (pt, p);
walther@60329
   260
if UnparseC.term f = "4 / (z - 1 / 2) + -4 / (z - - 1 / 4)" andalso
walther@59868
   261
  UnparseC.terms_short asms =
wneuper@59534
   262
    "[BB = -4,BB is_polyexp,AA is_polyexp,AA = 4," ^
walther@60329
   263
    "lhs (- 1 + - 2 * z + 8 * z \<up> 2 = 0) has_degree_in z = 2," ^
walther@60329
   264
    "lhs (- 1 + - 2 * z + 8 * z \<up> 2 = 0) is_poly_in z,z = 1 / 2,z = - 1 / 4,z is_polyexp]"
wneuper@59253
   265
then case tac of NONE => ()
wneuper@59534
   266
  | _ => error "me for met_partial_fraction changed: final result 1"
wneuper@59534
   267
else error "me for met_partial_fraction changed: final result 2"
neuper@42413
   268
walther@59983
   269
Test_Tool.show_pt pt; (**)
neuper@42413
   270
neuper@42386
   271
"----------- progr.vers.2: check erls for multiply_ansatz";
neuper@42386
   272
"----------- progr.vers.2: check erls for multiply_ansatz";
neuper@42386
   273
"----------- progr.vers.2: check erls for multiply_ansatz";
neuper@42386
   274
(*test for outcommented 3 lines in script: is norm_Rational strong enough?*)
Walther@60565
   275
val t = TermC.parse_test @{context} "(3 / ((- 1 + - 2 * z + 8 * z \<up> 2) *3/24)) = (3 / ((z - 1 / 2) * (z - - 1 / 4)))";
wneuper@59592
   276
val SOME (t', _) = rewrite_set_ @{theory Isac_Knowledge} true ansatz_rls t;
walther@60329
   277
UnparseC.term t' = "3 / ((- 1 + - 2 * z + 8 * z \<up> 2) * 3 / 24) =\n?A / (z - 1 / 2) + ?B / (z - - 1 / 4)";
neuper@42386
   278
wneuper@59592
   279
val SOME (t'', _) = rewrite_set_ @{theory Isac_Knowledge} true multiply_ansatz t'; (*true*)
walther@60329
   280
UnparseC.term t'' = "(z - 1 / 2) * (z - - 1 / 4) * 3 / ((- 1 + - 2 * z + 8 * z \<up> 2) * 3 / 24) =\n" ^
walther@60329
   281
  "?A * (z - - 1 / 4) + ?B * (z - 1 / 2)"; (*true*)
neuper@42386
   282
wneuper@59592
   283
val SOME (t''', _) = rewrite_set_ @{theory Isac_Knowledge} true norm_Rational t''; 
walther@60329
   284
if UnparseC.term t''' = "3 = (AA + - 2 * BB + 4 * z * AA + 4 * z * BB) / 4" then () 
neuper@52103
   285
else error "ansatz_rls - multiply_ansatz - norm_Rational broken"; 
neuper@42386
   286
neuper@42386
   287
(*test for outcommented 3 lines in script: empower erls for x = a*b ==> ...*)
walther@59852
   288
val xxx = Rule_Set.append_rules "multiply_ansatz_erls" norm_Rational 
wenzelm@60309
   289
  [Eval (\<^const_name>\<open>HOL.eq\<close>,eval_equal "#equal_")];
neuper@42386
   290
s1210629013@55444
   291
val multiply_ansatz = prep_rls @{theory} (
walther@59851
   292
  Rule_Set.Repeat {id = "multiply_ansatz", preconds = [], rew_ord = ("dummy_ord",dummy_ord), 
neuper@42386
   293
	  erls = xxx,
walther@59851
   294
	  srls = Rule_Set.Empty, calc = [], errpatts = [],
neuper@42386
   295
	  rules = 
walther@59871
   296
	   [Thm ("multiply_2nd_order",ThmC.numerals_to_Free @{thm multiply_2nd_order})
neuper@42386
   297
	   ], 
walther@59878
   298
	 scr = Empty_Prog}:rls);
neuper@42386
   299
neuper@42386
   300
rewrite_set_ thy true xxx @{term "a+b = a+(b::real)"}; (*SOME ok*)
wneuper@59514
   301
rewrite_set_ thy true multiply_ansatz @{term "a+b = a+(b::real)"}; (*why NONE?*)
neuper@42386
   302
neuper@42386
   303
"----------- progr.vers.2: improve program --------------";
neuper@42386
   304
"----------- progr.vers.2: improve program --------------";
neuper@42386
   305
"----------- progr.vers.2: improve program --------------";
neuper@42386
   306
(*WN120318 stopped due to much effort with the test above*)
walther@60329
   307
     "Program PartFracScript (f_f::real) (zzz::real) =                    " ^(*f_f: 3 / (z * (z - 1 / 4 + - 1 / 8 * (1 / z)), zzz: z*)
neuper@42386
   308
     " (let f_f = Take f_f;                                       " ^
neuper@42386
   309
     "   (num_orig::real) = get_numerator f_f;                    " ^(*num_orig: 3*)
walther@60329
   310
     "   f_f = (Rewrite_Set norm_Rational False) f_f;             " ^(*f_f: 24 / (- 1 + - 2 * z + 8 * z \<up> 2)*)
neuper@42386
   311
     "   (numer::real) = get_numerator f_f;                       " ^(*numer: 24*)
walther@60329
   312
     "   (denom::real) = get_denominator f_f;                     " ^(*denom: - 1 + - 2 * z + 8 * z \<up> 2*)
walther@60329
   313
     "   (equ::bool) = (denom = (0::real));                       " ^(*equ: - 1 + - 2 * z + 8 * z \<up> 2 = 0*)
wneuper@59476
   314
     "   (L_L::bool list) = (SubProblem (PolyEqX,                 " ^
neuper@42386
   315
     "     [abcFormula, degree_2, polynomial, univariate, equation], " ^
walther@60329
   316
     "     [no_met]) [BOOL equ, REAL zzz]);                       " ^(*L_L: [z = 1 / 2, z = - 1 / 4]*)
walther@60329
   317
     "   (facs::real) = factors_from_solution L_L;                " ^(*facs: (z - 1 / 2) * (z - - 1 / 4)*)
walther@60329
   318
     "   (eql::real) = Take (num_orig / facs);                    " ^(*eql: 3 / ((z - 1 / 2) * (z - - 1 / 4)) *) 
walther@60329
   319
     "   (eqr::real) = (Try (Rewrite_Set ansatz_rls False)) eql;  " ^(*eqr: ?A / (z - 1 / 2) + ?B / (z - - 1 / 4)*)
walther@60329
   320
     "   (eq::bool) = Take (eql = eqr);                           " ^(*eq:  3 / ((z - 1 / 2) * (z - - 1 / 4)) = ?A / (z - 1 / 2) + ?B / (z - - 1 / 4)*)
neuper@42386
   321
(*this has been tested below by rewrite_set_
neuper@42386
   322
     "   (eeeee::bool) = Take ((num_orig / denom * denom / numer) = (num_orig / facs));" ^(**)
neuper@42386
   323
     "   (eeeee::bool) = (Rewrite_Set ansatz_rls False) eeeee;" ^(**)
walther@60329
   324
     "   eq = (Try (Rewrite_Set multiply_ansatz False)) eeeee;         " ^(*eq: 3 = ?A * (z - - 1 / 4) + ?B * (z - 1 / 2)*) 
neuper@42386
   325
NEXT try to outcomment the very next line..*)
walther@60329
   326
     "   eq = (Try (Rewrite_Set equival_trans False)) eeeee;         " ^(*eq: 3 = ?A * (z - - 1 / 4) + ?B * (z - 1 / 2)*) 
walther@60329
   327
     "   eq = drop_questionmarks eq;                              " ^(*eq: 3 = A * (z - - 1 / 4) + B * (z - 1 / 2)*)
neuper@42386
   328
     "   (z1::real) = (rhs (NTH 1 L_L));                          " ^(*z1: 1 / 2*)
walther@60329
   329
     "   (z2::real) = (rhs (NTH 2 L_L));                          " ^(*z2: - 1 / 4*)
walther@60329
   330
     "   (eq_a::bool) = Take eq;                                  " ^(*eq_a: 3 = A * (z - - 1 / 4) + B * (z - 1 / 2)*)
walther@60329
   331
     "   eq_a = (Substitute [zzz = z1]) eq;                       " ^(*eq_a: 3 = A * (1 / 2 - - 1 / 4) + B * (1 / 2 - 1 / 2)*)
neuper@42386
   332
     "   eq_a = (Rewrite_Set norm_Rational False) eq_a;           " ^(*eq_a: 3 = 3 * A / 4*)
neuper@42386
   333
     "   (sol_a::bool list) =                                     " ^
wneuper@59476
   334
     "     (SubProblem (IsacX, [univariate,equation], [no_met])   " ^
neuper@42386
   335
     "     [BOOL eq_a, REAL (A::real)]);                          " ^(*sol_a: [A = 4]*)
neuper@42386
   336
     "   (a::real) = (rhs (NTH 1 sol_a));                         " ^(*a: 4*)
walther@60329
   337
     "   (eq_b::bool) = Take eq;                                  " ^(*eq_b: 3 = A * (z - - 1 / 4) + B * (z - 1 / 2)*)
neuper@42386
   338
     "   eq_b = (Substitute [zzz = z2]) eq_b;                     " ^(*eq_b: *)
neuper@42386
   339
     "   eq_b = (Rewrite_Set norm_Rational False) eq_b;           " ^(*eq_b: *)
neuper@42386
   340
     "   (sol_b::bool list) =                                     " ^
wneuper@59476
   341
     "     (SubProblem (IsacX, [univariate,equation], [no_met])   " ^
neuper@42386
   342
     "     [BOOL eq_b, REAL (B::real)]);                          " ^(*sol_b: [B = -4]*)
neuper@42386
   343
     "   (b::real) = (rhs (NTH 1 sol_b));                         " ^(*b: -4*)
walther@60329
   344
     "   eqr = drop_questionmarks eqr;                            " ^(*eqr: A / (z - 1 / 2) + B / (z - - 1 / 4)*)
walther@60329
   345
     "   (pbz::real) = Take eqr;                                  " ^(*pbz: A / (z - 1 / 2) + B / (z - - 1 / 4)*)
walther@60329
   346
     "   pbz = ((Substitute [A = a, B = b]) pbz)                  " ^(*pbz: 4 / (z - 1 / 2) + -4 / (z - - 1 / 4)*)
wneuper@59550
   347
     " in pbz)";
neuper@42386
   348
wneuper@59550
   349
"----------- isolate SubProblem [simplification, of_rationals, to_partial_fraction] me ---------";
wneuper@59550
   350
"----------- isolate SubProblem [simplification, of_rationals, to_partial_fraction] me ---------";
wneuper@59550
   351
"----------- isolate SubProblem [simplification, of_rationals, to_partial_fraction] me ---------";
wneuper@59550
   352
val fmz_from_Subproblem_of_Inverse_sub = (*see --- test [SignalProcessing,Z_Transform,Inverse_s.."*)
walther@60329
   353
     (["functionTerm (3 / (z * (z - 1 / 4 + - 1 / 8 * (1 / z))))", "solveFor z",
wneuper@59550
   354
       "decomposedFunction p_p'''"],
wneuper@59592
   355
      ("Isac_Knowledge", ["partial_fraction", "rational", "simplification"],
wneuper@59550
   356
       ["simplification", "of_rationals", "to_partial_fraction"]))
wneuper@59550
   357
val (p,_,f,nxt,_,pt)  = CalcTreeTEST [(fmz_from_Subproblem_of_Inverse_sub)]; 
wneuper@59550
   358
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   359
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   360
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   361
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   362
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   363
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   364
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   365
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   366
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   367
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   368
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   369
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   370
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   371
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   372
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   373
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   374
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   375
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   376
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   377
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   378
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   379
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   380
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   381
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   382
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   383
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   384
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   385
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   386
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   387
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   388
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   389
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   390
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   391
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   392
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   393
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   394
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   395
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   396
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   397
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   398
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   399
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   400
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   401
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   402
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   403
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
wneuper@59550
   404
walther@60329
   405
if fst nxt = "End_Proof'" andalso f2str f = "4 / (z - 1 / 2) + -4 / (z - - 1 / 4)" then ()
wneuper@59550
   406
else error "--- isolate SubProblem [simplification, of_rationals, to_partial_fraction] me ---";
wneuper@59550
   407
wneuper@59550
   408
wneuper@59550
   409
"----------- isolate SubProblem [simplification, of_rationals, to_partial_fraction] auto -------";
wneuper@59550
   410
"----------- isolate SubProblem [simplification, of_rationals, to_partial_fraction] auto -------";
wneuper@59550
   411
"----------- isolate SubProblem [simplification, of_rationals, to_partial_fraction] auto -------";
Walther@60549
   412
States.reset ();
wneuper@59550
   413
(*val PblObj {fmz_from_Subproblem_of_Inverse_sub, ...} = get_obj I pt (fst p)
wneuper@59550
   414
  see --- test [SignalProcessing,Z_Transform,Inverse_sub] me = ";*)
wneuper@59550
   415
wneuper@59550
   416
val fmz_from_Subproblem_of_Inverse_sub = (*see --- test [SignalProcessing,Z_Transform,Inverse_s.."*)
walther@60329
   417
     (["functionTerm (3 / (z * (z - 1 / 4 + - 1 / 8 * (1 / z))))", "solveFor z",
wneuper@59550
   418
       "decomposedFunction p_p'''"],
wneuper@59592
   419
      ("Isac_Knowledge", ["partial_fraction", "rational", "simplification"],
wneuper@59550
   420
       ["simplification", "of_rationals", "to_partial_fraction"]));
wneuper@59550
   421
CalcTree [fmz_from_Subproblem_of_Inverse_sub];
wneuper@59550
   422
Iterator 1;
wneuper@59550
   423
moveActiveRoot 1;
wneuper@59550
   424
(*
wneuper@59550
   425
autoCalculate 1 CompleteCalc;
wneuper@59550
   426
exception Empty raised (line 429 of "library.ML") TODO during lucin: *)
wneuper@59550
   427
wneuper@59550
   428
(*
walther@59901
   429
LItool.trace_on := true;
wneuper@59550
   430
walther@59997
   431
@@@ program ["simplification", "of_rationals", "to_partial_fraction"]
wneuper@59550
   432
@@@ istate ["
walther@60329
   433
(f_f, 3 / (z * (z - 1 / 4 + - 1 / 8 * (1 / z))))", "
wneuper@59550
   434
(zzz, z)"] 
walther@60329
   435
@@@ next   leaf 'Take f_f' ---> Program.Tac 'Take (3 / (z * (z - 1 / 4 + - 1 / 8 * (1 / z))))'
wneuper@59550
   436
*)
wneuper@59550
   437