src/HOL/IMP/Util.thy
author huffman
Fri, 12 Aug 2011 14:45:50 -0700
changeset 44174 d1d79f0e1ea6
parent 43158 686fa0a0696e
child 44177 b4b5cbca2519
permissions -rw-r--r--
make more HOL theories work with separate set type
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
43158
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
     1
(* Author: Tobias Nipkow *)
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
     2
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
     3
theory Util imports Main
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
     4
begin
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
     5
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
     6
subsection "Show sets of variables as lists"
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
     7
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
     8
text {* Sets are functions and are not displayed by element if
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
     9
computed as values: *}
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    10
value "{''x'', ''y''}"
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    11
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    12
text {* Lists do not have this problem *}
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    13
value "[''x'', ''y'']"
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    14
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    15
text {* We define a function @{text show} that converts a set of
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    16
  variable names into a list. To keep things simple, we rely on
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    17
  the convention that we only use single letter names.
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    18
*}
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    19
definition 
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    20
  letters :: "string list" where
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    21
  "letters = map (\<lambda>c. [c]) chars"
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    22
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    23
definition 
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    24
  "show" :: "string set \<Rightarrow> string list" where
44174
d1d79f0e1ea6 make more HOL theories work with separate set type
huffman
parents: 43158
diff changeset
    25
  "show S = filter (\<lambda>x. x \<in> S) letters" 
43158
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    26
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    27
value "show {''x'', ''z''}"
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    28
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    29
end