src/HOL/Big_Operators.thy
changeset 40786 0a54cfc9add3
parent 39302 d7728f65b353
child 41550 efa734d9b221
equal deleted inserted replaced
40777:4898bae6ef23 40786:0a54cfc9add3
   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