src/HOL/IMP/Util.thy
author nipkow
Sun, 23 Oct 2011 14:15:24 +0200
changeset 45256 62b025f434e9
parent 44177 b4b5cbca2519
permissions -rw-r--r--
tuned order of eqns
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
44177
b4b5cbca2519 IMP/Util distinguishes between sets and functions again; imported only where used.
kleing
parents: 44174
diff changeset
     8
text {* Sets may be infinite and are not always displayed by element 
b4b5cbca2519 IMP/Util distinguishes between sets and functions again; imported only where used.
kleing
parents: 44174
diff changeset
     9
  if computed as values. Lists do not have this problem. 
43158
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    10
44177
b4b5cbca2519 IMP/Util distinguishes between sets and functions again; imported only where used.
kleing
parents: 44174
diff changeset
    11
  We define a function @{text show} that converts a set of
43158
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    12
  variable names into a list. To keep things simple, we rely on
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    13
  the convention that we only use single letter names.
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    14
*}
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    15
definition 
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    16
  letters :: "string list" where
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    17
  "letters = map (\<lambda>c. [c]) chars"
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
  "show" :: "string set \<Rightarrow> string list" where
44174
d1d79f0e1ea6 make more HOL theories work with separate set type
huffman
parents: 43158
diff changeset
    21
  "show S = filter (\<lambda>x. x \<in> S) letters" 
43158
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    22
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    23
value "show {''x'', ''z''}"
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    24
686fa0a0696e imported rest of new IMP
kleing
parents:
diff changeset
    25
end