equal
deleted
inserted
replaced
1238 = setprod f A * setprod f B / setprod f (A Int B)" |
1238 = setprod f A * setprod f B / setprod f (A Int B)" |
1239 by (subst setprod_Un_Int [symmetric], auto) |
1239 by (subst setprod_Un_Int [symmetric], auto) |
1240 |
1240 |
1241 lemma setprod_nonneg [rule_format]: |
1241 lemma setprod_nonneg [rule_format]: |
1242 "(ALL x: A. (0::'a::linordered_semidom) \<le> f x) --> 0 \<le> setprod f A" |
1242 "(ALL x: A. (0::'a::linordered_semidom) \<le> f x) --> 0 \<le> setprod f A" |
1243 by (cases "finite A", induct set: finite, simp_all add: mult_nonneg_nonneg) |
1243 by (cases "finite A", induct set: finite, simp_all) |
1244 |
1244 |
1245 lemma setprod_pos [rule_format]: "(ALL x: A. (0::'a::linordered_semidom) < f x) |
1245 lemma setprod_pos [rule_format]: "(ALL x: A. (0::'a::linordered_semidom) < f x) |
1246 --> 0 < setprod f A" |
1246 --> 0 < setprod f A" |
1247 by (cases "finite A", induct set: finite, simp_all add: mult_pos_pos) |
1247 by (cases "finite A", induct set: finite, simp_all add: mult_pos_pos) |
1248 |
1248 |
1316 proof (induct A rule: finite_subset_induct) |
1316 proof (induct A rule: finite_subset_induct) |
1317 case (insert a F) |
1317 case (insert a F) |
1318 thus "setprod f (insert a F) \<le> setprod g (insert a F)" "0 \<le> setprod f (insert a F)" |
1318 thus "setprod f (insert a F) \<le> setprod g (insert a F)" "0 \<le> setprod f (insert a F)" |
1319 unfolding setprod_insert[OF insert(1,3)] |
1319 unfolding setprod_insert[OF insert(1,3)] |
1320 using assms[rule_format,OF insert(2)] insert |
1320 using assms[rule_format,OF insert(2)] insert |
1321 by (auto intro: mult_mono mult_nonneg_nonneg) |
1321 by (auto intro: mult_mono) |
1322 qed auto |
1322 qed auto |
1323 thus ?thesis by simp |
1323 thus ?thesis by simp |
1324 qed auto |
1324 qed auto |
1325 |
1325 |
1326 lemma abs_setprod: |
1326 lemma abs_setprod: |