equal
deleted
inserted
replaced
956 lemma setsum_multicount: |
956 lemma setsum_multicount: |
957 assumes "finite S" "finite T" "\<forall>j\<in>T. (card {i\<in>S. R i j} = k)" |
957 assumes "finite S" "finite T" "\<forall>j\<in>T. (card {i\<in>S. R i j} = k)" |
958 shows "setsum (\<lambda>i. card {j\<in>T. R i j}) S = k * card T" (is "?l = ?r") |
958 shows "setsum (\<lambda>i. card {j\<in>T. R i j}) S = k * card T" (is "?l = ?r") |
959 proof- |
959 proof- |
960 have "?l = setsum (\<lambda>i. k) T" by (rule setsum_multicount_gen) (auto simp: assms) |
960 have "?l = setsum (\<lambda>i. k) T" by (rule setsum_multicount_gen) (auto simp: assms) |
961 also have "\<dots> = ?r" by (simp add: mult_commute) |
961 also have "\<dots> = ?r" by (simp add: mult.commute) |
962 finally show ?thesis by auto |
962 finally show ?thesis by auto |
963 qed |
963 qed |
964 |
964 |
965 |
965 |
966 subsubsection {* Cardinality of products *} |
966 subsubsection {* Cardinality of products *} |