src/Tools/isac/Isac_Mathengine.thy
author Walther Neuper <neuper@ist.tugraz.at>
Fri, 20 Aug 2010 12:25:37 +0200
branchisac-update-Isa09-2
changeset 37934 56f10b13005e
parent 37933 b65c6037eb6d
child 37935 27d365c3dd31
permissions -rw-r--r--
finished update ME/calchead.sml + pushed updates over all sml+test

not yet tackled in upcoming files:
# ProtoPure.thy --> (theory "Pure")
# cterm_of (sign_of thy) --> (Thm.cterm thy)
# member op = --> DONE, but TODO swap args
# string_of_cterm (cterm_of (sign_of " --> "(Syntax.string_of_term (thy2ctxt "
# Pattern.match
# there seem to be Problems with assoc_thy !?!
neuper@37906
     1
(*  Title:   ~~~/isac/Isac_Mathengine.thy
neuper@37906
     2
    Author: Walther Neuper, TU Graz
neuper@37906
     3
neuper@37910
     4
$ cd /usr/local/Isabelle2009-1/src/Tools/isac
neuper@37906
     5
$ /usr/local/isabisac/bin/isabelle emacs Isac_Mathengine.thy &
neuper@37906
     6
$ /usr/local/isabisac/bin/isabelle jedit Isac_Mathengine.thy &
neuper@37906
     7
neuper@37906
     8
OR tty (unusable: after errors wrong toplevel):
neuper@37906
     9
$ cd "/home/neuper/proto2/isac/src/sml"
neuper@37906
    10
$ isabelle-process HOL HOL-Isac
neuper@37906
    11
ML> use_thy "Isac_Mathengine"; 
neuper@37924
    12
neuper@37924
    13
12345678901234567890123456789012345678901234567890123456789012345678901234567890
neuper@37924
    14
        10        20        30        40        50        60        70        80
neuper@37906
    15
*)
neuper@37906
    16
neuper@37906
    17
header {* Loading the isac mathengine *}
neuper@37906
    18
neuper@37906
    19
theory Isac_Mathengine
neuper@37906
    20
(*imports Complex_Main*)
neuper@37906
    21
imports Complex_Main "Scripts/Script" (*ListG, Tools, Script*)
neuper@37906
    22
begin
neuper@37906
    23
neuper@37906
    24
ML {* Toplevel.debug := true; *}
neuper@37906
    25
use "library.sml"
neuper@37906
    26
use "calcelems.sml"
neuper@37906
    27
ML {* check_guhs_unique := true *}
neuper@37906
    28
neuper@37906
    29
use "Scripts/term_G.sml"
neuper@37906
    30
use "Scripts/calculate.sml"
neuper@37906
    31
use "Scripts/rewrite.sml"
neuper@37906
    32
use_thy"Scripts/Script"
neuper@37906
    33
use "Scripts/scrtools.sml"
neuper@37906
    34
neuper@37925
    35
use "ME/mstools.sml"
neuper@37925
    36
use "ME/ctree.sml"
neuper@37927
    37
use "ME/ptyps.sml"
neuper@37928
    38
use "ME/generate.sml"
neuper@37925
    39
neuper@37933
    40
neuper@37933
    41
ML {*
neuper@37934
    42
111;
neuper@37934
    43
member op = [1,2,3] 2;
neuper@37933
    44
*}
neuper@37933
    45
neuper@37932
    46
use "ME/calchead.sml"
neuper@37932
    47
neuper@37924
    48
ML {*
neuper@37934
    49
theory2theory';
neuper@37934
    50
(assoc_thy "Script");
neuper@37934
    51
(assoc_thy "Script.thy");
neuper@37924
    52
*}
neuper@37924
    53
neuper@37931
    54
(*
neuper@37906
    55
use "ME/appl.sml"
neuper@37906
    56
use "ME/rewtools.sml"
neuper@37906
    57
use "ME/script.sml"
neuper@37906
    58
use "ME/solve.sml"
neuper@37906
    59
use "ME/inform.sml"
neuper@37906
    60
use "ME/mathengine.sml"
neuper@37906
    61
neuper@37906
    62
use "xmlsrc/mathml.sml"
neuper@37906
    63
use "xmlsrc/datatypes.sml"
neuper@37906
    64
use "xmlsrc/pbl-met-hierarchy.sml"
neuper@37906
    65
use "xmlsrc/thy-hierarchy.sml" 
neuper@37906
    66
use "xmlsrc/interface-xml.sml"
neuper@37906
    67
neuper@37906
    68
use "FE-interface/messages.sml"
neuper@37906
    69
use "FE-interface/states.sml"
neuper@37906
    70
use "FE-interface/interface.sml"
neuper@37906
    71
neuper@37906
    72
use "print_exn_G.sml"
neuper@37906
    73
neuper@37906
    74
text "**** build math-engine complete *************************"
neuper@37906
    75
*)(*
neuper@37906
    76
setup {*
neuper@37906
    77
  Code_Preproc.setup
neuper@37906
    78
  #> Code_ML.setup
neuper@37906
    79
  #> Code_Haskell.setup
neuper@37906
    80
  #> Nbe.setup
neuper@37906
    81
*}
neuper@37906
    82
*)
neuper@37906
    83
