src/HOL/Groups_List.thy
changeset 69593 3dda49e08b9d
parent 69231 6b90ace5e5eb
child 70927 cc204e10385c
equal deleted inserted replaced
69592:a80d8ec6c998 69593:3dda49e08b9d
   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: