equal
deleted
inserted
replaced
831 "m < n \<Longrightarrow> setsum f {m..<n} = f m + setsum f {Suc m..<n}" |
831 "m < n \<Longrightarrow> setsum f {m..<n} = f m + setsum f {Suc m..<n}" |
832 apply(insert setsum_head_Suc[of m "n - Suc 0" f]) |
832 apply(insert setsum_head_Suc[of m "n - Suc 0" f]) |
833 apply (simp add: atLeastLessThanSuc_atLeastAtMost[symmetric] algebra_simps) |
833 apply (simp add: atLeastLessThanSuc_atLeastAtMost[symmetric] algebra_simps) |
834 done |
834 done |
835 |
835 |
|
836 lemma setsum_ub_add_nat: assumes "(m::nat) \<le> n + 1" |
|
837 shows "setsum f {m..n + p} = setsum f {m..n} + setsum f {n + 1..n + p}" |
|
838 proof- |
|
839 have "{m .. n+p} = {m..n} \<union> {n+1..n+p}" using `m \<le> n+1` by auto |
|
840 thus ?thesis by (auto simp: ivl_disj_int setsum_Un_disjoint |
|
841 atLeastSucAtMost_greaterThanAtMost) |
|
842 qed |
836 |
843 |
837 lemma setsum_add_nat_ivl: "\<lbrakk> m \<le> n; n \<le> p \<rbrakk> \<Longrightarrow> |
844 lemma setsum_add_nat_ivl: "\<lbrakk> m \<le> n; n \<le> p \<rbrakk> \<Longrightarrow> |
838 setsum f {m..<n} + setsum f {n..<p} = setsum f {m..<p::nat}" |
845 setsum f {m..<n} + setsum f {n..<p} = setsum f {m..<p::nat}" |
839 by (simp add:setsum_Un_disjoint[symmetric] ivl_disj_int ivl_disj_un) |
846 by (simp add:setsum_Un_disjoint[symmetric] ivl_disj_int ivl_disj_un) |
840 |
847 |