equal
deleted
inserted
replaced
2109 also have "\<dots> = (\<Sum>xa = 0..<length xs. (\<Sum>x\<in>set (map fst xs). |
2109 also have "\<dots> = (\<Sum>xa = 0..<length xs. (\<Sum>x\<in>set (map fst xs). |
2110 if fst (xs ! xa) = x \<and> x \<in> A then snd (xs ! xa) else 0))" |
2110 if fst (xs ! xa) = x \<and> x \<in> A then snd (xs ! xa) else 0))" |
2111 by (rule sum.commute) |
2111 by (rule sum.commute) |
2112 also have "\<dots> = (\<Sum>xa = 0..<length xs. if fst (xs ! xa) \<in> A then |
2112 also have "\<dots> = (\<Sum>xa = 0..<length xs. if fst (xs ! xa) \<in> A then |
2113 (\<Sum>x\<in>set (map fst xs). if x = fst (xs ! xa) then snd (xs ! xa) else 0) else 0)" |
2113 (\<Sum>x\<in>set (map fst xs). if x = fst (xs ! xa) then snd (xs ! xa) else 0) else 0)" |
2114 by (auto intro!: sum.cong sum.neutral) |
2114 by (auto intro!: sum.cong sum.neutral simp del: sum.delta) |
2115 also have "\<dots> = (\<Sum>xa = 0..<length xs. if fst (xs ! xa) \<in> A then snd (xs ! xa) else 0)" |
2115 also have "\<dots> = (\<Sum>xa = 0..<length xs. if fst (xs ! xa) \<in> A then snd (xs ! xa) else 0)" |
2116 by (intro sum.cong refl) (simp_all add: sum.delta) |
2116 by (intro sum.cong refl) (simp_all add: sum.delta) |
2117 also have "\<dots> = sum_list (map snd (filter (\<lambda>x. fst x \<in> A) xs))" |
2117 also have "\<dots> = sum_list (map snd (filter (\<lambda>x. fst x \<in> A) xs))" |
2118 by (subst sum_list_map_filter', subst sum_list_sum_nth) simp_all |
2118 by (subst sum_list_map_filter', subst sum_list_sum_nth) simp_all |
2119 finally show ?thesis . |
2119 finally show ?thesis . |