equal
deleted
inserted
replaced
705 assumes fin: "finite A" "finite B" |
705 assumes fin: "finite A" "finite B" |
706 shows "setsum f (A <+> B) = setsum (f \<circ> Inl) A + setsum (f \<circ> Inr) B" |
706 shows "setsum f (A <+> B) = setsum (f \<circ> Inl) A + setsum (f \<circ> Inr) B" |
707 proof - |
707 proof - |
708 have "A <+> B = Inl ` A \<union> Inr ` B" by auto |
708 have "A <+> B = Inl ` A \<union> Inr ` B" by auto |
709 moreover from fin have "finite (Inl ` A :: ('a + 'b) set)" "finite (Inr ` B :: ('a + 'b) set)" |
709 moreover from fin have "finite (Inl ` A :: ('a + 'b) set)" "finite (Inr ` B :: ('a + 'b) set)" |
710 by(auto intro: finite_imageI) |
710 by auto |
711 moreover have "Inl ` A \<inter> Inr ` B = ({} :: ('a + 'b) set)" by auto |
711 moreover have "Inl ` A \<inter> Inr ` B = ({} :: ('a + 'b) set)" by auto |
712 moreover have "inj_on (Inl :: 'a \<Rightarrow> 'a + 'b) A" "inj_on (Inr :: 'b \<Rightarrow> 'a + 'b) B" by(auto intro: inj_onI) |
712 moreover have "inj_on (Inl :: 'a \<Rightarrow> 'a + 'b) A" "inj_on (Inr :: 'b \<Rightarrow> 'a + 'b) B" by(auto intro: inj_onI) |
713 ultimately show ?thesis using fin by(simp add: setsum_Un_disjoint setsum_reindex) |
713 ultimately show ?thesis using fin by(simp add: setsum_Un_disjoint setsum_reindex) |
714 qed |
714 qed |
715 |
715 |