test/Tools/isac/Test_Some.thy
author Walther Neuper <walther.neuper@jku.at>
Wed, 13 Nov 2019 12:06:40 +0100
changeset 59696 d4db8d11f76d
parent 59691 53c60fa9c41c
child 59723 2b26d0882d4f
permissions -rw-r--r--
lucin: suppose determine_next_tactic unnecessary in solve Apply_Method'
walther@59603
     1
theory Test_Some
walther@59603
     2
  imports Isac.Build_Thydata
walther@59603
     3
  "~~/test/Tools/isac/ProgLang/calculate"    (* setup for calculate.sml*)
wneuper@59265
     4
begin 
wneuper@59472
     5
ML \<open>
wneuper@59265
     6
(*/-------------------------------------------------------- ! aktivate for Test_Isac BEGIN ---\*)
wneuper@59417
     7
                      (* these vvv test, if funs are intermediately opened in structure 
walther@59659
     8
                         in case of errors here consider ~~/xtest-to-coding.sh      *)
wneuper@59265
     9
  open Kernel;
wneuper@59265
    10
  open Math_Engine;            CalcTreeTEST;
wneuper@59564
    11
  open Lucin;                  itms2args;
walther@59659
    12
  open Env;
walther@59659
    13
  open Exec;
walther@59691
    14
  open LucinNEW;               scan_dn2;
wneuper@59578
    15
  open Istate;
wneuper@59265
    16
  open Inform;                 cas_input;
wneuper@59265
    17
  open Rtools;                 trtas2str;
wneuper@59265
    18
  open Chead;                  pt_extract;
wneuper@59316
    19
  open Generate;               (* NONE *)
wneuper@59276
    20
  open Ctree;                  append_problem;
walther@59696
    21
  open Pos;
walther@59618
    22
  open Program;
wneuper@59601
    23
  open Prog_Tac;
walther@59603
    24
  open Tactical;
walther@59603
    25
  open Prog_Expr;
walther@59618
    26
  open Auto_Prog;              rule2stac;
walther@59618
    27
  open Input_Descript;
wneuper@59269
    28
  open Specify;                show_ptyps;
wneuper@59316
    29
  open Applicable;             mk_set;
wneuper@59316
    30
  open Solve;                  (* NONE *)
wneuper@59308
    31
  open Selem;                  e_fmz;
wneuper@59577
    32
  open Stool;                  (* NONE *)
wneuper@59577
    33
  open ContextC;               transfer_asms_from_to;
wneuper@59575
    34
  open Tactic;                 (* NONE *)
wneuper@59316
    35
  open Model;                  (* NONE *)
wneuper@59417
    36
  open Rewrite;                mk_thm;
wneuper@59417
    37
  open Calc;                   get_pair;
wneuper@59417
    38
  open TermC;                  atomt;
wneuper@59417
    39
  open Celem;                  e_pbt;
wneuper@59417
    40
  open Rule;                   string_of_thm;
wneuper@59265
    41
