src/Tools/isac/Build_Isac.thy
author Walther Neuper <walther.neuper@jku.at>
Mon, 20 Jan 2020 14:38:46 +0100
changeset 59779 013e6808d1ca
parent 59777 23c143ffb22f
child 59794 8f7b67b1d5e2
permissions -rw-r--r--
determine structure for TODO.thy
walther@59632
     1
(*  Title:  build the Isac-Kernel: MathEngine & Knowledge
neuper@38057
     2
    Author: Walther Neuper, TU Graz, 100808
neuper@38051
     3
   (c) due to copyright terms
neuper@38051
     4
neuper@52062
     5
For creating a heap image of isac see ~~/ROOT.
walther@59632
     6
For debugging see text at begin below, e.g. theory dependencies:
walther@59632
     7
  ~$ evince file:///home/wneuper/.isabelle/isabisac/browser_info/Unsorted/Isac/session_graph.pdf &
neuper@52062
     8
wneuper@59586
     9
ATTENTION: no errors in this theory do not mean that there are no errors in Isac ..
wneuper@59586
    10
.. open theories collecting files from folders: CalcElements.thy, ProgLang.thy etc.
walther@59632
    11
Errors are rigorously detected by isabelle build.
neuper@37906
    12
*)
neuper@37906
    13
wneuper@59347
    14
theory Build_Isac 
wneuper@59206
    15
imports
walther@59632
    16
(*  theory KEStore imports Complex_Main
walther@59632
    17
      ML_file libraryC.sml
walther@59632
    18
      ML_file rule.sml
walther@59632
    19
      ML_file calcelems.sml
walther@59632
    20
  theory CalcElements imports KEStore
walther@59632
    21
    ML_file termC.sml
walther@59632
    22
    ML_file contextC.sml
walther@59687
    23
    ML_file environment.sml
wneuper@59586
    24
*)        "CalcElements/CalcElements"
wneuper@59586
    25
walther@59632
    26
(*    theory Calculate imports "~~/src/Tools/isac/CalcElements/CalcElements"
walther@59632
    27
        ML_file calculate.sml
walther@59773
    28
walther@59632
    29
      theory ListC imports "~~/src/Tools/isac/CalcElements/CalcElements"
walther@59632
    30
    theory Prog_Expr imports Calculate ListC
walther@59632
    31
      theory Program imports "~~/src/Tools/isac/CalcElements/CalcElements"
walther@59632
    32
      theory Prog_Tac imports "~~/src/Tools/isac/CalcElements/CalcElements"
walther@59632
    33
      theory Tactical imports "~~/src/Tools/isac/CalcElements/CalcElements"
walther@59632
    34
    theory Auto_Prog imports Program Prog_Tac Tactical begin
walther@59632
    35
  theory ProgLang imports Prog_Expr Auto_Prog
walther@59632
    36
    ML_file rewrite.sml
neuper@52062
    37
*)        "ProgLang/ProgLang"
wneuper@59600
    38
(*
walther@59674
    39
  theory MathEngBasic imports
walther@59674
    40
    "~~/src/Tools/isac/ProgLang/ProgLang" "~~/src/Tools/isac/Specify/Input_Descript"
walther@59674
    41
    ML_file "calc-tree-elem.sml"
walther@59632
    42
    ML_file model.sml
walther@59632
    43
    ML_file mstools.sml
walther@59632
    44
    ML_file "specification-elems.sml"
walther@59777
    45
    ML_file "istate-def.sml"
walther@59632
    46
    ML_file tactic.sml
walther@59777
    47
    ML_file position.sml
walther@59674
    48
    ML_file "ctree-basic.sml"
walther@59674
    49
    ML_file "ctree-access.sml"
walther@59674
    50
    ML_file "ctree-navi.sml"
walther@59674
    51
    ML_file ctree.sml
walther@59779
    52
  (*ML_file tactic.sml*)
walther@59777
    53
    ML_file calculation.sml
walther@59674
    54
*)        "MathEngBasic/MathEngBasic"
walther@59674
    55
