diff -r 9ad1fccbba96 -r f2e51e704a96 src/HOL/Set_Interval.thy --- a/src/HOL/Set_Interval.thy Tue Oct 27 23:18:32 2015 +0100 +++ b/src/HOL/Set_Interval.thy Thu Oct 29 15:40:52 2015 +0100 @@ -409,6 +409,11 @@ "{a .. b} \ { c ..< d } \ (a \ b \ c \ a \ b < d)" using dense[of "max a d" "b"] by (force simp: subset_eq Ball_def not_less[symmetric]) + +lemma greaterThanLessThan_subseteq_greaterThanLessThan: + "{a <..< b} \ {c <..< d} \ (a < b \ a \ c \ b \ d)" + using dense[of "a" "min c b"] dense[of "max a d" "b"] + by (force simp: subset_eq Ball_def not_less[symmetric]) lemma greaterThanAtMost_subseteq_atLeastLessThan_iff: "{a <.. b} \ { c ..< d } \ (a < b \ c \ a \ b < d)" @@ -1648,6 +1653,18 @@ by auto +subsection \Telescoping\ + +lemma setsum_telescope: + fixes f::"nat \ 'a::ab_group_add" + shows "setsum (\i. f i - f (Suc i)) {.. i} = f 0 - f (Suc i)" + by (induct i) simp_all + +lemma setsum_telescope'': + assumes "m \ n" + shows "(\k\{Suc m..n}. f k - f (k - 1)) = f n - (f m :: 'a :: ab_group_add)" + by (rule dec_induct[OF assms]) (simp_all add: algebra_simps) + subsection \The formula for geometric sums\ lemma geometric_sum: @@ -1845,4 +1862,38 @@ by auto qed + +subsection \Shifting bounds\ + +lemma setprod_shift_bounds_nat_ivl: + "setprod f {m+k.. b \ setprod f {a.. Suc n" + shows "setprod f {m..Suc n} = f (Suc n) * setprod f {m..n}" +proof - + from assms have "{m..Suc n} = insert (Suc n) {m..n}" by auto + also have "setprod f \ = f (Suc n) * setprod f {m..n}" by simp + finally show ?thesis . +qed + end