(*\--- ! aktivate for Test_Isac END ----------------------------------------------------------/*)
wneuper@59472
    42
\<close>
walther@59670
    43
ML_file "Interpret/lucas-interpreter.sml"
neuper@48765
    44
wneuper@59472
    45
section \<open>code for copy & paste ===============================================================\<close>
wneuper@59472
    46
ML \<open>
wneuper@59535
    47
"~~~~~ fun xxx , args:"; val () = ();
walther@59655
    48
"~~~~~ and xxx , args:"; val () = ();
walther@59676
    49
"~~~~~ from xxx -> fun yyy -> fun zzz, return val:"; val () = ();
wneuper@59582
    50
(*if*) (*then*); (*else*);   (*case*) (*of*);  (*return value*);
wneuper@59579
    51
"xx"
walther@59676
    52
^ "xxx"   (*+*) (*!for return!*) (*isa*) (*REP*)
walther@59635
    53
\<close> ML \<open>
wneuper@59472
    54
\<close>
wneuper@59472
    55
text \<open>
neuper@52101
    56
  declare [[show_types]] 
neuper@55405
    57
  declare [[show_sorts]]            
neuper@52101
    58
  find_theorems "?a <= ?a"
neuper@52101
    59
  
wneuper@59230
    60
  print_theorems
neuper@52101
    61
  print_facts
neuper@52101
    62
  print_statement ""
neuper@52101
    63
  print_theory
wneuper@59230
    64
  ML_command \<open>Pretty.writeln prt\<close>
wneuper@59230
    65
  declare [[ML_print_depth = 999]]
wneuper@59252
    66
  declare [[ML_exception_trace]]
wneuper@59472
    67
\<close>
wneuper@59472
    68
ML \<open>
neuper@52105
    69
(*========== inhibit exn WN130909 TODO =========================================================
neuper@52105
    70
============ inhibit exn WN130909 TODO ========================================================*)
walther@59655
    71
walther@59655
    72
\<close>
walther@59655
    73
walther@59655
    74
section \<open>===================================================================================\<close>
walther@59655
    75
ML \<open>
walther@59655
    76
"~~~~~ fun xxx , args:"; val () = ();
walther@59655
    77
\<close> ML \<open>
walther@59655
    78
\<close> ML \<open>
walther@59655
    79
\<close> ML \<open>
walther@59655
    80
"~~~~~ fun xxx , args:"; val () = ();
walther@59655
    81
\<close>
walther@59655
    82
walther@59686
    83
section \<open>===================================================================================\<close>
walther@59684
    84
ML \<open>
walther@59684
    85
"~~~~~ fun xxx , args:"; val () = ();
walther@59684
    86
\<close> ML \<open>
walther@59684
    87
\<close> ML \<open>
walther@59684
    88
\<close> ML \<open>
walther@59684
    89
"~~~~~ fun xxx , args:"; val () = ();
walther@59684
    90
\<close>
walther@59684
    91
wneuper@59577
    92
section \<open>===========--- x / (x ^ 2 - 6 * x + 9) - 1 / (x ^ 2 - 3 * x) = 1 /x"===============\<close>
wneuper@59517
    93
ML \<open>
wneuper@59531
    94
"~~~~~ fun xxx , args:"; val () = ();
wneuper@59517
    95
\<close> ML \<open>
wneuper@59578
    96
(* waits for finalising ctxt: want result [x = 6 / 5] instead of "[]"*)
wneuper@59582
    97
"----------- rat-equ: remove x = 0 from [x = 0, x = 6 / 5] due to contexts ---------------------";
wneuper@59582
    98
"----------- rat-equ: remove x = 0 from [x = 0, x = 6 / 5] due to contexts ---------------------";
wneuper@59582
    99
"----------- rat-equ: remove x = 0 from [x = 0, x = 6 / 5] due to contexts ---------------------";
wneuper@59577
   100
(*ER-7*) (*Schalk I s.87 Bsp 55b*)
wneuper@59577
   101
(* peculiarity of this example:
wneuper@59577
   102
   show_pt_tac pt;
wneuper@59577
   103
wneuper@59577
   104
. . . . . . . . . . ("RatEq",["univariate","equation"],["no_met"]);
wneuper@59577
   105
([], Frm), solve (x / (x ^^^ 2 - 6 * x + 9) - 1 / (x ^^^ 2 - 3 * x) = 1 / x, x)
wneuper@59577
   106
                                                                asm ^^^^^ "x \<noteq> 0"
wneuper@59577
   107
. . . . . . . . . . Subproblem (PolyEq, ["normalise","polynomial","univariate","equation"]),
wneuper@59577
   108
([4], Pbl), solve ((3 + -1 * x + x ^^^ 2) * x = 1 * (9 * x + -6 * x ^^^ 2 + x ^^^ 3), x)
wneuper@59577
   109
. . . . . . . . . . Subproblem (PolyEq, ["bdv_only","degree_2","polynomial","univariate","equation"]),
wneuper@59577
   110
([4,4], Pbl), solve (-6 * x + 5 * x ^^^ 2 = 0, x)
wneuper@59577
   111
([4,4,5], Res), [x = 0, x = 6 / 5]
wneuper@59577
   112
. . . . . . . . . . Check_Postcond ["bdv_only","degree_2","polynomial","univariate","equation"],
wneuper@59577
   113
([4,4], Res), [x = 0, x = 6 / 5]
wneuper@59577
   114
. . . . . . . . . . Check_Postcond ["normalise","polynomial","univariate","equation"],
wneuper@59577
   115
               ^^^^^ from_subpbl_to_caller must drop "x = 0" due to asm "x \<noteq> 0"
wneuper@59577
   116
([5], Res), [x = 0, x = 6 / 5]
wneuper@59577
   117
. . . . . . . . . . Check_Postcond ["rational","univariate","equation"],
wneuper@59577
   118
([], Res), [x = 6 / 5]
wneuper@59577
   119
*)
wneuper@59577
   120
val fmz = ["equality (x/(x^^^2 - 6*x+9) - 1/(x^^^2 - 3*x) =1/x)",
wneuper@59577
   121
	   "solveFor x","solutions L"];
wneuper@59577
   122
val (dI',pI',mI') = ("RatEq",["univariate","equation"],["no_met"]);
wneuper@59577
   123
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@59577
   124
(*---------solve (x / (x ^^^ 2 - 6 * x + 9) - 1 / (x ^^^ 2 - 3 * x) = 1 / x, x)*)
wneuper@59577
   125
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
wneuper@59577
   126
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
wneuper@59577
   127
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
wneuper@59582
   128
(*[], Met*)val (p,_,f,nxt,_,pt''''') = me nxt p [1] pt;(*Apply_Method ["RatEq", "solve_rat_equation"]*)
wneuper@59577
   129
\<close> ML \<open>
wneuper@59578
   130
(*+*)if p = ([], Met) andalso fst nxt = "Apply_Method" andalso
wneuper@59578
   131
(*+*)terms2str (get_assumptions_ pt p) = "[]"
wneuper@59578
   132
(*+*)then () else error "BEFORE 1 changed";
wneuper@59577
   133
\<close> ML \<open>
wneuper@59577
   134
(*//--1 begin step into relevant call -------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---\\
wneuper@59583
   135
      1 relevant for init_pstate in root-pbl*)