(*
walther@59674
    56
    theory Input_Descript imports "~~/src/Tools/isac/CalcElements/CalcElements"
walther@59674
    57
  theory Specify imports "~~/src/Tools/isac/ProgLang/ProgLang" Input_Descript
walther@59632
    58
    ML_file ptyps.sml
walther@59632
    59
    ML_file generate.sml
walther@59632
    60
    ML_file calchead.sml
walther@59632
    61
    ML_file appl.sml
walther@59777
    62
    ML_file "step-specify.sml"
walther@59777
    63
    ML_file specify.sml
wneuper@59595
    64
*)        "Specify/Specify"
wneuper@59600
    65
(*
walther@59632
    66
  theory Interpret imports "~~/src/Tools/isac/Specify/Specify"
walther@59777
    67
    ML_file istate.sml
walther@59632
    68
    ML_file rewtools.sml
walther@59632
    69
    ML_file script.sml
walther@59632
    70
    ML_file inform.sml
walther@59632
    71
    ML_file "lucas-interpreter.sml"
wneuper@59600
    72
*)        "Interpret/Interpret"
wneuper@59600
    73
(*
walther@59632
    74
  theory MathEngine imports "~~/src/Tools/isac/Interpret/Interpret"
walther@59632
    75
    ML_file solve.sml
walther@59634
    76
    ML_file "mathengine-stateless.sml"
walther@59632
    77
    ML_file messages.sml
walther@59632
    78
    ML_file states.sml
wneuper@59600
    79
*)        "MathEngine/MathEngine"
wneuper@59600
    80
(*
walther@59632
    81
  theory BridgeLibisabelle imports "~~/src/Tools/isac/MathEngine/MathEngine"
walther@59632
    82
    ML_file mathml.sml
walther@59632
    83
    ML_file datatypes.sml
walther@59632
    84
    ML_file "pbl-met-hierarchy.sml"
walther@59632
    85
    ML_file "thy-hierarchy.sml" 
walther@59632
    86
    ML_file "interface-xml.sml"
walther@59632
    87
    ML_file interface.sml
walther@59614
    88
*)        "BridgeLibisabelle/BridgeLibisabelle"
wneuper@59147
    89
walther@59612
    90
          "Knowledge/Build_Thydata" (*imports Isac.thy etc*)
wneuper@59469
    91
wneuper@59601
    92
