test/Tools/isac/Test_Isac.thy
author Walther Neuper <wneuper@ist.tugraz.at>
Thu, 08 Mar 2018 07:28:17 +0100
changeset 59395 862eb17f9e16
parent 59388 47877d6fa35a
child 59396 d1aae4e79859
permissions -rwxr-xr-x
TermC: push struct to tests, 3 broken and collected in Test_Isac.
neuper@52065
     1
(* Title:  All tests on isac (some outcommented since Isabelle2002-->2009-2)
neuper@41943
     2
   Author: Walther Neuper 101001
wneuper@59258
     3
   (c) copyright due to license terms.
neuper@41943
     4
neuper@52101
     5
   Isac's tests are organised parallel to sources: 
neuper@52101
     6
     "~~/test/Tools/isac" has same directory structure as "~~/src/Tools/isac"
neuper@52101
     7
   plus
neuper@52065
     8
     ~~/test/Tools/isac/ADDTESTS
neuper@52101
     9
     ~~/test/Tools/isac/Minisubpbl: the Lucas-Interpreter's core functionality
wneuper@59323
    10
-------------------------------------------------------------------------------
neuper@52065
    11
wneuper@59323
    12
Prepare running tests: see below
wneuper@59323
    13
Run tests:
neuper@52065
    14
$ cd /usr/local/isabisac/
wneuper@59323
    15
$ export ISABELLE_VERSION=2015 # for libisabelle
neuper@52065
    16
$ ./bin/isabelle jedit -l Isac test/Tools/isac/Test_Isac.thy &
neuper@41943
    17
*)
neuper@41943
    18
wneuper@59258
    19
section \<open>Prepare running tests\<close>
wneuper@59258
    20
text \<open>
wneuper@59323
    21
Isac encapsulates code as much as possible in structures without open. TODO ProgLang.
wneuper@59258
    22
This policy conflicts with those tests, which go into functions to details
wneuper@59258
    23
not declared in the signatures.
wneuper@59258
    24
wneuper@59258
    25
In order to maintain these tests without changes, this has to be done before running tests:
wneuper@59323
    26
(1) Extend signatures for tests by
wneuper@59323
    27
    ~~$ ./xcoding-to-test.sh
wneuper@59323
    28
    ~~$ ./zcoding-to-test.sh  # -"- + go back to Test_Isac.thy
wneuper@59323
    29
    Running Test_Isac.thy opens all structures, see code after "begin" below.
wneuper@59323
    30
(2) Clean signatures for coding
wneuper@59323
    31
    ~~$ ./xtest-to-coding.sh
wneuper@59323
    32
    ~~$ ./xtest-to-coding.sh  # -"- + go back to coding (!update thy!)
wneuper@59323
    33
wneuper@59323
    34
********************* don't forget (2) BEFORE pushing to repository *********************
wneuper@59323
    35
wneuper@59323
    36
The above bash files accomplish query replace in src/Tools/isac:
wneuper@59261
    37
    \<clubsuit>--- ! aktivate for Test_Isac BEGIN ---\* )\<clubsuit> \<longrightarrow> \<clubsuit>--- ! aktivate for Test_Isac BEGIN ---\*)\<clubsuit>
