equal
deleted
inserted
replaced
250 |
250 |
251 lemma (in monoid_add) interv_sum_list_conv_sum_set_int: |
251 lemma (in monoid_add) interv_sum_list_conv_sum_set_int: |
252 "sum_list (map f [k..l]) = sum f (set [k..l])" |
252 "sum_list (map f [k..l]) = sum f (set [k..l])" |
253 by (simp add: sum_list_distinct_conv_sum_set) |
253 by (simp add: sum_list_distinct_conv_sum_set) |
254 |
254 |
255 text \<open>General equivalence between @{const sum_list} and @{const sum}\<close> |
255 text \<open>General equivalence between \<^const>\<open>sum_list\<close> and \<^const>\<open>sum\<close>\<close> |
256 lemma (in monoid_add) sum_list_sum_nth: |
256 lemma (in monoid_add) sum_list_sum_nth: |
257 "sum_list xs = (\<Sum> i = 0 ..< length xs. xs ! i)" |
257 "sum_list xs = (\<Sum> i = 0 ..< length xs. xs ! i)" |
258 using interv_sum_list_conv_sum_set_nat [of "(!) xs" 0 "length xs"] by (simp add: map_nth) |
258 using interv_sum_list_conv_sum_set_nat [of "(!) xs" 0 "length xs"] by (simp add: map_nth) |
259 |
259 |
260 lemma sum_list_map_eq_sum_count: |
260 lemma sum_list_map_eq_sum_count: |
325 using mono add_mono by blast |
325 using mono add_mono by blast |
326 thus ?case by simp |
326 thus ?case by simp |
327 qed |
327 qed |
328 |
328 |
329 |
329 |
330 subsection \<open>Further facts about @{const List.n_lists}\<close> |
330 subsection \<open>Further facts about \<^const>\<open>List.n_lists\<close>\<close> |
331 |
331 |
332 lemma length_n_lists: "length (List.n_lists n xs) = length xs ^ n" |
332 lemma length_n_lists: "length (List.n_lists n xs) = length xs ^ n" |
333 by (induct n) (auto simp add: comp_def length_concat sum_list_triv) |
333 by (induct n) (auto simp add: comp_def length_concat sum_list_triv) |
334 |
334 |
335 lemma distinct_n_lists: |
335 lemma distinct_n_lists: |