test/Tools/isac/Test_Isac_Short.thy
author wneuper <Walther.Neuper@jku.at>
Sun, 21 Aug 2022 11:22:04 +0200
changeset 60530 edb91d2a28c1
parent 60519 70b30d910fd5
child 60533 b840894bd75a
permissions -rw-r--r--
//prepare test 3 for: push ctxt through LI (only CAS_Cmd not OK)
Walther@60424
     1
(* Title:  All tests on isac (some outcommented since Isabelle2002-->2009-2)
wneuper@59553
     2
   Author: Walther Neuper 101001
wneuper@59553
     3
   (c) copyright due to license terms.
wneuper@59553
     4
wneuper@59553
     5
   Isac's tests are organised parallel to sources: 
wenzelm@60192
     6
     $ISABELLE_ISAC_TEST has same directory structure as $ISABELLE_ISAC
wneuper@59553
     7
   plus
wenzelm@60217
     8
     $ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS
wenzelm@60217
     9
     $ISABELLE_ISAC_TEST/Tools/isac/Minisubpbl: the Lucas-Interpreter's core functionality
walther@59935
    10
walther@59935
    11
Note, that only the first error in a file is shown here.
wneuper@59553
    12
*)
wneuper@59553
    13
walther@59623
    14
section \<open>Notes on running tests\<close>
walther@59623
    15
subsection \<open>Switch between running tests and updating code\<close>
wneuper@59553
    16
text \<open>
walther@59623
    17
  Isac encapsulates code as much as possible in structures without open.
walther@59623
    18
  This policy conflicts with those tests, which go into functions to details
walther@59623
    19
  not declared in the signatures.
walther@59623
    20
\<close>
walther@59623
    21
subsection \<open>Decide between running Test_Isac_Short.thy and Test_Isac.thy\<close>
walther@59623
    22
text \<open>
walther@59623
    23
  Some tests raise exception Size raised (line 171 of "./basis/LibrarySupport.sml")
walther@59623
    24
  if run in x86_64_32 mode of Poly/ML 5.8 (which is set as default).
walther@59626
    25
  This exception can be avoided by ML_system_64 = "true" in ~/.isabelle/isabisac/etc/preferences.
walther@59626
    26
  A model is in the repository at ~~/etc/preferences.
walther@59623
    27
  These preferences have drawbacks, however:
walther@59623
    28
  * they claim more memory such that Isabelle instances canNOT run in parallel.
walther@59623
    29
  * they do NOT reach Build_Isac.thy hanging in Build_Thydata.thy, see there.
wneuper@59553
    30
walther@59623
    31
  So default for Build_Isac.thy and for general testing is Test_Isac_Short.thy is x86_64_32 mode.
walther@59623
    32
  From time to time full testing in Test_Isac.thy is recommended. For that purpose
walther@59626
    33
  * set ML_system_64 = "true" in ~/.isabelle/isabisac/etc/preferences.
wneuper@59553
    34
walther@59964
    35
\\******************* don't forget to re-set defaults BEFORE updating code *******************//
walther@59623
    36
walther@59626
    37
    Note that Isabelle/jEdit re-generates the preferences file on shutdown, thus always use
walther@59626
    38
    ***************** $ gedit ~/.isabelle/isabisac/etc/preferences &
wneuper@59553
    39
\<close>
wneuper@59553
    40
wneuper@59553
    41
section \<open>Run the tests\<close>
wneuper@59553
    42
text \<open>
wneuper@59553
    43
* say "OK" to the popup asking for theories to be loaded
wneuper@59553
    44
* watch the <Theories> window for errors in the "imports" below
wneuper@59553
    45
\<close>
wneuper@59553
    46
walther@59623
    47
theory Test_Isac_Short
walther@59603
    48
  imports Isac.Build_Isac (* note that imports are WITHOUT open struct ..*)
