src/Tools/isac/Build_Isac.thy
author Walther Neuper <neuper@ist.tugraz.at>
Thu, 05 Jun 2014 18:10:46 +0200
changeset 55431 cc3acbd5c935
parent 55276 ce872d7781d2
child 55433 f3953f38ed5c
permissions -rw-r--r--
plans for approaching Isabelle with Isac
neuper@52061
     1
(*  Title:  build and test isac on Isabelle2013
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.
neuper@52062
     6
neuper@52062
     7
ATTENTION: no errors in this theory do not mean that there are no errors in Isac;
neuper@52062
     8
errors are rigorously detected when creating a heap.
neuper@37906
     9
*)
neuper@37906
    10
neuper@55276
    11
header {* Loading the isac mathengine;
neuper@55276
    12
  for debugging see text at begin (theory dependencies!) *}
neuper@37906
    13
neuper@48761
    14
theory Build_Isac 
neuper@48760
    15
imports Complex_Main
neuper@48761
    16
(* use    "library.sml"
neuper@48761
    17
   use    "calcelems.sml"
neuper@41905
    18
neuper@48761
    19
   use    "ProgLang/termC.sml"
neuper@41905
    20
   use    "ProgLang/calculate.sml"
neuper@41905
    21
   use    "ProgLang/rewrite.sml"
neuper@41905
    22
  "use_thy ProgLang/ListC"
neuper@48880
    23
  "use_thy ProgLang/Tools"                                                 
neuper@41905
    24
  "use_thy ProgLang/Script"
neuper@41905
    25
   use    "ProgLang/scrtools.sml"
neuper@52062
    26
*)        "ProgLang/ProgLang"
neuper@48761
    27
neuper@48763
    28
(* use    "Interpret/mstools.sml"
neuper@48763
    29
   use    "Interpret/ctree.sml"
neuper@48763
    30
   use    "Interpret/ptyps.sml"
neuper@48763
    31
   use    "Interpret/generate.sml"
neuper@48763
    32
   use    "Interpret/calchead.sml"
neuper@48763
    33
   use    "Interpret/appl.sml"
neuper@48763
    34
   use    "Interpret/rewtools.sml"
neuper@48763
    35
   use    "Interpret/script.sml"
neuper@48763
    36
   use    "Interpret/solve.sml"
neuper@48763
    37
   use    "Interpret/inform.sml"
neuper@48763
    38
   use    "Interpret/mathengine.sml"
neuper@52062
    39
*)        "Interpret/Interpret"
neuper@48761
    40
neuper@52062
    41
(* use    "xmlsrc/mathml.sml"
neuper@48762
    42
   use    "xmlsrc/datatypes.sml"
neuper@41905
    43
   use    "xmlsrc/pbl-met-hierarchy.sml"
neuper@48895
    44
   use    "xmlsrc/thy-hierarchy.sml"                               
neuper@41905
    45
   use    "xmlsrc/interface-xml.sml"
neuper@52062
    46
*)        "xmlsrc/xmlsrc"
neuper@41905
    47
neuper@48763
    48
(* use     "Frontend/messages.sml"
neuper@41905
    49
   use     "Frontend/states.sml"
neuper@41905
    50
   use     "Frontend/interface.sml"
neuper@41905
    51
neuper@41905
    52
   use     "print_exn_G.sml"
neuper@52062
    53
*)         "Frontend/Frontend"
bonzai@41918
    54
neuper@52062
    55
           "Knowledge/Build_Thydata" (*imports Isac.thy etc*)
neuper@48764
    56
neuper@48763
    57
begin
neuper@48760
    58
neuper@55276
    59
text {* 
neuper@55276
    60
  show theory dependencies using the graph browser, 
neuper@55276
    61
  open "browser_info/HOL/Isac/session.graph"
neuper@55276
    62
  and proceed from the ancestors towards the siblings.
neuper@55276
    63
*}
neuper@55276
    64
neuper@55431
    65
section {*check presence of definitions from directories*}
neuper@48763
    66
