src/HOL/IMP/Collecting_Examples.thy
author nipkow
Fri, 11 Jan 2013 13:24:36 +0100
changeset 50821 95a61264a6ab
parent 50766 d5c07ddd929b
child 50986 c54ea7f5418f
permissions -rw-r--r--
tuned
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48765
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
     1
theory Collecting_Examples
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
     2
imports Collecting
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
     3
begin
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
     4
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
     5
text{* Tweak code generation to work with sets of non-equality types: *}
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
     6
declare insert_code[code del] union_coset_filter[code del]
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
     7
lemma insert_code [code]:  "insert x (set xs) = set (x#xs)"
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
     8
by simp
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
     9
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    10
text{* The example: *}
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    11
definition "c = WHILE Less (V ''x'') (N 3)
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    12
                DO ''x'' ::= Plus (V ''x'') (N 2)"
50766
d5c07ddd929b tuned names
nipkow
parents: 49767
diff changeset
    13
definition C0 :: "state set acom" where "C0 = anno {} c"
48765
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    14
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    15
definition "show_acom xs = map_acom (\<lambda>S. show_state xs ` S)"
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    16
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    17
text{* Collecting semantics: *}
50821
nipkow
parents: 50766
diff changeset
    18
nipkow
parents: 50766
diff changeset
    19
value "show_acom [''x''] (((step {<>}) ^^ 1) C0)"
nipkow
parents: 50766
diff changeset
    20
value "show_acom [''x''] (((step {<>}) ^^ 2) C0)"
nipkow
parents: 50766
diff changeset
    21
value "show_acom [''x''] (((step {<>}) ^^ 3) C0)"
nipkow
parents: 50766
diff changeset
    22
value "show_acom [''x''] (((step {<>}) ^^ 4) C0)"
nipkow
parents: 50766
diff changeset
    23
value "show_acom [''x''] (((step {<>}) ^^ 5) C0)"
nipkow
parents: 50766
diff changeset
    24
value "show_acom [''x''] (((step {<>}) ^^ 6) C0)"
nipkow
parents: 50766
diff changeset
    25
value "show_acom [''x''] (((step {<>}) ^^ 7) C0)"
nipkow
parents: 50766
diff changeset
    26
value "show_acom [''x''] (((step {<>}) ^^ 8) C0)"
48765
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    27
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    28
text{* Small-step semantics: *}
50821
nipkow
parents: 50766
diff changeset
    29
value "show_acom [''x''] (((step {}) ^^ 0) (step {<>} C0))"
nipkow
parents: 50766
diff changeset
    30
value "show_acom [''x''] (((step {}) ^^ 1) (step {<>} C0))"
nipkow
parents: 50766
diff changeset
    31
value "show_acom [''x''] (((step {}) ^^ 2) (step {<>} C0))"
nipkow
parents: 50766
diff changeset
    32
value "show_acom [''x''] (((step {}) ^^ 3) (step {<>} C0))"
nipkow
parents: 50766
diff changeset
    33
value "show_acom [''x''] (((step {}) ^^ 4) (step {<>} C0))"
nipkow
parents: 50766
diff changeset
    34
value "show_acom [''x''] (((step {}) ^^ 5) (step {<>} C0))"
nipkow
parents: 50766
diff changeset
    35
value "show_acom [''x''] (((step {}) ^^ 6) (step {<>} C0))"
nipkow
parents: 50766
diff changeset
    36
value "show_acom [''x''] (((step {}) ^^ 7) (step {<>} C0))"
nipkow
parents: 50766
diff changeset
    37
value "show_acom [''x''] (((step {}) ^^ 8) (step {<>} C0))"
48765
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    38
fb1ed5230abc special code with lists no longer necessary, use sets
nipkow
parents:
diff changeset
    39
end