equal
deleted
inserted
replaced
92 "lookup (delete k m) = (lookup m) (k := None)" |
92 "lookup (delete k m) = (lookup m) (k := None)" |
93 by (simp add: delete_def) |
93 by (simp add: delete_def) |
94 |
94 |
95 lemma lookup_map_entry [simp]: |
95 lemma lookup_map_entry [simp]: |
96 "lookup (map_entry k f m) = (lookup m) (k := Option.map f (lookup m k))" |
96 "lookup (map_entry k f m) = (lookup m) (k := Option.map f (lookup m k))" |
97 by (cases "lookup m k") (simp_all add: map_entry_def ext_iff) |
97 by (cases "lookup m k") (simp_all add: map_entry_def fun_eq_iff) |
98 |
98 |
99 lemma lookup_tabulate [simp]: |
99 lemma lookup_tabulate [simp]: |
100 "lookup (tabulate ks f) = (Some o f) |` set ks" |
100 "lookup (tabulate ks f) = (Some o f) |` set ks" |
101 by (induct ks) (auto simp add: tabulate_def restrict_map_def ext_iff) |
101 by (induct ks) (auto simp add: tabulate_def restrict_map_def fun_eq_iff) |
102 |
102 |
103 lemma lookup_bulkload [simp]: |
103 lemma lookup_bulkload [simp]: |
104 "lookup (bulkload xs) = (\<lambda>k. if k < length xs then Some (xs ! k) else None)" |
104 "lookup (bulkload xs) = (\<lambda>k. if k < length xs then Some (xs ! k) else None)" |
105 by (simp add: bulkload_def) |
105 by (simp add: bulkload_def) |
106 |
106 |
144 "size (tabulate ks f) = length (remdups ks)" |
144 "size (tabulate ks f) = length (remdups ks)" |
145 by (simp add: size_def distinct_card [of "remdups ks", symmetric] comp_def keys_def) |
145 by (simp add: size_def distinct_card [of "remdups ks", symmetric] comp_def keys_def) |
146 |
146 |
147 lemma bulkload_tabulate: |
147 lemma bulkload_tabulate: |
148 "bulkload xs = tabulate [0..<length xs] (nth xs)" |
148 "bulkload xs = tabulate [0..<length xs] (nth xs)" |
149 by (rule mapping_eqI) (simp add: ext_iff) |
149 by (rule mapping_eqI) (simp add: fun_eq_iff) |
150 |
150 |
151 lemma is_empty_empty: (*FIXME*) |
151 lemma is_empty_empty: (*FIXME*) |
152 "is_empty m \<longleftrightarrow> m = Mapping Map.empty" |
152 "is_empty m \<longleftrightarrow> m = Mapping Map.empty" |
153 by (cases m) (simp add: is_empty_def keys_def) |
153 by (cases m) (simp add: is_empty_def keys_def) |
154 |
154 |