src/HOL/SetInterval.thy
changeset 31501 2a60c9b951e0
parent 31438 a1c4c1500abe
child 31505 6f589131ba94
equal deleted inserted replaced
31500:eced346b2231 31501:2a60c9b951e0
   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