src/HOL/SetInterval.thy
changeset 15539 333a88244569
parent 15418 e28853da5df5
child 15542 ee6cd48cf840
equal deleted inserted replaced
15538:d8edf54cc28c 15539:333a88244569
   586 special form for @{term"{..<n}"}. *}
   586 special form for @{term"{..<n}"}. *}
   587 
   587 
   588 
   588 
   589 lemma Summation_Suc[simp]: "(\<Sum>i < Suc n. b i) = b n + (\<Sum>i < n. b i)"
   589 lemma Summation_Suc[simp]: "(\<Sum>i < Suc n. b i) = b n + (\<Sum>i < n. b i)"
   590 by (simp add:lessThan_Suc)
   590 by (simp add:lessThan_Suc)
       
   591 
       
   592 lemma setsum_add_nat_ivl: "\<lbrakk> m \<le> n; n \<le> p \<rbrakk> \<Longrightarrow>
       
   593   setsum f {m..<n} + setsum f {n..<p} = setsum f {m..<p::nat}"
       
   594 by (simp add:setsum_Un_disjoint[symmetric] ivl_disj_int ivl_disj_un)
       
   595 
       
   596 lemma setsum_diff_nat_ivl:
       
   597 fixes f :: "nat \<Rightarrow> 'a::ab_group_add"
       
   598 shows "\<lbrakk> m \<le> n; n \<le> p \<rbrakk> \<Longrightarrow>
       
   599   setsum f {m..<p} - setsum f {m..<n} = setsum f {n..<p}"
       
   600 using setsum_add_nat_ivl [of m n p f,symmetric]
       
   601 apply (simp add: add_ac)
       
   602 done
       
   603 
       
   604 lemma setsum_shift_bounds_nat_ivl:
       
   605   "setsum f {m+k..<n+k} = setsum (%i. f(i + k)){m..<n::nat}"
       
   606 by (induct "n", auto simp:atLeastLessThanSuc)
   591 
   607 
   592 
   608 
   593 ML
   609 ML
   594 {*
   610 {*
   595 val Compl_atLeast = thm "Compl_atLeast";
   611 val Compl_atLeast = thm "Compl_atLeast";