ProgTutorial/Recipes/StoringData.thy
author Christian Urban <urbanc@in.tum.de>
Mon, 18 May 2009 05:21:40 +0200
changeset 251 cccb25ee1309
parent 211 d5accbc67e1b
permissions -rw-r--r--
a few additions
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
61
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
     1
theory StoringData
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
     2
imports "../Base"
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
     3
begin
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
     4
211
d5accbc67e1b more work on simple inductive and marked all sections that are still seriously incomplete with TBD
Christian Urban <urbanc@in.tum.de>
parents: 189
diff changeset
     5
section {* Storing Data (TBD)\label{rec:storingdata} *} 
61
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
     6
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
     7
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
     8
text {*
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
     9
  {\bf Problem:} 
68
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    10
  Your tool needs to manage data.\smallskip
61
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    11
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    12
  {\bf Solution:} This can be achieved using a generic data slot.\smallskip
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    13
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    14
  Every generic data slot may keep data of any kind which is stored in the
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    15
  context.
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    16
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    17
  *}
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    18
69
19106a9975c1 highligted the background of ML-code
Christian Urban <urbanc@in.tum.de>
parents: 68
diff changeset
    19
ML{*local
61
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    20
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    21
structure Data = GenericDataFun
68
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    22
 ( type T = int Symtab.table
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    23
   val empty = Symtab.empty
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    24
   val extend = I
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    25
   fun merge _ = Symtab.merge (K true)
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    26
 )
61
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    27
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    28
in
69
19106a9975c1 highligted the background of ML-code
Christian Urban <urbanc@in.tum.de>
parents: 68
diff changeset
    29
 val lookup = Symtab.lookup o Data.get
19106a9975c1 highligted the background of ML-code
Christian Urban <urbanc@in.tum.de>
parents: 68
diff changeset
    30
 fun update k v = Data.map (Symtab.update (k, v))
63
Christian Urban <urbanc@in.tum.de>
parents: 61
diff changeset
    31
end *}
61
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    32
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    33
setup {* Context.theory_map (update "foo" 1) *}
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    34
68
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    35
text {*
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    36
 
72
7b8c4fe235aa added an antiquotation option [gray] for gray boxes around displays
Christian Urban <urbanc@in.tum.de>
parents: 69
diff changeset
    37
  @{ML_response [display,gray] "lookup (Context.Proof @{context}) \"foo\"" "SOME 1"} 
68
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    38
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    39
e7519207c2b7 added more to the "new command section" and tuning
Christian Urban <urbanc@in.tum.de>
parents: 63
diff changeset
    40
*}
61
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    41
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    42
text {*
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    43
  alternatives: TheoryDataFun, ProofDataFun
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    44
  Code: Pure/context.ML *}
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    45
64c9540f2f84 Added four recipes.
boehmes
parents:
diff changeset
    46
end