walther@59997
    49
  (* in case of ERROR Bad theory import "Draft.Thy_All"..., open each theory one by one
walther@59997
    50
     and find out, which ML_file or *.thy causes an error (might be ONLY one).
walther@59997
    51
     Also backup files (#* ) recognised by jEdit cause this trouble                    *)
wneuper@59553
    52
(*/---------------------- do Minisubpbl before ADDTESTS/All_Ctxt ------------------------------\*)
Walther@60519
    53
(*  "$ISABELLE_ISAC_TEST/ADDTESTS/accumulate-val/Thy_All"(*but ok in editor*)*)
walther@60387
    54
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/accumulate-val/Lucas_Interpreter"
wenzelm@60217
    55
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/Ctxt"
wenzelm@60217
    56
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/test-depend/Build_Test"
wenzelm@60217
    57
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/All_Ctxt"
wenzelm@60217
    58
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/Test_Units"
wenzelm@60217
    59
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/course/phst11/T1_Basics"
Walther@60519
    60
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/course/phst11/T2_Rewriting"
wenzelm@60217
    61
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/course/phst11/T3_MathEngine"
wenzelm@60217
    62
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/file-depend/BuildC_Test"
wenzelm@60217
    63
(**)"$ISABELLE_ISAC_TEST/Tools/isac/ADDTESTS/session-get_theory/Foo"
wneuper@59553
    64
(*"ADDTESTS/course/SignalProcess/Build_Inverse_Z_Transform"
wneuper@59553
    65
   ADDTESTS/------------------------------------------- see end of tests *)
walther@60317
    66
(*/~~~ these work directly from Pure, but create problems here ..
wenzelm@60217
    67
  "$ISABELLE_ISAC_TEST/Pure/Isar/Keyword_ISAC.thy"           (* Malformed theory import, "keywords" ?!? *)
wenzelm@60217
    68
  "$ISABELLE_ISAC_TEST/Pure/Isar/Test_Parse_Isac.thy"        (* Malformed theory import, "keywords" ?!? *)
wenzelm@60217
    69
  "$ISABELLE_ISAC_TEST/Pure/Isar/Test_Parsers_Cookbook.thy"  (* Malformed theory import             ?!? *)
wenzelm@60217
    70
  "$ISABELLE_ISAC_TEST/Pure/Isar/Theory_Commands"            (* Duplicate outer syntax command "ISAC"   *)
wenzelm@60217
    71
  "$ISABELLE_ISAC_TEST/Pure/Isar/Downto_Synchronized"        (* re-defines / breaks structures      !!! *)
walther@60317
    72
  \~~~ .. these work independently, but create problems here *)
wenzelm@60217
    73
(**)"$ISABELLE_ISAC_TEST/Pure/Isar/Test_Parsers"
wenzelm@60217
    74
(**)"$ISABELLE_ISAC_TEST/HOL/Tools/Sledgehammer/Try_Sledgehammer"
wneuper@59553
    75
(*/---------------------- do Minisubpbl before ADDTESTS/All_Ctxt ------------------------------\*)
wenzelm@60217
    76
  "$ISABELLE_ISAC_TEST/Tools/isac/Specify/refine"        (* setup for refine.sml   *)
wenzelm@60217
    77
  "$ISABELLE_ISAC_TEST/Tools/isac/ProgLang/calculate"    (* setup for evaluate.sml *)
wenzelm@60217
    78
  "$ISABELLE_ISAC_TEST/Tools/isac/Knowledge/integrate"   (* setup for integrate.sml*)
walther@60317
    79
(** )
wneuper@59553
    80
(*\---------------------- do Minisubpbl before ADDTESTS/All_Ctxt ------------------------------/*)
wenzelm@60192
    81
(*"$ISABELLE_ISAC/Knowledge/GCD_Poly_OLD" (*not imported by Isac.thy*)        Test_Isac_Short*)
wenzelm@60192
    82
(*"$ISABELLE_ISAC/Knowledge/GCD_Poly_FP"  (*not imported by Isac.thy*)        Test_Isac_Short*)
wneuper@59556
    83
(*\---------------------- do Minisubpbl before ADDTESTS/All_Ctxt ------------------------------/*)
walther@60317
    84
( **)
Walther@60491
    85
  "$ISABELLE_ISAC_TEST/Tools/isac/BridgeJEdit/Test_VSCode_Example"
wneuper@59553
    86
wneuper@59553
    87
begin
wneuper@59553
    88
wenzelm@60240
    89
declare [[ML_print_depth = 20]]
wenzelm@60240
    90
walther@59628
    91
ML \<open>open ML_System\<close>
wneuper@59553
    92
ML \<open>
wneuper@59553
    93
  open Kernel;
walther@59814
    94
  open Math_Engine;
walther@59814
    95
  open Test_Code;              CalcTreeTEST;
walther@59848
    96
  open LItool;                 arguments_from_model;
walther@59817
    97
  open Sub_Problem;
walther@59823
    98
  open Fetch_Tacs;
walther@59814
    99
  open Step
walther@59659
   100
  open Env;
walther@59814
   101
  open LI;                     scan_dn;
walther@59617
   102
  open Istate;
walther@59909
   103
  open Error_Pattern;
walther@59909
   104
  open Error_Pattern_Def;
walther@59977
   105
  open Specification;
wneuper@59553
   106
  open Ctree;                  append_problem;
walther@59696
   107
  open Pos;
walther@59618
   108
  open Program;
wneuper@59601
   109
  open Prog_Tac;
walther@59603
   110
  open Tactical;
walther@59603
   111
  open Prog_Expr;
walther@59618
   112
  open Auto_Prog;              rule2stac;
wneuper@59600
   113
  open Input_Descript;
walther@59971
   114
  open Specify;
walther@59976
   115
  open Specify;
walther@59763
   116
  open Step_Specify;
walther@59749
   117
  open Step_Solve;
walther@59763
   118
  open Step;
wneuper@59553
   119
  open Solve;                  (* NONE *)
wneuper@59577
   120
  open ContextC;               transfer_asms_from_to;
walther@59814
   121
  open Tactic;                 (* NONE *)
walther@60126
   122
  open I_Model;
walther@60126
   123
  open O_Model;
walther@60126
   124
  open P_Model;                (* NONE *)
walther@59872
   125
  open Rewrite;
walther@59878
   126
  open Eval;                   get_pair;
wneuper@59553
   127
  open TermC;                  atomt;
walther@59858
   128
  open Rule;
walther@59878
   129
  open Rule_Set;               Sequence;
walther@59919
   130
  open Eval_Def
walther@59854
   131
  open ThyC
walther@59865
   132
  open ThmC_Def
walther@59858
   133
  open ThmC
walther@59857
   134
  open Rewrite_Ord
walther@59861
   135
  open UnparseC
wenzelm@60223
   136
\<close>
wneuper@59553
   137
wneuper@59553
   138
ML \<open>
walther@59659
   139
"~~~~~ fun xxx , args:"; val () = ();
walther@59659
   140
"~~~~~ and xxx , args:"; val () = ();
walther@59814
   141
"~~~~~ from fun xxx \<longrightarrow>fun yyy \<longrightarrow>fun zzz , return:"; val () = ();
walther@60262
   142
(*if*) (*then*); (*else*);   (*case*) (*of*);  (*return value*); (*in*) (*end*);
walther@59659
   143
"xx"
walther@60329
   144
^ "xxx"   (*+*) (*+++*) (*!for return!*) (*isa*) (*REP*) (**)
walther@60329
   145
\<close> ML \<open> (*//---------------- adhoc inserted ------------------------------------------------\\*)
walther@59723
   146
\<close> ML \<open>
walther@60329
   147
\<close> ML \<open> (*\\---------------- adhoc inserted ------------------------------------------------//*)
walther@59723
   148
\<close>
walther@59723
   149
ML \<open>
walther@59723
   150
\<close> ML \<open>
wneuper@59553
   151
\<close> ML \<open>
walther@59851
   152
\<close> ML \<open>
walther@59851
   153
\<close> ML \<open>
wneuper@59553
   154
\<close>
wneuper@59553
   155
wneuper@59553
   156
ML \<open>
wneuper@59553
   157
  KEStore_Elems.set_ref_thy @{theory};
wneuper@59553
   158
  (*fun autoCalculate' cI auto = autoCalculate cI auto (*|> Future.join*)*);
wneuper@59553
   159
\<close>
wneuper@59553
   160
wneuper@59553
   161
section \<open>trials with Isabelle's functions\<close>
wneuper@59553
   162
  ML \<open>"%%%%%%%%%%%%%%%%% start Isabelle %%%%%%%%%%%%%%%%%%%%%%%";\<close>
Walther@60424
   163
  ML_file "$ISABELLE_ISAC_TEST/Pure/General/alist.ML"
wenzelm@60217
   164
  ML_file "$ISABELLE_ISAC_TEST/Pure/General/basics.ML"
wenzelm@60217
   165
  ML_file "$ISABELLE_ISAC_TEST/Pure/General/scan.ML"
wenzelm@60217
   166
  ML_file "$ISABELLE_ISAC_TEST/Pure/PIDE/xml.ML"
wneuper@59553
   167
  ML \<open>"%%%%%%%%%%%%%%%%% end Isabelle %%%%%%%%%%%%%%%%%%%%%%%%%";\<close>
wneuper@59553
   168
wneuper@59553
   169
section \<open>test ML Code of isac\<close>
wneuper@59600
   170
subsection \<open>basic code first\<close>
wneuper@59553
   171
  ML \<open>"%%%%%%%%%%%%%%%%% start ProgLang.thy %%%%%%%%%%%%%%%%%%%";\<close>
walther@60413
   172
  ML_file "BaseDefinitions/base-definitions.sml"
walther@59866
   173
  ML_file "BaseDefinitions/libraryC.sml"
walther@59866
   174
  ML_file "BaseDefinitions/rule-def.sml"
walther@59919
   175
  ML_file "BaseDefinitions/eval-def.sml"
walther@59866
   176
  ML_file "BaseDefinitions/rewrite-order.sml"
walther@59866
   177
  ML_file "BaseDefinitions/theoryC.sml"
walther@59866
   178
  ML_file "BaseDefinitions/rule.sml"
walther@59866
   179
  ML_file "BaseDefinitions/thmC-def.sml"
walther@59866
   180
  ML_file "BaseDefinitions/error-fill-def.sml"
walther@59866
   181
  ML_file "BaseDefinitions/rule-set.sml"
walther@59892
   182
  ML_file "BaseDefinitions/check-unique.sml"
walther@59932
   183
(*called by Know_Store..*)
walther@59866
   184
  ML_file "BaseDefinitions/calcelems.sml"
walther@59866
   185
  ML_file "BaseDefinitions/termC.sml"
walther@59912
   186
  ML_file "BaseDefinitions/substitution.sml"
Walther@60424
   187
  ML_file "BaseDefinitions/contextC.sml" (*!!!!! sometimes evaluates if separated into ML blocks*)
walther@59866
   188
  ML_file "BaseDefinitions/environment.sml"
Walther@60424
   189
(**)ML_file "BaseDefinitions/kestore.sml"(*setup in ADDTEST/accumulate-val/lucas_interpreter.sml*)
wneuper@59553
   190
(*---------------------- do Minisubpbl before ADDTESTS/All_Ctxt --------------------------------
wneuper@59553
   191
  ---------------------- do Minisubpbl before ADDTESTS/All_Ctxt --------------------------------*)
walther@59932
   192
walther@60317
   193
  ML_file "ProgLang/calculate.sml"
walther@59964
   194
  ML_file "ProgLang/evaluate.sml"       (* requires setup from calculate.thy                    *)
walther@59633
   195
  ML_file "ProgLang/listC.sml"
walther@59633
   196
  ML_file "ProgLang/prog_expr.sml"
walther@59633
   197
  ML_file "ProgLang/program.sml"
walther@59633
   198
  ML_file "ProgLang/prog_tac.sml"
walther@59763
   199
  ML_file "ProgLang/tactical.sml"
walther@60326
   200
  ML_file "ProgLang/auto_prog.sml"
wneuper@59553
   201
(*---------------------- do Minisubpbl before ADDTESTS/All_Ctxt --------------------------------
wneuper@59553
   202
  ---------------------- do Minisubpbl before ADDTESTS/All_Ctxt --------------------------------*)
wneuper@59600
   203
wneuper@59600
   204
subsection \<open>basic functionality on simple example first\<close>
wneuper@59553
   205
  ML_file "Minisubpbl/000-comments.sml"
wneuper@59553
   206
  ML_file "Minisubpbl/100-init-rootpbl.sml"
wneuper@59553
   207
  ML_file "Minisubpbl/150-add-given.sml"
walther@59781
   208
  ML_file "Minisubpbl/200-start-method-NEXT_STEP.sml"
wneuper@59553
   209
  ML_file "Minisubpbl/200-start-method.sml"
wneuper@59553
   210
  ML_file "Minisubpbl/250-Rewrite_Set-from-method.sml"
walther@59722
   211
  ML_file "Minisubpbl/300-init-subpbl-NEXT_STEP.sml"
wneuper@59553
   212
  ML_file "Minisubpbl/300-init-subpbl.sml"
wneuper@59553
   213
  ML_file "Minisubpbl/400-start-meth-subpbl.sml"
wneuper@59553
   214
  ML_file "Minisubpbl/450-Rewrite_Set_Inst.sml"
walther@59722
   215
  ML_file "Minisubpbl/470-Check_elementwise-NEXT_STEP.sml"
wneuper@59553
   216
  ML_file "Minisubpbl/490-nxt-Check_Postcond.sml"
wneuper@59553
   217
  ML_file "Minisubpbl/500-met-sub-to-root.sml"
wneuper@59553
   218
  ML_file "Minisubpbl/530-error-Check_Elementwise.sml"
walther@59781
   219
  ML_file "Minisubpbl/600-postcond-NEXT_STEP.sml"
wneuper@59553
   220
  ML_file "Minisubpbl/600-postcond.sml"
wneuper@59553
   221
  ML_file "Minisubpbl/700-interSteps.sml"
walther@59820
   222
  ML_file "Minisubpbl/710-interSteps-short.sml"
walther@59836
   223
  ML_file "Minisubpbl/790-complete-NEXT_STEP.sml"
walther@59686
   224
  ML_file "Minisubpbl/790-complete.sml"
walther@60340
   225
  ML_file "Minisubpbl/800-append-on-Frm.sml"
wneuper@59600
   226
wneuper@59600
   227
subsection \<open>further functionality alongside batch build sequence\<close>
walther@59865
   228
  ML_file "MathEngBasic/thmC.sml"
walther@60389
   229
  ML_file "MathEngBasic/rewrite.sml"
walther@59728
   230
  ML_file "MathEngBasic/tactic.sml"
Walther@60519
   231
  ML_file "MathEngBasic/ctree.sml" (*if red, get the file into a text buffer -- this might clear*)
walther@59774
   232
  ML_file "MathEngBasic/calculation.sml"
walther@59763
   233
walther@59996
   234
  ML_file "Specify/formalise.sml"
walther@59952
   235
  ML_file "Specify/o-model.sml"
walther@59957
   236
  ML_file "Specify/i-model.sml"
walther@59996
   237
  ML_file "Specify/pre-conditions.sml"
walther@59996
   238
  ML_file "Specify/p-model.sml"
walther@59985
   239
  ML_file "Specify/m-match.sml"
walther@59967
   240
  ML_file "Specify/refine.sml"        (* requires setup from refine.thy *)
walther@59996
   241
  ML_file "Specify/test-out.sml"
walther@59996
   242
  ML_file "Specify/specify-step.sml"
walther@59996
   243
  ML_file "Specify/specification.sml"
walther@59996
   244
  ML_file "Specify/cas-command.sml"
walther@59996
   245
  ML_file "Specify/p-spec.sml"
walther@59996
   246
  ML_file "Specify/specify.sml"
walther@59800
   247
  ML_file "Specify/step-specify.sml"
walther@59813
   248
walther@59860
   249
  ML_file "Interpret/istate.sml"
walther@59817
   250
  ML_file "Interpret/sub-problem.sml"
walther@60389
   251
  ML_file "Interpret/error-pattern.sml"
walther@59790
   252
  ML_file "Interpret/li-tool.sml"
walther@60340
   253
  ML_file "Interpret/lucas-interpreter.sml"
Walther@60530
   254
ML \<open>
Walther@60530
   255
\<close> ML \<open>
Walther@60530
   256
\<close> ML \<open>
Walther@60530
   257
(* Title:  "Interpret/lucas-interpreter.sml"
Walther@60530
   258
   Author: Walther Neuper
Walther@60530
   259
   (c) due to copyright terms
Walther@60530
   260
*)
Walther@60530
   261
Walther@60530
   262
"-----------------------------------------------------------------------------------------------";
Walther@60530
   263
"table of contents -----------------------------------------------------------------------------";
Walther@60530
   264
"-----------------------------------------------------------------------------------------------";
Walther@60530
   265
"----------- Take as 1st stac in program -------------------------------------------------------";
Walther@60530
   266
"----------- re-build: fun locate_input_tactic -------------------------------------------------";
Walther@60530
   267
"----------- fun locate_input_tactic Helpless, NOT applicable ----------------------------------";
Walther@60530
   268
"----------- re-build: fun find_next_step, mini ------------------------------------------------";
Walther@60530
   269
"----------- re-build: fun locate_input_term ---------------------------------------------------";
Walther@60530
   270
"-----------------------------------------------------------------------------------------------";
Walther@60530
   271
"-----------------------------------------------------------------------------------------------";
Walther@60530
   272
"-----------------------------------------------------------------------------------------------";
Walther@60530
   273
Walther@60530
   274
"----------- Take as 1st stac in program -------------------------------------------------------";
Walther@60530
   275
"----------- Take as 1st stac in program -------------------------------------------------------";
Walther@60530
   276
"----------- Take as 1st stac in program -------------------------------------------------------";
Walther@60530
   277
"compare --- Apply_Method with initial Take by Step.do_next --- in test/../step-solve ----------";
Walther@60530
   278
val p = e_pos'; val c = []; 
Walther@60530
   279
val (p,_,f,nxt,_,pt) = 
Walther@60530
   280
    CalcTreeTEST 
Walther@60530
   281
        [(["functionTerm (x \<up> 2 + 1)", "integrateBy x", "antiDerivative FF"],
Walther@60530
   282
          ("Integrate", ["integrate", "function"], ["diff", "integration"]))];
Walther@60530
   283
val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = ("Tac ", ...) --> Add_Given...*)
Walther@60530
   284
val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60530
   285
val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60530
   286
val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60530
   287
val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60530
   288
val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60530
   289
val (p,_,f,nxt,_,pt) = me nxt p c pt;
Walther@60530
   290
case nxt of (Apply_Method ["diff", "integration"]) => ()
Walther@60530
   291
          | _ => error "integrate.sml -- me method [diff,integration] -- spec";
Walther@60530
   292
"----- step 8: returns nxt = Rewrite_Set_Inst ([\"(''bdv'', x)\"],\"integration\")";
Walther@60530
   293
Walther@60530
   294
"~~~~~ fun me, args:"; val (tac, (p:pos'), _, (pt:ctree)) = (nxt, p, c, pt);
Walther@60530
   295
"~~~~~ fun Step.by_tactic, args:"; val (tac, (ptp as (pt, p))) = (tac, (pt,p));
Walther@60530
   296
val Applicable.Yes m = Step.check tac (pt, p);
Walther@60530
   297
 (*if*) Tactic.for_specify' m; (*false*)
Walther@60530
   298
"~~~~~ fun loc_solve_ , args:"; val (m, (pt,pos)) = (m, ptp);
Walther@60530
   299
Walther@60530
   300
"~~~~~ fun Step_Solve.by_tactic , args:"; val (m as Apply_Method' (mI, _, _, ctxt), (pt, (pos as (p,_))))
Walther@60530
   301
  = (m, (pt, pos));
Walther@60530
   302
      val {srls, ...} = MethodC.from_store mI;
Walther@60530
   303
      val itms = case get_obj I pt p of
Walther@60530
   304
        PblObj {meth=itms, ...} => itms
Walther@60530
   305
      | _ => error "solve Apply_Method: uncovered case get_obj"
Walther@60530
   306
      val thy' = get_obj g_domID pt p;
Walther@60530
   307
      val thy = ThyC.get_theory thy';
Walther@60530
   308
      val srls = LItool.get_simplifier (pt, pos)
Walther@60530
   309
      val (is, env, ctxt, sc) = case LItool.init_pstate srls ctxt itms mI of
Walther@60530
   310
        (is as Istate.Pstate {env, ...}, ctxt, sc) =>  (is, env, ctxt, sc)
Walther@60530
   311
      | _ => error "solve Apply_Method: uncovered case init_pstate";
Walther@60530
   312
(*+*)pstate2str (the_pstate is) = "([\"\n(f_f, x \<up> 2 + 1)\",\"\n(v_v, x)\"], [], empty, NONE, \n??.empty, ORundef, false, true)";
Walther@60530
   313
      val ini = LItool.implicit_take sc env;
Walther@60530
   314
      val p = lev_dn p;
Walther@60530
   315
Walther@60530
   316
      val NONE = (*case*) ini (*of*);
Walther@60530
   317
            val Next_Step (is', ctxt', m') =
Walther@60530
   318
              LI.find_next_step sc (pt, (p, Res)) is ctxt;
Walther@60530
   319
(*+*)pstate2str (the_pstate is') = "([\"\n(f_f, x \<up> 2 + 1)\",\"\n(v_v, x)\"], [R,L,R], empty, NONE, \nIntegral x \<up> 2 + 1 D x, ORundef, false, false)";
Walther@60530
   320
  val Safe_Step (_, _, Take' _) = (*case*)
Walther@60530
   321
           locate_input_tactic sc (pt, (p, Res)) is' ctxt' m' (*of*);
Walther@60530
   322
"~~~~~ fun locate_input_tactic , args:"; val ((Prog prog), cstate, istate, ctxt, tac)
Walther@60530
   323
  = (sc, (pt, (p, Res)), is', ctxt', m');
Walther@60530
   324
Walther@60530
   325
    (*case*) scan_to_tactic1 (prog, (cstate, ctxt, tac)) istate (*of*);
Walther@60530
   326
"~~~~~ fun scan_to_tactic1 , args:"; val ((prog, (cctt as ((_, p), _, _))), (Istate.Pstate (ist as {path, ...})))
Walther@60530
   327
  = ((prog, (cstate, ctxt, tac)), istate);
Walther@60530
   328
    (*if*) path = [] orelse ((last_elem o fst) p = 0 andalso snd p = Res) (*then*);
Walther@60530
   329
Walther@60530
   330
  val Accept_Tac1 (_, _, Take' _) =
Walther@60530
   331
       scan_dn1 cctt (ist |> set_path [R] |> set_or ORundef) (Program.body_of prog);
Walther@60530
   332
"~~~~~ fun scan_dn1 , args:"; val (xxx, ist, (Const (\<^const_name>\<open>Let\<close>, _) $ e $ (Abs (id, T, b))))
Walther@60530
   333
  = (cctt, (ist |> set_path [R] |> set_or ORundef), (Program.body_of prog));
Walther@60530
   334
Walther@60530
   335
(*+*) if UnparseC.term e = "Take (Integral f_f D v_v)" then () else error "scan_dn1 Integral changed";
Walther@60530
   336
Walther@60530
   337
    (*case*)
Walther@60530
   338
           scan_dn1 xxx (ist |> path_down [L, R]) e (*of*);
Walther@60530
   339
    (*======= end of scanning tacticals, a leaf =======*)
Walther@60530
   340
"~~~~~ fun scan_dn1 , args:"; val (((pt, p), ctxt, tac), (ist as {eval, or, ...}), t)
Walther@60530
   341
  = (xxx, (ist |> path_down [L, R]), e);
Walther@60530
   342
val (Program.Tac stac, a') = check_leaf "locate" ctxt eval (get_subst ist) t;
Walther@60530
   343
Walther@60530
   344
Walther@60530
   345
Walther@60530
   346
"----------- re-build: fun locate_input_tactic -------------------------------------------------";
Walther@60530
   347
"----------- re-build: fun locate_input_tactic -------------------------------------------------";
Walther@60530
   348
"----------- re-build: fun locate_input_tactic -------------------------------------------------";
Walther@60530
   349
val fmz = ["equality (x+1=(2::real))", "solveFor x", "solutions L"];
Walther@60530
   350
val (dI',pI',mI') = ("Test", ["sqroot-test", "univariate", "equation", "test"],
Walther@60530
   351
   ["Test", "squ-equ-test-subpbl1"]);
Walther@60530
   352
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
Walther@60530
   353
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   354
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   355
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   356
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   357
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   358
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   359
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = (_, Apply_Method ["Test", "squ-equ-test-subpbl1"])*);
Walther@60530
   360
(*[1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = ("Rewrite_Set", Rewrite_Set "norm_equation")*)
Walther@60530
   361
Walther@60530
   362
(*//------------------ begin step into ------------------------------------------------------\\*)
Walther@60530
   363
(*[1], Res*)val (p'''''_''',_,f,nxt'''''_''',_,pt'''''_''') = me nxt p [] pt; (*nxt = Rewrite_Set "Test_simplify"*)
Walther@60530
   364
Walther@60530
   365
"~~~~~ fun me , args:"; val (tac, p, _(*NEW remove*), pt) = (nxt, p, [], pt);
Walther@60530
   366
Walther@60530
   367
    (** )val (***)xxxx(***) ( *("ok", (_, _, (pt, p))) =( **)  (*case*)
Walther@60530
   368
      Step.by_tactic tac (pt,p) (*of*);
Walther@60530
   369
"~~~~~ fun by_tactic , args:"; val (tac, (ptp as (pt, p))) = (tac, (pt,p));
Walther@60530
   370
      val Applicable.Yes m = (*case*) Solve_Step.check tac (pt, p) (*of*);
Walther@60530
   371
      (*if*) Tactic.for_specify' m; (*false*)
Walther@60530
   372
Walther@60530
   373
    (** )val (***)xxxxx_x(***) ( *(msg, cs') =( **)
Walther@60530
   374
Step_Solve.by_tactic m ptp;
Walther@60530
   375
"~~~~~ fun by_tactic , args:"; val (m, (pt, po as (p, p_))) = (m, ptp);
Walther@60530
   376
(*+*)val (pt'''''_', (p'''''_', p_'''''_')) = (pt, (p, p_));
Walther@60530
   377
    (*if*) MethodC.id_empty = get_obj g_metID pt (par_pblobj pt p); (*else*)
Walther@60530
   378
	      val thy' = get_obj g_domID pt (par_pblobj pt p);
Walther@60530
   379
	      val (is, sc) = LItool.resume_prog thy' (p,p_) pt;
Walther@60530
   380
Walther@60530
   381
     locate_input_tactic sc (pt, po) (fst is) (snd is) m;
Walther@60530
   382
"~~~~~ fun locate_input_tactic , args:"; val (Prog prog, cstate, istate, ctxt, tac)
Walther@60530
   383
    = (sc, (pt, po), (fst is), (snd is), m);
Walther@60530
   384
      val srls = get_simplifier cstate;
Walther@60530
   385
Walther@60530
   386
 (** )val Accept_Tac1 ((is as (_,_,_,_,_,strong_ass), ctxt, ss as((tac', _, ctree, pos', _) :: _))) =( **)
Walther@60530
   387
  (*case*) scan_to_tactic1 (prog, (cstate, ctxt, tac)) istate (*of*);
Walther@60530
   388
"~~~~~ fun scan_to_tactic1 , args:"; val ((prog, (cctt as ((_, p), _, _))), (Istate.Pstate (ist as {path, ...})))
Walther@60530
   389
  = ((prog, (cstate, ctxt, tac)), istate);
Walther@60530
   390
    (*if*) path = [] orelse ((last_elem o fst) p = 0 andalso snd p = Res) (*then*);
Walther@60530
   391
Walther@60530
   392
    (** )val xxxxx_xx = ( **)
Walther@60530
   393
           scan_dn1 cctt (ist |> set_path [R] |> set_or ORundef) (Program.body_of prog);
Walther@60530
   394
"~~~~~ fun scan_dn1 , args:"; val (xxx, ist, (Const (\<^const_name>\<open>Let\<close>, _) $ e $ (Abs (id, T, b))))
Walther@60530
   395
  = (cctt, (ist |> set_path [R] |> set_or ORundef), (Program.body_of prog));
Walther@60530
   396
Walther@60530
   397
  (*case*) scan_dn1 xxx (ist |> path_down [L, R]) e (*of*);
Walther@60530
   398
"~~~~~ fun scan_dn1 , args:"; val ((xxx as (cstate, _, _)), ist, (Const (\<^const_name>\<open>Chain\<close>(*1*), _) $ e1 $ e2 $ a))
Walther@60530
   399
  = (xxx, (ist |> path_down [L, R]), e);
Walther@60530
   400
Walther@60530
   401
  (*case*) scan_dn1 xxx (ist |> path_down_form ([L, L, R], a)) e1 (*of*);
Walther@60530
   402
"~~~~~ fun scan_dn1 , args:"; val (xxx, ist, (Const (\<^const_name>\<open>Try\<close>(*2*), _) $ e))
Walther@60530
   403
  = (xxx, (ist |> path_down_form ([L, L, R], a)), e1);
Walther@60530
   404
Walther@60530
   405
  (*case*) scan_dn1 xxx (ist |> path_down [R]) e (*of*);
Walther@60530
   406
    (*======= end of scanning tacticals, a leaf =======*)
Walther@60530
   407
"~~~~~ fun scan_dn1 , args:"; val (((pt, p), ctxt, tac), (ist as {env, eval, or, ...}), t)
Walther@60530
   408
  = (xxx, (ist |> path_down [R]), e);
Walther@60530
   409
    val (Program.Tac stac, a') =
Walther@60530
   410
      (*case*) check_leaf "locate" ctxt eval (get_subst ist) t (*of*);
Walther@60530
   411
    val LItool.Associated (m, v', ctxt) =
Walther@60530
   412
      (*case*) associate pt ctxt (m, stac) (*of*);
Walther@60530
   413
Walther@60530
   414
       Accept_Tac1 (ist |> set_subst_true  (a', v'), ctxt, m)  (*return value*);
Walther@60530
   415
"~~~~~ from scan_dn1 to scan_to_tactic1 return val:"; val (xxxxx_xx)
Walther@60530
   416
  = (Accept_Tac1 (ist |> set_subst_true  (a', v'), ctxt, m));
Walther@60530
   417
Walther@60530
   418
"~~~~~ from scan_to_tactic1 to fun locate_input_tactic return val:"; val Accept_Tac1 ((ist as {assoc, ...}), ctxt, tac')
Walther@60530
   419
  = (Accept_Tac1 (ist |> set_subst_true  (a', v'), ctxt, m));
Walther@60530
   420
        (*if*) LibraryC.assoc (*then*);
Walther@60530
   421
Walther@60530
   422
       Safe_Step (Istate.Pstate ist, ctxt, tac')  (*return value*);
Walther@60530
   423
"~~~~~ from locate_input_tactic to fun Step_Solve.by_tactic return:"; val Safe_Step (istate, ctxt, tac)
Walther@60530
   424
  = (*xxxxx_xx*)(**)Safe_Step (Istate.Pstate ist, ctxt, tac')(**);
Walther@60530
   425
Walther@60530
   426
(*+*)val (pt, po as (p, p_)) = (pt'''''_', (p'''''_', p_'''''_')); (* from begin of by_tactic *)
Walther@60530
   427
                  val (p'', _, _,pt') =
Walther@60530
   428
                    Step.add tac (istate, ctxt) (pt, (lev_on p, Pbl));
Walther@60530
   429
            (*in*)
Walther@60530
   430
Walther@60530
   431
         	  	    ("ok", ([(Tactic.input_from_T tac, tac, (p'', (istate, ctxt)))],
Walther@60530
   432
                    [(*ctree NOT cut*)], (pt', p'')))  (*return value*);
Walther@60530
   433
"~~~~~ from Step_Solve.by_tactic \<longrightarrow> Step.by_tactic return:"; val ((msg, cs' : Calc.state_post))
Walther@60530
   434
  =               ("ok", ([(Tactic.input_from_T tac, tac, (p'', (istate, ctxt)) )],
Walther@60530
   435
                    [(*ctree NOT cut*)], (pt', p'')));
Walther@60530
   436
Walther@60530
   437
"~~~~~ from Step.by_tactic to me return:"; val (("ok", (_, _, (pt, p)))) = (*** )xxxx( ***) ("ok", cs');
Walther@60530
   438
	  val (_, ts) =
Walther@60530
   439
	    (case Step.do_next p ((pt, Pos.e_pos'), []) of
Walther@60530
   440
		    ("ok", (ts as (_, _, _) :: _, _, _)) => ("", ts)
Walther@60530
   441
	    | ("helpless", _) => ("helpless: cannot propose tac", [])
Walther@60530
   442
	    | ("no-fmz-spec", _) => error "no-fmz-spec"
Walther@60530
   443
	    | ("end-of-calculation", (ts, _, _)) => ("", ts)
Walther@60530
   444
	    | _ => error "me: uncovered case")
Walther@60530
   445
	      handle ERROR msg => raise ERROR msg
Walther@60530
   446
	  val tac = 
Walther@60530
   447
      case ts of 
Walther@60530
   448
        tacis as (_::_) => let val (tac, _, _) = last_elem tacis in tac end 
Walther@60530
   449
		  | _ => if p = ([], Pos.Res) then Tactic.End_Proof' else Tactic.Empty_Tac;
Walther@60530
   450
Walther@60530
   451
   (p, [] : NEW, TESTg_form (pt, p), (Tactic.tac2IDstr tac, tac), Celem.Sundef, pt);
Walther@60530
   452
"~~~~~ from me to TOOPLEVEL return:"; val (p,_,f,nxt,_,pt)
Walther@60530
   453
   = (*** )xxx( ***) (p, [] : NEW, TESTg_form (pt, p), (Tactic.tac2IDstr tac, tac), Celem.Sundef, pt);
Walther@60530
   454
Walther@60530
   455
(*//--------------------- check results from modified me ----------------------------------\\*)
Walther@60530
   456
if p = ([2], Res) andalso
Walther@60530
   457
  pr_ctree pr_short pt = ".    ----- pblobj -----\n1.   x + 1 = 2\n2.   x + 1 = 2\n"
Walther@60530
   458
then
Walther@60530
   459
  (case nxt of ("Rewrite_Set", Rewrite_Set "Test_simplify") => ()
Walther@60530
   460
   | _ => error "")
Walther@60530
   461
else error "check results from modified me CHANGED";
Walther@60530
   462
(*\\--------------------- check results from modified me ----------------------------------//*)
Walther@60530
   463
Walther@60530
   464
"~~~~~ from me to TOPLEVEL return:"; val (p,_,f,nxt,_,pt) = (*** )xxx( ***) (**)(p, 000, f, nxt, 000, pt)(**);
Walther@60530
   465
(*\\------------------ end step into --------------------------------------------------------//*)
Walther@60530
   466
Walther@60530
   467
(*[3], Res*)val (p,_,f,nxt,_,pt) = me nxt'''''_''' p'''''_''' [] pt'''''_'''; (*nxt = Subproblem ("Test", ["LINEAR", "univariate", "equation", "test"])*)
Walther@60530
   468
(*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Model_Problem*)
Walther@60530
   469
(*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "equality (- 1 + x = 0)"*)
Walther@60530
   470
(*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "solveFor x"*)
Walther@60530
   471
(*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Find "solutions x_i"*)
Walther@60530
   472
(*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Theory "Test"*)
Walther@60530
   473
(*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Problem ["LINEAR", "univariate", "equation", "test"]*)
Walther@60530
   474
(*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Method ["Test", "solve_linear"]*)
Walther@60530
   475
(*[3], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["Test", "solve_linear"]*)
Walther@60530
   476
(*[3, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set_Inst (["(''bdv'', x)"], "isolate_bdv")*)
Walther@60530
   477
(*[3, 1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "Test_simplify"*)
Walther@60530
   478
(*[3, 2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_Postcond ["LINEAR", "univariate", "equation", "test"]*)
Walther@60530
   479
(*[3], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_elementwise "Assumptions"*)
Walther@60530
   480
(*[4], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_Postcond ["sqroot-test", "univariate", "equation", "test"]*)
Walther@60530
   481
(*[], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = End_Proof'*)
Walther@60530
   482
Walther@60530
   483
(*/--------------------- final test ----------------------------------\\*)
Walther@60530
   484
if p = ([], Res) andalso f2str f = "[x = 1]" andalso pr_ctree pr_short pt =
Walther@60530
   485
  ".    ----- pblobj -----\n" ^
Walther@60530
   486
  "1.   x + 1 = 2\n" ^
Walther@60530
   487
  "2.   x + 1 + - 1 * 2 = 0\n" ^
Walther@60530
   488
  "3.    ----- pblobj -----\n" ^
Walther@60530
   489
  "3.1.   - 1 + x = 0\n" ^
Walther@60530
   490
  "3.2.   x = 0 + - 1 * - 1\n" ^
Walther@60530
   491
  "4.   [x = 1]\n"
Walther@60530
   492
then case nxt of End_Proof' => () | _ => error "re-build: fun locate_input_tactic changed 1"
Walther@60530
   493
else error "re-build: fun locate_input_tactic changed 2";
Walther@60530
   494
Walther@60530
   495
Walther@60530
   496
"----------- fun locate_input_tactic Helpless, NOT applicable ----------------------------------";
Walther@60530
   497
"----------- fun locate_input_tactic Helpless, NOT applicable ----------------------------------";
Walther@60530
   498
"----------- fun locate_input_tactic Helpless, NOT applicable ----------------------------------";
Walther@60530
   499
(*cp from -- try fun applyTactics ------- *)
Walther@60530
   500
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(["Term (5*e + 6*f - 8*g - 9 - 7*e - 4*f + 10*g + 12)",
Walther@60530
   501
	    "normalform N"],
Walther@60530
   502
	   ("PolyMinus",["plus_minus", "polynom", "vereinfachen"],
Walther@60530
   503
	    ["simplification", "for_polynomials", "with_minus"]))];
Walther@60530
   504
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   505
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   506
val (p,_,f,nxt,_,pt) = me nxt p [] pt; val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   507
(*[1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "ordne_alphabetisch"*)
Walther@60530
   508
Walther@60530
   509
(*+*)val Test_Out.FormKF "5 * e + 6 * f - 8 * g - 9 - 7 * e - 4 * f + 10 * g + 12" = f
Walther@60530
   510
Walther@60530
   511
(*[1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "fasse_zusammen"*)
Walther@60530
   512
Walther@60530
   513
(*+*)if map Tactic.input_to_string (specific_from_prog pt p) =
Walther@60530
   514
   ["Rewrite (\"subtrahiere_x_plus_minus\", \"\<lbrakk>?l is_num; ?m is_num\<rbrakk>\n\<Longrightarrow> ?x + ?m * ?v - ?l * ?v = ?x + (?m - ?l) * ?v\")",
Walther@60530
   515
    "Rewrite (\"subtrahiere_x_minus_plus\", \"\<lbrakk>?l is_num; ?m is_num\<rbrakk>\n\<Longrightarrow> ?x - ?m * ?v + ?l * ?v = ?x + (- ?m + ?l) * ?v\")",
Walther@60530
   516
(*this is new since ThmC.numerals_to_Free.-----\\*)
Walther@60530
   517
    "Calculate PLUS"]
Walther@60530
   518
  then () else error "specific_from_prog ([1], Res) 1 CHANGED";
Walther@60530
   519
(*[2], Res*)val ("ok", (_, _, ptp as (pt, p))) = Step.by_tactic (hd (specific_from_prog pt p)) (pt, p);
Walther@60530
   520
Walther@60530
   521
(*+*)if map Tactic.input_to_string (specific_from_prog pt p) = [
Walther@60530
   522
  "Rewrite (\"tausche_minus\", \"\<lbrakk>?b ist_monom; ?a kleiner ?b\<rbrakk>\n\<Longrightarrow> ?b - ?a = - ?a + ?b\")",
Walther@60530
   523
  "Rewrite (\"subtrahiere_x_plus_minus\", \"\<lbrakk>?l is_num; ?m is_num\<rbrakk>\n\<Longrightarrow> ?x + ?m * ?v - ?l * ?v = ?x + (?m - ?l) * ?v\")",
Walther@60530
   524
  "Rewrite (\"subtrahiere_x_minus_plus\", \"\<lbrakk>?l is_num; ?m is_num\<rbrakk>\n\<Longrightarrow> ?x - ?m * ?v + ?l * ?v = ?x + (- ?m + ?l) * ?v\")",
Walther@60530
   525
  (*this is new since ThmC.numerals_to_Free.-----\\*)
Walther@60530
   526
  "Calculate PLUS",
Walther@60530
   527
  (*this is new since ThmC.numerals_to_Free.-----//*)
Walther@60530
   528
  "Calculate MINUS"]
Walther@60530
   529
  then () else error "specific_from_prog ([1], Res) 2 CHANGED";
Walther@60530
   530
(* = ([3], Res)*)val ("ok", (_, _, ptp as (pt, p))) = Step.by_tactic (hd (specific_from_prog pt p)) (pt, p);
Walther@60530
   531
Walther@60530
   532
(*//----------------- exception PTREE "get_obj f EmptyPtree" raised --------------------------\\*)
Walther@60530
   533
(**)val ("ok", ([(Rewrite ("tausche_minus", _), _, _)], _, _)) = (*isa*)
Walther@60530
   534
      Step.by_tactic (hd (specific_from_prog pt p)) (pt, p);
Walther@60530
   535
"~~~~~ fun by_tactic , args:"; val (tac, (ptp as (pt, p))) = (hd (specific_from_prog pt p), (pt, p));
Walther@60530
   536
      val Applicable.Yes m = (*case*) Solve_Step.check tac (pt, p) (*of*);
Walther@60530
   537
      (*if*) Tactic.for_specify' m; (*false*)
Walther@60530
   538
Walther@60530
   539
(**) val ("ok", ([(Rewrite ("tausche_minus", _), _, _)], _, _)) = (*isa*)
Walther@60530
   540
Step_Solve.by_tactic m (pt, p);
Walther@60530
   541
"~~~~~ fun by_tactic , args:"; val (m, (pt, po as (p, p_))) = (m, (pt, p));
Walther@60530
   542
    (*if*) MethodC.id_empty = get_obj g_metID pt (par_pblobj pt p) (*else*);
Walther@60530
   543
	      val thy' = get_obj g_domID pt (par_pblobj pt p);
Walther@60530
   544
	      val (is, sc) = LItool.resume_prog thy' (p,p_) pt;
Walther@60530
   545
Walther@60530
   546
  (*case*) locate_input_tactic sc (pt, po) (fst is) (snd is) m (*of*);
Walther@60530
   547
"~~~~~ fun locate_input_tactic , args:"; val ((Rule.Prog prog), (cstate as (pt, (*?*)pos(*?*))), istate, ctxt, tac)
Walther@60530
   548
  = (sc, (pt, po), (fst is), (snd is), m);
Walther@60530
   549
      val srls = LItool.get_simplifier cstate (*TODO: shift into Istate.T*);
Walther@60530
   550
Walther@60530
   551
  (*case*) scan_to_tactic1 (prog, (cstate, ctxt, tac)) istate (*of*);
Walther@60530
   552
"~~~~~ fun scan_to_tactic1 , args:"; val ((prog, (cctt as ((_, p), _, _))), (Istate.Pstate (ist as {path, ...})))
Walther@60530
   553
  = ((prog, (cstate, ctxt, tac)), istate);
Walther@60530
   554
    (*if*) path = [] orelse ((last_elem o fst) p = 0 andalso snd p = Res) (*else*);
Walther@60530
   555
Walther@60530
   556
           go_scan_up1 (prog, cctt) ist;
Walther@60530
   557
"~~~~~ fun go_scan_up1 , args:"; val ((pcct as (prog, _)), (ist as {path, ...}))
Walther@60530
   558
  = ((prog, cctt), ist);
Walther@60530
   559
  (*if*) 1 < length path (*then*);
Walther@60530
   560
Walther@60530
   561
           scan_up1 pcct (ist |> path_up) (TermC.sub_at (path_up' path) prog);
Walther@60530
   562
"~~~~~ and scan_up1 , args:"; val (pcct, ist, (Const (\<^const_name>\<open>Try\<close>(*2*), _) $ _))
Walther@60530
   563
  = (pcct, (ist |> path_up), (TermC.sub_at (path_up' path) prog));
Walther@60530
   564
Walther@60530
   565
           go_scan_up1 pcct ist;
Walther@60530
   566
"~~~~~ and go_scan_up1 , args:"; val ((pcct as (prog, _)), (ist as {path, ...}))
Walther@60530
   567
  = (pcct, ist);
Walther@60530
   568
  (*if*) 1 < length path (*then*);
Walther@60530
   569
Walther@60530
   570
           scan_up1 pcct (ist |> path_up) (TermC.sub_at (path_up' path) prog);
Walther@60530
   571
"~~~~~ and scan_up1 , args:"; val ((pcct as (prog, cct as (cstate, _, _))), ist,
Walther@60530
   572
    (Const (\<^const_name>\<open>Chain\<close>(*3*), _) $ _ ))
Walther@60530
   573
  = (pcct, (ist |> path_up), (TermC.sub_at (path_up' path) prog));
Walther@60530
   574
       val e2 = check_Seq_up ist prog
Walther@60530
   575
;
Walther@60530
   576
  (*case*) scan_dn1 cct (ist |> path_up_down [R] |> set_or ORundef) e2 (*of*);
Walther@60530
   577
"~~~~~ fun scan_dn1 , args:"; val (yyy, ist, (Const (\<^const_name>\<open>Chain\<close>(*2*), _) $ e1 $ e2))
Walther@60530
   578
  = (cct, (ist |> path_up_down [R] |> set_or ORundef), e2);
Walther@60530
   579
Walther@60530
   580
  (*case*) scan_dn1 cct (ist |> path_down [L, R]) e1 (*of*);
Walther@60530
   581
"~~~~~ fun scan_dn1 , args:"; val (xxx, ist, (Const (\<^const_name>\<open>Try\<close>(*2*), _) $ e))
Walther@60530
   582
  = (cct, (ist |> path_down [L, R]), e1);
Walther@60530
   583
Walther@60530
   584
\<close> ML \<open>
Walther@60530
   585
  (*case*) scan_dn1 cct (ist |> path_down [R]) e (*of*);
Walther@60530
   586
    (*======= end of scanning tacticals, a leaf =======*)
Walther@60530
   587
"~~~~~ fun scan_dn1 , args:"; val ((cct as (_, ctxt, _)), (ist as {eval, ...}), t)
Walther@60530
   588
  = (cct, (ist |> path_down [R]), e);
Walther@60530
   589
    (*if*) Tactical.contained_in t (*else*);
Walther@60530
   590
  val (Program.Tac prog_tac, form_arg) = (*case*)
Walther@60530
   591
    LItool.check_leaf "locate" ctxt eval (get_subst ist) t (*of*);
Walther@60530
   592
Walther@60530
   593
           check_tac1 cct ist (prog_tac, form_arg);
Walther@60530
   594
"~~~~~ fun check_tac1 , args:"; val (((pt, p), ctxt, tac), (ist as {act_arg, or, ...}), (prog_tac, form_arg)) =
Walther@60530
   595
  (cct, ist, (prog_tac, form_arg));
Walther@60530
   596
val LItool.Not_Associated = (*case*)
Walther@60530
   597
  LItool.associate pt ctxt (tac, prog_tac) (*of*);
Walther@60530
   598
     val _(*ORundef*) = (*case*) or (*of*);
Walther@60530
   599
Walther@60530
   600
(*+*)Solve_Step.check (LItool.tac_from_prog pt (ThyC.get_theory "Isac_Knowledge") prog_tac) (pt, p);
Walther@60530
   601
Walther@60530
   602
     val Applicable.Yes m' =
Walther@60530
   603
          (*case*) Solve_Step.check (LItool.tac_from_prog pt (ThyC.get_theory "Isac_Knowledge") prog_tac) (pt, p) (*of*);
Walther@60530
   604
Walther@60530
   605
  Reject_Tac1 (ist |> set_subst_false (form_arg, Tactic.result m'), ctxt, tac)
Walther@60530
   606
          (*return from check_tac1*);
Walther@60530
   607
"~~~~~ from fun check_tac1 \<longrightarrow>fun scan_dn1 \<longrightarrow>fun scan_dn1  \<longrightarrow>fun locate_input_tactic , return:"; val (Reject_Tac1 _) =
Walther@60530
   608
  (Reject_Tac1 (ist |> set_subst_false (form_arg, Tactic.result m'), ctxt, tac));
Walther@60530
   609
Walther@60530
   610
val Test_Out.FormKF "- 9 + 12 + 5 * e - 7 * e + 6 * f - 4 * f - 8 * g + 10 * g" = f;
Walther@60530
   611
val ([3], Res) = p;
Walther@60530
   612
Walther@60530
   613
Walther@60530
   614
\<close> ML \<open>
Walther@60530
   615
"----------- re-build: fun find_next_step, mini ------------------------------------------------";
Walther@60530
   616
"----------- re-build: fun find_next_step, mini ------------------------------------------------";
Walther@60530
   617
"----------- re-build: fun find_next_step, mini ------------------------------------------------";
Walther@60530
   618
val fmz = ["Term (a + a ::real)", "normalform n_n"];
Walther@60530
   619
val (dI',pI',mI') = ("Poly",["polynomial", "simplification"],["simplification", "for_polynomials"]);
Walther@60530
   620
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
Walther@60530
   621
(*[], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, Pos.e_pos'), []);(*Model_Problem*)
Walther@60530
   622
(*[], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, Pos.e_pos'), []);(*Specify_Theory "Poly"*)
Walther@60530
   623
(*[], Pbl*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, Pos.e_pos'), []);(*Specify_Problem ["polynomial", "simplification"]*)
Walther@60530
   624
(*[], Met*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []);(*Specify_Method  ["simplification", "for_polynomials"]*)
Walther@60530
   625
(*1], Frm*)val (_, ([(tac, _, _)], _, (pt, p))) = Step.do_next p ((pt, e_pos'), []);(*Apply_Method ["simplification", "for_polynomials"]*)
Walther@60530
   626
(*[1], Res*)val (_, ([(tac'''''_', _, _)], _, (pt'''''_', p'''''_'))) =
Walther@60530
   627
Walther@60530
   628
      Step.do_next p ((pt, e_pos'), []);(*Rewrite_Set "norm_Poly"*)
Walther@60530
   629
(*//------------------ go into 1 ------------------------------------------------------------\\*)
Walther@60530
   630
"~~~~~ fun do_next , args:"; val ((ip as (_, p_)), (ptp as (pt, p), tacis))
Walther@60530
   631
  = (p, ((pt, e_pos'), []));
Walther@60530
   632
  val pIopt = Ctree.get_pblID (pt, ip);
Walther@60530
   633
    (*if*)  ip = ([], Res) (*else*);
Walther@60530
   634
      val _ = (*case*) tacis (*of*);
Walther@60530
   635
      val SOME _ = (*case*) pIopt (*of*);
Walther@60530
   636
      (*if*) member op = [Pos.Pbl, Pos.Met] p_ (*else*);
Walther@60530
   637
Walther@60530
   638
val ("ok", ([(Rewrite_Set "norm_Poly", _, _)], _, (_, ([1], Res)))) =
Walther@60530
   639
Step_Solve.do_next (pt, ip);
Walther@60530
   640
"~~~~~ and do_next , args:"; val (ptp as (pt, pos as (p, p_))) =  (pt, ip);
Walther@60530
   641
    (*if*) MethodC.id_empty = get_obj g_metID pt (par_pblobj pt p) (*else*);
Walther@60530
   642
        val thy' = get_obj g_domID pt (par_pblobj pt p);
Walther@60530
   643
	      val ((ist, ctxt), sc) = LItool.resume_prog thy' (p,p_) pt;
Walther@60530
   644
Walther@60530
   645
val Next_Step (_, _, Rewrite_Set' ("Poly", _, Rule_Set.Sequence {id = "norm_Poly", ...}, _, _)) =
Walther@60530
   646
           LI.find_next_step sc (pt, pos) ist ctxt (*of*);
Walther@60530
   647
"~~~~~ fun find_next_step , args:"; val ((Rule.Prog prog), (ptp as(pt, (p, _))), (Pstate ist), ctxt)
Walther@60530
   648
  = (sc, (pt, pos), ist, ctxt);
Walther@60530
   649
Walther@60530
   650
val Accept_Tac (Rewrite_Set' ("Poly", _, Rule_Set.Sequence {id = "norm_Poly", ...}, _, _), _, _) =
Walther@60530
   651
  (*case*) scan_to_tactic (prog, (ptp, ctxt)) (Pstate ist) (*of*);
Walther@60530
   652
"~~~~~ fun scan_to_tactic , args:"; val ((prog, cc), (Pstate (ist as {path, ...})))
Walther@60530
   653
  = ((prog, (ptp, ctxt)), (Pstate ist));
Walther@60530
   654
  (*if*) path = [] (*then*);
Walther@60530
   655
Walther@60530
   656
val Accept_Tac (Rewrite_Set' ("Poly", _, Rule_Set.Sequence {id = "norm_Poly", ...}, _, _), _, _) =
Walther@60530
   657
            scan_dn cc (trans_scan_dn ist) (Program.body_of prog);
Walther@60530
   658
"~~~~~ fun scan_dn , args:"; val ((cc as (_, ctxt)), (ist as {eval, ...}), t)
Walther@60530
   659
  = (cc, (trans_scan_dn ist), (Program.body_of prog));
Walther@60530
   660
    (*if*) Tactical.contained_in t (*else*);
Walther@60530
   661
      val (Program.Tac prog_tac, form_arg) = (*case*) LItool.check_leaf "next  " ctxt eval (get_subst ist) t (*of*);
Walther@60530
   662
Walther@60530
   663
val Accept_Tac (Rewrite_Set' ("Poly", _, Rule_Set.Sequence {id = "norm_Poly", ...}, _, _), _, _) =
Walther@60530
   664
          check_tac cc ist (prog_tac, form_arg)  (*return from xxx*);
Walther@60530
   665
"~~~~~ from fun scan_dn\<longrightarrow>fun scan_to_tactic\<longrightarrow>fun find_next_step, return:"; val (Accept_Tac (tac, ist, ctxt))
Walther@60530
   666
  = (check_tac cc ist (prog_tac, form_arg));
Walther@60530
   667
Walther@60530
   668
    Next_Step (Pstate ist, Tactic.insert_assumptions tac ctxt, tac)  (*return from find_next_step*);
Walther@60530
   669
"~~~~~ from fun find_next_step\<longrightarrow>and do_next\<longrightarrow>fun zzz, return:"; val (Next_Step (ist, ctxt, tac))
Walther@60530
   670
  = (Next_Step (Pstate ist, Tactic.insert_assumptions tac ctxt, tac));
Walther@60530
   671
Walther@60530
   672
           LI.by_tactic tac (ist, Tactic.insert_assumptions tac ctxt) ptp  (*return from and do_next*);
Walther@60530
   673
"~~~~~ from and do_next\<longrightarrow>fun do_next\<longrightarrow>toplevel, return:"; val  (_, ([(tac''''', _, _)], _, (pt''''', p''''')))
Walther@60530
   674
  = (LI.by_tactic tac (ist, Tactic.insert_assumptions tac ctxt) ptp);
Walther@60530
   675
(*\\------------------ end of go into 1 -----------------------------------------------------//*)
Walther@60530
   676
Walther@60530
   677
(*[], Res*)val (_, ([(tac''''', _, _)], _, (pt''''', p'''''))) =
Walther@60530
   678
Walther@60530
   679
      Step.do_next p'''''_' ((pt'''''_', Pos.e_pos'), []);(* Check_Postcond ["polynomial", "simplification"]*)
Walther@60530
   680
(*//------------------ go into 2 ------------------------------------------------------------\\*)
Walther@60530
   681
"~~~~~ fun do_next , args:"; val ((ip as (_, p_)), (ptp as (pt, p), tacis))
Walther@60530
   682
  = (p''''', ((pt''''', e_pos'), []));
Walther@60530
   683
  val pIopt = Ctree.get_pblID (pt, ip);
Walther@60530
   684
    (*if*)  ip = ([], Res) (*else*);
Walther@60530
   685
      val _ = (*case*) tacis (*of*);
Walther@60530
   686
      val SOME _ = (*case*) pIopt (*of*);
Walther@60530
   687
      (*if*) member op = [Pos.Pbl, Pos.Met] p_ (*else*);
Walther@60530
   688
Walther@60530
   689
val ("ok", ([(Check_Postcond ["polynomial", "simplification"], _, _)], _, (_, ([], Res)))) =
Walther@60530
   690
Step_Solve.do_next (pt, ip);
Walther@60530
   691
"~~~~~ and do_next , args:"; val (ptp as (pt, pos as (p, p_))) =  (pt, ip);
Walther@60530
   692
    (*if*) MethodC.id_empty = get_obj g_metID pt (par_pblobj pt p) (*else*);
Walther@60530
   693
        val thy' = get_obj g_domID pt (par_pblobj pt p);
Walther@60530
   694
	      val ((ist, ctxt), sc) = LItool.resume_prog thy' (p,p_) pt;
Walther@60530
   695
Walther@60530
   696
  (** )val End_Program (ist, tac) = 
Walther@60530
   697
 ( *case*) LI.find_next_step sc (pt, pos) ist ctxt (*of*);
Walther@60530
   698
"~~~~~ fun find_next_step , args:"; val ((Rule.Prog prog), (ptp as(pt, (p, _))), (Pstate ist), ctxt)
Walther@60530
   699
  = (sc, (pt, pos), ist, ctxt);
Walther@60530
   700
Walther@60530
   701
(*  val Term_Val (Const (\<^const_name>\<open>times\<close>, _) $ Free ("2", _) $ Free ("a", _))*)
Walther@60530
   702
  (** )val Term_Val prog_result =
Walther@60530
   703
 ( *case*) scan_to_tactic (prog, (ptp, ctxt)) (Pstate ist) (*of*);
Walther@60530
   704
"~~~~~ fun scan_to_tactic , args:"; val ((prog, cc), (Pstate (ist as {path, ...})))
Walther@60530
   705
  = ((prog, (ptp, ctxt)), (Pstate ist));
Walther@60530
   706
  (*if*) path = [] (*else*);
Walther@60530
   707
Walther@60530
   708
           go_scan_up (prog, cc) (trans_scan_up ist |> set_found);
Walther@60530
   709
"~~~~~ fun go_scan_up , args:"; val ((pcc as (sc, _)), (ist as {path, act_arg, found_accept, ...}))
Walther@60530
   710
  = ((prog, cc), (trans_scan_up ist(*|> set_found !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *)));
Walther@60530
   711
    (*if*) path = [R] (*then*);
Walther@60530
   712
      (*if*) found_accept = true (*then*);
Walther@60530
   713
Walther@60530
   714
      Term_Val act_arg (*return from go_scan_up*);
Walther@60530
   715
"~~~~~ from fun go_scan_up\<longrightarrow>fun scan_to_tactic, return:"; val (Term_Val prog_result) = (Term_Val act_arg);
Walther@60530
   716
Walther@60530
   717
    Term_Val prog_result  (*return from scan_to_tactic*);
Walther@60530
   718
"~~~~~ from fun scan_to_tactic\<longrightarrow>fun find_next_step, return:"; val (Term_Val prog_result) = (Term_Val prog_result);
Walther@60530
   719
    val (true, p', _) = (*case*) parent_node pt p (*of*);
Walther@60530
   720
              val (_, pblID, _) = get_obj g_spec pt p';
Walther@60530
   721
Walther@60530
   722
     End_Program (Pstate ist, Tactic.Check_Postcond' (pblID, prog_result))
Walther@60530
   723
     (*return from find_next_step*);
Walther@60530
   724
"~~~~~ from fun find_next_step\<longrightarrow>and do_next\<longrightarrow>fun zzz, return:"; val (End_Program (ist, tac))
Walther@60530
   725
  = (End_Program (Pstate ist, Tactic.Check_Postcond' (pblID,prog_result)));
Walther@60530
   726
      val _ = (*case*) tac (*of*);
Walther@60530
   727
Walther@60530
   728
val ("ok", ([(Check_Postcond ["polynomial", "simplification"], _, _)], _, (_, ([], Res))))
Walther@60530
   729
   = LI.by_tactic tac (ist, ctxt) ptp (*return from and do_next*);
Walther@60530
   730
"~~~~~ from and do_next\<longrightarrow>top level, return:"; val (_, ([(tac''''', _, _)], _, (pt''''', p''''')))
Walther@60530
   731
  = (LI.by_tactic tac (ist, ctxt) ptp);
Walther@60530
   732
(*\\------------------ end of go into 2 -----------------------------------------------------//*)
Walther@60530
   733
Walther@60530
   734
(*[], Und*)val (msg, ([], _, (pt, p))) = Step.do_next p''''' ((pt''''', Pos.e_pos'), []);(**)
Walther@60530
   735
Walther@60530
   736
Test_Tool.show_pt_tac pt; (*[
Walther@60530
   737
([], Frm), Simplify (a + a)
Walther@60530
   738
. . . . . . . . . . Apply_Method ["simplification", "for_polynomials"],
Walther@60530
   739
([1], Frm), a + a
Walther@60530
   740
. . . . . . . . . . Rewrite_Set "norm_Poly",
Walther@60530
   741
([1], Res), 2 * a
Walther@60530
   742
. . . . . . . . . . Check_Postcond ["polynomial", "simplification"],
Walther@60530
   743
([], Res), 2 * a]*)
Walther@60530
   744
Walther@60530
   745
(*/--- final test ---------------------------------------------------------------------------\\*)
Walther@60530
   746
val (res, asm) = (get_obj g_result pt (fst p));
Walther@60530
   747
if UnparseC.term res = "2 * a" andalso map UnparseC.term asm = []
Walther@60530
   748
andalso p = ([], Und) andalso msg = "end-of-calculation"
Walther@60530
   749
andalso pr_ctree pr_short pt = ".    ----- pblobj -----\n1.   a + a\n"
Walther@60530
   750
then 
Walther@60530
   751
  case tac''''' of Check_Postcond ["polynomial", "simplification"] => () 
Walther@60530
   752
  | _ => error "re-build: fun find_next_step, mini 1"
Walther@60530
   753
else error "re-build: fun find_next_step, mini 2"
Walther@60530
   754
Walther@60530
   755
Walther@60530
   756
"----------- re-build: fun locate_input_term ---------------------------------------------------";
Walther@60530
   757
"----------- re-build: fun locate_input_term ---------------------------------------------------";
Walther@60530
   758
"----------- re-build: fun locate_input_term ---------------------------------------------------";
Walther@60530
   759
(*cp from inform.sml
Walther@60530
   760
 ----------- appendFormula: on Res + late deriv ------------------------------------------------*)
Walther@60530
   761
val fmz = ["equality (x+1=(2::real))", "solveFor x", "solutions L"];
Walther@60530
   762
val (dI',pI',mI') = ("Test", ["sqroot-test", "univariate", "equation", "test"],
Walther@60530
   763
   ["Test", "squ-equ-test-subpbl1"]);
Walther@60530
   764
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
Walther@60530
   765
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   766
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   767
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   768
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   769
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   770
val (p,_,f,nxt,_,pt) = me nxt p [] pt;
Walther@60530
   771
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*Apply_Method ["Test", "squ-equ-test-subpbl1"]*);
Walther@60530
   772
Walther@60530
   773
(*[1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt;(*Rewrite_Set "norm_equation"*)
Walther@60530
   774
(*+*)if f2str f = "x + 1 = 2" then () else error "locate_input_term at ([1], Frm) CHANGED";
Walther@60530
   775
Walther@60530
   776
(*[1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt;(*Rewrite_Set "Test_simplify"*)
Walther@60530
   777
(*+*)if f2str f = "x + 1 + - 1 * 2 = 0" then () else error "locate_input_term at ([1], Frm) CHANGED";
Walther@60530
   778
Walther@60530
   779
Test_Tool.show_pt_tac pt; (*[
Walther@60530
   780
([], Frm), solve (x + 1 = 2, x)
Walther@60530
   781
. . . . . . . . . . Apply_Method ["Test", "squ-equ-test-subpbl1"],
Walther@60530
   782
([1], Frm), x + 1 = 2
Walther@60530
   783
. . . . . . . . . . Rewrite_Set "norm_equation",
Walther@60530
   784
([1], Res), x + 1 + - 1 * 2 = 0             ///Check_Postcond..ERROR*)
Walther@60530
   785
Walther@60530
   786
\<close> ML \<open>
Walther@60530
   787
(*//---------- appendFormula 1 "x = 1" \<longrightarrow> Step_Solve.inform \<longrightarrow> LI.locate_input_term ----------\\*)
Walther@60530
   788
"~~~~~ fun appendFormula , args:"; val ((*cI, *) ifo: TermC.as_string) = ((**) "x = 1");
Walther@60530
   789
    val cs = (*get_calc cI*) ((pt, p), [(*nxt, nxt_, (pos, (ist, ctxt))*)])
Walther@60530
   790
    val pos = (*get_pos cI 1*) p
Walther@60530
   791
Walther@60530
   792
(*+*)val ptp''''' = (pt, p);
Walther@60530
   793
(*+*)if snd ptp''''' = ([1], Res) then () else error "old_cs changed";
Walther@60530
   794
(*+*)Test_Tool.show_pt_tac pt; (*[
Walther@60530
   795
(*+*)([], Frm), solve (x + 1 = 2, x)
Walther@60530
   796
(*+*). . . . . . . . . . Apply_Method ["Test", "squ-equ-test-subpbl1"],
Walther@60530
   797
(*+*)([1], Frm), x + 1 = 2
Walther@60530
   798
(*+*). . . . . . . . . . Rewrite_Set "norm_equation",
Walther@60530
   799
(*+*)([1], Res), x + 1 + - 1 * 2 = 0      ///Check_Postcond*)
Walther@60530
   800
Walther@60530
   801
  val ("ok", cs' as (_, _, ptp')) =
Walther@60530
   802
    (*case*) Step.do_next pos cs (*of*);
Walther@60530
   803
Walther@60530
   804
\<close> ML \<open>
Walther@60530
   805
val ("ok", (_(*use in DG !!!*), [], ptp''''' as (pt''''', p'''''))) = (*case*)
Walther@60530
   806
Step_Solve.by_term ptp' (encode ifo) (*of*);
Walther@60530
   807
\<close> ML \<open>
Walther@60530
   808
"~~~~~ fun by_term , args:"; val ((pt, pos as (p, _)), istr)
Walther@60530
   809
  = (ptp', (encode ifo));
Walther@60530
   810
\<close> ML \<open>
Walther@60530
   811
  val SOME f_in =
Walther@60530
   812
    (*case*) TermC.parseNEW (get_ctxt pt pos) istr (*of*);
Walther@60530
   813
      val pos_pred = lev_back(*'*) pos
Walther@60530
   814
  	  val f_pred = Ctree.get_curr_formula (pt, pos_pred);
Walther@60530
   815
  	  val f_succ = Ctree.get_curr_formula (pt, pos);
Walther@60530
   816
      (*if*) f_succ = f_in (*else*);
Walther@60530
   817
  val NONE =
Walther@60530
   818
        (*case*) CAS_Cmd.input f_in (*of*);
Walther@60530
   819
Walther@60530
   820
\<close> ML \<open>
Walther@60530
   821
(*NEW*) LI.locate_input_term (pt, pos) f_in (*of*);
Walther@60530
   822
\<close> ML \<open>
Walther@60530
   823
"~~~~~ fun locate_input_term , args:"; val ((pt, pos), tm) = ((pt, pos), f_in);
Walther@60530
   824
   		val pos_pred = Pos.lev_back' pos (*f_pred ---"step pos cs"---> f_succ in appendFormula*)
Walther@60530
   825
Walther@60530
   826
 \<close> ML \<open>
Walther@60530
   827
 val ("ok", (_, _, cstate as (pt', pos'))) =
Walther@60530
   828
  (*case*) compare_step ([], [], (pt, pos_pred)) tm (*of*);
Walther@60530
   829
\<close> ML \<open>
Walther@60530
   830
"~~~~~ fun compare_step , args:"; val ((tacis, c, ptp as (pt, pos as (p, _))), ifo) = 
Walther@60530
   831
  (([], [], (pt, pos_pred)), tm);
Walther@60530
   832
    val fo = Calc.current_formula ptp
Walther@60530
   833
	  val {nrls, ...} = MethodC.from_store (Ctree.get_obj Ctree.g_metID pt (Ctree.par_pblobj pt p))
Walther@60530
   834
	  val {rew_ord, erls, rules, ...} = Rule_Set.rep nrls
Walther@60530
   835
\<close> ML \<open>
Walther@60530
   836
(*+*)Proof_Context.theory_of (Ctree.get_ctxt pt pos) (*Isac.Test OK!*)
Walther@60530
   837
\<close> ML \<open>
Walther@60530
   838
	  val (found, der) = Derive.steps (Ctree.get_ctxt pt pos) rew_ord erls rules fo ifo; (*<---------------*)
Walther@60530
   839
\<close> ML \<open>
Walther@60530
   840
    (*if*) found (*else*);
Walther@60530
   841
	     (*if*) pos = ([], Pos.Res) (*else*);
Walther@60530
   842
\<close> ML \<open>
Walther@60530
   843
           val msg_cs' as (_, (tacis, c', ptp)) = LI.do_next ptp; (*<---------------------*)
Walther@60530
   844
\<close> ML \<open>
Walther@60530
   845
           (*case*) tacis (*of \<longrightarrow> [(Rewrite_Set "Test_simplify",...*) :State_Steps.T;
Walther@60530
   846
\<close> ML \<open>
Walther@60530
   847
Walther@60530
   848
(*+*) val ((input, tac, (pos, (ist, ctxt))) :: _) = tacis;
Walther@60530
   849
(*+*) input (*= Tactic.Rewrite_Set "Test_simplify"*);
Walther@60530
   850
(*+*) tac;
Walther@60530
   851
(*+*) pos = ([2], Res);
Walther@60530
   852
(*+*) ist;
Walther@60530
   853
(*+*) Proof_Context.theory_of ctxt (*.., Isac.Test*);
Walther@60530
   854
Walther@60530
   855
\<close> ML \<open>
Walther@60530
   856
		(*in*) compare_step (tacis, c @ c' (*@ c'' =c'BECAUSE OF | _ => msg_cs'*), ptp) ifo (*end*)
Walther@60530
   857
\<close> ML \<open>
Walther@60530
   858
"~~~~~ fun compare_step , args:"; val ((tacis, c, ptp as (pt, pos as (p, _))), ifo) = 
Walther@60530
   859
  (([], [], (pt, pos_pred)), tm);
Walther@60530
   860
    val fo = Calc.current_formula ptp
Walther@60530
   861
	  val {nrls, ...} = MethodC.from_store (Ctree.get_obj Ctree.g_metID pt (Ctree.par_pblobj pt p))
Walther@60530
   862
	  val {rew_ord, erls, rules, ...} = Rule_Set.rep nrls
Walther@60530
   863
\<close> ML \<open>
Walther@60530
   864
	  val (found, der) = Derive.steps (Ctree.get_ctxt pt pos) rew_ord erls rules fo ifo; (*<---------------*)
Walther@60530
   865
\<close> ML \<open>
Walther@60530
   866
    (*if*) found (*else*);
Walther@60530
   867
	     (*if*) pos = ([], Pos.Res) (*else*);
Walther@60530
   868
\<close> ML \<open>
Walther@60530
   869
           val msg_cs' as (_, (tacis, c', ptp)) = LI.do_next ptp; (*<---------------------*)
Walther@60530
   870
\<close> ML \<open>
Walther@60530
   871
Walther@60530
   872
(*+*) val ((input, tac, (pos, (ist, ctxt))) :: _) = tacis;
Walther@60530
   873
(*+*) input (*= Tactic.Rewrite_Set "Test_simplify"*);
Walther@60530
   874
\<close> ML \<open>
Walther@60530
   875
(*+*) tac;
Walther@60530
   876
(*+*) pos = ([2], Res);
Walther@60530
   877
(*+*) ist;
Walther@60530
   878
(*+*) Proof_Context.theory_of ctxt (*.., Isac.Test*);
Walther@60530
   879
Walther@60530
   880
\<close> ML \<open>
Walther@60530
   881
\<close> ML \<open>                               
Walther@60530
   882
\<close> ML \<open>
Walther@60530
   883
Tactic.Apply_Method': MethodC.id * term option * Istate.T * Proof.context -> Tactic.T
Walther@60530
   884
\<close> ML \<open>
Walther@60530
   885
\<close> ML \<open>
Walther@60530
   886
\<close> ML \<open>
Walther@60530
   887
\<close> ML \<open>
Walther@60530
   888
\<close> ML \<open>
Walther@60530
   889
\<close> ML \<open>
Walther@60530
   890
\<close> ML \<open>
Walther@60530
   891
Walther@60530
   892
\<close> ML \<open> (*----- original..*)
Walther@60530
   893
(*NEW*)     Found_Step cstate (*return from locate_input_term*);
Walther@60530
   894
       (*LI.Found_Step ( *)cstate(*, _(*istate*), _(*ctxt*))( *return from locate_input_term*);
Walther@60530
   895
"~~~~~ from fun locate_input_term\<longrightarrow>fun Step_Solve.by_term, return:"; val ("ok", (_(*use in DG !!!*), c, ptp as (_, p)))
Walther@60530
   896
  = (("ok" , ([], [], cstate (* already contains istate, ctxt *))));
Walther@60530
   897
Walther@60530
   898
    ("ok", ((*_ use in DG !!!,*) c, ptp(* as (_*), p))(*)*)(*return from Step_Solve.by_term*);
Walther@60530
   899
"~~~~~ from fun Step_Solve.by_term\<longrightarrow>(fun appendFormula)!toplevel, return:"; val ("ok", (_(*use in DG !!!*), [], ptp''''' as (pt''''', p''''')))
Walther@60530
   900
  = ("ok", ([], [], ptp));
Walther@60530
   901
Walther@60530
   902
\<close> ML \<open>
Walther@60530
   903
(*fun me requires nxt...*)
Walther@60530
   904
    Step.do_next p''''' (ptp''''', []);
Walther@60530
   905
  val ("ok", ([(nxt'''''_' as Check_Postcond ["LINEAR", "univariate", "equation", "test"], _, _)], _,
Walther@60530
   906
    (pt'''''_', p'''''_'))) = Step.do_next p''''' (ptp''''', [])
Walther@60530
   907
(*\\---------- appendFormula 1 "x = 1" \<longrightarrow> Step_Solve.inform \<longrightarrow> LI.locate_input_term ----------//*)
Walther@60530
   908
Walther@60530
   909
(*//----- REPLACED BY appendFormula 1 "x = 1" \<longrightarrow> Step_Solve.inform \<longrightarrow> LI.locate_input_term -----\\* )
Walther@60530
   910
 (*[2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Subproblem ("Test", ["LINEAR", "univariate", "equation", "test"])*)
Walther@60530
   911
 (*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Model_Problem*)
Walther@60530
   912
 (*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "equality (- 1 + x = 0)"*)
Walther@60530
   913
 (*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Given "solveFor x"*)
Walther@60530
   914
 (*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Add_Find "solutions x_i"*)
Walther@60530
   915
 (*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Theory "Test"*)
Walther@60530
   916
 (*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Problem ["LINEAR", "univariate", "equation", "test"]*)
Walther@60530
   917
 (*[3], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Specify_Method ["Test", "solve_linear"]*)
Walther@60530
   918
 (*[3], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["Test", "solve_linear"]*)
Walther@60530
   919
 (*[3, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set_Inst (["(''bdv'', x)"], "isolate_bdv")*)
Walther@60530
   920
 (*[3, 1], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite_Set "Test_simplify"*)
Walther@60530
   921
 (*[3, 2], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_Postcond ["LINEAR", "univariate", "equation", "test"]*)
Walther@60530
   922
( *\\----- REPLACED BY appendFormula 1 "x = 1" \<longrightarrow> Step_Solve.inform \<longrightarrow> LI.locate_input_term -----//*)
Walther@60530
   923
Walther@60530
   924
 (*[3], Res*)val (p,_,f,nxt,_,pt) = me nxt'''''_' p'''''_' [] pt'''''_'; (*nxt = Check_elementwise "Assumptions"*)
Walther@60530
   925
 (*[4], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Check_Postcond ["sqroot-test", "univariate", "equation", "test"]*)
Walther@60530
   926
 (*[], Res*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = End_Proof'*)
Walther@60530
   927
Walther@60530
   928
\<close> ML \<open>
Walther@60530
   929
(*/--- final test ---------------------------------------------------------------------------\\*)
Walther@60530
   930
if p = ([], Res) andalso f2str f = "[x = 1]" andalso pr_ctree pr_short pt =
Walther@60530
   931
   ".    ----- pblobj -----\n" ^
Walther@60530
   932
   "1.   x + 1 = 2\n" ^
Walther@60530
   933
   "2.   x + 1 + - 1 * 2 = 0\n" ^
Walther@60530
   934
   "3.    ----- pblobj -----\n" ^
Walther@60530
   935
   "3.1.   - 1 + x = 0\n" ^
Walther@60530
   936
   "3.2.   x = 0 + - 1 * - 1\n" ^
Walther@60530
   937
   "3.2.1.   x = 0 + - 1 * - 1\n" ^
Walther@60530
   938
   "3.2.2.   x = 0 + 1\n" (*ATTENTION: see complete Calc below*)
Walther@60530
   939
then case nxt of End_Proof' => () | _ => error "re-build: fun locate_input_term CHANGED 1"
Walther@60530
   940
else error "re-build: fun locate_input_term CHANGED 2";
Walther@60530
   941
Walther@60530
   942
Test_Tool.show_pt_tac pt; (*[
Walther@60530
   943
([], Frm), solve (x + 1 = 2, x)
Walther@60530
   944
. . . . . . . . . . Apply_Method ["Test", "squ-equ-test-subpbl1"],
Walther@60530
   945
([1], Frm), x + 1 = 2
Walther@60530
   946
. . . . . . . . . . Rewrite_Set "norm_equation",
Walther@60530
   947
([1], Res), x + 1 + - 1 * 2 = 0
Walther@60530
   948
. . . . . . . . . . Rewrite_Set "Test_simplify",
Walther@60530
   949
([2], Res), - 1 + x = 0
Walther@60530
   950
. . . . . . . . . . Subproblem (Test, ["LINEAR", "univariate", "equation", "test"]),
Walther@60530
   951
([3], Pbl), solve (- 1 + x = 0, x)
Walther@60530
   952
. . . . . . . . . . Apply_Method ["Test", "solve_linear"],
Walther@60530
   953
([3,1], Frm), - 1 + x = 0
Walther@60530
   954
. . . . . . . . . . Rewrite_Set_Inst ([(''bdv'', x)], "isolate_bdv"),
Walther@60530
   955
([3,1], Res), x = 0 + - 1 * - 1
Walther@60530
   956
. . . . . . . . . . Derive Test_simplify,
Walther@60530
   957
([3,2,1], Frm), x = 0 + - 1 * - 1
Walther@60530
   958
. . . . . . . . . . Rewrite ("#: - 1 * - 1 = 1", "- 1 * - 1 = 1"),
Walther@60530
   959
([3,2,1], Res), x = 0 + 1
Walther@60530
   960
. . . . . . . . . . Rewrite ("radd_0", "0 + ?k = ?k"),
Walther@60530
   961
([3,2,2], Res), x = 1
Walther@60530
   962
. . . . . . . . . . Tactic.input_to_string not impl. for ?!,
Walther@60530
   963
([3,2], Res), x = 1
Walther@60530
   964
. . . . . . . . . . Check_Postcond ["LINEAR", "univariate", "equation", "test"],
Walther@60530
   965
([3], Res), [x = 1]
Walther@60530
   966
. . . . . . . . . . Check_Postcond ["sqroot-test", "univariate", "equation", "test"],
Walther@60530
   967
([], Res), [x = 1]]*)
Walther@60530
   968
\<close> ML \<open>
Walther@60530
   969
\<close> ML \<open>
Walther@60530
   970
\<close>
walther@59751
   971
  ML_file "Interpret/step-solve.sml"
walther@59751
   972
walther@60326
   973
  ML_file "MathEngine/me-misc.sml"
walther@59823
   974
  ML_file "MathEngine/fetch-tactics.sml"
walther@60326
   975
  ML_file "MathEngine/solve.sml"
walther@59763
   976
  ML_file "MathEngine/step.sml"
walther@60340
   977
  ML_file "MathEngine/mathengine-stateless.sml"    (*!part. WN130804: +check Interpret/me.sml*)
walther@60326
   978
  ML_file "MathEngine/messages.sml"
wneuper@59600
   979
  ML_file "MathEngine/states.sml"
wneuper@59600
   980
walther@59917
   981
  ML_file "BridgeLibisabelle/thy-present.sml"
wneuper@59600
   982
  ML_file "BridgeLibisabelle/mathml.sml"           (*part.*)
walther@60277
   983
  ML_file "BridgeLibisabelle/pbl-met-hierarchy.sml"
wneuper@59600
   984
  ML_file "BridgeLibisabelle/thy-hierarchy.sml"
Walther@60424
   985
  ML_file "BridgeLibisabelle/interface-xml.sml"     (*TODO after 2009-2*)
walther@60389
   986
  ML_file "BridgeLibisabelle/interface.sml"
walther@60044
   987
  ML_file "BridgeJEdit/parseC.sml"
walther@60146
   988
  ML_file "BridgeJEdit/preliminary.sml"
Walther@60465
   989
  ML_file "BridgeJEdit/vscode-example.sml"
walther@60044
   990
wneuper@59553
   991
  ML_file "Knowledge/delete.sml"
wneuper@59553
   992
  ML_file "Knowledge/descript.sml"
wneuper@59553
   993
  ML_file "Knowledge/simplify.sml"
Walther@60530
   994
ML \<open>
Walther@60530
   995
\<close> ML \<open>
Walther@60530
   996
\<close> ML \<open>
Walther@60530
   997
\<close> ML \<open>
Walther@60530
   998
\<close> ML \<open>
Walther@60530
   999
\<close>
walther@60340
  1000
  ML_file "Knowledge/poly-1.sml"
walther@60329
  1001
(*ML_file "Knowledge/poly-2.sml"                                                Test_Isac_Short*)
wneuper@59553
  1002
  ML_file "Knowledge/gcd_poly_ml.sml"
walther@60329
  1003
  ML_file "Knowledge/rational-1.sml"
walther@60329
  1004
(*ML_file "Knowledge/rational-2.sml"                                            Test_Isac_Short*)
Walther@60519
  1005
  ML_file "Knowledge/equation.sml"
walther@60384
  1006
  ML_file "Knowledge/root.sml"
wneuper@59553
  1007
  ML_file "Knowledge/lineq.sml"
wneuper@59553
  1008
(*ML_file "Knowledge/rooteq.sml"    some complicated equations not recovered from 2002 *)
walther@59628
  1009
(*ML_file "Knowledge/rateq.sml"     some complicated equations not recovered----Test_Isac_Short*)
walther@60389
  1010
  ML_file "Knowledge/rootrat.sml"
wneuper@59553
  1011
  ML_file "Knowledge/rootrateq.sml"(*ome complicated equations not recovered from 2002 *)
walther@59628
  1012
(*ML_file "Knowledge/partial_fractions.sml"  hangs with ML_system_64 = "true"---Test_Isac_Short*)
walther@60393
  1013
  ML_file "Knowledge/polyeq-1.sml"
walther@60393
  1014
(*ML_file "Knowledge/polyeq-2.sml"                                              Test_Isac_Short*)
wneuper@59553
  1015
(*ML_file "Knowledge/rlang.sml"     much to clean up, similar tests in other files     *)
wneuper@59553
  1016
  ML_file "Knowledge/calculus.sml"
wneuper@59553
  1017
  ML_file "Knowledge/trig.sml"
wneuper@59553
  1018
(*ML_file "Knowledge/logexp.sml"    not included as stuff for presentation of authoring*) 
walther@60350
  1019
  ML_file "Knowledge/diff.sml"
walther@60350
  1020
  ML_file "Knowledge/integrate.sml"
walther@60347
  1021
  ML_file "Knowledge/eqsystem-1.sml"
walther@60395
  1022
  ML_file "Knowledge/eqsystem-2.sml"
walther@59996
  1023
  ML_file "Knowledge/test.sml"
wneuper@59553
  1024
  ML_file "Knowledge/polyminus.sml"
wneuper@59553
  1025
  ML_file "Knowledge/vect.sml"
Walther@60458
  1026
  ML_file "Knowledge/diff-app.sml"        (* postponed to dev. specification | TP-prog. *)
walther@60396
  1027
  ML_file "Knowledge/biegelinie-1.sml"
walther@59628
  1028
(*ML_file "Knowledge/biegelinie-2.sml"                                          Test_Isac_Short*)
walther@59628
  1029
(*ML_file "Knowledge/biegelinie-3.sml"                                          Test_Isac_Short*)
walther@60398
  1030
  ML_file "Knowledge/biegelinie-4.sml"
walther@60326
  1031
  ML_file "Knowledge/algein.sml"
wneuper@59553
  1032
  ML_file "Knowledge/diophanteq.sml"
walther@59628
  1033
(*ML_file "Knowledge/inverse_z_transform.sml"hangs with ML_system_64 = "true"---Test_Isac_Short*)
wneuper@59553
  1034
  ML_file "Knowledge/inssort.sml"
wneuper@59553
  1035
  ML_file "Knowledge/isac.sml"
wneuper@59553
  1036
  ML_file "Knowledge/build_thydata.sml"
wneuper@59600
  1037
walther@59814
  1038
  ML_file "Test_Code/test-code.sml"
walther@59814
  1039
walther@59617
  1040
section \<open>further tests additional to src/.. files\<close>
walther@60399
  1041
  ML_file "BridgeLibisabelle/use-cases.sml"
wneuper@59600
  1042
wneuper@59553
  1043
  ML \<open>"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";\<close>
wneuper@59553
  1044
  ML \<open>"%%%%%%%%%%%%%%%%% end Test_Isac %%%%%%%%%%%%%%%%%%%%%%%%";\<close>
wneuper@59553
  1045
  ML \<open>"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";\<close>
walther@60262
  1046
ML \<open>
walther@60262
  1047
\<close> ML \<open>
wneuper@59561
  1048
\<close> ML \<open>
walther@59804
  1049
\<close> ML \<open>
walther@59804
  1050
\<close> ML \<open>
wneuper@59561
  1051
\<close>
wneuper@59553
  1052
wneuper@59553
  1053
section \<open>history of tests\<close>
wneuper@59553
  1054
text \<open>
wneuper@59553
  1055
  Systematic regression tests have been introduced to isac development in 2003.
wneuper@59553
  1056
  Sanity of the regression tests suffers from updates following Isabelle development,
wneuper@59553
  1057
  which mostly exceeded the resources available in isac's development.
wneuper@59553
  1058
wneuper@59553
  1059
  The survey below shall support to efficiently use the tests for isac 
wneuper@59553
  1060
  on different Isabelle versions. Conclusion in most cases will be: 
wneuper@59553
  1061
wneuper@59553
  1062
  !!! Use most recent tests or go back to the old notebook
wneuper@59553
  1063
      with isac on Isabelle2002. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
wneuper@59553
  1064
\<close>
wneuper@59553
  1065
wneuper@59553
  1066
wneuper@59553
  1067
subsection \<open>isac on Isabelle2017\<close>
wneuper@59553
  1068
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1069
text \<open>
wneuper@59553
  1070
  * Add further signatures, separate structures and cleanup respective files.
wneuper@59553
  1071
  * Show feasibility of moving Isac programs to partial_function, i.e. to the function package.
wneuper@59553
  1072
  * Clean theory dependencies.
wneuper@59553
  1073
  * Start preparing shift from isac-java to Isabelle/jEdit.
wneuper@59553
  1074
\<close>
wneuper@59553
  1075
subsubsection \<open>State of tests: unchanged\<close>
wneuper@59553
  1076
subsubsection \<open>Changesets of begin and end\<close>
wneuper@59553
  1077
text \<open>
wneuper@59553
  1078
  last changeset with Test_Isac 925fef0f4c81
wneuper@59553
  1079
  first changeset with Test_Isac bbb414976dfe
wneuper@59553
  1080
\<close>
wneuper@59553
  1081
wneuper@59553
  1082
subsection \<open>isac on Isabelle2015\<close>
wneuper@59553
  1083
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1084
text \<open>
wneuper@59553
  1085
  * Add signatures from top of thy-hierarchy down to Interpret (not ProgLang).
wneuper@59553
  1086
    This complicates Test_Isac, see "Prepare running tests" above.
wneuper@59553
  1087
  * Remove TTY interface.
wneuper@59553
  1088
  * Re-activate insertion sort.
wneuper@59553
  1089
\<close>
wneuper@59553
  1090
subsubsection \<open>State of tests: unchanged\<close>
wneuper@59553
  1091
subsubsection \<open>Changesets of begin and end\<close>
wneuper@59553
  1092
text \<open>
wneuper@59553
  1093
  last changeset with Test_Isac 2f1b2854927a
wneuper@59553
  1094
  first changeset with Test_Isac ???
wneuper@59553
  1095
\<close>
wneuper@59553
  1096
wneuper@59553
  1097
subsection \<open>isac on Isabelle2014\<close>
wneuper@59553
  1098
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1099
text \<open>
wneuper@59553
  1100
  migration from "isabelle tty" --> libisabelle
wneuper@59553
  1101
\<close>
wneuper@59553
  1102
Walther@60424
  1103
subsection \<open>isac on Isabelle2013-2\<close>
wneuper@59553
  1104
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1105
text \<open>
wneuper@59553
  1106
  reactivated context_thy
wneuper@59553
  1107
\<close>
wneuper@59553
  1108
subsubsection \<open>State of tests\<close>
wneuper@59553
  1109
text \<open>
wneuper@59553
  1110
  TODO
wneuper@59553
  1111
\<close>
wneuper@59553
  1112
subsubsection \<open>Changesets of begin and end\<close>
wneuper@59553
  1113
text \<open>
wneuper@59553
  1114
  TODO
wneuper@59553
  1115
  :
Walther@60424
  1116
  : isac on Isablle2013-2
wneuper@59553
  1117
  :
wneuper@59553
  1118
  Changeset: 55318 (03826ceb24da) merged
wneuper@59553
  1119
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1120
  Date: 2013-12-12 14:27:37 +0100 (7 minutes)
wneuper@59553
  1121
\<close>
wneuper@59553
  1122
Walther@60424
  1123
subsection \<open>isac on Isabelle2013-1\<close>
wneuper@59553
  1124
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1125
text \<open>
Walther@60424
  1126
  Isabelle2013-1 was replaced within a few weeks due to problems with the document model;
wneuper@59553
  1127
  no significant development steps for ISAC.
wneuper@59553
  1128
\<close>
wneuper@59553
  1129
subsubsection \<open>State of tests\<close>
wneuper@59553
  1130
text \<open>
wneuper@59553
  1131
  See points in subsection "isac on Isabelle2011", "State of tests".
wneuper@59553
  1132
\<close>
wneuper@59553
  1133
subsubsection \<open>Changesets of begin and end\<close>
wneuper@59553
  1134
text \<open>
wneuper@59553
  1135
  Changeset: 55283 (d6e9a34e7142) notes for resuming work on Polynomial.thy
wneuper@59553
  1136
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1137
  Date: 2013-12-03 18:13:31 +0100 (8 days)
wneuper@59553
  1138
  :
Walther@60424
  1139
  : isac on Isablle2013-1
wneuper@59553
  1140
  :
Walther@60424
  1141
  Changeset: 55279 (130688f277ba) Isabelle2013 --> 2013-1: Test_Isac perfect
wneuper@59553
  1142
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1143
  Date: 2013-11-21 18:12:17 +0100 (2 weeks)
wneuper@59553
  1144
wneuper@59553
  1145
\<close>
wneuper@59553
  1146
wneuper@59553
  1147
subsection \<open>isac on Isabelle2013\<close>
wneuper@59553
  1148
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1149
text \<open>
wneuper@59553
  1150
  # Oct.13: replaced "axioms" by "axiomatization"
wneuper@59553
  1151
  # Oct.13: Mathias Lehnfeld started removing Unsynchornized.ref
wneuper@59553
  1152
  # Sep.13: integrated gcd_poly (functional, without Unsychronized.ref) into
wneuper@59553
  1153
    simplification of multivariate rationals (without improving the rulesets involved).
wneuper@59553
  1154
\<close>
wneuper@59553
  1155
subsubsection \<open>Run tests\<close>
wneuper@59553
  1156
text \<open>
Walther@60424
  1157
  Is standard now; this subsection will be discontinued under Isabelle2013-1
wneuper@59553
  1158
\<close>
wneuper@59553
  1159
subsubsection \<open>State of tests\<close>
wneuper@59553
  1160
text \<open>
wneuper@59553
  1161
  See points in subsection "isac on Isabelle2011", "State of tests".
wneuper@59553
  1162
  # re-activated listC.sml
wneuper@59553
  1163
\<close>
wneuper@59553
  1164
subsubsection \<open>Changesets of begin and end\<close>
wneuper@59553
  1165
text \<open>
wneuper@59553
  1166
  changeset 52174:8b055b17bd84 --- removed all code concerned with "castab = Unsynchronized.ref"
wneuper@59553
  1167
  User: Mathias Lehnfeld <s1210629013@students.fh-hagenberg.at>
wneuper@59553
  1168
  Date: Tue Nov 19 22:23:30 2013 +0000
wneuper@59553
  1169
  :
wneuper@59553
  1170
  : isac on Isablle2013 
wneuper@59553
  1171
  :
wneuper@59553
  1172
  Changeset: 52061 (4ecea2fcdc2c) --- Build_Isac.thy runs on Isabelle2013
wneuper@59553
  1173
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1174
  Date: 2013-07-15 08:28:50 +0200 (4 weeks)
wneuper@59553
  1175
\<close>
wneuper@59553
  1176
wneuper@59553
  1177
subsection \<open>isac on Isabelle2012\<close>
wneuper@59553
  1178
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1179
text \<open>
wneuper@59553
  1180
  isac on Isabelle2012 is considered just a transitional stage
wneuper@59553
  1181
  within the update from Isabelle2011 to Isabelle2013; thus no further development of isac;
wneuper@59553
  1182
  For considerations on the transition see 
wenzelm@60192
  1183
  $ISABELLE_ISAC/Knowledge/Build_Thydata/thy, section "updating isac..".
wneuper@59553
  1184
\<close>
wneuper@59553
  1185
subsubsection \<open>Run tests\<close>
wneuper@59553
  1186
text \<open>
wneuper@59553
  1187
$ cd /usr/local/isabisac12/
wneuper@59553
  1188
$ ./bin/isabelle jedit -l HOL src/Tools/isac/Build_Isac.thy
wneuper@59553
  1189
$ ./bin/isabelle jedit -l Isac test/Tools/isac/Test_Isac.thy
wneuper@59553
  1190
\<close>
wneuper@59553
  1191
subsubsection \<open>State of tests\<close>
wneuper@59553
  1192
text \<open>
wneuper@59553
  1193
  At least the tests from isac on Isabelle2011 run again.
wneuper@59553
  1194
  However, Test_Isac.thy shows erratic behaviour; no errors are obtained when scrolling 
wneuper@59553
  1195
  in parallel with evaluation.
wneuper@59553
  1196
wneuper@59553
  1197
  Counting "error in kernel" for Frontend/interface.sml (the tests considered most significant)
Walther@60424
  1198
  yields 69 hits, some of which were already present before Isabelle2002-->2009-2
wneuper@59553
  1199
  (i.e. on the old notebook from 2002).
wneuper@59553
  1200
wneuper@59553
  1201
  Now many tests with (*...=== inhibit exn ...*) give a reason or at least the origin:
wneuper@59553
  1202
  # === inhibit exn WN1130621 Isabelle2012-->13 !thehier! === ...see Build_Thydata.thy
wneuper@59553
  1203
  # === inhibit exn AK110726 === ...reliable work by Alexander Kargl, most likely go back to 2002
Walther@60424
  1204
  # === inhibit exn WN1130701 broken at Isabelle2002 --> 2009-2 === , most likely go back to 2002
wneuper@59553
  1205
  Reasons for outcommented tests are also found in Test_Isac.thy near the respective file.sml.
wneuper@59553
  1206
wneuper@59553
  1207
  Some tests have been re-activated (e.g. error patterns, fill patterns).
wneuper@59553
  1208
\<close>
wneuper@59553
  1209
subsubsection \<open>Changesets of begin and end\<close>
wneuper@59553
  1210
text \<open>
wneuper@59553
  1211
  Changeset: 52051 (35751d90365e) end of improving tests for isac on Isabelle2012
wneuper@59553
  1212
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1213
  Date: 2013-07-11 16:58:31 +0200 (4 weeks)
wneuper@59553
  1214
  :
wneuper@59553
  1215
  : isac on Isablle2012 
wneuper@59553
  1216
  :
wneuper@59553
  1217
  Changeset: 48757 (74eb3dfc33cc) updated src from Isabelle2011 to Isabelle2012
wneuper@59553
  1218
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1219
  Date: 2012-09-24 18:35:13 +0200 (8 months)
wneuper@59553
  1220
  ------------------------------------------------------------------------------
wneuper@59553
  1221
  Changeset: 48756 (7443906996a8) merged
wneuper@59553
  1222
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1223
  Date: 2012-09-24 18:15:49 +0200 (8 months)
wneuper@59553
  1224
\<close>
wneuper@59553
  1225
wneuper@59553
  1226
subsection \<open>isac on Isabelle2011\<close>
wneuper@59553
  1227
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1228
text \<open>
wneuper@59553
  1229
  isac's mathematics engine has been extended by two developments:
wneuper@59553
  1230
  (1) Isabelle's contexts were introduced by Mathias Lehnfeld
wneuper@59553
  1231
  (2) Z_Transform was introduced by Jan Rocnik, which revealed
wneuper@59553
  1232
    further errors introduced by (1).
wneuper@59553
  1233
  (3) "error patterns" were introduced by Gabriella Daroczy
wneuper@59553
  1234
  Regressions tests have been added for all of these.
wneuper@59553
  1235
\<close>
wneuper@59553
  1236
subsubsection \<open>Run tests\<close>
wneuper@59553
  1237
text \<open>
wneuper@59553
  1238
  $ cd /usr/local/isabisac11/
wneuper@59553
  1239
  $ ./bin/isabelle jedit -l HOL src/Tools/isac/Build_Isac.thy
wneuper@59553
  1240
  $ ./bin/isabelle jedit -l Isac test/Tools/isac/Test_Isac.thy
wneuper@59553
  1241
\<close>
wneuper@59553
  1242
subsubsection \<open>State of tests\<close>
wneuper@59553
  1243
text \<open>
wneuper@59553
  1244
  Systematic efforts outcommented less significant tests by (*...=== inhibit exn ...*) 
wneuper@59553
  1245
  and sometimes give reasons for failing tests.
wneuper@59553
  1246
  (*...=== inhibit exn AK...*) was done by Alexander Kargl; this is reliable
wneuper@59553
  1247
  work, some of which couldn't be revised (and renamed) by WN and thus survived some time.
wneuper@59553
  1248
wneuper@59553
  1249
  The most signification tests (in particular Frontend/interface.sml) run,
wneuper@59553
  1250
  however, many "error in kernel" are not caught by an exception.
wneuper@59553
  1251
  ------------------------------------------------------------------------------
wneuper@59553
  1252
  After the changeset below Test_Isac worked with check_unsynchronized_ref ():
wneuper@59553
  1253
  ------------------------------------------------------------------------------
wneuper@59553
  1254
  Changeset: 42457 (ca691a84b81a) PROVISIONALLY MADE TESTS RUN with Unsynchronized.ref
wneuper@59553
  1255
  User: Walther Neuper <neuper@ist.tugraz.at>
wneuper@59553
  1256
  Date: 2012-08-06 10:38:11 +0200 (11 months)
wneuper@59553
  1257
wneuper@59553
  1258
wneuper@59553
  1259
  The list below records TODOs while producing an ISAC kernel for 
wneuper@59553
  1260
  gdaroczy and jrocnik, wich could NOT be done before all tests are RUNNING
Walther@60424
  1261
  (so to be resumed with Isabelle2013-1):
wneuper@59553
  1262
  ############## WNxxxxxx.TODO can be found in sources ##############
wneuper@59553
  1263
  --------------------------------------------------------------------------------
wneuper@59553
  1264
  WN111013.TODO: lots of cleanup/removal in test/../Test.thy
wneuper@59553
  1265
  --------------------------------------------------------------------------------
walther@59845
  1266
  WN111013.TODO: remove concept around "fun implicit_take", lots of troubles with 
wneuper@59553
  1267
  this special case (see) --- why not nxt = Model_Problem here ? ---
wneuper@59553
  1268
  --------------------------------------------------------------------------------
wneuper@59553
  1269
  WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat, see test/
wneuper@59553
  1270
  ... FIRST redesign 
wneuper@59553
  1271
  # simplify_* , *_simp_* 
wneuper@59553
  1272
  # norm_* 
wneuper@59553
  1273
  # calc_* , calculate_*  ... require iteration over all rls ...
wneuper@59553
  1274
  ... see --- val rls = calculate_RootRat > calculate_Rational --- CONTINUE !
wneuper@59553
  1275
  --------------------------------------------------------------------------------
wneuper@59553
  1276
  WN111014.TODO fun prep_rls | !!!use this function in ruleset' := !!!
wneuper@59553
  1277
  --------------------------------------------------------------------------------
wneuper@59553
  1278
  WN120314 changeset a393bb9f5e9f drops root equations.
wneuper@59553
  1279
  see test/Tools/isac/Knowledge/rootrateq.sml 
wneuper@59553
  1280
  --------------------------------------------------------------------------------
wneuper@59553
  1281
  WN120317.TODO changeset 977788dfed26 dropped rateq:
wneuper@59553
  1282
  # test --- repair NO asms from rls RatEq_eliminate --- shows error from 2002
Walther@60424
  1283
  # test --- solve (1/x = 5, x) by me --- and --- x / (x ^ 2 - 6 * x + 9) - ...:    
wneuper@59553
  1284
    investigation Check_elementwise stopped due to too much effort finding out,
wneuper@59553
  1285
    why Check_elementwise worked in 2002 in spite of the error.
wneuper@59553
  1286
  --------------------------------------------------------------------------------
wneuper@59553
  1287
  WN120317.TODO postponed test/../ratinal,ratinal2.sml to joint work with dmeindl 
wneuper@59553
  1288
  --------------------------------------------------------------------------------
wneuper@59553
  1289
  WN120317.TODO found by test --- interSteps for Schalk 299a --- that 
wneuper@59553
  1290
    NO test with 'interSteps' is checked properly (with exn on changed behaviour)
wneuper@59553
  1291
  --------------------------------------------------------------------------------
wneuper@59553
  1292
  WN120317.TODO test --- Matthias Goldgruber 2003 rewrite orders --- has
wneuper@59553
  1293
    a newly outcommented test where rewrite_set_ make_polynomial --> NONE
wneuper@59553
  1294
  --------------------------------------------------------------------------------
wneuper@59553
  1295
  WN120320.TODO check-improve rlsthmsNOTisac:
wneuper@59553
  1296
  DONE make test --- old compute rlsthmsNOTisac by eq_thmI'
Walther@60424
  1297
  DONE compare rlsthmsNOTisac in thms-survey-Isa02-Isa09-2.sml .. Isac.thy 
wneuper@59553
  1298
  FOUND 120321: Theory.axioms_of doesnt find LENGTH_CONS etc, thus are in Isab
wneuper@59553
  1299
  # mark twice thms (in isac + (later) in Isabelle) in Isac.thy
wneuper@59553
  1300
  --------------------------------------------------------------------------------
Walther@60424
  1301
  WN120320.TODO rlsthmsNOTisac: replace twice thms ^
wneuper@59553
  1302
  --------------------------------------------------------------------------------
wneuper@59553
  1303
  WN120320.TODO rlsthmsNOTisac: reconsider design of sym_* thms, see test
wneuper@59553
  1304
  --- OLD compute rlsthmsNOTisac by eq_thmID ---: some are in isab, some in isac.
wneuper@59553
  1305
  --------------------------------------------------------------------------------
wneuper@59553
  1306
  WN120321.TODO rearrange theories:
wneuper@59553
  1307
    Knowledge
wneuper@59553
  1308
      :
walther@59603
  1309
      Prog_Expr.thy
walther@60125
  1310
      ///Input_Descript.thy --> ProgLang
walther@59603
  1311
      Delete.thy   <--- first_Knowledge_thy (*mv to Prog_Expr.thy*)
wneuper@59553
  1312
    ProgLang: restructure Build_Isac.thy such that no xmlsrc.thy, ProgLang.thy
wneuper@59553
  1313
          Interpret.thy are generated (simplifies xml structure for theories)
wneuper@59585
  1314
      Program.thy
wneuper@59553
  1315
      Tools.thy
wneuper@59553
  1316
      ListC.thy    <--- first_Proglang_thy
wneuper@59553
  1317
  --------------------------------------------------------------------------------
wneuper@59553
  1318
  WN120321.TODO reanimate test/../simplify.sml: CAS-command Simplify
wneuper@59553
  1319
      EXN "simplify.sml: diff.behav. CAScmd: Simplify (2*a + 3*a)"
wneuper@59553
  1320
  broken during work on thy-hierarchy
wneuper@59553
  1321
  --------------------------------------------------------------------------------
wneuper@59553
  1322
  WN120321.TODO LAST in IsacScripts + in IsacKnowledge, see
wneuper@59553
  1323
  test --- the_hier (get_thes ()) (collect_thydata ())---
wneuper@59553
  1324
  --------------------------------------------------------------------------------
wneuper@59553
  1325
  WN120405a.TODO src/../pbl-met-hierarchy.sml: fun pbl2term--> Isac' instead Isac_
wneuper@59553
  1326
  !!add mutual crossreferences to ?fun headline??? where the same has to be done:
wneuper@59553
  1327
  !!OR BETTER: use only 2 functions for adding/removing "'" to/from thy!!
wneuper@59553
  1328
  --------------------------------------------------------------------------------
wneuper@59553
  1329
  WN120411 scanning html representation of newly generated knowledge:
wneuper@59553
  1330
  * thy:
wneuper@59553
  1331
  ** Theorems: only "Proof of the theorem" (correct!)
wneuper@59553
  1332
               and "(c) isac-team (math-autor)"
wneuper@59553
  1333
  ** Rulesets: only "Identifier:///"
wneuper@59553
  1334
               and "(c) isac-team (math-autor)"
wneuper@59553
  1335
  ** IsacKnowledge: link to dependency graph (which needs to be created first)
wneuper@59553
  1336
  ** IsacScripts --> ProgramLanguage
wneuper@59553
  1337
  *** Tools: Theorems: arity_type_cp, arity_type_nam, ... wegnehmen
wneuper@59553
  1338
  
wneuper@59553
  1339
  * pbl: OK !?!
wneuper@59553
  1340
  * met: OK !?!
wneuper@59553
  1341
  * exp: 
wneuper@59553
  1342
  ** Z-Transform is missing !!!
wneuper@59553
  1343
  ** type-constraints !!!
wneuper@59553
  1344
  --------------------------------------------------------------------------------
wneuper@59553
  1345
  WN120417: merging xmldata revealed:
wneuper@59553
  1346
  ..............NEWLY generated:........................................
wneuper@59553
  1347
  <THEOREMDATA>
wneuper@59553
  1348
    <GUH> thy_isab_Fun-thm-o_apply </GUH>
wneuper@59553
  1349
    <STRINGLIST>
wneuper@59553
  1350
      <STRING> Isabelle </STRING>
wneuper@59553
  1351
      <STRING> Fun </STRING>
wneuper@59553
  1352
      <STRING> Theorems </STRING>
wneuper@59553
  1353
      <STRING> o_apply </STRING>
wneuper@59553
  1354
    </STRINGLIST>
wneuper@59553
  1355
      <MATHML>
wneuper@59553
  1356
        <ISA> (?f o ?g) ?x = ?f (?g ?x) </ISA>
wneuper@59553
  1357
      </MATHML>  <PROOF>
wneuper@59553
  1358
      <EXTREF>
wneuper@59553
  1359
        <TEXT> Proof of the theorem </TEXT>
wneuper@59553
  1360
        <URL> http://www.ist.tugraz.at/projects/isac/www/kbase/thy/browser_info/HOL/HOL-Real/Isac/Fun.html </URL>
wneuper@59553
  1361
      </EXTREF>
wneuper@59553
  1362
    </PROOF>
wneuper@59553
  1363
    <EXPLANATIONS> </EXPLANATIONS>
wneuper@59553
  1364
    <MATHAUTHORS>
wneuper@59553
  1365
      <STRING> Isabelle team, TU Munich </STRING>
wneuper@59553
  1366
    </MATHAUTHORS>
wneuper@59553
  1367
    <COURSEDESIGNS>
wneuper@59553
  1368
    </COURSEDESIGNS>
wneuper@59553
  1369
  </THEOREMDATA>
wneuper@59553
  1370
  ..............OLD FORMAT:.............................................
wneuper@59553
  1371
  <THEOREMDATA>
wneuper@59553
  1372
    <GUH> thy_isab_Fun-thm-o_apply </GUH>
wneuper@59553
  1373
    <STRINGLIST>
wneuper@59553
  1374
      <STRING> Isabelle </STRING>
wneuper@59553
  1375
      <STRING> Fun </STRING>
wneuper@59553
  1376
      <STRING> Theorems </STRING>
wneuper@59553
  1377
      <STRING> o_apply </STRING>
wneuper@59553
  1378
    </STRINGLIST>
wneuper@59553
  1379
    <THEOREM>
wneuper@59553
  1380
      <ID> o_apply </ID>
wneuper@59553
  1381
      <MATHML>
wneuper@59553
  1382
        <ISA> (?f o ?g) ?x = ?f (?g ?x) </ISA>
wneuper@59553
  1383
      </MATHML>
wneuper@59553
  1384
    </THEOREM>
wneuper@59553
  1385
    <PROOF>
wneuper@59553
  1386
      <EXTREF>
wneuper@59553
  1387
        <TEXT> Proof of the theorem </TEXT>
wneuper@59553
  1388
        <URL> http://www.ist.tugraz.at/projects/isac/www/kbase/thy/browser_info/HOL/HOL-Real/Isac/Fun.html </URL>
wneuper@59553
  1389
      </EXTREF>
wneuper@59553
  1390
    </PROOF>
wneuper@59553
  1391
    <EXPLANATIONS> </EXPLANATIONS>
wneuper@59553
  1392
    <MATHAUTHORS>
wneuper@59553
  1393
      <STRING> Isabelle team, TU Munich </STRING>
wneuper@59553
  1394
    </MATHAUTHORS>
wneuper@59553
  1395
    <COURSEDESIGNS>
wneuper@59553
  1396
    </COURSEDESIGNS>
wneuper@59553
  1397
  </THEOREMDATA>
wneuper@59553
  1398
  --------------------------------------------------------------------------------
wneuper@59553
  1399
\<close>
wneuper@59553
  1400
subsubsection \<open>Changesets of begin and end\<close>
wneuper@59553
  1401
text \<open>
wneuper@59553
  1402
  isac development was done between these changesets:
wneuper@59553
  1403
  ------------------------------------------------------------------------------
wneuper@59553
  1404
  Changeset: 42519 (1f3b4270363e) meeting dmeindl: added missing files
wneuper@59553
  1405
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1406
  Date: 2012-09-24 16:39:30 +0200 (8 months)
wneuper@59553
  1407
  :
wneuper@59553
  1408
  : isac on Isablle2011
wneuper@59553
  1409
  :
wneuper@59553
  1410
  Changeset:41897 (355be7f60389) merged isabisac with Isabelle2011
wneuper@59553
  1411
  Branch: decompose-isar 
wneuper@59553
  1412
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1413
  Date: 2011-02-25 13:04:56 +0100 (2011-02-25)
wneuper@59553
  1414
  ------------------------------------------------------------------------------
wneuper@59553
  1415
\<close>
wneuper@59553
  1416
Walther@60424
  1417
subsection \<open>isac on Isabelle2009-2\<close>
wneuper@59553
  1418
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1419
text \<open>
wneuper@59553
  1420
  In 2009 the update of isac from Isabelle2002 started with switching from CVS to hg.
wneuper@59553
  1421
  The update was painful (bridging 7 years of Isabelle development) and cut short 
wneuper@59553
  1422
  due to the start of introducing Isabelle's contexts (Mathias Lehnfeld) and
wneuper@59553
  1423
  going on to Isabelle2011 although most of the tests did not run.
wneuper@59553
  1424
\<close>
wneuper@59553
  1425
subsubsection \<open>Run tests\<close>
wneuper@59553
  1426
text \<open>
wneuper@59553
  1427
  WN131021 this is broken by installation of Isabelle2011/12/13,
wneuper@59553
  1428
  because all these write their binaries to ~/.isabelle/heaps/..
wneuper@59553
  1429
Walther@60424
  1430
  $ cd /usr/local/isabisac09-2/
wneuper@59553
  1431
  $ ./bin/isabelle emacs -l HOL src/Tools/isac/Build_Isac.thy
wneuper@59553
  1432
  $ ./bin/isabelle emacs -l Isac src/Tools/isac/Test_Isac.thy
wneuper@59553
  1433
  NOT THE RIGHT VERSION.....    test/Tools/isac/Test_Isac.thy !!!
wneuper@59553
  1434
\<close>
wneuper@59553
  1435
subsubsection \<open>State of tests\<close>
wneuper@59553
  1436
text \<open>
Walther@60424
  1437
  Most tests are broken by the update from Isabelle2002 to Isabelle2009-2.
wneuper@59553
  1438
\<close>
wneuper@59553
  1439
subsubsection \<open>Changesets of begin and end\<close>
wneuper@59553
  1440
text \<open>
wneuper@59553
  1441
  isac development was done between these changesets:
wneuper@59553
  1442
  ------------------------------------------------------------------------------
wneuper@59553
  1443
  Changeset: 38115 (940a5feea094) Little improvements of isac-plugin
wneuper@59553
  1444
  Branch: decompose-isar 
wneuper@59553
  1445
  User: Marco Steger <m.steger@student.tugraz.at>
wneuper@59553
  1446
  Date: 2011-02-06 18:30:28 +0100 (2011-02-06)
wneuper@59553
  1447
  :
Walther@60424
  1448
  : isac on Isablle2009-2
wneuper@59553
  1449
  :
Walther@60424
  1450
  Changeset: 37870 (5100a9c3abf8) created branch isac-from-Isabelle2009-2
Walther@60424
  1451
  Branch: isac-from-Isabelle2009-2 
wneuper@59553
  1452
  User: Walther Neuper <neuper@ist.tugraz.at>
Walther@60424
  1453
  Date: 2010-07-21 09:59:35 +0200 (2010-07-21)
wneuper@59553
  1454
  ------------------------------------------------------------------------------
wneuper@59553
  1455
\<close>
wneuper@59553
  1456
wneuper@59553
  1457
subsection \<open>isac on Isabelle2002\<close>
wneuper@59553
  1458
subsubsection \<open>Summary of development\<close>
wneuper@59553
  1459
text \<open>
wneuper@59553
  1460
  From 1999 to 2010 all the basic functionality (except "ctxt" and "error pattern")
wneuper@59553
  1461
  of isac's mathematics engine has been implemented.
wneuper@59553
  1462
\<close>
wneuper@59553
  1463
subsubsection \<open>Run tests\<close>
wneuper@59553
  1464
subsubsection \<open>State of tests\<close>
wneuper@59553
  1465
text \<open>
wneuper@59553
  1466
  All tests work on an old notebook (the right PolyML coudn't be upgraded to more
wneuper@59553
  1467
  recent Linux versions)
wneuper@59553
  1468
\<close>
wneuper@59553
  1469
subsubsection \<open>Changesets of begin and end\<close>
wneuper@59553
  1470
text \<open>
wneuper@59553
  1471
  Up to the above Mercurial changeset 5100a9c3abf8 isac used CVS;
wneuper@59553
  1472
  see https://intra.ist.tugraz.at/hg/isac containing a conversion to Mercurial.
wneuper@59553
  1473
\<close>
wneuper@59553
  1474
wneuper@59553
  1475
end
wneuper@59553
  1476
(*========== inhibit exn 130719 Isabelle2013 ===================================
wneuper@59553
  1477
============ inhibit exn 130719 Isabelle2013 =================================*)
wneuper@59553
  1478
wneuper@59553
  1479
(*-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
wneuper@59553
  1480
  -.-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.*)
wneuper@59553
  1481