wneuper@59261
    38
    \<clubsuit>( *\--- ! aktivate for Test_Isac END ---\<clubsuit>   \<longrightarrow> \<clubsuit>(*\--- ! aktivate for Test_Isac END ---\<clubsuit>
wneuper@59261
    39
     ^^^ in signature outcommented,                     ^^^ NOT outcommented,
wneuper@59261
    40
         this is status for coding                          this is status for tests
wneuper@59258
    41
\<close>
wneuper@59258
    42
wneuper@59366
    43
section \<open>code for copy & paste\<close>
wneuper@59366
    44
text \<open>
wneuper@59366
    45
"~~~~~ fun , args:"; val () = ();
wneuper@59366
    46
"~~~~~ and , args:"; val () = ();
wneuper@59366
    47
wneuper@59366
    48
"~~~~~ to  return val:"; val () = ();
wneuper@59366
    49
wneuper@59366
    50
\<close>
wneuper@59258
    51
section \<open>Run the tests\<close>
wneuper@59258
    52
text \<open>
wneuper@59258
    53
* say "OK" to the popup asking for theories to be loaded
wneuper@59258
    54
* watch the <Theories> window for errors in the "imports" below
wneuper@59258
    55
\<close>
neuper@52073
    56
s1210629013@55378
    57
theory Test_Isac imports Build_Thydata
wneuper@59364
    58
(*/---------------------- do Minisubpbl before ADDTESTS/All_Ctxt ------------------------------\*)
neuper@52116
    59
  "ADDTESTS/accumulate-val/Thy_All"
neuper@41980
    60
  "ADDTESTS/Ctxt"
neuper@42048
    61
  "ADDTESTS/test-depend/Build_Test"
neuper@42023
    62
  "ADDTESTS/All_Ctxt"
wneuper@59202
    63
  "ADDTESTS/Test_Units"
neuper@42179
    64
  "ADDTESTS/course/phst11/T1_Basics"
neuper@42092
    65
  "ADDTESTS/course/phst11/T2_Rewriting"
neuper@42179
    66
  "ADDTESTS/course/phst11/T3_MathEngine"
neuper@52065
    67
  "ADDTESTS/file-depend/BuildC_Test"
neuper@52102
    68
  "ADDTESTS/session-get_theory/Foo"
wneuper@59144
    69
(*"ADDTESTS/course/SignalProcess/Build_Inverse_Z_Transform"
wneuper@59144
    70
   ADDTESTS/------------------------------------------- see end of tests *)
wneuper@59194
    71
(*"~~/test/Pure/Isar/Test_Parsers"           dropped Isabelle2014-->2015 *)
neuper@52089
    72
(*"~~/test/Pure/Isar/Pure/Isar/Struct_Deriv" lost at update 2009-2-->2011*)
neuper@52073
    73
  "~~/test/Pure/Isar/Test_Parse_Term"
wneuper@59364
    74
(*/---------------------- do Minisubpbl before ADDTESTS/All_Ctxt ------------------------------\*)
neuper@55364
    75
  "~~/test/Tools/isac/Interpret/ptyps"       (* setup for ptyps.sml    *)
neuper@55366
    76
  "~~/test/Tools/isac/ProgLang/calculate"    (* setup for calculate.sml*)
wneuper@59388
    77
wneuper@59388
    78
wneuper@59388
    79
wneuper@59362
    80
  "~~/test/Tools/isac/ProgLang/scrtools"     (* setup for scrtools.sml *)
s1210629013@55377
    81
  "~~/test/Tools/isac/Knowledge/integrate"   (* setup for integrate.sml*)
wneuper@59364
    82
(*\---------------------- do Minisubpbl before ADDTESTS/All_Ctxt ------------------------------/*)
neuper@52168
    83
  "~~/src/Tools/isac/Knowledge/GCD_Poly_OLD" (*not imported by Isac.thy*)
neuper@52168
    84
  "~~/src/Tools/isac/Knowledge/GCD_Poly_FP"  (*not imported by Isac.thy*)
wneuper@59364
    85
(*\---------------------- do Minisubpbl before ADDTESTS/All_Ctxt ------------------------------/*)
neuper@52168
    86
neuper@41943
    87
begin
s1210629013@55442
    88
s1210629013@55446
    89
ML {*
wneuper@59258
    90
(*/-------------------------------------------------------- ! aktivate for Test_Isac BEGIN ---\*)
wneuper@59318
    91
                      (* these vvv test, if funs are intermediately opened in structure 
wneuper@59318
    92
                         in case of errors here consider ~~/./xtest-to-coding.sh      *)
wneuper@59261
    93
  open Kernel;
wneuper@59262
    94
  open Math_Engine;            CalcTreeTEST;
wneuper@59262
    95
  open Lucin;                  appy;
wneuper@59262
    96
  open Inform;                 cas_input;
wneuper@59263
    97
  open Rtools;                 trtas2str;
wneuper@59265
    98
  open Chead;                  pt_extract;
wneuper@59316
    99
  open Generate;               (* NONE *)
wneuper@59276
   100
  open Ctree;                  append_problem;
wneuper@59269
   101
  open Specify;                show_ptyps;
wneuper@59316
   102
  open Applicable;             mk_set;
wneuper@59316
   103
  open Solve;                  (* NONE *)
wneuper@59299
   104
  open Selem;                  e_fmz;
wneuper@59308
   105
  open Stool;                  transfer_asms_from_to;
wneuper@59316
   106
  open Tac;                    (* NONE *)
wneuper@59316
   107
  open Model;                  (* NONE *)
wneuper@59384
   108
  open LTool;                  rule2stac;
wneuper@59384
   109
  open Rewrite;                mk_thm;
wneuper@59388
   110
  open Calc;                   get_pair;
wneuper@59395
   111
  open TermC;                  ;
wneuper@59258
   112
(*\--- ! aktivate for Test_Isac END ----------------------------------------------------------/*)
wneuper@59258
   113
*}
wneuper@59366
   114
wneuper@59258
   115
ML {*
wneuper@59366
   116
"~~~~~ fun xxx, args:"; val () = ();
wneuper@59356
   117
*} ML {*
wneuper@59356
   118
*} ML {*
wneuper@59356
   119
*}
wneuper@59356
   120
wneuper@59356
   121
ML {*
s1210629013@55446
   122
  KEStore_Elems.set_ref_thy @{theory};
wneuper@59248
   123
  (*fun autoCalculate' cI auto = autoCalculate cI auto (*|> Future.join*)*);
s1210629013@55446
   124
*}
s1210629013@55442
   125
wneuper@59372
   126
(*---------------------- check test file by testfile -------------------------------------------
wneuper@59372
   127
  ---------------------- check test file by testfile -------------------------------------------*)
neuper@52119
   128
section {* trials with Isabelle's functions *}
neuper@52119
   129
  ML {*"%%%%%%%%%%%%%%%%% start Isabelle %%%%%%%%%%%%%%%%%%%%%%%";*}
neuper@52119
   130
  ML_file "~~/test/Pure/General/alist.ML"
neuper@52119
   131
  ML_file "~~/test/Pure/General/basics.ML"
neuper@52119
   132
  ML_file "~~/test/Pure/General/scan.ML"
wneuper@59115
   133
  ML_file "~~/test/Pure/PIDE/xml.ML"
neuper@52119
   134
  ML {*"%%%%%%%%%%%%%%%%% end Isabelle %%%%%%%%%%%%%%%%%%%%%%%%%";*}
neuper@52119
   135
neuper@48895
   136
section {* test ML Code of isac *}
neuper@48895
   137
  ML {*"%%%%%%%%%%%%%%%%% start ProgLang.thy %%%%%%%%%%%%%%%%%%%";*}
neuper@52065
   138
  ML_file          "library.sml"
neuper@52065
   139
  ML_file          "calcelems.sml"
wneuper@59356
   140
(*---------------------- do Minisubpbl before ADDTESTS/All_Ctxt --------------------------------
wneuper@59388
   141
  ---------------------- do Minisubpbl before ADDTESTS/All_Ctxt --------------------------------*)
wneuper@59356
   142
  ML_file          "kestore.sml"        (* setup in ADDTEST/accumulate-val/lucas_interpreter.sml*)
wneuper@59357
   143
  ML_file "ProgLang/termC.sml"
wneuper@59359
   144
  ML_file "ProgLang/calculate.sml"      (* requires setup from calculate.thy                    *)
wneuper@59358
   145
  ML_file "ProgLang/rewrite.sml"
neuper@52148
   146
  ML_file "ProgLang/listC.sml"
neuper@52065
   147
  ML_file "ProgLang/scrtools.sml"
neuper@52065
   148
  ML_file "ProgLang/tools.sml"
wneuper@59362
   149
(*---------------------- do Minisubpbl before ADDTESTS/All_Ctxt --------------------------------
wneuper@59366
   150
  ---------------------- do Minisubpbl before ADDTESTS/All_Ctxt --------------------------------*)
neuper@41943
   151
  ML {*"%%%%%%%%%%%%%%%%% end ProgLang.thy %%%%%%%%%%%%%%%%%%%%%";*}
neuper@41986
   152
  ML {*"%%%%%%%%%%%%%%%%% start Minisubpbl %%%%%%%%%%%%%%%%%%%%%";*}
neuper@52065
   153
  ML_file "Minisubpbl/000-comments.sml"
neuper@52065
   154
  ML_file "Minisubpbl/100-init-rootpbl.sml"
neuper@52065
   155
  ML_file "Minisubpbl/150-add-given.sml"
neuper@52065
   156
  ML_file "Minisubpbl/200-start-method.sml"
neuper@52065
   157
  ML_file "Minisubpbl/300-init-subpbl.sml"
neuper@52065
   158
  ML_file "Minisubpbl/400-start-meth-subpbl.sml"
neuper@52065
   159
  ML_file "Minisubpbl/490-nxt-Check_Postcond.sml"
neuper@52065
   160
  ML_file "Minisubpbl/500-met-sub-to-root.sml"
neuper@52065
   161
  ML_file "Minisubpbl/530-error-Check_Elementwise.sml"
neuper@52065
   162
  ML_file "Minisubpbl/600-postcond.sml"
akargl@42188
   163
  ML {*"%%%%%%%%%%%%%%%%% end Minisubpbl.thy %%%%%%%%%%%%%%%%%%%%%%%";*}
wneuper@59364
   164
  ML {*"%%%%%%%%%%%%%%%%% start Interpret.thy %%%%%%%%%%%%%%%%%%";*}
neuper@52065
   165
  ML_file "Interpret/mstools.sml"
neuper@52065
   166
  ML_file "Interpret/ctree.sml"         (*!...!see(25)*)
neuper@55364
   167
  ML_file "Interpret/ptyps.sml"         (* requires setup from ptyps.thy *)
neuper@48891
   168
  ML {* (*check_unsynchronized_ref (); ==== trick on error: CUT AND PASTE THIS LINE =========*) *}
neuper@48895
   169
(*TRICK DOESN'T WORK: get_pbt not found: ["IsacKnowledge","Diff","Theorems","diff_sin_chain"]*)
neuper@52065
   170
  ML_file "Interpret/generate.sml"
neuper@48895
   171
(*WITHOUT inhibit exn WN1130621 Isabelle2012-->13 !thehier! THIS ERROR OCCURS:
neuper@48895
   172
  ... SAME ERROR HERE ON ISABELLE2012 AS IN ISAC ON ISABELLE2011*)
neuper@52065
   173
  ML_file "Interpret/calchead.sml"
wneuper@59252
   174
  ML_file "Interpret/appl.sml"          (*complete "WEGEN INTERMED TESTCODE"   *)
wneuper@55498
   175
  ML_file "Interpret/rewtools.sml"
neuper@52065
   176
  ML_file "Interpret/script.sml"
neuper@52065
   177
  ML_file "Interpret/solve.sml"
neuper@52065
   178
  ML_file "Interpret/inform.sml"
neuper@48895
   179
(*WITHOUT inhibit exn WN1130621 Isabelle2012-->13 !thehier! THIS ERROR OCCURS:
neuper@48895
   180
  ... SAME ERROR HERE ON ISABELLE2012 AS IN ISAC ON ISABELLE2011*)
neuper@52105
   181
  ML_file "Interpret/mathengine.sml"    (*!part. WN130804: +check Interpret/me.sml*)
wneuper@59395
   182
ML {*
wneuper@59395
   183
"----------- fun autoCalculate -----------------------------------";
wneuper@59395
   184
reset_states ();
wneuper@59395
   185
CalcTree (*ATTENTION: encode_fmz ... unlike CalcTreeTEST*)
wneuper@59395
   186
    [(["functionTerm (x^2 + 1)", "integrateBy x", "antiDerivative FF"],
wneuper@59395
   187
      ("Integrate", ["integrate", "function"], ["diff", "integration"]))];
wneuper@59395
   188
Iterator 1;
wneuper@59395
   189
moveActiveRoot 1;
wneuper@59395
   190
(*-----since Model_Problem + complete_mod_ in case cas of SOME-----*
wneuper@59395
   191
modeling is skipped FIXME 
wneuper@59395
   192
see test/../interface -- solve_linear as rootpbl FE -- for OTHER expl:
wneuper@59395
   193
 setNextTactic 1 (Add_Given "equality (1 + -1 * 2 + x = 0)");
wneuper@59395
   194
 autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1); (*equality added*);
wneuper@59395
   195
wneuper@59395
   196
 fetchProposedTactic 1;
wneuper@59395
   197
 setNextTactic 1 (Add_Given "solveFor x");
wneuper@59395
   198
 autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1);
wneuper@59395
   199
wneuper@59395
   200
 fetchProposedTactic 1;
wneuper@59395
   201
 setNextTactic 1 (Add_Find "solutions L");
wneuper@59395
   202
 autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1);
wneuper@59395
   203
wneuper@59395
   204
 fetchProposedTactic 1;
wneuper@59395
   205
 setNextTactic 1 (Specify_Theory "Test");
wneuper@59395
   206
 autoCalculate 1 (Step 1); refFormula 1 (get_pos 1 1);
wneuper@59395
   207
*-----since Model_Problem + complete_mod_ in case cas of SOME-----*)
wneuper@59395
   208
autoCalculate 1 (Step 1); 
wneuper@59395
   209
"----- step 1 ---";
wneuper@59395
   210
autoCalculate 1 (Step 1);
wneuper@59395
   211
"----- step 2 ---";
wneuper@59395
   212
autoCalculate 1 (Step 1);
wneuper@59395
   213
"----- step 3 ---";
wneuper@59395
   214
autoCalculate 1 (Step 1);
wneuper@59395
   215
*} ML {*
wneuper@59395
   216
"----- step 4 ---";
wneuper@59395
   217
autoCalculate 1 (Step 1);
wneuper@59395
   218
val (ptp as (_, p), _) = get_calc 1; val (Form t,_,_) = pt_extract ptp; 
wneuper@59395
   219
*} ML {*
wneuper@59395
   220
term2str t = "c + x + 1 / (2 + 1) * x ^^^ (2 + 1)";
wneuper@59395
   221
*} ML {*
wneuper@59395
   222
"----- step 5 ---";
wneuper@59395
   223
autoCalculate 1 (Step 1);
wneuper@59395
   224
val (ptp as (_, p), _) = get_calc 1; val (Form t,_,_) = pt_extract ptp; 
wneuper@59395
   225
*} ML {*
wneuper@59395
   226
term2str t;
wneuper@59395
   227
*} ML {*
wneuper@59395
   228
"----- step 6 ---";
wneuper@59395
   229
autoCalculate 1 (Step 1);
wneuper@59395
   230
val (ptp as (_, p), _) = get_calc 1; val (Form t,_,_) = pt_extract ptp; 
wneuper@59395
   231
*} ML {*
wneuper@59395
   232
term2str t;
wneuper@59395
   233
*} ML {*
wneuper@59395
   234
"----- step 7 ---";
wneuper@59395
   235
autoCalculate 1 (Step 1);
wneuper@59395
   236
val (ptp as (_, p), _) = get_calc 1; val (Form t,_,_) = pt_extract ptp; 
wneuper@59395
   237
*} ML {*
wneuper@59395
   238
term2str t;
wneuper@59395
   239
*} ML {*
wneuper@59395
   240
"----- step 8 ---";
wneuper@59395
   241
autoCalculate 1 (Step 1);
wneuper@59395
   242
val (ptp as (_, p), _) = get_calc 1;
wneuper@59395
   243
val (Form t,_,_) = pt_extract ptp;
wneuper@59395
   244
wneuper@59395
   245
*} ML {*
wneuper@59395
   246
*} ML {*
wneuper@59395
   247
term2str t
wneuper@59395
   248
*} ML {*
wneuper@59395
   249
if term2str t = "c + x + 1 / 3 * x ^^^ 3" andalso p = ([], Res) then ()
wneuper@59395
   250
else error "mathengine.sml -- fun autoCalculate -- end";
wneuper@59395
   251
*} ML {*
wneuper@59395
   252
*} ML {*
wneuper@59395
   253
*}
neuper@41943
   254
  ML {*"%%%%%%%%%%%%%%%%% end Interpret.thy %%%%%%%%%%%%%%%%%%%%";*}
neuper@41943
   255
  ML {*"%%%%%%%%%%%%%%%%% start xmlsrc.thy %%%%%%%%%%%%%%%%%%%%%";*}
neuper@52065
   256
  ML_file "xmlsrc/mathml.sml"           (*part.*)
neuper@52065
   257
  ML_file "xmlsrc/datatypes.sml"        (*TODO/part.*)
neuper@52065
   258
  ML_file "xmlsrc/pbl-met-hierarchy.sml"(*TODO after 2009-2/part.*)
neuper@55408
   259
  ML_file "xmlsrc/thy-hierarchy.sml"
neuper@52065
   260
  ML_file "xmlsrc/interface-xml.sml"     (*TODO after 2009-2*)
neuper@41943
   261
  ML {*"%%%%%%%%%%%%%%%%% end xmlsrc.thy %%%%%%%%%%%%%%%%%%%%%%%";*}
neuper@41943
   262
  ML {*"%%%%%%%%%%%%%%%%% start Frontend.thy %%%%%%%%%%%%%%%%%%%";*}
neuper@52065
   263
  ML_file "Frontend/messages.sml"
neuper@52065
   264
  ML_file "Frontend/states.sml"
neuper@52065
   265
  ML_file "Frontend/interface.sml"
neuper@52112
   266
  ML_file "Frontend/use-cases.sml"
neuper@48895
   267
(*WITHOUT inhibit exn WN1130621 Isabelle2012-->13 !thehier! THIS ERROR OCCURS:
neuper@48895
   268
  ... SAME ERROR HERE ON ISABELLE2012 AS IN ISAC ON ISABELLE2011*)
neuper@52065
   269
  ML_file          "print_exn_G.sml"
neuper@41943
   270
  ML {*"%%%%%%%%%%%%%%%%% end Frontend.thy %%%%%%%%%%%%%%%%%%%%%";*}
neuper@48895
   271
  ML {*"%%%%%%%%%%%%%%%%% start Knowledge %%%%%%%%%%%%%%%%%%%%%%";*}
neuper@52065
   272
  ML_file "Knowledge/delete.sml"
neuper@52065
   273
  ML_file "Knowledge/descript.sml"
neuper@52065
   274
  ML_file "Knowledge/atools.sml"
neuper@52065
   275
  ML_file "Knowledge/simplify.sml"
neuper@52065
   276
  ML_file "Knowledge/poly.sml"
wneuper@59370
   277
  ML_file "Knowledge/gcd_poly_ml.sml"
wneuper@59370
   278
  ML_file "Knowledge/gcd_poly_winkler.sml" (*must be after gcd_poly_ml.sml: redefines functions*)
wneuper@59370
   279
  ML_file "Knowledge/rational.sml"
wneuper@59370
   280
  ML_file "Knowledge/equation.sml"
wneuper@59370
   281
  ML_file "Knowledge/root.sml"
wneuper@59370
   282
  ML_file "Knowledge/lineq.sml"
wneuper@59370
   283
(*ML_file "Knowledge/rooteq.sml"    some complicated equations not recovered from 2002 *)
wneuper@59370
   284
  ML_file "Knowledge/rateq.sml"   (*some complicated equations not recovered from 2002 *)
wneuper@59370
   285
  ML_file "Knowledge/rootrat.sml"
wneuper@59370
   286
  ML_file "Knowledge/rootrateq.sml"(*ome complicated equations not recovered from 2002 *)
neuper@52065
   287
  ML_file "Knowledge/partial_fractions.sml"
neuper@52105
   288
  ML_file "Knowledge/polyeq.sml"
neuper@52105
   289
(*ML_file "Knowledge/rlang.sml"     much to clean up, similar tests in other files     *)
neuper@52065
   290
  ML_file "Knowledge/calculus.sml"
neuper@52065
   291
  ML_file "Knowledge/trig.sml"
neuper@52065
   292
(*ML_file "Knowledge/logexp.sml"    not included as stuff for presentation of authoring*) 
neuper@52065
   293
  ML_file "Knowledge/diff.sml"
neuper@52065
   294
  ML_file "Knowledge/integrate.sml"
wneuper@59395
   295
wneuper@59395
   296
ML {*
wneuper@59395
   297
*} ML {*
wneuper@59395
   298
"----------- simplify by ruleset reducing make_ratpoly_in";
wneuper@59395
   299
val thy = @{theory "Isac"};
wneuper@59395
   300
"===== test 1";
wneuper@59395
   301
val t = str2t "1/EI * (L * q_0 * x / 2 + -1 * q_0 * x^^^2 / 2)";
wneuper@59395
   302
wneuper@59395
   303
"----- stepwise from the rulesets in simplify_Integral and below-----";
wneuper@59395
   304
val rls = norm_Rational_noadd_fractions;
wneuper@59395
   305
case rewrite_set_inst_ thy true subs rls t of
wneuper@59395
   306
    SOME _ => error "integrate.sml simplify by ruleset norm_Rational_.#2"
wneuper@59395
   307
  | NONE => ();
wneuper@59395
   308
wneuper@59395
   309
"===== test 2";
wneuper@59395
   310
val rls = order_add_mult_in;
wneuper@59395
   311
val SOME (t,[]) = rewrite_set_ thy true rls t;
wneuper@59395
   312
if term2str t = "1 / EI * (L * (q_0 * x) / 2 + -1 * (q_0 * x ^^^ 2) / 2)" then()
wneuper@59395
   313
else error "integrate.sml simplify by ruleset order_add_mult_in #2";
wneuper@59395
   314
wneuper@59395
   315
"===== test 3";
wneuper@59395
   316
val rls = discard_parentheses;
wneuper@59395
   317
val SOME (t,[]) = rewrite_set_ thy true rls t;
wneuper@59395
   318
if term2str t = "1 / EI * (L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2)" then ()
wneuper@59395
   319
else error "integrate.sml simplify by ruleset discard_parenth.. #3";
wneuper@59395
   320
wneuper@59395
   321
"===== test 4";
wneuper@59395
   322
val rls = 
wneuper@59395
   323
  (append_rls "separate_bdv" collect_bdv
wneuper@59395
   324
 	  [Thm ("separate_bdv", num_str @{thm separate_bdv}),
wneuper@59395
   325
 		  (*"?a * ?bdv / ?b = ?a / ?b * ?bdv"*)
wneuper@59395
   326
 		 Thm ("separate_bdv_n", num_str @{thm separate_bdv_n}),
wneuper@59395
   327
      (*"?a * ?bdv ^^^ ?n / ?b = ?a / ?b * ?bdv ^^^ ?n"*)
wneuper@59395
   328
 		Thm ("separate_1_bdv", num_str @{thm separate_1_bdv}),
wneuper@59395
   329
 		  (*"?bdv / ?b = (1 / ?b) * ?bdv"*)
wneuper@59395
   330
 		Thm ("separate_1_bdv_n", num_str @{thm separate_1_bdv_n})
wneuper@59395
   331
       (*"?bdv ^^^ ?n / ?b = 1 / ?b * ?bdv ^^^ ?n"*)
wneuper@59395
   332
    ]);
wneuper@59395
   333
(*show_types := true;  --- do we need type-constraint in thms? *)
wneuper@59395
   334
@{thm separate_bdv};     (*::?'a does NOT rewrite here WITHOUT type constraint*)
wneuper@59395
   335
@{thm separate_bdv_n};   (*::real ..because of ^^^, rewrites*)
wneuper@59395
   336
@{thm separate_1_bdv};   (*::?'a*)
wneuper@59395
   337
val xxx = num_str @{thm separate_1_bdv}; (*::?'a*)
wneuper@59395
   338
@{thm separate_1_bdv_n}; (*::real ..because of ^^^*)
wneuper@59395
   339
(*show_types := false; --- do we need type-constraint in thms? YES ?!?!?!*)
wneuper@59395
   340
wneuper@59395
   341
val SOME (t, []) = rewrite_set_inst_ thy true subs rls t;
wneuper@59395
   342
if term2str t = "1 / EI * (L * q_0 / 2 * x + -1 * q_0 / 2 * x ^^^ 2)" then ()
wneuper@59395
   343
else error "integrate.sml simplify by ruleset separate_bdv.. #4";
wneuper@59395
   344
wneuper@59395
   345
"===== test 5";
wneuper@59395
   346
val t = str2t "1/EI * (L * q_0 * x / 2 + -1 * q_0 * x^^^2 / 2)";
wneuper@59395
   347
val rls = simplify_Integral;
wneuper@59395
   348
val SOME (t,[]) = rewrite_set_inst_ thy true subs rls t;
wneuper@59395
   349
(* given was:   "1 / EI * (L * q_0 * x / 2 + -1 * q_0 * x^^^2 / 2)" *)
wneuper@59395
   350
if term2str t = "1 / EI * (L * q_0 / 2 * x + -1 * q_0 / 2 * x ^^^ 2)" then ()
wneuper@59395
   351
else error "integrate.sml, simplify_Integral #99";
wneuper@59395
   352
wneuper@59395
   353
"........... 2nd integral ........................................";
wneuper@59395
   354
"........... 2nd integral ........................................";
wneuper@59395
   355
"........... 2nd integral ........................................";
wneuper@59395
   356
val t = str2t 
wneuper@59395
   357
"Integral 1 / EI * (L * q_0 / 2 * (x ^^^ 2 / 2) + -1 * q_0 / 2 * (x ^^^ 3 / 3)) D x";
wneuper@59395
   358
val rls = simplify_Integral;
wneuper@59395
   359
val SOME (t,[]) = rewrite_set_inst_ thy true subs rls t;
wneuper@59395
   360
if term2str t =
wneuper@59395
   361
   "Integral 1 / EI * (L * q_0 / 4 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3) D x"
wneuper@59395
   362
then () else raise error "integrate.sml, simplify_Integral #198";
wneuper@59395
   363
wneuper@59395
   364
val rls = integration_rules;
wneuper@59395
   365
val SOME (t,[]) = rewrite_set_ thy true rls t;
wneuper@59395
   366
term2str t;
wneuper@59395
   367
if term2str t = 
wneuper@59395
   368
   "1 / EI * (L * q_0 / 4 * (x ^^^ 3 / 3) + -1 * q_0 / 6 * (x ^^^ 4 / 4))"
wneuper@59395
   369
then () else error "integrate.sml, simplify_Integral #199";
wneuper@59395
   370
wneuper@59395
   371
wneuper@59395
   372
"----------- integrate by ruleset -----------------------";*} ML {*
wneuper@59395
   373
*}
wneuper@59395
   374
neuper@52065
   375
  ML_file "Knowledge/eqsystem.sml"
neuper@52065
   376
  ML_file "Knowledge/test.sml"
neuper@52065
   377
  ML_file "Knowledge/polyminus.sml"
neuper@52065
   378
  ML_file "Knowledge/vect.sml"
neuper@52065
   379
  ML_file "Knowledge/diffapp.sml"        (* postponed to dev. specification | TP-prog. *)
wneuper@59372
   380
  ML_file "Knowledge/biegelinie-1.sml"
wneuper@59395
   381
wneuper@59395
   382
ML {*
wneuper@59395
   383
*} ML {*
wneuper@59395
   384
(* tests on biegelinie
wneuper@59395
   385
   author: Walther Neuper 050826
wneuper@59395
   386
   (c) due to copyright terms
wneuper@59395
   387
*)
wneuper@59395
   388
*} ML {*
wneuper@59395
   389
trace_rewrite := false;
wneuper@59395
   390
"-----------------------------------------------------------------";
wneuper@59395
   391
"table of contents -----------------------------------------------";
wneuper@59395
   392
"-----------------------------------------------------------------";
wneuper@59395
   393
"----------- the rules -------------------------------------------";
wneuper@59395
   394
"----------- IntegrierenUndKonstanteBestimmen by rewriting -------";
wneuper@59395
   395
"----------- simplify_leaf for this script -----------------------";
wneuper@59395
   396
"----------- Bsp 7.27 me -----------------------------------------";
wneuper@59395
   397
"----------- Bsp 7.27 autoCalculate ------------------------------";
wneuper@59395
   398
"----------- SubProblem (_,[vonBelastungZu,Biegelinien] ----------";
wneuper@59395
   399
"----------- SubProblem (_,[setzeRandbedingungen,Biegelinien] ----";
wneuper@59395
   400
"----------- method [Biegelinien,setzeRandbedingungenEin] + exec -";
wneuper@59395
   401
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. --------";
wneuper@59395
   402
"----------- investigate normalforms in biegelinien --------------";
wneuper@59395
   403
"-----------------------------------------------------------------";
wneuper@59395
   404
"-----------------------------------------------------------------";
wneuper@59395
   405
"-----------------------------------------------------------------";
wneuper@59395
   406
wneuper@59395
   407
val thy = @{theory "Biegelinie"};
wneuper@59395
   408
val ctxt = thy2ctxt' "Biegelinie";
wneuper@59395
   409
fun str2term str = (Thm.term_of o the o (parse thy)) str;
wneuper@59395
   410
fun term2s t = term_to_string'' "Biegelinie" t;
wneuper@59395
   411
fun rewrit thm str = 
wneuper@59395
   412
    fst (the (rewrite_ thy tless_true e_rls true thm str));
wneuper@59395
   413
*} ML {*
wneuper@59395
   414
wneuper@59395
   415
"----------- the rules -------------------------------------------";
wneuper@59395
   416
"----------- the rules -------------------------------------------";
wneuper@59395
   417
"----------- the rules -------------------------------------------";
wneuper@59395
   418
val t = rewrit @{thm Belastung_Querkraft} (str2term "- qq x = - q_0"); term2s t;
wneuper@59395
   419
if term2s t = "Q' x = - q_0" then ()
wneuper@59395
   420
else error  "/biegelinie.sml: Belastung_Querkraft";
wneuper@59395
   421
wneuper@59395
   422
val t = rewrit @{thm Querkraft_Moment} (str2term "Q x = - q_0 * x + c"); term2s t;
wneuper@59395
   423
if term2s t = "M_b' x = - q_0 * x + c" then ()
wneuper@59395
   424
else error  "/biegelinie.sml: Querkraft_Moment";
wneuper@59395
   425
wneuper@59395
   426
val t = rewrit @{thm Moment_Neigung} (str2term "M_b x = -q_0 * x^^^2/2 + q_0/2 *L*x");
wneuper@59395
   427
    term2s t;
wneuper@59395
   428
if term2s t = "- EI * y'' x = - q_0 * x ^^^ 2 / 2 + q_0 / 2 * L * x" then ()
wneuper@59395
   429
else error  "biegelinie.sml: Moment_Neigung";
wneuper@59395
   430
*} ML {*
wneuper@59395
   431
wneuper@59395
   432
"----------- IntegrierenUndKonstanteBestimmen by rewriting -------";
wneuper@59395
   433
"----------- IntegrierenUndKonstanteBestimmen by rewriting -------";
wneuper@59395
   434
"----------- IntegrierenUndKonstanteBestimmen by rewriting -------";
wneuper@59395
   435
"----------- IntegrierenUndKonstanteBestimmen by rewriting -------";
wneuper@59395
   436
val t = str2term "M_b x = L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2";
wneuper@59395
   437
val t = rewrit @{thm Moment_Neigung} t;
wneuper@59395
   438
if term2s t = "- EI * y'' x = L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2" then ()
wneuper@59395
   439
else error "Moment_Neigung broken";
wneuper@59395
   440
(* was       I * ?y'' x = L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2"
wneuper@59395
   441
   before declaring "y''" as a constant *)
wneuper@59395
   442
wneuper@59395
   443
val t = rewrit @{thm make_fun_explicit} t; 
wneuper@59395
   444
if term2s t = "y'' x = 1 / - EI * (L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2)" then ()
wneuper@59395
   445
else error "make_fun_explicit broken";
wneuper@59395
   446
*} ML {*
wneuper@59395
   447
wneuper@59395
   448
"----------- simplify_leaf for this script -----------------------";
wneuper@59395
   449
"----------- simplify_leaf for this script -----------------------";
wneuper@59395
   450
"----------- simplify_leaf for this script -----------------------";
wneuper@59395
   451
val srls = Rls {id="srls_IntegrierenUnd..", 
wneuper@59395
   452
		preconds = [], 
wneuper@59395
   453
		rew_ord = ("termlessI",termlessI), 
wneuper@59395
   454
		erls = append_rls "erls_in_srls_IntegrierenUnd.." e_rls
wneuper@59395
   455
				  [(*for asm in NTH_CONS ...*)
wneuper@59395
   456
				   Calc ("Orderings.ord_class.less",eval_equ "#less_"),
wneuper@59395
   457
				   (*2nd NTH_CONS pushes n+-1 into asms*)
wneuper@59395
   458
				   Calc("Groups.plus_class.plus", eval_binop "#add_")
wneuper@59395
   459
				   ], 
wneuper@59395
   460
		srls = Erls, calc = [], errpatts = [],
wneuper@59395
   461
		rules = [Thm ("NTH_CONS",num_str @{thm NTH_CONS}),
wneuper@59395
   462
			 Calc("Groups.plus_class.plus", eval_binop "#add_"),
wneuper@59395
   463
			 Thm ("NTH_NIL",num_str @{thm NTH_NIL}),
wneuper@59395
   464
			 Calc("Tools.lhs", eval_lhs "eval_lhs_"),
wneuper@59395
   465
			 Calc("Tools.rhs", eval_rhs "eval_rhs_"),
wneuper@59395
   466
			 Calc("Atools.argument'_in", eval_argument_in "Atools.argument'_in")
wneuper@59395
   467
			 ],
wneuper@59395
   468
		scr = EmptyScr};
wneuper@59395
   469
val rm_ = str2term"[M_b 0 = 0, M_b L = 0]";
wneuper@59395
   470
val M__ = str2term"M_b x = -1 * x ^^^ 2 / 2 + x * c + c_2";
wneuper@59395
   471
val SOME (e1__,_) = rewrite_set_ thy false srls 
wneuper@59395
   472
  (str2term "(NTH::[real,bool list]=>bool) 1 " $ rm_);
wneuper@59395
   473
if term2str e1__ = "M_b 0 = 0" then () else error "biegelinie.sml simplify NTH 1 rm_";
wneuper@59395
   474
wneuper@59395
   475
val SOME (x1__,_) = 
wneuper@59395
   476
    rewrite_set_ thy false srls 
wneuper@59395
   477
		 (str2term"argument_in (lhs (M_b 0 = 0))");
wneuper@59395
   478
if term2str x1__ = "0" then ()
wneuper@59395
   479
else error "biegelinie.sml simplify argument_in (lhs (M_b 0 = 0)";
wneuper@59395
   480
wneuper@59395
   481
(*trace_rewrite := true; ..stopped Test_Isac.thy*)
wneuper@59395
   482
trace_rewrite:=false;
wneuper@59395
   483
*} ML {*
wneuper@59395
   484
wneuper@59395
   485
"----------- Bsp 7.27 me -----------------------------------------";
wneuper@59395
   486
"----------- Bsp 7.27 me -----------------------------------------";
wneuper@59395
   487
"----------- Bsp 7.27 me -----------------------------------------";
wneuper@59395
   488
val fmz = ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@59395
   489
	   "RandbedingungenBiegung [y 0 = 0, y L = 0]",
wneuper@59395
   490
	   "RandbedingungenMoment [M_b 0 = 0, M_b L = 0]",
wneuper@59395
   491
	   "FunktionsVariable x"];
wneuper@59395
   492
val (dI',pI',mI') =
wneuper@59395
   493
  ("Biegelinie",["MomentBestimmte","Biegelinien"],
wneuper@59395
   494
   ["IntegrierenUndKonstanteBestimmen"]);
wneuper@59395
   495
val p = e_pos'; val c = [];
wneuper@59395
   496
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@59395
   497
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   498
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   499
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   500
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   501
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   502
wneuper@59395
   503
*} ML {*
wneuper@59395
   504
val pits = get_obj g_pbl pt (fst p);writeln (itms2str_ ctxt pits);
wneuper@59395
   505
(*if itms2str_ ctxt pits = ... all 5 model-items*)
wneuper@59395
   506
val mits = get_obj g_met pt (fst p); writeln (itms2str_ ctxt mits);
wneuper@59395
   507
if itms2str_ ctxt mits = "[]" then ()
wneuper@59395
   508
else error  "biegelinie.sml: Bsp 7.27 #2";
wneuper@59395
   509
wneuper@59395
   510
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   511
case nxt of (_,Add_Given "FunktionsVariable x") => ()
wneuper@59395
   512
	  | _ => error  "biegelinie.sml: Bsp 7.27 #4a";
wneuper@59395
   513
wneuper@59395
   514
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   515
val mits = get_obj g_met pt (fst p);writeln (itms2str_ ctxt mits);
wneuper@59395
   516
(*if itms2str_ ctxt mits = ... all 6 guard-items*)
wneuper@59395
   517
case nxt of (_, Apply_Method ["IntegrierenUndKonstanteBestimmen"]) => ()
wneuper@59395
   518
	  | _ => error  "biegelinie.sml: Bsp 7.27 #4b";
wneuper@59395
   519
wneuper@59395
   520
"===== Apply_Method IntegrierenUndKonstanteBestimmen ============================";
wneuper@59395
   521
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   522
case pt of Nd (PblObj _, [Nd _]) => ((*Apply_Method + Take*))
wneuper@59395
   523
	  | _ => error  "biegelinie.sml: Bsp 7.27 #4c";
wneuper@59395
   524
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   525
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   526
wneuper@59395
   527
*} ML {*
wneuper@59395
   528
case nxt of 
wneuper@59395
   529
    (_,Subproblem ("Biegelinie", ["named", "integrate", "function"])) => ()
wneuper@59395
   530
	  | _ => error  "biegelinie.sml: Bsp 7.27 #4c";
wneuper@59395
   531
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   532
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   533
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   534
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   535
case nxt of (_, Apply_Method ["diff", "integration", "named"]) => ()
wneuper@59395
   536
	  | _ => error  "biegelinie.sml: Bsp 7.27 #5";
wneuper@59395
   537
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   538
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   539
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   540
case nxt of 
wneuper@59395
   541
    ("Check_Postcond", Check_Postcond ["named", "integrate", "function"]) => ()
wneuper@59395
   542
	  | _ => error  "biegelinie.sml: Bsp 7.27 #5a";
wneuper@59395
   543
wneuper@59395
   544
*} ML {*
wneuper@59395
   545
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   546
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   547
case nxt of 
wneuper@59395
   548
    (_, Subproblem ("Biegelinie", ["named", "integrate", "function"]))=>()
wneuper@59395
   549
  | _ => error "biegelinie.sml: Bsp 7.27 #5b";
wneuper@59395
   550
wneuper@59395
   551
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   552
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   553
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   554
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   555
case nxt of (_, Apply_Method ["diff", "integration","named"]) => ()
wneuper@59395
   556
	  | _ => error  "biegelinie.sml: Bsp 7.27 #6";
wneuper@59395
   557
wneuper@59395
   558
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   559
val (p,_,f,nxt,_,pt) = me nxt p c pt(*nxt = Check_Postcond ["named", "int..*);
wneuper@59395
   560
f2str f;
wneuper@59395
   561
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   562
case nxt of (_, Substitute ["x = 0"]) => ()
wneuper@59395
   563
	  | _ => error  "biegelinie.sml: Bsp 7.27 #7";
wneuper@59395
   564
wneuper@59395
   565
*} ML {*
wneuper@59395
   566
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   567
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   568
if f2str f = "0 = c_2 + c * 0 + -1 * q_0 / 2 * 0 ^^^ 2" then ()
wneuper@59395
   569
else error  "biegelinie.sml: Bsp 7.27 #8";
wneuper@59395
   570
wneuper@59395
   571
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   572
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   573
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   574
*} ML {*
wneuper@59395
   575
if f2str f = "0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2" then ()
wneuper@59395
   576
else error  "biegelinie.sml: Bsp 7.27 #9";
wneuper@59395
   577
wneuper@59395
   578
*} ML {*
wneuper@59395
   579
(*val nxt = (+, Subproblem ("Biegelinie", ["normalise", ..lin..sys]))*)
wneuper@59395
   580
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   581
*} ML {*
wneuper@59395
   582
nxt;
wneuper@59395
   583
*} ML {*
wneuper@59395
   584
"~~~~~ fun xxx, args:"; val () = ();
wneuper@59395
   585
"~~~~~ fun me, args:"; val ((_, tac), p, _(*NEW remove*), pt) = (nxt, p, c, pt);
wneuper@59395
   586
val ("ok", (_, _, ptp)) = locatetac tac (pt,p)
wneuper@59395
   587
    val (pt, p) = ptp;
wneuper@59395
   588
(*step p ((pt, Ctree.e_pos'),[]) Theory loader: undefined entry for theory "Isac.Pure"*)
wneuper@59395
   589
"~~~~~ fun step, args:"; val ((ip as (_, p_)), (ptp as (pt,p), tacis)) = (p, ((pt, Ctree.e_pos'),[]));
wneuper@59395
   590
val pIopt = get_pblID (pt,ip);
wneuper@59395
   591
ip = ([], Ctree.Res) = false;
wneuper@59395
   592
tacis = [];
wneuper@59395
   593
pIopt (*SOME*);
wneuper@59395
   594
member op = [Ctree.Pbl, Ctree.Met] p_ 
wneuper@59395
   595
  	                    andalso is_none (Ctree.get_obj Ctree.g_env pt (fst p)) = true;
wneuper@59395
   596
(*nxt_specify_ (pt, ip) Theory loader: undefined entry for theory "Isac.Pure"*)
wneuper@59395
   597
"~~~~~ fun nxt_specify_, args:"; val (ptp as (pt, (p, p_))) = ((pt, ip));
wneuper@59395
   598
val pblobj as (Ctree.PblObj {meth, origin = origin as (oris, (dI', pI', mI'), _),
wneuper@59395
   599
  		  probl, spec = (dI, pI, mI), ...}) = Ctree.get_obj I pt p;
wneuper@59395
   600
Ctree.just_created_ pblobj (*by Subproblem*) andalso origin <> Ctree.e_origin = false;
wneuper@59395
   601
        val cpI = if pI = e_pblID then pI' else pI;
wneuper@59395
   602
  	    val cmI = if mI = e_metID then mI' else mI;
wneuper@59395
   603
  	    val {ppc, prls, where_, ...} = Specify.get_pbt cpI;
wneuper@59395
   604
  	    val pre = Stool.check_preconds "thy 100820" prls where_ probl;
wneuper@59395
   605
  	    val pb = foldl and_ (true, map fst pre);
wneuper@59395
   606
  	    val (_, tac) =
wneuper@59395
   607
  	      Chead.nxt_spec p_ pb oris (dI', pI', mI') (probl, meth) (ppc, (#ppc o Specify.get_met) cmI) (dI, pI, mI);
wneuper@59395
   608
tac (*Add_Given "equalities\n [0 = c_2 +..*);
wneuper@59395
   609
*} ML {*
wneuper@59395
   610
(*Chead.nxt_specif tac ptp   Theory loader: undefined entry for theory "Isac.Pure"*)
wneuper@59395
   611
"~~~~~ fun nxt_specif, args:"; val ((Tac.Add_Given ct), ptp) = (tac, ptp);
wneuper@59395
   612
"~~~~~ fun nxt_specif_additem, args:"; val (sel, ct, (ptp as (pt, (p, Pbl)))) = ( "#Given", ct, ptp);
wneuper@59395
   613
val PblObj {origin = (oris, (dI', pI', _), _), spec = (dI, pI, _), probl = pbl, ctxt, ...} = get_obj I pt p;
wneuper@59395
   614
      val thy = if dI = e_domID then assoc_thy dI' else assoc_thy dI;
wneuper@59395
   615
      val cpI = if pI = e_pblID then pI' else pI;
wneuper@59395
   616
*} ML {*
wneuper@59395
   617
val Err msg = appl_add ctxt sel oris pbl ((#ppc o Specify.get_pbt) cpI) ct
wneuper@59395
   618
*} ML {*
wneuper@59395
   619
([(Tac.Tac msg, Tac.Tac_ (Thy_Info_get_theory "Isac", msg,msg,msg),
wneuper@59395
   620
	          (e_pos', (Selem.e_istate, Selem.e_ctxt)))], [], ptp)
wneuper@59395
   621
*} ML {*
wneuper@59395
   622
*} ML {*
wneuper@59395
   623
*} ML {*
wneuper@59395
   624
*} ML {*
wneuper@59395
   625
*} ML {*
wneuper@59395
   626
*} ML {*
wneuper@59395
   627
*} ML {*
wneuper@59395
   628
*} ML {*
wneuper@59395
   629
*} ML {*
wneuper@59395
   630
*} ML {*
wneuper@59395
   631
*} ML {*
wneuper@59395
   632
*} ML {*
wneuper@59395
   633
*} ML {*
wneuper@59395
   634
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   635
*} ML {*
wneuper@59395
   636
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   637
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   638
*} ML {*
wneuper@59395
   639
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   640
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   641
case nxt of (_, Apply_Method ["EqSystem", "normalise", "2x2"]) => ()
wneuper@59395
   642
	  | _ => error  "biegelinie.sml: Bsp 7.27 #10";
wneuper@59395
   643
wneuper@59395
   644
*} ML {*
wneuper@59395
   645
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   646
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   647
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   648
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   649
(*val nxt = Subproblem ["triangular", "2x2", "LINEAR", "system"]*)
wneuper@59395
   650
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   651
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   652
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   653
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   654
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   655
case nxt of (_, Apply_Method["EqSystem", "top_down_substitution", "2x2"]) => ()
wneuper@59395
   656
	  | _ => error  "biegelinie.sml: Bsp 7.27 #11";
wneuper@59395
   657
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   658
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   659
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   660
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   661
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   662
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   663
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   664
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   665
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   666
case nxt of (_, Check_Postcond ["normalise", "2x2", "LINEAR", "system"]) => ()
wneuper@59395
   667
	  | _ => error  "biegelinie.sml: Bsp 7.27 #12";
wneuper@59395
   668
wneuper@59395
   669
*} ML {*
wneuper@59395
   670
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   671
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   672
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   673
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   674
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   675
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   676
case nxt of
wneuper@59395
   677
    (_, Subproblem ("Biegelinie", ["named", "integrate", "function"]))=>()
wneuper@59395
   678
	  | _ => error  "biegelinie.sml: Bsp 7.27 #13";
wneuper@59395
   679
wneuper@59395
   680
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   681
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   682
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   683
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   684
case nxt of (_, Apply_Method ["diff", "integration", "named"]) => ()
wneuper@59395
   685
	  | _ => error  "biegelinie.sml: Bsp 7.27 #14";
wneuper@59395
   686
wneuper@59395
   687
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   688
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   689
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   690
case nxt of
wneuper@59395
   691
    (_, Check_Postcond ["named", "integrate", "function"]) => ()
wneuper@59395
   692
  | _ => error  "biegelinie.sml: Bsp 7.27 #15";
wneuper@59395
   693
wneuper@59395
   694
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   695
if f2str f =
wneuper@59395
   696
  "y' x = c + 1 / (-1 * EI) * (L * q_0 / 4 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3)"
wneuper@59395
   697
then () else error  "biegelinie.sml: Bsp 7.27 #16 f";
wneuper@59395
   698
case nxt of
wneuper@59395
   699
    (_, Subproblem ("Biegelinie", ["named", "integrate", "function"]))=>()
wneuper@59395
   700
	  | _ => error  "biegelinie.sml: Bsp 7.27 #16";
wneuper@59395
   701
wneuper@59395
   702
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   703
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   704
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   705
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   706
case nxt of (_, Apply_Method ["diff", "integration", "named"]) => ()
wneuper@59395
   707
	  | _ => error  "biegelinie.sml: Bsp 7.27 #17";
wneuper@59395
   708
wneuper@59395
   709
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   710
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   711
if f2str f = 
wneuper@59395
   712
   "y x =\nc_2 + c * x +\n\
wneuper@59395
   713
   \1 / (-1 * EI) * (L * q_0 / 12 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)"
wneuper@59395
   714
then () else error  "biegelinie.sml: Bsp 7.27 #18 f";
wneuper@59395
   715
case nxt of
wneuper@59395
   716
    (_, Check_Postcond ["named", "integrate", "function"]) => ()
wneuper@59395
   717
  | _ => error  "biegelinie.sml: Bsp 7.27 #18";
wneuper@59395
   718
wneuper@59395
   719
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   720
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   721
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   722
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   723
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   724
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   725
case nxt of
wneuper@59395
   726
    (_, Subproblem
wneuper@59395
   727
            ("Biegelinie", ["normalise", "2x2", "LINEAR", "system"])) => ()
wneuper@59395
   728
  | _ => error  "biegelinie.sml: Bsp 7.27 #19";
wneuper@59395
   729
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   730
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   731
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   732
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   733
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   734
case nxt of (_, Apply_Method ["EqSystem", "normalise", "2x2"]) => ()
wneuper@59395
   735
	  | _ => error  "biegelinie.sml: Bsp 7.27 #20";
wneuper@59395
   736
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   737
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   738
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   739
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   740
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   741
if f2str f = "[c_2 = 0 / (-1 * EI), L * c + c_2 = -1 * q_0 * L ^^^ 4 / (-24 * EI)]" then ()
wneuper@59395
   742
else error  "biegelinie.sml: Bsp 7.27 #21 f";
wneuper@59395
   743
case nxt of
wneuper@59395
   744
    (_, Subproblem
wneuper@59395
   745
            ("Biegelinie", ["triangular", "2x2", "LINEAR", "system"])) =>()
wneuper@59395
   746
  | _ => error  "biegelinie.sml: Bsp 7.27 #21";
wneuper@59395
   747
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   748
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   749
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   750
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   751
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   752
case nxt of (_, Apply_Method["EqSystem", "top_down_substitution", "2x2"]) => ()
wneuper@59395
   753
	  | _ => error  "biegelinie.sml: Bsp 7.27 #22";
wneuper@59395
   754
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   755
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   756
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   757
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   758
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   759
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   760
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   761
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   762
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   763
case nxt of (_, Check_Postcond ["normalise", "2x2", "LINEAR", "system"]) => ()
wneuper@59395
   764
	  | _ => error  "biegelinie.sml: Bsp 7.27 #23";
wneuper@59395
   765
wneuper@59395
   766
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   767
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   768
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   769
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   770
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   771
if f2str f = 
wneuper@59395
   772
  "y x =\n0 / (-1 * EI) +\n(0 / (-1 * EI) / L + -1 * q_0 * L ^^^ 4 / (-24 * EI) / L * x) +\n" ^
wneuper@59395
   773
  "(2 * L * q_0 / (-1 * 24 * EI) * x ^^^ 3 +\n -1 * q_0 / (-1 * 24 * EI) * x ^^^ 4)"
wneuper@59395
   774
then () else error  "biegelinie.sml: Bsp 7.27 #24 f";
wneuper@59395
   775
case nxt of ("End_Proof'", End_Proof') => ()
wneuper@59395
   776
	  | _ => error  "biegelinie.sml: Bsp 7.27 #24";
wneuper@59395
   777
wneuper@59395
   778
show_pt pt;
wneuper@59395
   779
(*(([], Frm), Problem (Biegelinie.thy, [MomentBestimmte, Biegelinien])),
wneuper@59395
   780
(([1], Frm), q_ x = q_0),
wneuper@59395
   781
(([1], Res), - q_ x = - q_0),
wneuper@59395
   782
(([2], Res), Q' x = - q_0),
wneuper@59395
   783
(([3], Pbl), Integrate (- q_0, x)),
wneuper@59395
   784
(([3,1], Frm), Q x = Integral - q_0 D x),
wneuper@59395
   785
(([3,1], Res), Q x = -1 * q_0 * x + c),
wneuper@59395
   786
(([3], Res), Q x = -1 * q_0 * x + c),
wneuper@59395
   787
(([4], Res), M_b' x = -1 * q_0 * x + c),
wneuper@59395
   788
(([5], Pbl), Integrate (-1 * q_0 * x + c, x)),
wneuper@59395
   789
(([5,1], Frm), M_b x = Integral -1 * q_0 * x + c D x),
wneuper@59395
   790
(([5,1], Res), M_b x = -1 * q_0 * x ^^^ 2 / 2 + x * c + c_2),
wneuper@59395
   791
(([5], Res), M_b x = -1 * q_0 * x ^^^ 2 / 2 + x * c + c_2),
wneuper@59395
   792
(([6], Res), M_b 0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2),
wneuper@59395
   793
(([7], Res), 0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2),
wneuper@59395
   794
(([8], Res), M_b L = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2),
wneuper@59395
   795
(([9], Res), 0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2),
wneuper@59395
   796
(([10], Pbl), solveSystem [0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2] [c_2]),
wneuper@59395
   797
(([10,1], Frm), [0 = -1 * q_0 * 0 ^^^ 2 / 2 + 0 * c + c_2,
wneuper@59395
   798
 0 = -1 * q_0 * L ^^^ 2 / 2 + L * c + c_2]),
wneuper@59395
   799
(([10,1], Res), [0 = c_2, 0 = -1 * (q_0 * L ^^^ 2) / 2 + (L * c + c_2)]),
wneuper@59395
   800
(([10,2], Res), [c_2 = 0, L * c + c_2 = 0 + -1 * (-1 * (q_0 * L ^^^ 2) / 2)]),
wneuper@59395
   801
(([10,3], Res), [c_2 = 0, L * c + c_2 = q_0 * L ^^^ 2 / 2]),
wneuper@59395
   802
(([10,4], Pbl), solveSystem [L * c + c_2 = q_0 * L ^^^ 2 / 2] [c_2]),
wneuper@59395
   803
(([10,4,1], Frm), L * c + c_2 = q_0 * L ^^^ 2 / 2),
wneuper@59395
   804
(([10,4,1], Res), L * c + 0 = q_0 * L ^^^ 2 / 2),
wneuper@59395
   805
(([10,4,2], Res), L * c = q_0 * L ^^^ 2 / 2),
wneuper@59395
   806
(([10,4,3], Res), c = q_0 * L ^^^ 2 / 2 / L),
wneuper@59395
   807
(([10,4,4], Res), c = L * q_0 / 2),
wneuper@59395
   808
(([10,4,5], Res), [c = L * q_0 / 2, c_2 = 0]),
wneuper@59395
   809
(([10,4], Res), [c = L * q_0 / 2, c_2 = 0]),
wneuper@59395
   810
(([10], Res), [c = L * q_0 / 2, c_2 = 0]),
wneuper@59395
   811
(([11], Res), M_b x = -1 * q_0 * x ^^^ 2 / 2 + x * (L * q_0 / 2) + 0),
wneuper@59395
   812
(([12], Res), M_b x = L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2),
wneuper@59395
   813
(([13], Res), EI * y'' x = L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2),
wneuper@59395
   814
(([14], Res), y'' x = 1 / EI * (L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2)),
wneuper@59395
   815
(([15], Pbl), Integrate (1 / EI * (L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2), x)),
wneuper@59395
   816
(([15,1], Frm), y' x = Integral 1 / EI * (L * q_0 * x / 2 + -1 * q_0 * x ^^^ 2 / 2) D x),
wneuper@59395
   817
(([15,1], Res), y' x =
wneuper@59395
   818
(Integral L * q_0 * x / 2 D x + Integral -1 * q_0 * x ^^^ 2 / 2 D x) / EI +
wneuper@59395
   819
c)]*)
wneuper@59395
   820
wneuper@59395
   821
"----------- Bsp 7.27 autoCalculate ------------------------------";
wneuper@59395
   822
"----------- Bsp 7.27 autoCalculate ------------------------------";
wneuper@59395
   823
"----------- Bsp 7.27 autoCalculate ------------------------------";
wneuper@59395
   824
 reset_states ();
wneuper@59395
   825
 CalcTree [(["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@59395
   826
	     "RandbedingungenBiegung [y 0 = 0, y L = 0]",
wneuper@59395
   827
	     "RandbedingungenMoment [M_b 0 = 0, M_b L = 0]",
wneuper@59395
   828
	     "FunktionsVariable x"],
wneuper@59395
   829
	    ("Biegelinie",
wneuper@59395
   830
	     ["MomentBestimmte","Biegelinien"],
wneuper@59395
   831
	     ["IntegrierenUndKonstanteBestimmen"]))];
wneuper@59395
   832
 moveActiveRoot 1;
wneuper@59395
   833
 autoCalculate 1 CompleteCalcHead; 
wneuper@59395
   834
wneuper@59395
   835
 fetchProposedTactic 1 (*->"Apply_Method" IntegrierenUndKonstanteBestimmen*);
wneuper@59395
   836
(*
wneuper@59395
   837
> val (_,Apply_Method' (_, NONE, ScrState is), _)::_ = tacis;
wneuper@59395
   838
val it = true : bool
wneuper@59395
   839
*)
wneuper@59395
   840
 autoCalculate 1 (Step 1) (*->GENERATED ([1], Frm)*);
wneuper@59395
   841
 val ((pt,_),_) = get_calc 1;
wneuper@59395
   842
 case pt of Nd (PblObj _, [Nd _]) => ((*Apply_Method + Take*))
wneuper@59395
   843
	  | _ => error  "biegelinie.sml: Bsp 7.27 autoCalculate#4c";
wneuper@59395
   844
wneuper@59395
   845
 autoCalculate 1 CompleteCalc;  
wneuper@59395
   846
val ((pt,p),_) = get_calc 1;
wneuper@59395
   847
if p = ([], Res) andalso length (children pt) = 23 andalso 
wneuper@59395
   848
term2str (get_obj g_res pt (fst p)) = 
wneuper@59395
   849
"y x =\n0 / (-1 * EI) +\n(0 / (-1 * EI) / L + -1 * q_0 * L ^^^ 4 / (-24 * EI) / L * x) +\n(2 * L * q_0 / (-1 * 24 * EI) * x ^^^ 3 +\n -1 * q_0 / (-1 * 24 * EI) * x ^^^ 4)"
wneuper@59395
   850
then () else error "biegelinie.sml: 1st biegelin.7.27 changed";
wneuper@59395
   851
wneuper@59395
   852
 val (unc, del, gen) = (([],Pbl), ([],Pbl), ([],Res));
wneuper@59395
   853
 getFormulaeFromTo 1 unc gen 1 (*only level 1*) false;
wneuper@59395
   854
 show_pt pt;
wneuper@59395
   855
wneuper@59395
   856
(*check all formulae for getTactic*)
wneuper@59395
   857
 getTactic 1 ([1],Frm) (*see smltest/../reverse-rew.sml*);
wneuper@59395
   858
 getTactic 1 ([5],Res) (*tac2xml: not impl. for Substitute ["x = 0"]*);
wneuper@59395
   859
 getTactic 1 ([6],Res) (* ---"---                      ["M_b 0 = 0"]*);
wneuper@59395
   860
 getTactic 1 ([7],Res) (*!!!!!Take!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*);
wneuper@59395
   861
 getTactic 1 ([8],Frm) (*tac2xml: not impl. for Substitute ["x = L"]*);
wneuper@59395
   862
 getTactic 1 ([8],Res) (* ---"---                      ["M_b L = 0"]*);
wneuper@59395
   863
wneuper@59395
   864
"----------- SubProblem (_,[vonBelastungZu,Biegelinien] ----------";
wneuper@59395
   865
"----------- SubProblem (_,[vonBelastungZu,Biegelinien] ----------";
wneuper@59395
   866
"----------- SubProblem (_,[vonBelastungZu,Biegelinien] ----------";
wneuper@59395
   867
val fmz = 
wneuper@59395
   868
    ["Streckenlast q_0","FunktionsVariable x",
wneuper@59395
   869
     "Funktionen [Q x = c + -1 * q_0 * x, \
wneuper@59395
   870
     \M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2,\
wneuper@59395
   871
     \ y' x = c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3),\
wneuper@59395
   872
     \ y x = c_4 + c_3 * x + 1 / (-1 * EI) * (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)]"];
wneuper@59395
   873
val (dI',pI',mI') = ("Biegelinie", ["vonBelastungZu","Biegelinien"],
wneuper@59395
   874
		     ["Biegelinien","ausBelastung"]);
wneuper@59395
   875
val p = e_pos'; val c = [];
wneuper@59395
   876
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@59395
   877
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   878
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   879
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   880
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   881
case nxt of ("Apply_Method", Apply_Method ["Biegelinien", "ausBelastung"]) => ()
wneuper@59395
   882
| _ => error "biegelinie.sml met2 b";
wneuper@59395
   883
wneuper@59395
   884
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =   "q_ x = q_0";
wneuper@59395
   885
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "- q_ x = - q_0";
wneuper@59395
   886
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =  "Q' x = - q_0";
wneuper@59395
   887
case nxt of (_, Subproblem (_, ["named", "integrate", "function"])) => ()
wneuper@59395
   888
| _ => error "biegelinie.sml met2 c";
wneuper@59395
   889
wneuper@59395
   890
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   891
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   892
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   893
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   894
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   895
wneuper@59395
   896
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "Q x = c + -1 * q_0 * x";
wneuper@59395
   897
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "Q x = c + -1 * q_0 * x";
wneuper@59395
   898
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "M_b' x = c + -1 * q_0 * x";
wneuper@59395
   899
case nxt of (_,Subproblem (_, ["named", "integrate", "function"])) => ()
wneuper@59395
   900
| _ => error "biegelinie.sml met2 d";
wneuper@59395
   901
wneuper@59395
   902
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   903
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   904
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   905
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   906
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@59395
   907
		   "M_b x = Integral c + -1 * q_0 * x D x";
wneuper@59395
   908
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@59395
   909
		   "M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@59395
   910
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   911
		   "M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@59395
   912
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   913
		   "- EI * y'' x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@59395
   914
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   915
		   "y'' x = 1 / - EI * (c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2)";
wneuper@59395
   916
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   917
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   918
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   919
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   920
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   921
    "y' x = Integral 1 / - EI * (c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) D x";
wneuper@59395
   922
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   923
"y' x = Integral 1 / (-1 * EI) * (c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) D x";
wneuper@59395
   924
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   925
"y' x =\nc_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3)";
wneuper@59395
   926
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   927
"y' x =\nc_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3)";
wneuper@59395
   928
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   929
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   930
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   931
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   932
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   933
"y x =\nIntegral c_3 +\n         1 / (-1 * EI) *\n         (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3) D x";
wneuper@59395
   934
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   935
"y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
wneuper@59395
   936
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
wneuper@59395
   937
   "y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
wneuper@59395
   938
val (p,_,f,nxt,_,pt) = me nxt p c pt; 
wneuper@59395
   939
if f2str f =
wneuper@59395
   940
   "[Q x = c + -1 * q_0 * x, M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2,\n y' x =\n c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3),\n y x =\n c_4 + c_3 * x +\n 1 / (-1 * EI) *\n (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)]"
wneuper@59395
   941
then case nxt of ("End_Proof'", End_Proof') => ()
wneuper@59395
   942
  | _ => error "biegelinie.sml met2 e 1"
wneuper@59395
   943
else error "biegelinie.sml met2 e 2";
wneuper@59395
   944
wneuper@59395
   945
"----------- SubProblem (_,[setzeRandbedingungen,Biegelinien] ----";
wneuper@59395
   946
"----------- SubProblem (_,[setzeRandbedingungen,Biegelinien] ----";
wneuper@59395
   947
"----------- SubProblem (_,[setzeRandbedingungen,Biegelinien] ----";
wneuper@59395
   948
val fmz = ["functionEq (M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2)", 
wneuper@59395
   949
	   "substitution (M_b L = 0)", 
wneuper@59395
   950
	   "equality equ_equ"];
wneuper@59395
   951
val (dI',pI',mI') = ("Biegelinie", ["makeFunctionTo","equation"],
wneuper@59395
   952
		     ["Equation","fromFunction"]);
wneuper@59395
   953
val p = e_pos'; val c = [];
wneuper@59395
   954
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
wneuper@59395
   955
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   956
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   957
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   958
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59395
   959
wneuper@59395
   960
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@59395
   961
			"M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
wneuper@59395
   962
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@59395
   963
                        "M_b L = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2";
wneuper@59395
   964
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
wneuper@59395
   965
			"0 = c_2 + c * L + -1 * q_0 / 2 * L ^^^ 2";
wneuper@59395
   966
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   967
val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
wneuper@59395
   968
if (* f2str f = "0 = c_2 + L * c + -1 * q_0 / 2 * L ^^^ 2" CHANGE NOT considered, already on leave*)
wneuper@59395
   969
   f2str f = "0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2"
wneuper@59395
   970
then case nxt of ("End_Proof'", End_Proof') => ()
wneuper@59395
   971
  | _ => error "biegelinie.sml: SubProblem (_,[setzeRandbed 1"
wneuper@59395
   972
else error "biegelinie.sml: SubProblem (_,[setzeRandbed 2";
wneuper@59395
   973
*} ML {*
wneuper@59395
   974
*}
wneuper@59395
   975
wneuper@59372
   976
(*ML_file "Knowledge/biegelinie-2.sml" since Isabelle2017: exception Size raised *)
neuper@52065
   977
  ML_file "Knowledge/algein.sml"
neuper@52065
   978
  ML_file "Knowledge/diophanteq.sml"
neuper@52065
   979
  ML_file "Knowledge/Inverse_Z_Transform/inverse_z_transform.sml"
wneuper@59232
   980
  ML_file "Knowledge/inssort.sml"
neuper@52065
   981
  ML_file "Knowledge/isac.sml"
neuper@52065
   982
  ML_file "Knowledge/build_thydata.sml"
neuper@48895
   983
  ML {*"%%%%%%%%%%%%%%%%% end Knowledge %%%%%%%%%%%%%%%%%%%%%%%%";*}
wneuper@59144
   984
  ML {*"%%%%%%%%%%%%%%%%% start ADDTESTS %%%%%%%%%%%%%%%%%%%%%%%";*}
wneuper@59144
   985
  ML_file "~~/test/Tools/isac/ADDTESTS/libisabelle/mini-test.sml"
wneuper@59175
   986
  ML_file "~~/test/Tools/isac/ADDTESTS/libisabelle/protocol.sml"
wneuper@59144
   987
  ML {*"%%%%%%%%%%%%%%%%% end ADDTESTS %%%%%%%%%%%%%%%%%%%%%%%%%";*}
wneuper@59144
   988
wneuper@59144
   989
  ML {*"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";*}
wneuper@59144
   990
  ML {*"%%%%%%%%%%%%%%%%% end Test_Isac %%%%%%%%%%%%%%%%%%%%%%%%";*}
neuper@41945
   991
  ML {*"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";*}
neuper@41943
   992
neuper@48895
   993
section {* history of tests *}
neuper@48895
   994
text {*
neuper@48895
   995
  Systematic regression tests have been introduced to isac development in 2003.
neuper@52139
   996
  Sanity of the regression tests suffers from updates following Isabelle development,
neuper@48895
   997
  which mostly exceeded the resources available in isac's development.
neuper@48895
   998
neuper@48895
   999
  The survey below shall support to efficiently use the tests for isac 
neuper@48895
  1000
  on different Isabelle versions. Conclusion in most cases will be: 
neuper@48895
  1001
neuper@48895
  1002
  !!! Use most recent tests or go back to the old notebook
neuper@48895
  1003
      with isac on Isabelle2002. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
neuper@48895
  1004
*}
neuper@48895
  1005
wneuper@59323
  1006
wneuper@59323
  1007
subsection {* isac on Isabelle2015 *}
wneuper@59323
  1008
subsubsection {* Summary of development *}
wneuper@59323
  1009
text {*
wneuper@59373
  1010
  * Add signatures from top of thy-hierarchy down to Interpret (not ProgLang).
wneuper@59323
  1011
    This complicates Test_Isac, see "Prepare running tests" above.
wneuper@59323
  1012
  * Remove TTY interface.
wneuper@59323
  1013
  * Re-activate insertion sort.
wneuper@59323
  1014
*}
wneuper@59323
  1015
subsubsection {* State of tests: unchanged *}
wneuper@59323
  1016
subsubsection {* Changesets of begin and end *}
wneuper@59323
  1017
text {*
wneuper@59323
  1018
  last changeset with Test_Isac 2f1b2854927a
wneuper@59323
  1019
  first changeset with Test_Isac ???
wneuper@59323
  1020
*}
wneuper@59323
  1021
wneuper@59120
  1022
subsection {* isac on Isabelle2014 *}
wneuper@59120
  1023
subsubsection {* Summary of development *}
wneuper@59120
  1024
text {*
wneuper@59120
  1025
  migration from "isabelle tty" --> libisabelle
wneuper@59120
  1026
*}
wneuper@59120
  1027
neuper@55319
  1028
subsection {* isac on Isabelle2013-2 *}
neuper@55319
  1029
subsubsection {* Summary of development *}
neuper@55319
  1030
text {*
wneuper@55500
  1031
  reactivated context_thy
neuper@55319
  1032
*}
neuper@55319
  1033
subsubsection {* State of tests *}
neuper@55319
  1034
text {*
neuper@55319
  1035
  TODO
neuper@55319
  1036
*}
neuper@55319
  1037
subsubsection {* Changesets of begin and end *}
neuper@55319
  1038
text {*
neuper@55319
  1039
  TODO
neuper@55319
  1040
  :
neuper@55319
  1041
  : isac on Isablle2013-2
neuper@55319
  1042
  :
neuper@55319
  1043
  Changeset: 55318 (03826ceb24da) merged
neuper@55319
  1044
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@55319
  1045
  Date: 2013-12-12 14:27:37 +0100 (7 minutes)
neuper@55319
  1046
*}
neuper@55319
  1047
neuper@55284
  1048
subsection {* isac on Isabelle2013-1 *}
neuper@55284
  1049
subsubsection {* Summary of development *}
neuper@55284
  1050
text {*
neuper@55284
  1051
  Isabelle2013-1 was replaced within a few weeks due to problems with the document model;
neuper@55284
  1052
  no significant development steps for ISAC.
neuper@55284
  1053
*}
neuper@55284
  1054
subsubsection {* State of tests *}
neuper@55284
  1055
text {*
neuper@55284
  1056
  See points in subsection "isac on Isabelle2011", "State of tests".
neuper@55284
  1057
*}
neuper@55284
  1058
subsubsection {* Changesets of begin and end *}
neuper@55284
  1059
text {*
neuper@55284
  1060
  Changeset: 55283 (d6e9a34e7142) notes for resuming work on Polynomial.thy
neuper@55284
  1061
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@55284
  1062
  Date: 2013-12-03 18:13:31 +0100 (8 days)
neuper@55284
  1063
  :
neuper@55284
  1064
  : isac on Isablle2013-1
neuper@55284
  1065
  :
neuper@55284
  1066
  Changeset: 55279 (130688f277ba) Isabelle2013 --> 2013-1: Test_Isac perfect
neuper@55284
  1067
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@55284
  1068
  Date: 2013-11-21 18:12:17 +0100 (2 weeks)
neuper@55284
  1069
neuper@55284
  1070
*}
neuper@55284
  1071
neuper@48895
  1072
subsection {* isac on Isabelle2013 *}
neuper@48895
  1073
subsubsection {* Summary of development *}
neuper@48895
  1074
text {*
neuper@52150
  1075
  # Oct.13: replaced "axioms" by "axiomatization"
neuper@52150
  1076
  # Oct.13: Mathias Lehnfeld started removing Unsynchornized.ref
neuper@52106
  1077
  # Sep.13: integrated gcd_poly (functional, without Unsychronized.ref) into
neuper@52106
  1078
    simplification of multivariate rationals (without improving the rulesets involved).
neuper@48895
  1079
*}
neuper@48895
  1080
subsubsection {* Run tests *}
neuper@48895
  1081
text {*
neuper@52150
  1082
  Is standard now; this subsection will be discontinued under Isabelle2013-1
neuper@48895
  1083
*}
neuper@48895
  1084
subsubsection {* State of tests *}
neuper@48895
  1085
text {*
neuper@52150
  1086
  See points in subsection "isac on Isabelle2011", "State of tests".
neuper@52150
  1087
  # re-activated listC.sml
neuper@48895
  1088
*}
neuper@48895
  1089
subsubsection {* Changesets of begin and end *}
neuper@48895
  1090
text {*
neuper@52175
  1091
  changeset 52174:8b055b17bd84 --- removed all code concerned with "castab = Unsynchronized.ref"
neuper@52175
  1092
  User: Mathias Lehnfeld <s1210629013@students.fh-hagenberg.at>
neuper@52175
  1093
  Date: Tue Nov 19 22:23:30 2013 +0000
neuper@52079
  1094
  :
neuper@52079
  1095
  : isac on Isablle2013 
neuper@52079
  1096
  :
neuper@52079
  1097
  Changeset: 52061 (4ecea2fcdc2c) --- Build_Isac.thy runs on Isabelle2013
neuper@52079
  1098
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@52079
  1099
  Date: 2013-07-15 08:28:50 +0200 (4 weeks)
neuper@48895
  1100
*}
neuper@48895
  1101
neuper@48895
  1102
subsection {* isac on Isabelle2012 *}
neuper@48895
  1103
subsubsection {* Summary of development *}
neuper@48895
  1104
text {*
neuper@48895
  1105
  isac on Isabelle2012 is considered just a transitional stage
neuper@48895
  1106
  within the update from Isabelle2011 to Isabelle2013; thus no further development of isac;
neuper@48895
  1107
  For considerations on the transition see 
neuper@48895
  1108
  ~~/src/Tools/isac/Knowledge/Build_Thydata/thy, section "updating isac..".
neuper@48895
  1109
*}
neuper@48895
  1110
subsubsection {* Run tests *}
neuper@48895
  1111
text {*
neuper@48895
  1112
$ cd /usr/local/isabisac12/
neuper@48895
  1113
$ ./bin/isabelle jedit -l HOL src/Tools/isac/Build_Isac.thy
neuper@48895
  1114
$ ./bin/isabelle jedit -l Isac test/Tools/isac/Test_Isac.thy
neuper@48895
  1115
*}
neuper@48895
  1116
subsubsection {* State of tests *}
neuper@48895
  1117
text {*
neuper@48895
  1118
  At least the tests from isac on Isabelle2011 run again.
neuper@48895
  1119
  However, Test_Isac.thy shows erratic behaviour; no errors are obtained when scrolling 
neuper@48895
  1120
  in parallel with evaluation.
neuper@48895
  1121
neuper@48895
  1122
  Counting "error in kernel" for Frontend/interface.sml (the tests considered most significant)
neuper@48895
  1123
  yields 69 hits, some of which were already present before Isabelle2002-->2009-2
neuper@48895
  1124
  (i.e. on the old notebook from 2002).
neuper@48895
  1125
neuper@48895
  1126
  Now many tests with (*...=== inhibit exn ...*) give a reason or at least the origin:
neuper@48895
  1127
  # === inhibit exn WN1130621 Isabelle2012-->13 !thehier! === ...see Build_Thydata.thy
neuper@48895
  1128
  # === inhibit exn AK110726 === ...reliable work by Alexander Kargl, most likely go back to 2002
neuper@48895
  1129
  # === inhibit exn WN1130701 broken at Isabelle2002 --> 2009-2 === , most likely go back to 2002
neuper@48895
  1130
  Reasons for outcommented tests are also found in Test_Isac.thy near the respective file.sml.
neuper@48895
  1131
neuper@48895
  1132
  Some tests have been re-activated (e.g. error patterns, fill patterns).
neuper@48895
  1133
*}
neuper@48895
  1134
subsubsection {* Changesets of begin and end *}
neuper@52079
  1135
text {*  
neuper@52079
  1136
  Changeset: 52051 (35751d90365e) end of improving tests for isac on Isabelle2012
neuper@52079
  1137
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@52079
  1138
  Date: 2013-07-11 16:58:31 +0200 (4 weeks)
neuper@48895
  1139
  :
neuper@48895
  1140
  : isac on Isablle2012 
neuper@48895
  1141
  :
neuper@48895
  1142
  Changeset: 48757 (74eb3dfc33cc) updated src from Isabelle2011 to Isabelle2012
neuper@48895
  1143
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@48895
  1144
  Date: 2012-09-24 18:35:13 +0200 (8 months)
neuper@48895
  1145
  ------------------------------------------------------------------------------
neuper@48895
  1146
  Changeset: 48756 (7443906996a8) merged
neuper@48895
  1147
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@48895
  1148
  Date: 2012-09-24 18:15:49 +0200 (8 months)
neuper@48895
  1149
*}
neuper@48895
  1150
neuper@48895
  1151
subsection {* isac on Isabelle2011 *}
neuper@48895
  1152
subsubsection {* Summary of development *}
neuper@48895
  1153
text {*
neuper@48895
  1154
  isac's mathematics engine has been extended by two developments:
neuper@48895
  1155
  (1) Isabelle's contexts were introduced by Mathias Lehnfeld
neuper@52150
  1156
  (2) Z_Transform was introduced by Jan Rocnik, which revealed
neuper@52150
  1157
    further errors introduced by (1).
neuper@52150
  1158
  (3) "error patterns" were introduced by Gabriella Daroczy
neuper@52150
  1159
  Regressions tests have been added for all of these.
neuper@48895
  1160
*}
neuper@48895
  1161
subsubsection {* Run tests *}
neuper@48895
  1162
text {*
neuper@48895
  1163
  $ cd /usr/local/isabisac11/
neuper@48895
  1164
  $ ./bin/isabelle jedit -l HOL src/Tools/isac/Build_Isac.thy
neuper@48895
  1165
  $ ./bin/isabelle jedit -l Isac test/Tools/isac/Test_Isac.thy
neuper@48895
  1166
*}
neuper@48895
  1167
subsubsection {* State of tests *}
neuper@48895
  1168
text {* 
neuper@48895
  1169
  Systematic efforts outcommented less significant tests by (*...=== inhibit exn ...*) 
neuper@48895
  1170
  and sometimes give reasons for failing tests.
neuper@48895
  1171
  (*...=== inhibit exn AK...*) was done by Alexander Kargl; this is reliable
neuper@48895
  1172
  work, some of which couldn't be revised (and renamed) by WN and thus survived some time.
neuper@48895
  1173
neuper@48895
  1174
  The most signification tests (in particular Frontend/interface.sml) run,
neuper@48895
  1175
  however, many "error in kernel" are not caught by an exception.
neuper@48895
  1176
  ------------------------------------------------------------------------------
neuper@48895
  1177
  After the changeset below Test_Isac worked with check_unsynchronized_ref ():
neuper@48895
  1178
  ------------------------------------------------------------------------------
neuper@48895
  1179
  Changeset: 42457 (ca691a84b81a) PROVISIONALLY MADE TESTS RUN with Unsynchronized.ref
neuper@48895
  1180
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@48895
  1181
  Date: 2012-08-06 10:38:11 +0200 (11 months)
neuper@52150
  1182
neuper@52150
  1183
neuper@52150
  1184
  The list below records TODOs while producing an ISAC kernel for 
neuper@52150
  1185
  gdaroczy and jrocnik, wich could NOT be done before all tests are RUNNING
neuper@52150
  1186
  (so to be resumed with Isabelle2013-1):
neuper@52150
  1187
  ############## WNxxxxxx.TODO can be found in sources ##############
neuper@52150
  1188
  --------------------------------------------------------------------------------
neuper@52150
  1189
  WN111013.TODO: lots of cleanup/removal in test/../Test.thy
neuper@52150
  1190
  --------------------------------------------------------------------------------
neuper@52150
  1191
  WN111013.TODO: remove concept around "fun init_form", lots of troubles with 
neuper@52150
  1192
  this special case (see) --- why not nxt = Model_Problem here ? ---
neuper@52150
  1193
  --------------------------------------------------------------------------------
neuper@52150
  1194
  WN111014.TODO calculate_Poly < calculate_Rational < calculate_RootRat, see test/
neuper@52150
  1195
  ... FIRST redesign 
neuper@52150
  1196
  # simplify_* , *_simp_* 
neuper@52150
  1197
  # norm_* 
neuper@52150
  1198
  # calc_* , calculate_*  ... require iteration over all rls ...
neuper@52150
  1199
  ... see --- val rls = calculate_RootRat > calculate_Rational --- CONTINUE !
neuper@52150
  1200
  --------------------------------------------------------------------------------
neuper@52150
  1201
  WN111014.TODO fun prep_rls | !!!use this function in ruleset' := !!!
neuper@52150
  1202
  --------------------------------------------------------------------------------
neuper@52150
  1203
  WN120314 changeset a393bb9f5e9f drops root equations.
neuper@52150
  1204
  see test/Tools/isac/Knowledge/rootrateq.sml 
neuper@52150
  1205
  --------------------------------------------------------------------------------
neuper@52150
  1206
  WN120317.TODO changeset 977788dfed26 dropped rateq:
neuper@52150
  1207
  # test --- repair NO asms from rls RatEq_eliminate --- shows error from 2002
neuper@52150
  1208
  # test --- solve (1/x = 5, x) by me --- and --- x / (x ^ 2 - 6 * x + 9) - ...:    
neuper@52150
  1209
    investigation Check_elementwise stopped due to too much effort finding out,
neuper@52150
  1210
    why Check_elementwise worked in 2002 in spite of the error.
neuper@52150
  1211
  --------------------------------------------------------------------------------
neuper@52150
  1212
  WN120317.TODO postponed test/../ratinal,ratinal2.sml to joint work with dmeindl 
neuper@52150
  1213
  --------------------------------------------------------------------------------
neuper@52150
  1214
  WN120317.TODO found by test --- interSteps for Schalk 299a --- that 
neuper@52150
  1215
    NO test with 'interSteps' is checked properly (with exn on changed behaviour)
neuper@52150
  1216
  --------------------------------------------------------------------------------
neuper@52150
  1217
  WN120317.TODO test --- Matthias Goldgruber 2003 rewrite orders --- has
neuper@52150
  1218
    a newly outcommented test where rewrite_set_ make_polynomial --> NONE
neuper@52150
  1219
  --------------------------------------------------------------------------------
neuper@52150
  1220
  WN120320.TODO check-improve rlsthmsNOTisac:
neuper@52150
  1221
  DONE make test --- old compute rlsthmsNOTisac by eq_thmI'
neuper@52150
  1222
  DONE compare rlsthmsNOTisac in thms-survey-Isa02-Isa09-2.sml .. Isac.thy 
neuper@52150
  1223
  FOUND 120321: Theory.axioms_of doesnt find LENGTH_CONS etc, thus are in Isab
neuper@52150
  1224
  # mark twice thms (in isac + (later) in Isabelle) in Isac.thy
neuper@52150
  1225
  --------------------------------------------------------------------------------
neuper@52150
  1226
  WN120320.TODO rlsthmsNOTisac: replace twice thms ^
neuper@52150
  1227
  --------------------------------------------------------------------------------
neuper@52150
  1228
  WN120320.TODO rlsthmsNOTisac: reconsider design of sym_* thms, see test
neuper@52150
  1229
  --- OLD compute rlsthmsNOTisac by eq_thmID ---: some are in isab, some in isac.
neuper@52150
  1230
  --------------------------------------------------------------------------------
neuper@52150
  1231
  WN120321.TODO rearrange theories:
neuper@52150
  1232
    Knowledge
neuper@52150
  1233
      :
neuper@52150
  1234
      Atools.thy
neuper@52150
  1235
      ///Descript.thy --> ProgLang
neuper@52150
  1236
      Delete.thy   <--- first_Knowledge_thy (*mv to Atools.thy*)
neuper@52150
  1237
    ProgLang: restructure Build_Isac.thy such that no xmlsrc.thy, ProgLang.thy
neuper@52150
  1238
          Interpret.thy are generated (simplifies xml structure for theories)
neuper@52150
  1239
      Script.thy
neuper@52150
  1240
      Tools.thy
neuper@52150
  1241
      ListC.thy    <--- first_Proglang_thy
neuper@52150
  1242
  --------------------------------------------------------------------------------
neuper@52150
  1243
  WN120321.TODO reanimate test/../simplify.sml: CAS-command Simplify
neuper@52150
  1244
      EXN "simplify.sml: diff.behav. CAScmd: Simplify (2*a + 3*a)"
neuper@52150
  1245
  broken during work on thy-hierarchy
neuper@52150
  1246
  --------------------------------------------------------------------------------
neuper@52150
  1247
  WN120321.TODO LAST in IsacScripts + in IsacKnowledge, see
neuper@55421
  1248
  test --- the_hier (get_thes ()) (collect_thydata ())---
neuper@52150
  1249
  --------------------------------------------------------------------------------
neuper@52150
  1250
  WN120405a.TODO src/../pbl-met-hierarchy.sml: fun pbl2term--> Isac' instead Isac_
neuper@52150
  1251
  !!add mutual crossreferences to ?fun headline??? where the same has to be done:
neuper@52150
  1252
  !!OR BETTER: use only 2 functions for adding/removing "'" to/from thy!!
neuper@52150
  1253
  --------------------------------------------------------------------------------
neuper@52150
  1254
  WN120409.TODO replace "op mem" (2002) with member (2011) ... 
neuper@52150
  1255
  ... an exercise interesting for beginners !
neuper@52150
  1256
  --------------------------------------------------------------------------------
neuper@52150
  1257
  WN120411 scanning html representation of newly generated knowledge:
neuper@52150
  1258
  * thy:
neuper@52150
  1259
  ** Theorems: only "Proof of the theorem" (correct!)
neuper@52150
  1260
               and "(c) isac-team (math-autor)"
neuper@52150
  1261
  ** Rulesets: only "Identifier:///"
neuper@52150
  1262
               and "(c) isac-team (math-autor)"
neuper@52150
  1263
  ** IsacKnowledge: link to dependency graph (which needs to be created first)
neuper@52150
  1264
  ** IsacScripts --> ProgramLanguage
neuper@52150
  1265
  *** Tools: Theorems: arity_type_cp, arity_type_nam, ... wegnehmen
neuper@52150
  1266
  
neuper@52150
  1267
  * pbl: OK !?!
neuper@52150
  1268
  * met: OK !?!
neuper@52150
  1269
  * exp: 
neuper@52150
  1270
  ** Z-Transform is missing !!!
neuper@52150
  1271
  ** type-constraints !!!
neuper@52150
  1272
  --------------------------------------------------------------------------------
neuper@52150
  1273
  WN120417: merging xmldata revealed:
neuper@52150
  1274
  ..............NEWLY generated:........................................
neuper@52150
  1275
  <THEOREMDATA>
neuper@52150
  1276
    <GUH> thy_isab_Fun-thm-o_apply </GUH>
neuper@52150
  1277
    <STRINGLIST>
neuper@52150
  1278
      <STRING> Isabelle </STRING>
neuper@52150
  1279
      <STRING> Fun </STRING>
neuper@52150
  1280
      <STRING> Theorems </STRING>
neuper@52150
  1281
      <STRING> o_apply </STRING>
neuper@52150
  1282
    </STRINGLIST>
neuper@52150
  1283
      <MATHML>
neuper@52150
  1284
        <ISA> (?f o ?g) ?x = ?f (?g ?x) </ISA>
neuper@52150
  1285
      </MATHML>  <PROOF>
neuper@52150
  1286
      <EXTREF>
neuper@52150
  1287
        <TEXT> Proof of the theorem </TEXT>
neuper@52150
  1288
        <URL> http://www.ist.tugraz.at/projects/isac/www/kbase/thy/browser_info/HOL/HOL-Real/Isac/Fun.html </URL>
neuper@52150
  1289
      </EXTREF>
neuper@52150
  1290
    </PROOF>
neuper@52150
  1291
    <EXPLANATIONS> </EXPLANATIONS>
neuper@52150
  1292
    <MATHAUTHORS>
neuper@52150
  1293
      <STRING> Isabelle team, TU Munich </STRING>
neuper@52150
  1294
    </MATHAUTHORS>
neuper@52150
  1295
    <COURSEDESIGNS>
neuper@52150
  1296
    </COURSEDESIGNS>
neuper@52150
  1297
  </THEOREMDATA>
neuper@52150
  1298
  ..............OLD FORMAT:.............................................
neuper@52150
  1299
  <THEOREMDATA>
neuper@52150
  1300
    <GUH> thy_isab_Fun-thm-o_apply </GUH>
neuper@52150
  1301
    <STRINGLIST>
neuper@52150
  1302
      <STRING> Isabelle </STRING>
neuper@52150
  1303
      <STRING> Fun </STRING>
neuper@52150
  1304
      <STRING> Theorems </STRING>
neuper@52150
  1305
      <STRING> o_apply </STRING>
neuper@52150
  1306
    </STRINGLIST>
neuper@52150
  1307
    <THEOREM>
neuper@52150
  1308
      <ID> o_apply </ID>
neuper@52150
  1309
      <MATHML>
neuper@52150
  1310
        <ISA> (?f o ?g) ?x = ?f (?g ?x) </ISA>
neuper@52150
  1311
      </MATHML>
neuper@52150
  1312
    </THEOREM>
neuper@52150
  1313
    <PROOF>
neuper@52150
  1314
      <EXTREF>
neuper@52150
  1315
        <TEXT> Proof of the theorem </TEXT>
neuper@52150
  1316
        <URL> http://www.ist.tugraz.at/projects/isac/www/kbase/thy/browser_info/HOL/HOL-Real/Isac/Fun.html </URL>
neuper@52150
  1317
      </EXTREF>
neuper@52150
  1318
    </PROOF>
neuper@52150
  1319
    <EXPLANATIONS> </EXPLANATIONS>
neuper@52150
  1320
    <MATHAUTHORS>
neuper@52150
  1321
      <STRING> Isabelle team, TU Munich </STRING>
neuper@52150
  1322
    </MATHAUTHORS>
neuper@52150
  1323
    <COURSEDESIGNS>
neuper@52150
  1324
    </COURSEDESIGNS>
neuper@52150
  1325
  </THEOREMDATA>
neuper@52150
  1326
  --------------------------------------------------------------------------------
neuper@48895
  1327
*}
neuper@48895
  1328
subsubsection {* Changesets of begin and end *}
neuper@48895
  1329
text {*
neuper@48895
  1330
  isac development was done between these changesets:
neuper@48895
  1331
  ------------------------------------------------------------------------------
neuper@48895
  1332
  Changeset: 42519 (1f3b4270363e) meeting dmeindl: added missing files
neuper@48895
  1333
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@48895
  1334
  Date: 2012-09-24 16:39:30 +0200 (8 months)
neuper@48895
  1335
  :
neuper@48895
  1336
  : isac on Isablle2011
neuper@48895
  1337
  :
neuper@48895
  1338
  Changeset:41897 (355be7f60389) merged isabisac with Isabelle2011
neuper@48895
  1339
  Branch: decompose-isar 
neuper@48895
  1340
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@48895
  1341
  Date: 2011-02-25 13:04:56 +0100 (2011-02-25)
neuper@48895
  1342
  ------------------------------------------------------------------------------
neuper@48895
  1343
*}
neuper@48895
  1344
neuper@48895
  1345
subsection {* isac on Isabelle2009-2 *}
neuper@48895
  1346
subsubsection {* Summary of development *}
neuper@48895
  1347
text {*
neuper@48895
  1348
  In 2009 the update of isac from Isabelle2002 started with switching from CVS to hg.
neuper@48895
  1349
  The update was painful (bridging 7 years of Isabelle development) and cut short 
neuper@48895
  1350
  due to the start of introducing Isabelle's contexts (Mathias Lehnfeld) and
neuper@48895
  1351
  going on to Isabelle2011 although most of the tests did not run.
neuper@48895
  1352
*}
neuper@48895
  1353
subsubsection {* Run tests *}
neuper@48895
  1354
text {*
neuper@52150
  1355
  WN131021 this is broken by installation of Isabelle2011/12/13,
neuper@52150
  1356
  because all these write their binaries to ~/.isabelle/heaps/..
neuper@52150
  1357
neuper@48895
  1358
  $ cd /usr/local/isabisac09-2/
neuper@48895
  1359
  $ ./bin/isabelle emacs -l HOL src/Tools/isac/Build_Isac.thy
neuper@48895
  1360
  $ ./bin/isabelle emacs -l Isac src/Tools/isac/Test_Isac.thy
neuper@48895
  1361
  NOT THE RIGHT VERSION.....    test/Tools/isac/Test_Isac.thy !!!
neuper@48895
  1362
*}
neuper@48895
  1363
subsubsection {* State of tests *}
neuper@48895
  1364
text {* 
neuper@48895
  1365
  Most tests are broken by the update from Isabelle2002 to Isabelle2009-2.
neuper@48895
  1366
*}
neuper@48895
  1367
subsubsection {* Changesets of begin and end *}
neuper@48895
  1368
text {*
neuper@48895
  1369
  isac development was done between these changesets:
neuper@48895
  1370
  ------------------------------------------------------------------------------
neuper@48895
  1371
  Changeset: 38115 (940a5feea094) Little improvements of isac-plugin
neuper@48895
  1372
  Branch: decompose-isar 
neuper@48895
  1373
  User: Marco Steger <m.steger@student.tugraz.at>
neuper@48895
  1374
  Date: 2011-02-06 18:30:28 +0100 (2011-02-06)
neuper@48895
  1375
  :
neuper@48895
  1376
  : isac on Isablle2009-2
neuper@48895
  1377
  :
neuper@48895
  1378
  Changeset: 37870 (5100a9c3abf8) created branch isac-from-Isabelle2009-2
neuper@48895
  1379
  Branch: isac-from-Isabelle2009-2 
neuper@48895
  1380
  User: Walther Neuper <neuper@ist.tugraz.at>
neuper@48895
  1381
  Date: 2010-07-21 09:59:35 +0200 (2010-07-21)
neuper@48895
  1382
  ------------------------------------------------------------------------------
neuper@48895
  1383
*}
neuper@48895
  1384
neuper@48895
  1385
subsection {* isac on Isabelle2002 *}
neuper@48895
  1386
subsubsection {* Summary of development *}
neuper@48895
  1387
text {*
neuper@48895
  1388
  From 1999 to 2010 all the basic functionality (except "ctxt" and "error pattern")
neuper@48895
  1389
  of isac's mathematics engine has been implemented.
neuper@48895
  1390
*}
neuper@48895
  1391
subsubsection {* Run tests *}
neuper@48895
  1392
subsubsection {* State of tests *}
neuper@48895
  1393
text {* 
neuper@48895
  1394
  All tests work on an old notebook (the right PolyML coudn't be upgraded to more
neuper@48895
  1395
  recent Linux versions)
neuper@48895
  1396
*}
neuper@48895
  1397
subsubsection {* Changesets of begin and end *}
neuper@48895
  1398
text {*
neuper@48895
  1399
  Up to the above Mercurial changeset 5100a9c3abf8 isac used CVS;
neuper@48895
  1400
  see https://intra.ist.tugraz.at/hg/isac containing a conversion to Mercurial.
neuper@48895
  1401
*}
neuper@48895
  1402
neuper@41943
  1403
end
neuper@52065
  1404
(*========== inhibit exn 130719 Isabelle2013 ===================================
neuper@52065
  1405
============ inhibit exn 130719 Isabelle2013 =================================*)
neuper@41943
  1406
neuper@41943
  1407
(*-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
neuper@48895
  1408
  -.-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.*)
neuper@41975
  1409