diff -r 54a3db2ed201 -r 903bb1495239 src/HOL/Library/Mapping.thy --- a/src/HOL/Library/Mapping.thy Wed Jun 17 10:57:11 2015 +0200 +++ b/src/HOL/Library/Mapping.thy Wed Jun 17 11:03:05 2015 +0200 @@ -2,15 +2,15 @@ Author: Florian Haftmann and Ondrej Kuncar *) -section {* An abstract view on maps for code generation. *} +section \An abstract view on maps for code generation.\ theory Mapping imports Main begin -subsection {* Parametricity transfer rules *} +subsection \Parametricity transfer rules\ -lemma map_of_foldr: -- {* FIXME move *} +lemma map_of_foldr: -- \FIXME move\ "map_of xs = foldr (\(k, v) m. m(k \ v)) xs Map.empty" using map_add_map_of_foldr [of Map.empty] by auto @@ -92,7 +92,7 @@ end -subsection {* Type definition and primitive operations *} +subsection \Type definition and primitive operations\ typedef ('a, 'b) mapping = "UNIV :: ('a \ 'b) set" morphisms rep Mapping @@ -130,13 +130,13 @@ declare [[code drop: map]] -subsection {* Functorial structure *} +subsection \Functorial structure\ functor map: map by (transfer, auto simp add: fun_eq_iff option.map_comp option.map_id)+ -subsection {* Derived operations *} +subsection \Derived operations\ definition ordered_keys :: "('a\linorder, 'b) mapping \ 'a list" where @@ -158,7 +158,7 @@ where "default k v m = (if k \ keys m then m else update k v m)" -text {* Manual derivation of transfer rule is non-trivial *} +text \Manual derivation of transfer rule is non-trivial\ lift_definition map_entry :: "'a \ ('b \ 'b) \ ('a, 'b) mapping \ ('a, 'b) mapping" is "\k f m. (case m k of None \ m @@ -207,7 +207,7 @@ end -subsection {* Properties *} +subsection \Properties\ lemma lookup_update: "lookup (update k v m) k = Some v" @@ -408,7 +408,7 @@ qed -subsection {* Code generator setup *} +subsection \Code generator setup\ hide_const (open) empty is_empty rep lookup update delete ordered_keys keys size replace default map_entry map_default tabulate bulkload map of_alist