src/Tools/isac/TODO.thy
author wneuper <Walther.Neuper@jku.at>
Tue, 21 Jun 2022 16:04:43 +0200
changeset 60477 4ac966aaa785
parent 60458 af7735fd252f
child 60494 3dee3ec06f54
permissions -rw-r--r--
rename functions in i-model.sml
neuper@42314
     1
(* Title:  todo's for isac core
neuper@42314
     2
   Author: Walther Neuper 111013
neuper@42314
     3
   (c) copyright due to lincense terms.
neuper@42314
     4
*)
wneuper@59504
     5
theory TODO
wneuper@59504
     6
imports "~~/src/Doc/Prog_Prove/LaTeXsugar"
wneuper@59504
     7
begin
neuper@42314
     8
walther@59779
     9
text \<open>
walther@59779
    10
Legend: here + code since 200120
walther@59779
    11
  \<open>(*DOC\<close> identifies stuff dedicated for isac/Doc/Lucas_Interpreter
walther@59779
    12
  \<open>(*?!?\<close> identifies a design question
walther@59779
    13
walther@59779
    14
Distillation of "rounds of reforms":
walther@59779
    15
  \<open>TODOs from current changesets\<close> \<rightarrow> \<open>Postponed from current changeset\<close> \<rightarrow>
walther@59779
    16
  (*to be removed..*) \<rightarrow> \<open>Separated tasks\<close> (*.. to be removed*)
walther@59779
    17
  \<rightarrow> subsection of \<open>Major reforms\<close>
walther@59779
    18
\<close>
walther@59779
    19
wneuper@59574
    20
section \<open>TODOs from current changesets\<close>
wneuper@59568
    21
text\<open>
walther@59779
    22
  Shift more complicated issues from  \<open>Current changeset\<close> to \<open>Postponed from current changeset\<close>
wneuper@59568
    23
\<close>
wneuper@59574
    24
subsection \<open>Current changeset\<close>
wneuper@59574
    25
text \<open>
walther@59938
    26
(*/------- to  from -------\*)
walther@59938
    27
(*\------- to  from -------/*)
wneuper@59569
    28
  \begin{itemize}
walther@60176
    29
  \item resume step 6.10: unsuccessful trials with combination of types on Outer_Syntax
walther@60176
    30
    note: test in Calculation.thy is outcommented
walther@60175
    31
  \item xxx
walther@60164
    32
  \item re-arrange Isac's bootstrap: look for  "after devel.of BridgeJEdit"
walther@59927
    33
  \item xxx
walther@60011
    34
  \item xxx
walther@60125
    35
  \item Input_Descript.descriptor -> Input_Descript.T
walther@60125
    36
  \item xxx
walther@60125
    37
  \item Step_Specify.initialisePIDE: remove hdl in return-value
walther@60125
    38
        rename Step_Specify.nxt_specify_init_calc
walther@60125
    39
  \item xxx
walther@60089
    40
  \item relate Prog_Epxr.lhs to Thm.lhs_of
walther@60089
    41
  \item xxx
walther@60045
    42
  \item as soon as src/../parseC.sml is stable,
walther@60045
    43
    remove defs from Test_Parse_Isac.thy
walther@60045
    44
    + and shift tests from Test_Parse_Isac -> test/../parseC.sml
walther@59998
    45
  \item xxx
walther@59998
    46
  \item Specify.find_next_step: References.select
walther@59998
    47
    cpI = ["vonBelastungZu", "Biegelinien"]: References_Def.id
walther@59998
    48
                                      ^^^^^  Problem.id
walther@59998
    49
  \item xxx
walther@59998
    50
  \item Calc.state_empty_post \<rightarrow> Calc.state_post_empty
walther@59998
    51
  \item xxx
walther@59986
    52
  \item distribute code from test/../calchead.sml
walther@59986
    53
  \item xxx
walther@59935
    54
  \item rename Tactic.Calculate -> Tactic.Evaluate
walther@59779
    55
  \item xxx
walther@59923
    56
  \item replace src/ Erls by Rule_Set.Empty
walther@59882
    57
  \item xxx
walther@59882
    58
  \item rename ptyps.sml -> specify-etc.sml
walther@59882
    59
        rename Specify -> Specify_Etc
walther@59976
    60
        rename Specify -> Specify
walther@59842
    61
  \item xxx
walther@59914
    62
  \item specific_from_prog in..end: replace o by |> (Test_Isac or Test_Some!)
walther@59914
    63
  \item xxx
walther@59914
    64
  \item cleanup ThmC in MathEngBasic
walther@59914
    65
  \item xxx
walther@59914
    66
  \item xxx
walther@59914
    67
  \item xxx
walther@59842
    68
  \item xxx
walther@59842
    69
  \item xxx
walther@59842
    70
  \item xxx
walther@59842
    71
  \item xxx
walther@59842
    72
  \item xxx
walther@59846
    73
  \end{itemize}
walther@59846
    74
\<close>
walther@59846
    75
subsection \<open>Postponed from current changeset\<close>
walther@59846
    76
text \<open>
walther@59886
    77
  \begin{itemize}
walther@59886
    78
  \item xxx
walther@60026
    79
  \item make steps around SubProblem more consistent:
walther@60026
    80
    SubProblem (thy, [pbl]) is bypassed by Model_Problem, if it is 1st Tactic in a Program.
walther@60026
    81
    Design:
walther@60026
    82
    * the Tactic SubProblem (thy, [pbl]) creates the formula SubProblem (thy, [pbl])
walther@60026
    83
      (only the headline !)
walther@60026
    84
    * the Tactic Model_Problem starts Specification
walther@60026
    85
      (with an empty Model)
walther@60026
    86
    see test/../sub-problem.sml
walther@60026
    87
  \item xxx
walther@60016
    88
  \item Specify_Step.add has dummy argument Istate_Def.Uistate -- remove down to Ctree
walther@60016
    89
  \item xxx
walther@60015
    90
  \item Step_Specify.by_tactic (Tactic.Model_Problem' (id, _, met))
walther@60015
    91
                     by_tactic (Tactic.Specify_Theory' domID)
walther@60015
    92
    had very old, strange code at 11b5b8b81876
walther@60015
    93
    ?redes Model_Problem', Specify_Theory' <--> Specify_Method: Step_Specify.complet_for ?
walther@60015
    94
    INTERMED. NO REPAIR: NOT PROMPTED IN TESTS
walther@60015
    95
  \item xxx
walther@60002
    96
  \item unify code Specify.find_next_step <--> Step_Specify.by_tactic (Tactic.Specify_Method'
walther@60002
    97
  \item xxx
walther@59998
    98
  \item Isa20.implementation: 0.2.4 Printing ML values ?INSTEAD? *.TO_STRING ???
walther@59998
    99
    ??? writeln ( make_string {x = x, y = y}); ???
walther@59998
   100
  \item xxx
walther@59953
   101
  \item revise O_Model and I_Model with an example with more than 1 variant.
walther@59953
   102
  \item xxx
walther@60125
   103
  \item ctxt is superfluous in specify-phase due to type constraints from Input_Descript.thy
walther@59944
   104
  \item xxx
walther@59934
   105
  \item Derive.do_one: TODO find code in common with complete_solve
walther@59934
   106
        Derive.embed: TODO rewrite according to CAO (+ no intermediate access to Ctree)
walther@59934
   107
  \item xxx
walther@59930
   108
  \item Solve_Check: postponed parsing input to _ option
walther@59930
   109
  \item xxx
walther@59921
   110
  \item ? "fetch-tactics.sml" from Mathengine -> BridgeLibisabelle ?
walther@59886
   111
  \item xxx
walther@59921
   112
  \item ? unify struct.Step and struct.Solve in MathEngine ?
walther@59851
   113
  \item xxx
walther@59919
   114
  \item use "Eval_Def" for renaming identifiers
walther@59851
   115
  \item xxx
walther@59886
   116
  \item why does Test_Build_Thydata.thy depend on ProgLang and not on CalcElements ?
walther@59851
   117
  \item xxx
walther@59851
   118
  \item xxx
walther@59846
   119
  \begin{itemize}
walther@59846
   120
  \item LI.do_next (*TODO RM..*) ???
walther@59846
   121
  \item generate.sml: RM datatype edit TOGETHER WITH datatype inout
walther@59846
   122
  \item TermC.list2isalist: typ -> term list -> term  .. should NOT requires typ
walther@59846
   123
  \item get_ctxt_LI should replace get_ctxt
walther@59846
   124
  \item ALL CODE: rename spec(ification) --> know(ledge), in Specification: Relation -> Knowledge
walther@59846
   125
  \item rename   Base_Tool.thy  <---         Base_Tools
walther@59846
   126
  \item adopt naming conventions in Knowledge: EqSystem --> Equation_System, etc
walther@59846
   127
  \item rename field scr in meth
walther@59819
   128
  \item xxx
walther@59820
   129
  \item xxx
walther@59820
   130
  \item xxx
walther@59844
   131
  \item xxx
walther@59844
   132
  \item xxx
walther@59844
   133
  \item xxx
walther@59817
   134
  \item xxx
walther@59814
   135
  \item clarify Tactic.Subproblem (domID, pblID) as term in Pstate {act_arg, ...}
walther@59848
   136
     there it is Free ("Subproblem", "char list \<times> ..
walther@59848
   137
     instead of  Const (|???.Subproblem", "char list \<times> ..
walther@59848
   138
     AND THE STRING REPRESENTATION IS STRANGE: 
walther@59848
   139
       Subproblem (''Test'',
walther@59848
   140
        ??.\ <^const> String.char.Char ''LINEAR'' ''univariate'' ''equation''
walther@59848
   141
         ''test'')
walther@59814
   142
     ML \<open>
walther@59814
   143
     \<close> ML \<open>
walther@59814
   144
     term2str; (*defined by..*)
walther@59814
   145
     fun term_to_string''' thy t =
walther@59814
   146
       let
walther@59814
   147
         val ctxt' = Config.put show_markup false (Proof_Context.init_global thy)
walther@59814
   148
       in Print_Mode.setmp [] (Syntax.string_of_term ctxt') t end;
walther@59814
   149
     \<close> ML \<open>
walther@59814
   150
     val t = @{term "aaa + bbb"}
walther@59814
   151
     val t = @{term "Subproblem (''Test'', [''LINEAR'', ''univariate'', ''equation''])"};
walther@59814
   152
     \<close> ML \<open>
walther@59814
   153
     val sss = Print_Mode.setmp [] (Syntax.string_of_term @{context}) t
walther@59814
   154
     \<close> ML \<open>
walther@59814
   155
     writeln sss (*.. here perfect: Subproblem (''Test'', [''LINEAR'', ''univariate'', ''equation'']) *)
walther@59814
   156
     \<close> ML \<open>
walther@59814
   157
     \<close>
walther@59814
   158
  \item xxx
walther@59814
   159
  \item xxx
walther@59814
   160
  \item cleanup fun me:
walther@59814
   161
    fun me (*(_, Empty_Tac) p _ _ = raise ERROR ("me:  Empty_Tac at " ^ pos'2str p)
walther@59814
   162
      | me*) (_, tac) p _(*NEW remove*) pt =
walther@59814
   163
    + -------------------------^^^^^^
walther@59814
   164
    # see test-code.sml fun me_trace
walther@59814
   165
      use this also for me, not only for me_ist_ctxt; del. me
walther@59814
   166
      this requires much updating in all test/*
walther@59802
   167
  \item xxx
walther@59779
   168
  \item shift tests into NEW model.sml (upd, upds_envv, ..)
walther@59779
   169
  \item xxx
walther@59814
   170
  \item clarify handling of contexts ctxt ContextC
walther@59779
   171
    \begin{itemize}
walther@59779
   172
    \item xxx
walther@59779
   173
    \item Specify/ works with thy | Interpret/ works with ctxt | MathEngine.step works with ?!?ctxt
walther@59779
   174
    \item xxx
walther@59779
   175
    \item Check_Elementwise "Assumptions": prerequisite for ^^goal
walther@59779
   176
      rm tactic Check_elementwise "Assumptions" in a way, which keeps it for Minisubpbl
walther@59779
   177
      rm Assumptions  :: bool  (* TODO: remove with making ^^^ idle *)
walther@59779
   178
    \item xxx
walther@59779
   179
    \item xxx
walther@59779
   180
    \end{itemize}
walther@59779
   181
  \item xxx
walther@59779
   182
  \item xxx
walther@59779
   183
  \item complete mstools.sml (* survey on handling contexts:
walther@59779
   184
  \item xxx
walther@59779
   185
  \item xxx
walther@59779
   186
  \item xxx
walther@59779
   187
  \item xxx
walther@59779
   188
  \item librarys.ml --> libraryC.sml + text from termC.sml
walther@59779
   189
  \item xxx
walther@59779
   190
  \item xxx
walther@59779
   191
  \item xxx
walther@59779
   192
  \item xxx
walther@59779
   193
  \item xxx
walther@59779
   194
  \item xxx
walther@59779
   195
  \item concentrate "insert_assumptions" for locate_input_tactic in "associate", ?OR? Tactic.insert_assumptions
walther@59779
   196
                                   DONE  for find_next_step by Tactic.insert_assumptions m' ctxt 
walther@59779
   197
    \begin{itemize}
walther@59779
   198
    \item rm from "generate1" ("Detail_Set_Inst'", Tactic.Detail_Set' ?)
walther@59779
   199
    \item ?"insert_assumptions" necessary in "init_pstate" ?+++? in "applicable_in" ?+++? "associate"
walther@59779
   200
    \item xxx
walther@59779
   201
    \item xxx
walther@59779
   202
    \item DO DELETIONS AFTER analogous concentrations in find_next_step
walther@59779
   203
    \end{itemize}
walther@59779
   204
  \item xxx
walther@59779
   205
  \item ? what is the difference headline <--> cascmd in
walther@59779
   206
    Subproblem' (spec, oris, headline, fmz_, context, cascmd)
walther@59924
   207
  \item Substitute' what does "re-calculation mean in the datatype comment?
walther@59779
   208
  \item xxx
walther@59881
   209
  \item inform: TermC.parse (ThyC.get_theory "Isac_Knowledge") istr --> parseNEW context istr
walther@59799
   210
  \item xxx
walther@59816
   211
  \item unify/clarify stac2tac_ | 
walther@59779
   212
    \begin{itemize}
walther@59779
   213
    \item xxx
walther@59816
   214
    \item extract common code from associate.. stac2tac_xxx
walther@59823
   215
    \item rename LItool.tac_from_prog -> Tactic.from_prog_tac ? Solve_Tac.from_prog_tac,
walther@59779
   216
    \item xxx
walther@59779
   217
    \item xxx
walther@59779
   218
    \end{itemize}
walther@59779
   219
  \item xxx
walther@59779
   220
  \item unify in signature LANGUAGE_TOOLS =\\
walther@59903
   221
    val pblterm: ThyC.id -> Problem.id -> term     vvv        vvv\\
walther@59779
   222
    val subpbl: string -> string list -> term          unify with ^^^
walther@59779
   223
  \item xxx
walther@59779
   224
  \item Telem.safe is questionable: has it been replaced by Safe_Step, Not_Derivable, Helpless, etc?
walther@59779
   225
    Note: replacement of Istate.safe by Istate.appy_ didn't care much about Telem.safe.
walther@59779
   226
    If Telem.safe is kept, consider merge with CTbasic.ostate
walther@59779
   227
  \item xxx
walther@59779
   228
  \item remove find_next_step from solve Apply_Method';
walther@59779
   229
    this enforces Pos.at_first_tactic, which should be dropped, too.
walther@59779
   230
  \item xxx
walther@59779
   231
  \item xxx
walther@59816
   232
  \item xxx
walther@59779
   233
  \end{itemize}
walther@59779
   234
\<close>
walther@59851
   235
subsection \<open>Postponed --> Major reforms\<close>
walther@59816
   236
text \<open>
walther@59816
   237
  \begin{itemize}
walther@59816
   238
  \item xxx          
walther@60040
   239
  \item xxx
walther@60040
   240
  \item make parser mutually recursive for Problem .. Solution
walther@60040
   241
    preps. in Test_Parse_Isac:
walther@60040
   242
      Test_Parse_Isac:
walther@60040
   243
        subsubsection "problem_mini" shows a principal issue with recursive parsing
walther@60040
   244
        probably due to !2! arguments of parser (as shown in Cookbook)
walther@60040
   245
      Test_Parsers_Cookbook:
walther@60040
   246
        (* recursive parser p.140 \<section>6.1 adapted to tokens: *) shows differences,
walther@60040
   247
        which might help understanding the principal issue
walther@60040
   248
    see also Test_Parsers  subsection "recursive parsing"
walther@60040
   249
  \item xxx
walther@60040
   250
  \item xxx          
walther@60040
   251
  \item xxx          
walther@59846
   252
  \item revisit bootstrap Calcelements. rule->calcelems->termC
walther@59868
   253
    would be nice, but is hard: UnparseC.terms -> TermC.s_to_string
walther@59820
   254
  \item xxx
walther@59820
   255
  \item replace all Ctree.update_* with Ctree.cupdate_problem
walther@59820
   256
  \item xxx
walther@59816
   257
  \item rename (ist as {eval, ...}) -> (ist as {eval_rls, ...})
walther@59816
   258
  \item xxx
walther@59816
   259
  \item exception PROG analogous to TERM
walther@59816
   260
  \item xxx
walther@59816
   261
  \item sig/struc ..elems --> ..elem
walther@59816
   262
  \item xxx          
walther@59816
   263
  \item distille CAS-command, CAScmd, etc into a struct
walther@59816
   264
  \item xxx          
walther@59816
   265
  \item check location of files:
walther@59816
   266
        test/Tools/isac/Interpret/ptyps.thy
walther@59816
   267
        test/Tools/isac/Specify.ptyps.sml
walther@59816
   268
  \item xxx
walther@59816
   269
  \item check occurences of Atools in src/ test/
walther@59816
   270
  \item Const ("Atools.pow", _) ---> Const ("Base_Tool.pow", _) 
walther@59816
   271
  \item xxx          
walther@59816
   272
  \item rm Float
walther@59816
   273
  \item xxx
walther@59816
   274
  \item Diff.thy: differentiateX --> differentiate after removal of script-constant
walther@59816
   275
  \item Test.thy: met_test_sqrt2: deleted?!
walther@59816
   276
  \item xxx          
walther@59887
   277
  \item Rewrite_Ord.rew_ord' := overwritel (! Rewrite_Ord.rew_ord', (*<<<---- use Know_Store.xxx, too*)
walther@59816
   278
  \item xxx
walther@59816
   279
    \item automatically extrac rls from program-code 
walther@59816
   280
      ? take ["SignalProcessing", "Z_Transform", "Inverse_sub"] as an example ?
walther@59816
   281
  \item xxx          
walther@59901
   282
  \item finish output of LItool.trace with Check_Postcond (useful for SubProblem)
walther@59816
   283
  \item xxx
walther@59851
   284
  \item replace Rule_Set.empty by Rule_Set.Empty
walther@59851
   285
    latter is more clear, but replacing ***breaks rewriting over all examples***,
walther@59851
   286
    e.g. see ERROR: rewrite__set_ called with 'Erls' for 'precond_rootpbl x'
walther@59851
   287
    in Minisubplb/200-start-method-NEXT_STEP.sml:
walther@59851
   288
     (*+* )------- in f3cac3053e7b (Rule_Set.empty just renamed, NOT deleted) we had
walther@59851
   289
     (*+*)  prls =
walther@59852
   290
     (*+*)    Rls {calc = [], erls = Erls, errpatts = [], id = "empty", preconds = [], rew_ord =
walther@59878
   291
     (*+*)      ("dummy_ord", fn), rules = [], scr = Empty_Prog, srls = Erls}:
walther@59851
   292
     (*+*).. THIS IS Rule_Set.empty, BUT IT DID not CAUSE ANY ERROR !
walther@59851
   293
     (*+*)------- WITH Rule_Set.empty REMOVED (based on f3cac3053e7b) we had
walther@59851
   294
     (*+*)val Empty = prls (* <---ERROR: rewrite__set_ called with 'Erls' for 'precond_rootpbl x' *)
walther@59851
   295
     ( *+*)val ["sqroot-test", "univariate", "equation", "test"] = cpI
walther@59851
   296
    THAT INDICATES, that much rewriting/evaluating JUST WORKED BY CHANCE?!?
walther@59816
   297
  \item xxx          
walther@59816
   298
  \item xxx
walther@59816
   299
  \item xxx          
walther@59816
   300
  \item xxx
walther@59816
   301
  \item xxx          
walther@59816
   302
  \item xxx
walther@59816
   303
  \item xxx          
walther@59816
   304
  \end{itemize}
walther@59816
   305
\<close>
walther@59816
   306
walther@59779
   307
section \<open>Major reforms\<close>
walther@59779
   308
text \<open>
walther@59779
   309
\<close>
walther@59779
   310
subsection \<open>Exception Size raised\<close>
walther@59779
   311
text \<open>
walther@59779
   312
  During update Isabelle2018 --> Isabelle2019 we noticed, that
walther@59779
   313
  "isabelle build" uses resources more efficiently than "isabelle jedit".
walther@59779
   314
  The former works, but the latter causes 
walther@59779
   315
  \begin{itemize}
walther@59779
   316
  \item "Exception- Size raised"
walther@59779
   317
    in Build_Thydata.thy
walther@59779
   318
  \item "exception Size raised (line 169 of "./basis/LibrarySupport.sml")"
walther@59779
   319
    in test/../biegelinie-*.xml.
walther@59779
   320
  \end{itemize}
walther@59779
   321
  This has been detected after changeset (30cd47104ad7) "lucin: reorganise theories in ProgLang".
walther@59779
   322
walther@59779
   323
  Find tools to investigate the Exception, and find ways around it eventually.
walther@59779
   324
\<close>
walther@59779
   325
subsection \<open>Cleanup & review signatures wrt. implementation.pdf canonical argument order\<close>
walther@59779
   326
text \<open>
walther@59779
   327
  \begin{itemize}
walther@59779
   328
  \item there are comments in several signatures
wenzelm@60192
   329
  \item ML_file "$ISABELLE_ISAC/Interpret/specification-elems.sml" can be (almost) deleted
walther@59779
   330
  \item src/../Frontend/: signatures missing
walther@59779
   331
  \item xxx
walther@59779
   332
  \end{itemize}
walther@59779
   333
\<close>
walther@59779
   334
subsection \<open>overall structure of code\<close>
walther@59779
   335
text \<open>
walther@59779
   336
  \begin{itemize}
walther@59779
   337
  \item try to separate Isac_Knowledge from MathEngine
walther@59779
   338
    common base: Knowledge_Author / ..??
walther@59779
   339
  \item xxx
wenzelm@60192
   340
  \item  ML_file "$ISABELLE_ISAC/Interpret/ctree.sml" (*shift to base in common with Interpret*)
walther@59779
   341
  \item xxx
walther@59779
   342
  \item xxx
walther@59779
   343
  \item xxx
walther@59779
   344
  \end{itemize}
walther@59779
   345
\<close>
walther@59779
   346
subsection \<open>Separate MathEngineBasic/ Specify/ Interpret/ MathEngine/\<close>
walther@59779
   347
text \<open>
walther@59779
   348
  \begin{itemize}
walther@59779
   349
  \item xxx
walther@59800
   350
  \item xxx
walther@59734
   351
  \item re-organise code for Interpret
walther@59734
   352
    \begin{itemize}
walther@59933
   353
    \item Step*: Step_Specify | Step_Solve | Step DONE
walther@59734
   354
    \item xxx
walther@59848
   355
    \item Prog_Tac: fun get_first_argument takes both Prog_Tac + Program --- wait for separate Tactical
walther@59800
   356
      then shift into common descendant
walther@59734
   357
    \item xxx
walther@59734
   358
    \end{itemize}
walther@59734
   359
  \item xxx
walther@59778
   360
  \item xxx
walther@59791
   361
  \item ??????????? WHY CAN LI.by_tactic NOT BE REPLACED BY Step_Solve.by_tactic ???????????
walther@59778
   362
  \item xxx
walther@59778
   363
  \item xxx
walther@59778
   364
  \end{itemize}
walther@59778
   365
\<close>
wneuper@59574
   366
subsection \<open>Review modelling- + specification-phase\<close>
wneuper@59574
   367
text \<open>
wneuper@59574
   368
  \begin{itemize}
walther@59816
   369
  \item xxx
walther@59820
   370
  \item xxx
walther@59820
   371
  \item xxx
walther@59816
   372
  \item check match between args of partial_function and model-pattern of meth;
walther@59816
   373
     provide error message.
walther@59778
   374
  \item xxx
wneuper@59574
   375
  \item "--- hack for funpack: generalise handling of meths which extend problem items ---"
wneuper@59569
   376
    \begin{itemize}
wneuper@59574
   377
    \item see several locations of hack in code
wneuper@59574
   378
    \item these locations are NOT sufficient, see
wneuper@59574
   379
      test/../biegelinie-3.sml --- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. auto ---
wneuper@59574
   380
    \item "fun associate" "match_ags ..dI" instead "..pI" breaks many tests, however,
wneuper@59574
   381
      this would be according to survey Notes (3) in src/../calchead.sml.
wneuper@59574
   382
    \end{itemize}
wneuper@59574
   383
  \item see "failed trial to generalise handling of meths"98298342fb6d
wneuper@59574
   384
  \item abstract specify + nxt_specif to common aux-funs;
wneuper@59574
   385
    see e.g. "--- hack for funpack: generalise handling of meths which extend problem items ---"
wneuper@59574
   386
  \item xxx
wneuper@59574
   387
  \item type model = itm list ?
wneuper@59574
   388
  \item review survey Notes in src/../calchead.sml: they are questionable
wneuper@59574
   389
  \item review copy-named, probably two issues commingled 
wneuper@59574
   390
    \begin{itemize}
wneuper@59574
   391
    \item special handling of "#Find#, because it is not a formal argument of partial_function
wneuper@59574
   392
    \item special naming for solutions of equation solving: x_1, x_2, ...
wneuper@59569
   393
    \end{itemize}
wneuper@59569
   394
  \item xxx
walther@59634
   395
  \item xxx
wneuper@59574
   396
  \item this has been written in one go:
wneuper@59574
   397
    \begin{itemize}
Walther@60477
   398
    \item reconsidering I_Model.max_variant, use problem with meth ["Diff_App", "max_by_calculus"]
wneuper@59574
   399
    \item reconsider add_field': where is it used for what? Shift into mk_oris
Walther@60477
   400
    \item reconsider match_itms_oris: where is it used for what? max_variant ONLY???
wneuper@59574
   401
    \item in Specify_Method search root-oris for items (e.g. "errorBound"), #1# in survey
wneuper@59574
   402
    \item Specify_Problem, Specify_Method: check respective identifiers after re-Specify_
wneuper@59574
   403
      (relevant for pre-condition)
wneuper@59574
   404
    \item unify match_ags to mk_oris1..N with different args (fmz | pat list, pbl | meth
wneuper@59574
   405
    \item 
wneuper@59574
   406
    \end{itemize}
wneuper@59574
   407
  \end{itemize}
wneuper@59574
   408
\<close>
wneuper@59574
   409
subsection \<open>taci list, type step\<close>
wneuper@59574
   410
text \<open>
walther@59762
   411
taci was, most likely, invented to make "fun me" more efficient by avoiding duplicate rewrite,
walther@59762
   412
and probably, because the Kernel interface separated setNextTactic and applyTactic.
walther@59816
   413
Both are no good reasons to make code more complicated.
walther@59814
   414
walther@59816
   415
!!! taci list is used in do_next !!!
walther@59814
   416
wneuper@59574
   417
  \begin{itemize}
walther@59762
   418
  \item xxx
walther@59820
   419
  \item can lev_on_total replace lev_on ? ..Test_Isac_Short + rename lev_on_total -> lev_on
walther@59820
   420
  \item xxx
walther@59981
   421
  \item Step* functions should return Calc.T instead of Calc.state_post
walther@59762
   422
  \item xxx
wneuper@59574
   423
  \item states.sml: check, when "length tacis > 1"
wneuper@59574
   424
  \item in Test_Isac.thy there is only 1 error in Interpret/inform.sml
wneuper@59574
   425
  \item (*WN190713 REMOVE: "creating a new node" was never implemented for more than one node?!?
wneuper@59569
   426
  \item xxx
walther@59816
   427
  \item brute force setting all empty ([], [], ptp) works!?! but ptp causes errors -- investigate!
walther@59762
   428
  \item xxx
wneuper@59573
   429
  \end{itemize}
wneuper@59574
   430
\<close>
wneuper@59574
   431
subsection \<open>Ctree\<close>
wneuper@59574
   432
text \<open>
walther@59815
   433
analysis
walther@59815
   434
# mixture pos' .. pos in cappend_*, append_* is confusing
walther@59844
   435
# existpt p pt andalso Tactic.is_empty DIFFERENT IN append_*, cappend_* is confusing
walther@59815
   436
  "exception PTREE "get_obj: pos =" ^^^^^: ^^^^ due to cut !!!
walther@59815
   437
  NOTE: exn IN if..andalso.. IS NOT!!! DETECTED, THIS                       is confusing
walther@59815
   438
  see test/../--- Minisubpbl/800-append-on-Frm.sml ---
walther@59815
   439
# ?!? "cut branches below cannot be decided here" in append_atomic
walther@59815
   440
# sign. of functions too different ?!?canonical arg.order ?!?
wneuper@59568
   441
  \begin{itemize}
walther@59807
   442
  \item xxx
walther@59815
   443
  \item remove update_branch, update_*? -- make branch, etc args of append_*
walther@59815
   444
  \item xxx
walther@59816
   445
  \item close sig Ctree, contains cappend_* ?only? --- ?make parallel to ?Pide_Store?
walther@59813
   446
  \item xxx
walther@59807
   447
  \item unify args to Ctree.state (pt, p)
walther@59846
   448
  \item  fun update_env       .. repl_env                   \<rightarrow>updatempty
walther@59807
   449
  \item xxx
wneuper@59568
   450
  \item xxx
wneuper@59574
   451
  \item xxx
walther@59807
   452
  \item xxx
wneuper@59568
   453
  \end{itemize}
wneuper@59574
   454
\<close>
wneuper@59574
   455
subsection \<open>replace theory/thy by context/ctxt\<close>
wneuper@59574
   456
text \<open>
wneuper@59574
   457
  \begin{itemize}
walther@59660
   458
  \item xxx
walther@59748
   459
  \item Specify/ works with thy | Interpret/ works with ctxt | MathEngine.step works with ?!?ctxt
walther@59748
   460
    special case: Tactic.Refine_Problem
walther@59748
   461
  \item xxx
walther@59748
   462
  \item theory can be retrieved from ctxt by Proof_Context.theory_of
walther@59660
   463
  \item xxx
wneuper@59577
   464
  \item cleaup the many conversions string -- theory
wneuper@59577
   465
  \item make dest_spec --> (theory, pblID, metID) ?+ common_subthy ?
wneuper@59574
   466
  \item 1. Rewrite.eval_true_, then
walther@59933
   467
    LItool.check_leaf, Rewrite.eval_prog_expr, Step.add, LItool.tac_from_prog.
wneuper@59577
   468
  \item fun associate
walther@59881
   469
    let val thy = ThyC.get_theory "Isac_Knowledge";(*TODO*)
wneuper@59574
   470
  \item xxx
wneuper@59574
   471
  \item xxx
walther@59802
   472
  \item in locate_input_tactic .. ?scan_dn1?; Program.is_eval_expr   .use  Term.exists_Const
walther@59802
   473
  \item push srls into pstate
walther@59851
   474
  \item lucas-intrpreter.locate_input_tactic: scan_to_tactic1 srls tac cstate (progr, Rule_Set.Empty)
walther@59851
   475
                                                                                      ^^^^^^^^^^^^^^^
wneuper@59577
   476
  \item xxx
wneuper@59574
   477
  \end{itemize}
wneuper@59574
   478
\<close>
wneuper@59583
   479
subsection \<open>Rfuns, Begin_/End_Detail', Rrls, Istate\<close>
wneuper@59574
   480
text \<open>
walther@59878
   481
remove refactor Rfuns, Rule.Prog, Rule.Empty_Prog, RrlsState: this is a concept never brought to work.
walther@59850
   482
  Clarify relation to reverse rewriting!
wneuper@59562
   483
  \begin{itemize}
walther@59850
   484
  \item separate mut.recursion program with rule and rls by deleting fild scr in rls
walther@59850
   485
    (possible since CS 43160c1e775a
walther@59850
   486
  ` "replace Prog. in prep_rls by Auto_Prog.gen, which generates Prog. on the fly" )
wneuper@59573
   487
  \item xxx
wneuper@59569
   488
  \item probably only "normal_form" seems to be needed
wneuper@59569
   489
  \item deleted Rfuns in NEW "locate_input_tactic": no active test for "locate_rule"
wneuper@59569
   490
    but that seems desirable
wneuper@59569
   491
  \item ?how is the relation to reverse-rewriting ???
wneuper@59569
   492
  \item "Rfuns" markers in test/../rational
wneuper@59562
   493
  \item xxx
walther@59667
   494
  \item datatype istate (Istate.T): remove RrlsState, pstate: use Rrls only for creating results beyond
wneuper@59573
   495
    rewriting and/or respective intermediate steps (e.g. cancellation of fractions).
wneuper@59583
   496
    Thus we get a 1-step-action which does NOT require a state beyond istate/pstate.
wneuper@59573
   497
    Thus we drastically reduce complexity, also get rid of "fun from_pblobj_or_detail_calc" , etc.
wneuper@59573
   498
  \item debug ^^^ related: is there an occurence of Steps with more than 1 element?
wneuper@59569
   499
  \item xxx
walther@59760
   500
  \item and do_next (* WN1907: ?only for Begin_/End_Detail' DEL!!!*)
wneuper@59573
   501
  \item xxx
wneuper@59573
   502
  \item shouldn't go Rfuns from Rewrite --> Rewrite_Set; they behave similar to "fun interSteps" ?
walther@59850
   503
  \item xxx
walther@59850
   504
  \item ?finally Prog could go from Calcelems to ProgLang?
wneuper@59562
   505
  \end{itemize}
wneuper@59574
   506
\<close>
wneuper@59574
   507
subsection \<open>Inverse_Z_Transform.thy\<close>
wneuper@59574
   508
text \<open>
wneuper@59538
   509
  \begin{itemize}
wneuper@59550
   510
  \item\label{new-var-rhs} rule1..6, ruleZY introduce new variables on the rhs of the rewrite-rule.
wneuper@59550
   511
  ? replace rewriting with substitution ?!?
wneuper@59537
   512
  The problem is related to the decision of typing for "d_d" and making bound variables free (while
wneuper@59550
   513
  shifting specific handling in equation solving etc. to the meta-logic). 
wneuper@59550
   514
  \item Find "stepResponse (x[n::real]::bool)" is superfluous, because immediately used by
wneuper@59550
   515
    rewrite-rules; see \ref{new-var-rhs}.
wneuper@59538
   516
  \item Reconsider whole problem:
wneuper@59538
   517
    input only the polynomial as argument of partial_function, in ([1], Frm) compile lhs "X z" ?
wneuper@59538
   518
  \end{itemize}
wneuper@59574
   519
\<close>
wneuper@59574
   520
subsection \<open>Adopt Isabelle's numerals for Isac\<close>
wneuper@59574
   521
text \<open>
wneuper@59540
   522
  \begin{itemize}
wneuper@59574
   523
  \item replace numerals of type "real" by "nat" in some specific functions from ListC.thy
wneuper@59574
   524
    and have both representations in parallel for "nat".
wneuper@59574
   525
  \item xxx
wneuper@59574
   526
  \item xxx
wneuper@59540
   527
  \end{itemize}
wneuper@59574
   528
\<close>
walther@59816
   529
subsection \<open>Redesign equation solver\<close>
wneuper@59591
   530
text \<open>
wneuper@59591
   531
  Existing solver is structured along the WRONG assumption,
walther@59816
   532
  that Poly.thy must be the LAST thy among all thys involved -- while the opposite is the case.
wneuper@59591
   533
wneuper@59591
   534
  Preliminary solution: all inappropriately located thms are collected in Base_Tools.thy
wneuper@59591
   535
\<close>
walther@59816
   536
subsection \<open>Finetunig required for xmldata in kbase\<close>
wneuper@59574
   537
text \<open>
wneuper@59574
   538
  See xmldata https://intra.ist.tugraz.at/hg/isac/rev/5b222a649390
wneuper@59574
   539
  and in kbase html-representation generated from these xmldata.
wneuper@59574
   540
  Notes in ~~/xmldata/TODO.txt.
wneuper@59574
   541
\<close>
wneuper@59574
   542
wneuper@59574
   543
section \<open>Hints for further development\<close>
wneuper@59574
   544
text \<open>
wneuper@59574
   545
\<close>
wneuper@59591
   546
subsection \<open>Coding standards & some explanations for math-authors\<close>
wneuper@59591
   547
text \<open>copy from doc/math-eng.tex WN.28.3.03
wneuper@59591
   548
WN071228 extended\<close>
wneuper@59591
   549
wneuper@59591
   550
subsubsection \<open>Identifiers\<close>
wneuper@59591
   551
text \<open>Naming is particularily crucial, because Isabelles name space is global, and isac does
wneuper@59591
   552
  not yet use the novel locale features introduces by Isar. For instance, {\tt probe} sounds
wneuper@59591
   553
  reasonable as (1) a description in the model of a problem-pattern, (2) as an element of the
wneuper@59591
   554
  problem hierarchies key, (3) as a socalled CAS-command, (4) as the name of a related script etc.
wneuper@59591
   555
  However, all the cases (1)..(4) require different typing for one and the same
wneuper@59591
   556
  identifier {\tt probe} which is impossible, and actually leads to strange errors
wneuper@59591
   557
  (for instance (1) is used as string, except in a script addressing a Subproblem).
wneuper@59591
   558
wneuper@59591
   559
  These are the preliminary rules for naming identifiers>
wneuper@59591
   560
  \begin{description}
wneuper@59591
   561
  \item [elements of a key] into the hierarchy of problems or methods must not contain
wneuper@59591
   562
    capital letters and may contain underscrores, e.g. {\tt probe, for_polynomials}.
wneuper@59591
   563
  \item [descriptions in problem-patterns] must contain at least 1 capital letter and
wneuper@59591
   564
    must not contain underscores, e.g. {\tt Probe, forPolynomials}.
wneuper@59591
   565
  \item [CAS-commands] follow the same rules as descriptions in problem-patterns above, thus
wneuper@59591
   566
    beware of conflicts~!
wneuper@59591
   567
  \item [script identifiers] always end with {\tt Program}, e.g. {\tt ProbeScript}.
wneuper@59591
   568
  \item [???] ???
wneuper@59591
   569
  \item [???] ???
wneuper@59591
   570
  \end{description}
wneuper@59591
   571
%WN071228 extended\<close>
wneuper@59591
   572
wneuper@59591
   573
subsubsection \<open>Rule sets\<close>
wneuper@59591
   574
text \<open>The actual version of the coding standards for rulesets is in {\tt /IsacKnowledge/Atools.ML
wneuper@59591
   575
  where it can be viewed using the knowledge browsers.
wneuper@59591
   576
wneuper@59591
   577
  There are rulesets visible to the student, and there are rulesets visible (in general) only for
wneuper@59591
   578
  math authors. There are also rulesets which {\em must} exist for {\em each} theory;
wneuper@59591
   579
  these contain the identifier of the respective theory (including all capital letters) 
wneuper@59591
   580
  as indicated by {\it Thy} below.
wneuper@59591
   581
wneuper@59591
   582
  \begin{description}
wneuper@59591
   583
  \item [norm\_{\it Thy}] exists for each theory, and {\em efficiently} calculates a
wneuper@59591
   584
    normalform for all terms which can be expressed by the definitions of the respective theory
wneuper@59591
   585
    (and the respective parents).
wneuper@59591
   586
  \item [simplify\_{\it Thy}] exists for each theory, and calculates a normalform for all terms
wneuper@59591
   587
    which can be expressed by the definitions of the respective theory (and the respective parents)
wneuper@59591
   588
    such, that the rewrites can be presented to the student.
wneuper@59591
   589
  \item [calculate\_{\it Thy}] exists for each theory, and evaluates terms with 
wneuper@59591
   590
    numerical constants only (i.e. all terms which can be expressed by the definitions of
wneuper@59591
   591
    the respective theory and the respective parent theories). In particular, this ruleset includes
wneuper@59591
   592
    evaluating in/equalities with numerical constants only.
wneuper@59591
   593
    WN.3.7.03: may be dropped due to more generality: numericals and non-numericals
wneuper@59591
   594
    are logically equivalent, where the latter often add to the assumptions
wneuper@59591
   595
    (e.g. in Check_elementwise).
wneuper@59591
   596
  \end{description}
wneuper@59591
   597
wneuper@59591
   598
  The above rulesets are all visible to the user, and also may be input; 
wneuper@59591
   599
  thus they must be contained in {\tt Theory_Data} (KEStore_Elems.add_rlss,
wneuper@59591
   600
  KEStore_Elems.get_rlss). All these rulesets must undergo a preparation
wneuper@59591
   601
  using the function {\tt prep_rls'}, which generates a script for stepwise rewriting etc.
wneuper@59591
   602
  The following rulesets are used for internal purposes and usually invisible to the (naive) user:
wneuper@59591
   603
wneuper@59591
   604
  \begin{description}
wneuper@59591
   605
  \item [*\_erls] TODO
wneuper@59591
   606
  \item [*\_prls] 
wneuper@59591
   607
  \item [*\_srls] 
wneuper@59591
   608
  \end{description}
walther@59852
   609
{\tt Rule_Set.append_rules, Rule_Set.merge, remove_rls} TODO
wneuper@59591
   610
\<close>
wneuper@59591
   611
wneuper@59574
   612
subsection \<open>get proof-state\<close>
wneuper@59574
   613
text \<open>
wneuper@59574
   614
  Re: [isabelle] Programatically get "this"
wneuper@59574
   615
  ----------------------------------------------------
wneuper@59574
   616
  So here is my (Makarius') version of your initial example, following these principles:
wneuper@59574
   617
  begin{verbatim}
wneuper@59574
   618
    notepad
wneuper@59574
   619
    begin
wneuper@59574
   620
      assume a: A
wneuper@59574
   621
      ML_val \<open>
wneuper@59574
   622
        val ctxt = @{context};
wneuper@59558
   623
    
wneuper@59574
   624
        val this_name =
walther@59748
   625
          Name_Space.full_name (Proof_Context.naming_of ctxt) (Binding.name Auto_Bind.thisN);
wneuper@59574
   626
        val this = #thms (the (Proof_Context.lookup_fact ctxt this_name));
wneuper@59574
   627
      \<close>
wneuper@59574
   628
    end
wneuper@59574
   629
  end{verbatim}
wneuper@59574
   630
\<close>
wneuper@59574
   631
subsection \<open>write Specification to jEdit\<close>
wneuper@59574
   632
text \<open>
wneuper@59574
   633
  Re: [isabelle] Printing terms with type annotations
wneuper@59574
   634
  ----------------------------------------------------
wneuper@59574
   635
  On 06/02/2019 17:52, Moa Johansson wrote:
wneuper@59574
   636
  >
wneuper@59574
   637
  > I’m writing some code that should create a snippet of Isar script.
wneuper@59574
   638
  
wneuper@59574
   639
  This is how Sledgehammer approximates this:
wneuper@59574
   640
  
wneuper@59574
   641
  http://isabelle.in.tum.de/repos/isabelle/file/Isabelle2018/src/HOL/Tools/Sledgehammer/sledgehammer_isar_proof.ML#l299
wneuper@59574
   642
  
wneuper@59574
   643
  (The module name already shows that the proper terminology is "Isar
wneuper@59574
   644
  proof" (or "Isar proof text").  Proof scripts are a thing from the past,
wneuper@59574
   645
  before Isar. You can emulate old-style proof scripts via a sequence of
wneuper@59574
   646
  'apply' commands, but this is improper Isar.)
wneuper@59574
   647
  
wneuper@59574
   648
  Note that there is no standard function in Isabelle/Pure, because the
wneuper@59574
   649
  problem to print just the right amount of type information is very
wneuper@59574
   650
  complex and not fully solved. One day, after 1 or 2 rounds of
wneuper@59574
   651
  refinements over the above approach, it might become generally available.
wneuper@59574
   652
\<close>
wneuper@59574
   653
subsection \<open>follow Isabelle conventions (*Does not yet work in Isabelle2018\<close>
wneuper@59574
   654
text \<open>
wneuper@59574
   655
  isabelle update -u path_cartouches
wneuper@59574
   656
  isabelle update -u inner_syntax_cartouches
wneuper@59574
   657
\<close>
wneuper@59582
   658
section \<open>Questions to Isabelle experts\<close>
wneuper@59582
   659
text \<open>
wneuper@59582
   660
\begin{itemize}
walther@59848
   661
\item ad ERROR Undefined fact "all_left"        in Test_Isac: error-pattern.sml
walther@59848
   662
               Undefined fact: "xfoldr_Nil"                   inssort.sml
walther@59886
   663
    (* probably two different reasons:
walther@59886
   664
    src/../LinEq.thy
walther@59886
   665
      (*WN0509 compare PolyEq.all_left "[|Not(b=!=0)|] ==> (a = b) = (a - b = 0)"*)
walther@59886
   666
      all_left:          "[|Not(b=!=0)|] ==> (a=b) = (a+(-1)*b=0)" and
walther@59886
   667
    
walther@59886
   668
    src/../PolyEq.thy
walther@59886
   669
      (*WN0509 compare LinEq.all_left "[|Not(b=!=0)|] ==> (a=b) = (a+(-1)*b=0)"*)
walther@59886
   670
      all_left:              "[|Not(b=!=0)|] ==> (a = b) = (a - b = 0)" and
walther@59886
   671
    
walther@59886
   672
    test/../partial_fractions.sml
walther@59886
   673
    (*[7], Met*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Apply_Method ["PolyEq", "normalise_poly"])*)
walther@59886
   674
    (*[7, 1], Frm*)val (p,_,f,nxt,_,pt) = me nxt p [] pt; (*nxt = Rewrite ("all_left", "\<not> ?b =!= 0 \<Longrightarrow> (?a = ?b) = (?a - ?b = 0)"))*)
walther@59886
   675
    
walther@59886
   676
    test/../mathengine-stateless.sml
walther@59886
   677
    (*if ThmC.string_of_thm @ {thm rnorm_equation_add} =  "\<not> ?b =!= 0 \<Longrightarrow> (?a = ?b) = (?a + - 1 * ?b = 0)"
walther@59886
   678
    then () else error "string_of_thm changed";*)
walther@59886
   679
    
walther@59886
   680
    (*---------------------------------------------------------------------------------------------*)
walther@59886
   681
    src/../LinEq.thy
walther@59886
   682
    primrec xfoldr :: "('a \<Rightarrow> 'b \<Rightarrow> 'b) \<Rightarrow> 'a xlist \<Rightarrow> 'b \<Rightarrow> 'b" where
walther@59886
   683
    xfoldr_Nil:  "xfoldr f {|| ||} = id" |
walther@59886
   684
    xfoldr_Cons: "xfoldr f (x @# xs) = f x \<circ> xfoldr f xs"
walther@59886
   685
    
walther@59886
   686
    src/../InsSort.thy
walther@59886
   687
        srls = Rule_Set.empty, calc = [], rules = [
walther@59886
   688
          Rule.Thm ("xfoldr_Nil",(*num_str*) @{thm xfoldr_Nil} (* foldr ?f [] = id *)),
walther@59886
   689
    *)
walther@59841
   690
\item xxx
walther@59841
   691
\item xxx
walther@59842
   692
\item ?OK Test_Isac_Short with
walther@59842
   693
    LI.by_tactic tac (get_istate_LI pt p, get_ctxt_LI pt p) ptp
walther@59842
   694
  instead
walther@59846
   695
    LI.by_tactic tac (Istate.empty, ContextC.empty) ptp
walther@59842
   696
  in step-solve ?
walther@59842
   697
\item xxx
walther@59842
   698
\item test from last CS with outcommented re-def of code -> 
walther@59842
   699
  -> \<open>further tests additional to src/.. files\<close>
walther@59842
   700
      ADDTESTS/redefined-code.sml
walther@59841
   701
\item xxx
walther@59841
   702
\item efb749b79361 Test_Some_Short.thy has 2 errors, which disappear in thy ?!?:
walther@59841
   703
  ML_file "Interpret/error-pattern.sml" Undefined fact: "all_left"
walther@59841
   704
  ML_file "Knowledge/inssort.sml" Undefined fact: "xfoldr_Nil"
walther@59841
   705
\item xxx
wneuper@59591
   706
\item what is the actual replacement of "hg log --follow" ?
wneuper@59591
   707
\item xxx
wneuper@59582
   708
\item how HANDLE these exceptions, e.g.:
wneuper@59582
   709
    Syntax.read_term ctxt "Randbedingungen y 0 = (0::real), y L = 0, M_b 0 = 0, M_b L = 0]"
wneuper@59582
   710
  GIVES
wneuper@59582
   711
    "Inner syntax error
wneuper@59582
   712
     Failed to parse term"
wneuper@59582
   713
\item xxx
walther@59734
   714
\item how cope with "exception Size raised (line 171 of "./basis/LibrarySupport.sml")"
walther@59734
   715
  e.g. in test/Interpret/lucas-interpreter.sml
wneuper@59582
   716
\item xxx
wneuper@59582
   717
\item xxx
wneuper@59582
   718
\end{itemize}
wneuper@59582
   719
\<close>
wneuper@59582
   720
wneuper@59574
   721
section \<open>For copy & paste\<close>
wneuper@59574
   722
text \<open>
wneuper@59582
   723
\begin{itemize}
walther@59778
   724
\item xxx
wneuper@59558
   725
  \begin{itemize}
wneuper@59558
   726
  \item xxx
wneuper@59540
   727
    \begin{itemize}
wneuper@59558
   728
    \item xxx
wneuper@59540
   729
      \begin{itemize}
wneuper@59558
   730
      \item xxx
wneuper@59574
   731
        \begin{itemize}
wneuper@59574
   732
        \item xxx
wneuper@59574
   733
        \end{itemize}
wneuper@59540
   734
      \end{itemize}
wneuper@59540
   735
    \end{itemize}
wneuper@59504
   736
  \end{itemize}
wneuper@59504
   737
\end{itemize}
wneuper@59504
   738
\<close>
wneuper@59574
   739
subsection \<open>xxx\<close>
wneuper@59574
   740
subsubsection \<open>xxx\<close>
neuper@52150
   741
end