neuper@37925
    84
(*--------------------------shift to some isac-10 -------------------
neuper@37906
    85
(*cleaner output from...*)
neuper@37906
    86
ML_command {*
neuper@37906
    87
"----- ";
neuper@37906
    88
writeln "werwerw";
neuper@37906
    89
*}
neuper@37906
    90
neuper@37906
    91
ML {* @{prop "False"} *}
neuper@37906
    92
(*ML {* @{type "int"} *} only new version*)
neuper@37906
    93
ML {* @{thm  conjI} *}
neuper@37906
    94
ML {* @{thms  conjI TrueI} *}
neuper@37906
    95
ML {* @{theory} *}
neuper@37906
    96
neuper@37906
    97
ML{* @{const_name plus} *} (*creates long names (extern names)*)
neuper@37906
    98
term plus
neuper@37906
    99
neuper@37906
   100
term foo
neuper@37906
   101
(*ML{* @{const_name foo} *}  only new version*)
neuper@37906
   102
 
neuper@37906
   103
text {*
neuper@37906
   104
werwer
neuper@37906
   105
 *}
neuper@37906
   106
neuper@37906
   107
ML {*
neuper@37906
   108
  fun inc_by_five x =
neuper@37906
   109
  x |> (fn x => x + 1)
neuper@37906
   110
*}
neuper@37906
   111
neuper@37906
   112
(*canonical argument order introduced after 1997*)
neuper@37906
   113
neuper@37906
   114
text{*
neuper@37906
   115
this is the most appropriate fold for lists (generalizes to lists of lists by (fold o fold o fold))
neuper@37906
   116
@{ML fold}
neuper@37906
   117
neuper@37906
   118
@{ML fold_rev}
neuper@37906
   119
neuper@37906
   120
for accumulating side results in |>
neuper@37906
   121
@{ML fold_map}
neuper@37906
   122
*}
neuper@37906
   123
neuper@37906
   124
ML {* 
neuper@37906
   125
  val items = 1 upto 10;
neuper@37906
   126
  val l1 = fold cons items []; (*alternating useful frequently*)
neuper@37906
   127
*}
neuper@37906
   128
neuper@37906
   129
ML{*
neuper@37906
   130
  fun merge_list eq (xs, ys) = fold_rev (insert eq) ys xs;
neuper@37906
   131
*}
neuper@37906
   132
ML{*
neuper@37906
   133
  merge_list (op =) ([3,2,1], [7,5,3,1]);
neuper@37906
   134
  merge_list (op =) ([3,2,1], [7,5,3,1]);
neuper@37906
   135
*}
neuper@37906
   136
neuper@37906
   137
(*session 2-------Christian+Makarius---------------*)
neuper@37906
   138
ML{*
neuper@37906
   139
let
neuper@37906
   140
  val ctxt = @{context}
neuper@37906
   141
in 1 end
neuper@37906
   142
*}
neuper@37906
   143
neuper@37906
   144
(* build and handle tables THIS IS THE ACCESS-STRUCTURE...
neuper@37906
   145
ML{*
neuper@37906
   146
  structure Data = Theory_Data
neuper@37906
   147
  (
neuper@37906
   148
    type T = term Symtab.table
neuper@37906
   149
    val empty = Symtab.empty
neuper@37906
   150
    val extend = O
neuper@37906
   151
    fun merge (t1, t2) = Symtab.merge (op = ) (t1, t2)
neuper@37906
   152
  )
neuper@37906
   153
*}
neuper@37906
   154
*)
neuper@37906
   155
(*session 3-------Blanchette--------------------
neuper@37906
   156
working on nitpic, ML level tool
neuper@37906
   157
neuper@37906
   158
SEE THESE LECTURE NOTES !!!*)
neuper@37906
   159
neuper@37906
   160
(*
neuper@37906
   161
ML{*
neuper@37906
   162
Const ("x", dummyT) |> Syntax.check_term @{context}
neuper@37906
   163
                       ^^^^^^^^^^^^^^^^^
neuper@37906
   164
*}
neuper@37906
   165
*)
neuper@37906
   166
neuper@37906
   167
text{*
neuper@37906
   168
SEE funs for 
neuper@37906
   169
# deleting identifiers
neuper@37906
   170
# handle Bounds when made visible
neuper@37906
   171
# kill trivial quantifiers, e.g. \foral x. (NO x)
neuper@37906
   172
# handling name clashes in Abs
neuper@37906
   173
# which constants, free vars ... occur in a term !!!!!!!!!!!
neuper@37906
   174
# Var (("x", 2), dummyT)   ... 25 old from Larry "maxidx"
neuper@37906
   175
# get fresh Const, Var
neuper@37906
   176
# use the "Name" structure
neuper@37906
   177
neuper@37906
   178
*}
neuper@37906
   179
neuper@37906
   180
ML{* val context = Name.make_context ["d"] *}
neuper@37906
   181
neuper@37906
   182
(*
neuper@37906
   183
ML{* Name.invents context "foo" 10  *}
neuper@37906
   184
(*ML{* Name variants ... *}*)
neuper@37906
   185
*)
neuper@37925
   186
--------------------------shift to some isac-10 -------------------*)
neuper@37906
   187
neuper@37906
   188
end
neuper@37906
   189