src/Tools/isac/Build_Isac.thy
author wneuper <Walther.Neuper@jku.at>
Tue, 05 Dec 2023 18:15:45 +0100
changeset 60772 ac0317936138
parent 60771 1b072aab8f4e
child 60773 439e23525491
permissions -rw-r--r--
prepare 1: towards I_Model.T_POS in Specify/ (and no I_Model.T)
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 &
Walther@60679
     8
                                       
wneuper@59586
     9
ATTENTION: no errors in this theory do not mean that there are no errors in Isac ..
walther@59866
    10
.. open theories collecting files from folders: BaseDefinitions.thy, ProgLang.thy etc.
walther@59632
    11
Errors are rigorously detected by isabelle build.
neuper@37906
    12
*)
neuper@37906
    13
walther@59998
    14
theory Build_Isac
wneuper@59206
    15
imports
walther@59887
    16
(*  theory Know_Store imports Complex_Main
wenzelm@60192
    17
    $ISABELLE_ISAC/BaseDefinitions
walther@59632
    18
      ML_file libraryC.sml
walther@59865
    19
      ML_file theoryC.sml
walther@59963
    20
      ML_file unparseC.sml
Walther@60767
    21
      ML_file "rule-def.sml"                    
walther@59963
    22
      ML_file "thmC-def.sml"
walther@59919
    23
      ML_file "eval-def.sml"
walther@59858
    24
      ML_file "rewrite-order.sml"
walther@59632
    25
      ML_file rule.sml
walther@59963
    26
      ML_file "error-pattern-def.sml"
walther@59852
    27
      ML_file "rule-set.sml"
walther@59963
    28
      
walther@59963
    29
      ML_file "store.sml"
walther@59963
    30
      ML_file "check-unique.sml"
walther@59963
    31
      ML_file "specification.sml"
walther@59963
    32
      ML_file "model-pattern.sml"
walther@59963
    33
      ML_file "problem-def.sml"
walther@59963
    34
      ML_file "method-def.sml"
walther@59963
    35
      ML_file "cas-def.sml"
walther@59963
    36
      ML_file "thy-write.sml"
walther@59887
    37
  theory BaseDefinitions imports Know_Store
wenzelm@60192
    38
  $ISABELLE_ISAC/BaseDefinitions
walther@59632
    39
    ML_file termC.sml
walther@59963
    40
    ML_file substitution.sml
walther@59632
    41
    ML_file contextC.sml
walther@59687
    42
    ML_file environment.sml
walther@60077
    43
( ** )    "BaseDefinitions/BaseDefinitions"( **)
walther@60317
    44
(*
Walther@60516
    45
      theory Calc_Binop imports "$ISABELLE_ISAC/BaseDefinitions/BaseDefinitions"
walther@60317
    46
        at $ISABELLE_ISAC/ProgLang
walther@59902
    47
        ML_file evaluate.sml
wenzelm@60192
    48
      theory ListC imports "$ISABELLE_ISAC/BaseDefinitions/BaseDefinitions"
wenzelm@60192
    49
      theory Program imports "$ISABELLE_ISAC/BaseDefinitions/BaseDefinitions"
Walther@60516
    50
    theory Prog_Expr imports Calc_Binop ListC Program
walther@60317
    51
     theory Prog_Tac imports "$ISABELLE_ISAC/BaseDefinitions/BaseDefinitions"
wenzelm@60192
    52
      theory Tactical imports "$ISABELLE_ISAC/BaseDefinitions/BaseDefinitions"
walther@60317
    53
    theory Auto_Prog imports Prog_Tac Tactical
walther@59632
    54
  theory ProgLang imports Prog_Expr Auto_Prog
walther@60317
    55
    at $ISABELLE_ISAC/ProgLang
walther@60077
    56
( ** )    "ProgLang/ProgLang"( **)
wneuper@59600
    57
(*
walther@59674
    58
  theory MathEngBasic imports
wenzelm@60192
    59
    "$ISABELLE_ISAC/ProgLang/ProgLang" "$ISABELLE_ISAC/Specify/Input_Descript"
walther@60317
    60
    at $ISABELLE_ISAC/MathEngBasic
walther@59875
    61
    ML_file thmC.sml
Walther@60602
    62
    ML_file "model-def.sml"
walther@59963
    63
    ML_file problem.sml
walther@59963
    64
    ML_file method.sml
walther@59963
    65
    ML_file "cas-command.sml"
walther@59963
    66
  
walther@59865
    67
    ML_file rewrite.sml
walther@59963
    68
  
walther@59963
    69
    ML_file "istate-def.sml"
walther@59674
    70
    ML_file "calc-tree-elem.sml"
walther@59963
    71
    ML_file "pre-conds-def.sml"
walther@59963
    72
  
walther@59632
    73
    ML_file tactic.sml
walther@59963
    74
    ML_file applicable.sml
walther@59963
    75
  
walther@59777
    76
    ML_file position.sml
walther@59674
    77
    ML_file "ctree-basic.sml"
walther@59674
    78
    ML_file "ctree-access.sml"
walther@59674
    79
    ML_file "ctree-navi.sml"
walther@59674
    80
    ML_file ctree.sml
walther@59963
    81
  
walther@59963
    82
    ML_file "state-steps.sml"
walther@59777
    83
    ML_file calculation.sml
walther@60077
    84
( ** )    "MathEngBasic/MathEngBasic"( **)
walther@59674
    85
(*
wenzelm@60192
    86
    theory Input_Descript imports "$ISABELLE_ISAC/BaseDefinitions/BaseDefinitions"
wenzelm@60192
    87
    $ISABELLE_ISAC/Specify
wenzelm@60192
    88
  theory Specify imports "$ISABELLE_ISAC/ProgLang/ProgLang" Input_Descript
wenzelm@60192
    89
  $ISABELLE_ISAC/Specify
walther@59963
    90
    ML_file "o-model.sml"
Walther@60767
    91
    ML_file "pre-conditions.sml" (*uses Model_Def.i_model*)
walther@59963
    92
    ML_file "i-model.sml"
walther@59963
    93
    ML_file "p-model.sml"
Walther@60767
    94
    ML_file "m-match.sml"
walther@59963
    95
    ML_file refine.sml
walther@59963
    96
    ML_file "test-out.sml"
walther@59963
    97
    ML_file "specify-step.sml"
Walther@60767
    98
    ML_file specification.sml
Walther@60767
    99
    ML_file "cas-command.sml"
Walther@60767
   100
    ML_file "p-spec.sml"
Walther@60767
   101
    ML_file specify.sml
Walther@60767
   102
    ML_file "sub-problem.sml"
walther@59777
   103
    ML_file "step-specify.sml"
walther@60077
   104
( ** )    "Specify/Specify"( **)
wneuper@59600
   105
(*
wenzelm@60192
   106
  theory Interpret imports "$ISABELLE_ISAC/Specify/Specify"
wenzelm@60192
   107
  $ISABELLE_ISAC/Interpret
walther@59777
   108
    ML_file istate.sml
walther@59963
   109
    ML_file "sub-problem.sml"
walther@59963
   110
    ML_file "thy-read.sml"
Walther@60567
   111
    ML_file "li-tool.sml"
walther@59963
   112
    ML_file "solve-step.sml"
walther@59963
   113
    ML_file "error-pattern.sml"
walther@59963
   114
    ML_file derive.sml
walther@59632
   115
    ML_file "lucas-interpreter.sml"
walther@59794
   116
    ML_file "step-solve.sml"
walther@60077
   117
( ** )    "Interpret/Interpret"( **)
wneuper@59600
   118
(*
walther@60077
   119
  theory MathEngine imports Interpret.Interpret
wenzelm@60192
   120
  $ISABELLE_ISAC/MathEngine
walther@59833
   121
    ML_file "fetch-tactics.sml"
walther@59632
   122
    ML_file solve.sml
walther@59794
   123
    ML_file step.sml
walther@59833
   124
    ML_file "detail-step.sml"
walther@59634
   125
    ML_file "mathengine-stateless.sml"
walther@59632
   126
    ML_file messages.sml
walther@59632
   127
    ML_file states.sml
walther@60077
   128
( ** )    "MathEngine/MathEngine"( **)
wneuper@59600
   129
(*
wenzelm@60192
   130
  theory Test_Code imports "$ISABELLE_ISAC/MathEngine/MathEngine"
wenzelm@60192
   131
  $ISABELLE_ISAC/Test_Code
walther@59814
   132
    ML_file "test-code.sml"
walther@60077
   133
( ** )    "Test_Code/Test_Code"( **)
walther@59814
   134
(*
wenzelm@60192
   135
  theory BridgeLibisabelle imports "$ISABELLE_ISAC/MathEngine/MathEngine"
wenzelm@60192
   136
  $ISABELLE_ISAC/BridgeLibisabelle
walther@59963
   137
    ML_file "thy-present.sml"
walther@59963
   138
    ML_file mathml.sml   
walther@59632
   139
    ML_file datatypes.sml
walther@59632
   140
    ML_file "pbl-met-hierarchy.sml"
walther@59632
   141
    ML_file "thy-hierarchy.sml" 
walther@59632
   142
    ML_file "interface-xml.sml"
walther@59632
   143
    ML_file interface.sml
walther@60077
   144
( ** )    "BridgeLibisabelle/BridgeLibisabelle"( **)
walther@60044
   145
(*
walther@60181
   146
    theory Calculation imports Calculation (*preliminary for starting Isabelle/Isac*)
wenzelm@60192
   147
    $ISABELLE_ISAC/BridgeJEdit
walther@60181
   148
      ML_file preliminary.sml
walther@60181
   149
  theory BridgeJEdit imports Calculation (*preliminary for starting Isabelle/Isac*)
wenzelm@60192
   150
  $ISABELLE_ISAC/BridgeJEdit
walther@60181
   151
( ** )    "BridgeLibisabelle/BridgeLibisabelle"( **)
walther@60181
   152
(*
Walther@60693
   153
        theory E_Collect imports "$ISABELLE_ISAC/Knowledge/Build_Thydata"
Walther@60693
   154
      theory Calculation imports E_Collect "$ISABELLE_ISAC/Knowledge/Build_Isac"
Walther@60693
   155
        ML_file "user-model.sml"
Walther@60693
   156
        (*ML_file "template.sml"*)
Walther@60693
   157
        ML_file "preliminary.sml"
Walther@60693
   158
    theory VSCode_Example imports Calculation
Walther@60693
   159
  theory BridgeJEdit imports VSCode_Example    
walther@60149
   160
( **)    "BridgeJEdit/BridgeJEdit"  (*DEactivate after devel.of BridgeJEdit*)
wneuper@59147
   161
walther@59612
   162
          "Knowledge/Build_Thydata" (*imports Isac.thy etc*)
wneuper@59469
   163
wneuper@59601
   164
(*//-----------------------------------------------------------------------------------------\\*)
wneuper@59601
   165
(*\\-----------------------------------------------------------------------------------------//*)
neuper@48763
   166
begin
Walther@60566
   167
ML \<open>
Walther@60740
   168
(** )
Walther@60740
   169
( **)
Walther@60566
   170
\<close> ML \<open>
Walther@60763
   171
@{term Gleichungen}
Walther@60571
   172
\<close> ML \<open>
Walther@60566
   173
\<close> 
Walther@60631
   174
subsection \<open>make Minisubpbl independent from Thy_Info\<close>
Walther@60631
   175
text \<open>
Walther@60631
   176
  We want Isac to become independent from sessions Specify, Interpret and Isac.
Walther@60631
   177
  This goal will be checked by the tests finally.
Walther@60631
   178
  As first step we go top down and make Minisubpbl independent form Thy_Info here
Walther@60631
   179
  and make sure, that the right ctxt is passed throughout the code.
Walther@60631
   180
  As next step we go bottom up from Thy_Info.get_theory and remove it.
Walther@60771
   181
  Afterwards $ISABELLE_ISAC_POS will be changed accordingly.
Walther@60631
   182
\<close>
Walther@60763
   183
(** ) (* evaluated in Test_Isac/_Short *)
Walther@60771
   184
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/000-comments.sml"
Walther@60771
   185
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/100a-init-rootpbl-Maximum.sml"
Walther@60771
   186
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/150a-add-given-Maximum.sml"
Walther@60771
   187
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/150-add-given-Equation.sml"
Walther@60771
   188
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/200-start-method-NEXT_STEP.sml"
Walther@60771
   189
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/200-start-method.sml"
Walther@60771
   190
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/250-Rewrite_Set-from-method-NEXT_STEP.sml"
Walther@60771
   191
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/250-Rewrite_Set-from-method.sml"
Walther@60771
   192
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/300-init-subpbl-NEXT_STEP.sml"
Walther@60771
   193
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/300-init-subpbl.sml"
Walther@60771
   194
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/400-start-meth-subpbl.sml"
Walther@60771
   195
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/450-Rewrite_Set_Inst.sml"
Walther@60771
   196
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/470-Check_elementwise-NEXT_STEP.sml"
Walther@60771
   197
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/490-nxt-Check_Postcond.sml"
Walther@60771
   198
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/500-met-sub-to-root.sml"
Walther@60771
   199
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/530-error-Check_Elementwise.sml"
Walther@60771
   200
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/600-postcond-NEXT_STEP.sml"
Walther@60771
   201
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/600-postcond.sml"
Walther@60771
   202
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/700-interSteps.sml"
Walther@60771
   203
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/710-interSteps-short.sml"
Walther@60771
   204
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/790-complete-NEXT_STEP.sml"
Walther@60771
   205
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/790-complete.sml"
Walther@60771
   206
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Minisubpbl/800-append-on-Frm.sml"
Walther@60725
   207
(**)                                          
Walther@60771
   208
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Specify/i-model.sml"
Walther@60763
   209
(**)                                          
Walther@60771
   210
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/Specify/pre-conditions.sml"
Walther@60705
   211
Walther@60771
   212
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/BridgeJEdit/e-collect.sml"
Walther@60771
   213
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/BridgeJEdit/user-model.sml"
Walther@60771
   214
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/BridgeJEdit/template.sml"
Walther@60771
   215
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/BridgeJEdit/preliminary.sml"
Walther@60771
   216
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/BridgeJEdit/calculation.sml"
Walther@60771
   217
  ML_file "$ISABELLE_ISAC_POS/Tools/isac/BridgeJEdit/vscode-example.sml"
Walther@60763
   218
( **)                                          
Walther@60736
   219
Walther@60752
   220
(* evaluated in Test_Isac/_Short *)                               
Walther@60702
   221
wneuper@59472
   222
section \<open>check presence of definitions from directories\<close>
neuper@48763
   223
wneuper@59263
   224
(*declare [[ML_print_depth = 999]]*)
walther@59902
   225
ML \<open>Eval.adhoc_thm; (*from "ProgLang/evaluate.sml" *)\<close>
wneuper@59472
   226
ML \<open>Rewrite.rewrite_; (*from "ProgLang/rewrite.sml" *)\<close>
walther@59953
   227
ML \<open>Input_Descript.for_real_list; (*from "Input_Descript.thy" *)\<close>
Walther@60557
   228
ML \<open>(*Test_Code.me;*)\<close>
walther@59613
   229
text \<open>contextthyOK2xml; (*"xmlsrc/interface-xml.sml"*)\<close>
walther@59801
   230
ML \<open>prog_expr\<close>
wneuper@59562
   231
                                                         
walther@59603
   232
ML \<open>Prog_Expr.eval_occurs_in\<close>
walther@59603
   233
ML \<open>@{thm last_thmI}\<close>
walther@60077
   234
(** )ML \<open>@{thm Querkraft_Belastung}\<close>( *exception FAIL NONE raised (line 161 of "General/scan.ML")*)
neuper@41905
   235
Walther@60502
   236
declare [[check_unique = false]]
wneuper@59472
   237
ML \<open>writeln "**** isac kernel = math-engine + Knowledge complete ******"\<close>
wneuper@59592
   238
ML \<open>@{theory "Isac_Knowledge"}\<close>
wneuper@59472
   239
ML \<open>(*get_the ["IsacKnowledge", "Diff", "Theorems", "diff_sin_chain"]
walther@59997
   240
  ERROR: app_py: not found: ["IsacKnowledge", "Diff", "Theorems", "diff_sin_chain"]*)\<close>
neuper@42412
   241
wneuper@59472
   242
section \<open>State of approaching Isabelle by Isac\<close>
wneuper@59472
   243
text \<open>
Walther@60551
   244
  Mathias Lehnfeld gives the following list in his thesis in section 
neuper@55431
   245
  4.2.3 Relation to Ongoing Isabelle Development.
wneuper@59472
   246
\<close>
wneuper@59472
   247
subsection \<open>(0) Survey on remaining Unsynchronized.ref\<close>
wneuper@59472
   248
text \<open>
Walther@60507
   249
  DONE
wneuper@59472
   250
\<close>
wneuper@59472
   251
subsection \<open>(1) Exploit parallelism for concurrent session management\<close>
wneuper@59472
   252
subsection \<open>(2) Make Isac’s programming language usable\<close>
wneuper@59472
   253
subsection \<open>(3) Adopt Isabelle’s numeral computation for Isac\<close>
wneuper@59472
   254
text \<open>
neuper@55431
   255
  In 2002 isac already strived for floating point numbers. Since that time
neuper@55431
   256
  isac represents numerals as "Free", see below (*1*). These experiments are
neuper@55431
   257
  unsatisfactory with respect to logical soundness.
neuper@55431
   258
  Since Isabelle now has started to care about floating point numbers, it is high 
neuper@55431
   259
  time to adopt these together with the other numerals. Isabelle2012/13's numerals
Walther@60771
   260
  are different from Isabelle2011, see "$ISABELLE_ISAC_POS/Tools/isac/ProgLang/termC.sml".
neuper@55431
   261
  
neuper@55431
   262
  The transition from "Free" to standard numerals is a task to be scheduled for 
neuper@55431
   263
  several weeks. The urgency of this task follows from the experience, 
neuper@55431
   264
  that (1.2) for "thehier" is very hard, because "num_str" seems to destroy 
neuper@55431
   265
  some of the long identifiers of theorems which would tremendously simplify
neuper@55431
   266
  building a hierarchy of theorems according to (1.2), see (*2*) below.
wneuper@59472
   267
\<close>
wneuper@59472
   268
ML \<open>(*1*) Free ("123.456", HOLogic.realT)\<close>
neuper@55484
   269
wneuper@59472
   270
subsection \<open>(4) Improve the efficiency of Isac’s rewrite-engine\<close>
wneuper@59472
   271
subsection \<open>(5) Adopt Isabelle/jEdit for Isac\<close>
neuper@55431
   272
Walther@60710
   273
ML \<open>
Walther@60772
   274
\<close> text \<open>
Walther@60772
   275
I_Model.T_POS
Walther@60710
   276
\<close> ML \<open>
Walther@60763
   277
I_Model.TEST_to_OLD  ;
Walther@60772
   278
I_Model.TEST_to_OLD_single  ;
Walther@60772
   279
I_Model.feedback_POS_to_OLD  ;
Walther@60772
   280
Walther@60772
   281
I_Model.OLD_to_POS  ;
Walther@60772
   282
I_Model.OLD_to_POS_single  ;
Walther@60772
   283
I_Model.feedback_OLD_to_POS  ;
Walther@60760
   284
(*OLD*)
Walther@60760
   285
(*---*)
Walther@60760
   286
(*NEW*)
Walther@60762
   287
\<close> ML \<open>
Walther@60762
   288
\<close>
neuper@37906
   289
end
Walther@60763
   290
Walther@60763
   291
Walther@60763
   292
Walther@60763
   293
Walther@60763
   294
Walther@60763
   295
Walther@60763
   296
Walther@60770
   297
Walther@60770
   298
Walther@60770
   299
Walther@60770
   300
Walther@60770
   301
Walther@60770
   302
Walther@60770
   303
Walther@60770
   304
Walther@60770
   305
Walther@60770
   306