wneuper@59582
   136
(*[1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt''''';
wneuper@59577
   137
(*\\--1 end step into relevant call ----------------------------------------------------------//*)
wneuper@59577
   138
\<close> ML \<open>
wneuper@59578
   139
(*+*)if p = ([1], Frm) andalso fst nxt = "Rewrite_Set" andalso
wneuper@59578
   140
(*+*)terms2str (get_assumptions_ pt p) = "[\"x / (x ^^^ 2 - 6 * x + 9) - 1 / (x ^^^ 2 - 3 * x) =\n1 / x is_ratequation_in x\"]"
wneuper@59578
   141
(*+*)then () else error "AFTER 1 changed";
wneuper@59577
   142
\<close> ML \<open>
wneuper@59577
   143
(*[2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Rewrite_Set "norm_Rational"*)
wneuper@59577
   144
(*[2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Rewrite_Set "RatEq_eliminate"*)
wneuper@59577
   145
\<close> ML \<open>
wneuper@59578
   146
(*+*)if p = ([2], Res) andalso fst nxt = "Rewrite_Set" andalso
wneuper@59578
   147
(*+*)terms2str (get_assumptions_ pt p) = "[\"9 * x + -6 * x ^^^ 2 + x ^^^ 3 \<noteq> 0\",\"x / (x ^^^ 2 - 6 * x + 9) - 1 / (x ^^^ 2 - 3 * x) =\n1 / x is_ratequation_in x\"]"
wneuper@59578
   148
(*+*)then () else error "BEFORE 2 changed";
wneuper@59577
   149
\<close> ML \<open>
wneuper@59577
   150
(*//--2 begin step into relevant call -------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---\\
wneuper@59577
   151
      2 relevant for preconds like "x \<noteq> 0"                                                     *)
wneuper@59577
   152
(*[3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Subproblem ("PolyEq", ["normalise", "polynomial", "univariate", "equation"]*)
wneuper@59577
   153
(*---------solve ((3 + -1 * x + x ^^^ 2) * x = 1 * (9 * x + -6 * x ^^^ 2 + x ^^^ 3), x)*)
wneuper@59577
   154
(*\\--2 end step into relevant call ----------------------------------------------------------//*)
wneuper@59577
   155
\<close> ML \<open>
wneuper@59578
   156
(*+*)if p = ([3], Res) andalso fst nxt = "Subproblem" andalso
wneuper@59578
   157
(*+*)terms2str (get_assumptions_ pt p) = "[\"9 * x + -6 * x ^^^ 2 + x ^^^ 3 \<noteq> 0\",\"x / (x ^^^ 2 - 6 * x + 9) - 1 / (x ^^^ 2 - 3 * x) =\n1 / x is_ratequation_in x\"]"
wneuper@59578
   158
(*+*)then () else error "AFTER 2 changed";
wneuper@59577
   159
\<close> ML \<open>
wneuper@59577
   160
(*[4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
wneuper@59577
   161
(*[4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)
wneuper@59577
   162
(*[4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)
wneuper@59578
   163
\<close> ML \<open>
wneuper@59577
   164
(*[4], Met*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Apply_Method ["PolyEq", "normalise_poly"]*)
wneuper@59577
   165
(*[4, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Rewrite ("all_left", "\<not> ?b =!= 0 \<Longrightarrow> (?a = ?b) = (?a - ?b = 0)")*)
wneuper@59577
   166
(*[4, 1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
wneuper@59577
   167
(*[4, 3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Subproblem ("PolyEq", ["bdv_only", "degree_2", "polynomial", "univariate", "equation"]*)
wneuper@59577
   168
(*---------solve (-6 * x + 5 * x ^^^ 2 = 0, x)*)
wneuper@59578
   169
\<close> ML \<open>
wneuper@59577
   170
(*4, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)
wneuper@59577
   171
(*4, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)
wneuper@59577
   172
(*4, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt; val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(**)
wneuper@59577
   173
(*4, 4], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
wneuper@59577
   174
(*4, 4], Met*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Apply_Method ["PolyEq", "solve_d2_polyeq_bdvonly_equation"]*)
wneuper@59577
   175
(*[4, 4, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Rewrite_Set_Inst (["(''bdv'', x)"], "d2_polyeq_bdv_only_simplify")*)
wneuper@59577
   176
(*[4, 4, 1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Rewrite_Set_Inst (["(''bdv'', x)"], "d1_polyeq_simplify")*)
wneuper@59577
   177
(*[4, 4, 2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Rewrite_Set "polyeq_simplify"*)
wneuper@59577
   178
(*[4, 4, 3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Or_to_List*)
wneuper@59577
   179
(*[4, 4, 4], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Check_elementwise "Assumptions"*)
wneuper@59577
   180
(*[4, 4, 5], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Check_Postcond ["bdv_only", "degree_2", "polynomial", "univariate", "equation"]*)
wneuper@59577
   181
\<close> ML \<open>
wneuper@59578
   182
(*+*)if p = ([4, 4, 5], Res) andalso fst nxt = "Check_Postcond" andalso
wneuper@59578
   183
(*+*)terms2str (get_assumptions_ pt p) = "[\"lhs (-6 * x + 5 * x ^^^ 2 = 0) is_poly_in x\",\"lhs (-6 * x + 5 * x ^^^ 2 = 0) has_degree_in x = 2\"]"
wneuper@59578
   184
(*+*)then () else error "BEFORE 8 changed";
wneuper@59577
   185
\<close> ML \<open>
wneuper@59577
   186
(*//--9 begin step into relevant call ----------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---\\
wneuper@59577
   187
      9 relevant for dropping "x = 0" due to asm "x \<noteq> 0"*)
wneuper@59582
   188
(*[4, 4], Res*)val (p''''',_,f,nxt''''',_,pt''''') = me nxt p [1] pt;(*Check_Postcond ["normalise", "polynomial", "univariate", "equation"]*)
wneuper@59582
   189
\<close> ML \<open>
wneuper@59582
   190
val ctxt = get_ctxt pt p;
wneuper@59582
   191
terms2str (get_assumptions ctxt)
wneuper@59582
   192
 = "[\"lhs (-6 * x + 5 * x ^^^ 2 = 0) is_poly_in x\",\"lhs (-6 * x + 5 * x ^^^ 2 = 0) has_degree_in x = 2\"]";
wneuper@59582
   193
(*     ^^^ NOT evaluated                               ^^^ *)
wneuper@59582
   194
\<close> ML \<open>
wneuper@59582
   195
val ctxt = get_ctxt pt''''' p''''';
wneuper@59582
   196
terms2str (get_assumptions ctxt)
wneuper@59582
   197
 = "[\"lhs (-6 * x + 5 * x ^^^ 2 = 0) has_degree_in x = 2\",\"lhs (-6 * x + 5 * x ^^^ 2 = 0) is_poly_in x\",\"x = 0\",\"x = 6 / 5\"]"
wneuper@59582
   198
(* should formulas from calculation really go into ctxt ?                                                     ^^^^^     ^^^^^^^^^*)
wneuper@59582
   199
\<close> ML \<open>
wneuper@59582
   200
"~~~~~ fun me , args:"; val ((_, tac), p, _(*NEW remove*), pt) = (nxt, p, [1], pt);
wneuper@59582
   201
\<close> ML \<open>
wneuper@59582
   202
	    val ("ok", (_, _, ptp''''')) = (*case*) locatetac tac (pt, p) (*of*);
wneuper@59582
   203
\<close> ML \<open>
wneuper@59582
   204
val ctxt = get_ctxt (fst ptp''''') (snd ptp''''');
wneuper@59582
   205
terms2str (get_assumptions ctxt)
wneuper@59582
   206
 = "[\"lhs (-6 * x + 5 * x ^^^ 2 = 0) has_degree_in x = 2\",\"lhs (-6 * x + 5 * x ^^^ 2 = 0) is_poly_in x\",\"x = 0\",\"x = 6 / 5\"]"
wneuper@59582
   207
\<close> ML \<open>
wneuper@59582
   208
"~~~~~ fun locatetac , args:"; val (tac, (ptp as (pt, p))) = (tac, (pt, p));
wneuper@59582
   209
\<close> ML \<open>
wneuper@59582
   210
      val (mI, m) = Solve.mk_tac'_ tac;
wneuper@59582
   211
\<close> ML \<open>
wneuper@59582
   212
      val Chead.Appl m = (*case*) Applicable.applicable_in p pt m (*of*);
wneuper@59582
   213
\<close> ML \<open>
wneuper@59582
   214
      (*if*) member op = Solve.specsteps mI (*else*);
wneuper@59582
   215
\<close> ML \<open>
wneuper@59582
   216
      val Updated (tacis''''', pos's''''', ptp''''') = loc_solve_ (mI, m) ptp
wneuper@59582
   217
\<close> ML \<open>
wneuper@59582
   218
"~~~~~ fun loc_solve_ , args:"; val (m, (pt, pos)) = ((mI, m), ptp);
wneuper@59582
   219
\<close> ML \<open>
wneuper@59582
   220
     Solve.solve m (pt, pos);
wneuper@59582
   221
\<close> ML \<open>
wneuper@59582
   222
"~~~~~ fun solve , args:"; val (("Check_Postcond", Tactic.Check_Postcond' (pI, _)), (pt, (p, p_)))
wneuper@59582
   223
  = (m, (pt, pos));
wneuper@59582
   224
\<close> ML \<open>
wneuper@59582
   225
\<close> ML \<open>
wneuper@59582
   226
      val pp = par_pblobj pt p
wneuper@59582
   227
\<close> ML \<open>
wneuper@59582
   228
(*+*)(p, p_) = ([4, 4, 5], Res);
wneuper@59582
   229
\<close> ML \<open>
wneuper@59582
   230
(*+*)pp = [4, 4];
wneuper@59582
   231
\<close> ML \<open>
wneuper@59582
   232
(*+*)get_obj I pt (fst pos);
wneuper@59582
   233
\<close> ML \<open>
wneuper@59582
   234
PrfObj;
wneuper@59582
   235
\<close> ML \<open>
wneuper@59582
   236
      val Check_elementwise "Assumptions" = (*case*) get_obj g_tac pt p (*of*);
wneuper@59582
   237
(* this   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ should be dropped asap *)
wneuper@59582
   238
\<close> ML \<open>
wneuper@59582
   239
show_pt_tac pt
wneuper@59582
   240
\<close> ML \<open>
wneuper@59582
   241
\<close> ML \<open>
wneuper@59582
   242
\<close> ML \<open>
wneuper@59582
   243
\<close> ML \<open>
wneuper@59582
   244
\<close> ML \<open>
wneuper@59582
   245
\<close> ML \<open>
wneuper@59582
   246
\<close> ML \<open>
wneuper@59577
   247
(*\\--9 end step into relevant call ----------------------------------------------------------//*)
wneuper@59577
   248
\<close> ML \<open>
wneuper@59582
   249
(*+*)if p''''' = ([4, 4], Res) andalso fst nxt''''' = "Check_Postcond" andalso
wneuper@59582
   250
(*+*)terms2str (get_assumptions_ pt''''' p''''') = "[\"lhs (-6 * x + 5 * x ^^^ 2 = 0) has_degree_in x = 2\",\"lhs (-6 * x + 5 * x ^^^ 2 = 0) is_poly_in x\",\"x = 0\",\"x = 6 / 5\"]"
wneuper@59578
   251
(*+*)then () else error "AFTER 8 changed";
wneuper@59577
   252
\<close> ML \<open>
wneuper@59582
   253
(*[4], Res*)val (p,_,f,nxt,_,pt) = me nxt''''' p''''' [1] pt''''';(*Check_elementwise "Assumptions"*)
wneuper@59577
   254
(*[5], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*Check_Postcond ["rational", "univariate", "equation"]*)
wneuper@59577
   255
(*[], Res*)val (p,_,f,nxt,_,pt) = me nxt p [1] pt;(*End_Proof'*)
wneuper@59577
   256
\<close> ML \<open>
wneuper@59578
   257
(*+*)if p = ([], Res) andalso f2str f = "[]" (*..must change*)andalso fst nxt = "End_Proof'" andalso
wneuper@59578
   258
(*+*)terms2str (get_assumptions_ pt p) = "[\"x = 6 / 5\",\"x = 0\",\"lhs (-6 * x + 5 * x ^^^ 2 = 0) is_poly_in x\",\"lhs (-6 * x + 5 * x ^^^ 2 = 0) has_degree_in x = 2\"]"
wneuper@59578
   259
(*+*)then () else error "ERROR CHANGED: rateq.sml: diff.behav. in I s.87 Bsp 55b [x = 6 / 5], End_Proof'";
wneuper@59578
   260
\<close> ML \<open>
wneuper@59578
   261
\<close> ML \<open>
wneuper@59578
   262
"~~~~~ fun xxx , args:"; val () = ();
wneuper@59578
   263
\<close>
wneuper@59578
   264
walther@59671
   265
section \<open>===================================================================================\<close>
walther@59657
   266
ML \<open>
walther@59657
   267
\<close> ML \<open>
walther@59657
   268
\<close> ML \<open>
walther@59657
   269
\<close>
walther@59657
   270
wneuper@59535
   271
section \<open>code for copy & paste ===============================================================\<close>
wneuper@59535
   272
ML \<open>
wneuper@59531
   273
"~~~~~ fun xxx , args:"; val () = ();
wneuper@59582
   274
"~~~~~ and xxx , args:"; val () = ();                                                                                     
wneuper@59582
   275
"~~~~~ from xxx to yyy return val:"; val ((*yyy*)) = ((*xxx*));
wneuper@59582
   276
(*if*) (*then*); (*else*);   (*case*) (*of*);  (*return value*);
wneuper@59582
   277
"xx"
wneuper@59582
   278
^ "xxx"   (*+*)
wneuper@59535
   279
\<close>
neuper@41943
   280
end