neuper@41905
    67
ML {* is_reall_dsc; (*from "ProgLang/scrtools.sml" *) *}
neuper@41905
    68
ML {* me; (*from "Interpret/mathengine.sml"*) *}
neuper@41905
    69
ML {* contextthyOK2xml; (*"xmlsrc/interface-xml.sml"*) *}
neuper@41905
    70
ML {* print_exn_unit *}
neuper@48880
    71
ML {* list_rls (*from Atools.thy WN130615??? or ProgLang???*) *}
neuper@48763
    72
neuper@41905
    73
ML {* eval_occurs_in (*from Atools.thy*) *}
neuper@41905
    74
ML {* @{thm last_thmI} (*from Atools.thy*) *}
neuper@41931
    75
ML {*@{thm Querkraft_Belastung}*}
neuper@41905
    76
neuper@38009
    77
ML {* check_guhs_unique := false; *}
neuper@48880
    78
ML {* writeln "**** isac kernel = math-engine + Knowledge complete ******" *}
neuper@41943
    79
ML {* @{theory "Isac"} *}
neuper@42407
    80
ML {* ! isab_thm_thy *}
neuper@42412
    81
neuper@55431
    82
section {* State of approaching Isabelle by Isac *}
neuper@55431
    83
text {* 
neuper@55431
    84
  Mathias Lehnfeld gives the following list in his thesis in section 
neuper@55431
    85
  4.2.3 Relation to Ongoing Isabelle Development.
neuper@55431
    86
*}
neuper@55431
    87
subsection {* (0) Survey on remaining Unsynchronized.ref *}
neuper@55431
    88
subsection {* (1) Exploit parallelism for concurrent session management *}
neuper@55431
    89
subsection {* (2) Make Isac’s programming language usable *}
neuper@55431
    90
subsection {* (3) Adopt Isabelle’s numeral computation for Isac *}
neuper@55431
    91
text {* 
neuper@55431
    92
  In 2002 isac already strived for floating point numbers. Since that time
neuper@55431
    93
  isac represents numerals as "Free", see below (*1*). These experiments are
neuper@55431
    94
  unsatisfactory with respect to logical soundness.
neuper@55431
    95
  Since Isabelle now has started to care about floating point numbers, it is high 
neuper@55431
    96
  time to adopt these together with the other numerals. Isabelle2012/13's numerals
neuper@55431
    97
  are different from Isabelle2011, see "test/Tools/isac/ProgLang/termC.sml".
neuper@55431
    98
  
neuper@55431
    99
  The transition from "Free" to standard numerals is a task to be scheduled for 
neuper@55431
   100
  several weeks. The urgency of this task follows from the experience, 
neuper@55431
   101
  that (1.2) for "thehier" is very hard, because "num_str" seems to destroy 
neuper@55431
   102
  some of the long identifiers of theorems which would tremendously simplify
neuper@55431
   103
  building a hierarchy of theorems according to (1.2), see (*2*) below.
neuper@55431
   104
*}
neuper@55431
   105
ML {*(*1*) Free ("123.456", HOLogic.realT) *}
neuper@55431
   106
ML {*(*2*)
neuper@55431
   107
val unknown = filter ((curry op= "??.unknown") o fst) isacrlsthms';
neuper@55431
   108
unknown |> nth 1 |> snd |> term_to_string''' @{theory};
neuper@55431
   109
unknown |> nth 2 |> snd |> term_to_string''' @{theory};
neuper@55431
   110
(*but these seem ok:*)
neuper@55431
   111
  Thm.get_name_hint @{thm add_0};
neuper@55431
   112
  Thm.get_name_hint (num_str @{thm add_0});
neuper@55431
   113
*}
neuper@55431
   114
subsection {* (4) Improve the efficiency of Isac’s rewrite-engine *}
neuper@55431
   115
subsection {* (5) Adopt Isabelle/jEdit for Isac *}
neuper@55431
   116
neuper@37906
   117
end