equal
deleted
inserted
replaced
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"; |