(*//-----------------------------------------------------------------------------------------\\*)
wneuper@59601
    93
(*\\-----------------------------------------------------------------------------------------//*)
neuper@48763
    94
begin
neuper@48760
    95
wneuper@59472
    96
text \<open>
neuper@55276
    97
  show theory dependencies using the graph browser, 
neuper@55276
    98
  open "browser_info/HOL/Isac/session.graph"
neuper@55276
    99
  and proceed from the ancestors towards the siblings.
wneuper@59472
   100
\<close>
neuper@55276
   101
wneuper@59472
   102
section \<open>check presence of definitions from directories\<close>
neuper@48763
   103
wneuper@59263
   104
(*declare [[ML_print_depth = 999]]*)
wneuper@59472
   105
ML \<open>
wneuper@59472
   106
\<close> ML \<open>
walther@59637
   107
parseNEW @{context} "xxx #> aaa bbb"
walther@59637
   108
\<close> ML \<open>
walther@59637
   109
#> : ('a -> 'b) * ('b -> 'c) -> 'a -> 'c
wneuper@59587
   110
\<close> ML \<open>
wneuper@59472
   111
\<close>
walther@59773
   112
ML \<open>Num_Calc.adhoc_thm; (*from "ProgLang/calculate.sml" *)\<close>
wneuper@59472
   113
ML \<open>Rewrite.rewrite_; (*from "ProgLang/rewrite.sml" *)\<close>
wneuper@59595
   114
ML \<open>Input_Descript.is_reall_dsc; (*from "ProgLang/scrtools.sml" *)\<close>
walther@59603
   115
ML \<open>Math_Engine.me;\<close>
walther@59613
   116
text \<open>contextthyOK2xml; (*"xmlsrc/interface-xml.sml"*)\<close>
walther@59603
   117
ML \<open>list_rls\<close>
wneuper@59562
   118
                                                         
walther@59603
   119
ML \<open>Prog_Expr.eval_occurs_in\<close>
walther@59603
   120
ML \<open>@{thm last_thmI}\<close>
wneuper@59472
   121
ML \<open>@{thm Querkraft_Belastung}\<close>
neuper@41905
   122
wneuper@59472
   123
ML \<open>Celem.check_guhs_unique := false;\<close>
wneuper@59472
   124
ML \<open>writeln "**** isac kernel = math-engine + Knowledge complete ******"\<close>
wneuper@59592
   125
ML \<open>@{theory "Isac_Knowledge"}\<close>
wneuper@59472
   126
ML \<open>(*get_the ["IsacKnowledge", "Diff", "Theorems", "diff_sin_chain"]
wneuper@59472
   127
  ERROR: app_py: not found: ["IsacKnowledge","Diff","Theorems","diff_sin_chain"]*)\<close>
neuper@42412
   128
wneuper@59472
   129
section \<open>State of approaching Isabelle by Isac\<close>
wneuper@59472
   130
text \<open>
neuper@55431
   131
  Mathias Lehnfeld gives the following list in his thesis in section 
neuper@55431
   132
  4.2.3 Relation to Ongoing Isabelle Development.
wneuper@59472
   133
\<close>
wneuper@59472
   134
subsection \<open>(0) Survey on remaining Unsynchronized.ref\<close>
wneuper@59472
   135
text \<open>
neuper@55433
   136
  REPLACE BY KEStore... (has been overlooked)
neuper@55433
   137
    calcelems.sml:val rew_ord' = Unsynchronized.ref ...
neuper@55433
   138
  KEEP FOR TRACING
neuper@55433
   139
    calcelems.sml:val trace_rewrite = Unsynchronized.ref false;
neuper@55433
   140
    calcelems.sml:val depth = Unsynchronized.ref 99999;
neuper@55433
   141
    calcelems.sml:val lim_rewrite = Unsynchronized.ref 99999;
neuper@55433
   142
    calcelems.sml:val lim_deriv = Unsynchronized.ref 100;
neuper@55433
   143
    Interpret/script.sml:val trace_script = Unsynchronized.ref false;
neuper@55433
   144
  KEEP FOR EASIER DEVELOPMENT
neuper@55433
   145
    calcelems.sml:val check_guhs_unique = Unsynchronized.ref true;
neuper@55433
   146
  KEEP FOR DEMOS
neuper@55433
   147
    Knowledge/GCD_Poly_ML.thy:  val trace_div = Unsynchronized.ref true;
neuper@55433
   148
    Knowledge/GCD_Poly_ML.thy:  val trace_div_invariant = Unsynchronized.ref false;
neuper@55433
   149
    Knowledge/GCD_Poly_ML.thy:  val trace_Euclid = Unsynchronized.ref true;
wneuper@59472
   150
\<close>
wneuper@59472
   151
subsection \<open>(1) Exploit parallelism for concurrent session management\<close>
wneuper@59472
   152
subsection \<open>(2) Make Isac’s programming language usable\<close>
wneuper@59472
   153
subsection \<open>(3) Adopt Isabelle’s numeral computation for Isac\<close>
wneuper@59472
   154
text \<open>
neuper@55431
   155
  In 2002 isac already strived for floating point numbers. Since that time
neuper@55431
   156
  isac represents numerals as "Free", see below (*1*). These experiments are
neuper@55431
   157
  unsatisfactory with respect to logical soundness.
neuper@55431
   158
  Since Isabelle now has started to care about floating point numbers, it is high 
neuper@55431
   159
  time to adopt these together with the other numerals. Isabelle2012/13's numerals
neuper@55431
   160
  are different from Isabelle2011, see "test/Tools/isac/ProgLang/termC.sml".
neuper@55431
   161
  
neuper@55431
   162
  The transition from "Free" to standard numerals is a task to be scheduled for 
neuper@55431
   163
  several weeks. The urgency of this task follows from the experience, 
neuper@55431
   164
  that (1.2) for "thehier" is very hard, because "num_str" seems to destroy 
neuper@55431
   165
  some of the long identifiers of theorems which would tremendously simplify
neuper@55431
   166
  building a hierarchy of theorems according to (1.2), see (*2*) below.
wneuper@59472
   167
\<close>
wneuper@59472
   168
ML \<open>(*1*) Free ("123.456", HOLogic.realT)\<close>
neuper@55484
   169
wneuper@59472
   170
subsection \<open>(4) Improve the efficiency of Isac’s rewrite-engine\<close>
wneuper@59472
   171
subsection \<open>(5) Adopt Isabelle/jEdit for Isac\<close>
neuper@55431
   172
neuper@37906
   173
end