# HG changeset patch # User haftmann # Date 1398328397 -7200 # Node ID 4e2a0d4e7a8204480aaafa79db29d56f44e1b581 # Parent 5545bfdfefcc11740c846dd30be1a7d7e5a0fa44 now covered by AFP 3ddac3e572cf diff -r 5545bfdfefcc -r 4e2a0d4e7a82 src/HOL/ROOT --- a/src/HOL/ROOT Thu Apr 24 00:23:38 2014 +0200 +++ b/src/HOL/ROOT Thu Apr 24 10:33:17 2014 +0200 @@ -560,7 +560,6 @@ HarmonicSeries Refute_Examples Execute_Choice - Summation Gauge_Integration Dedekind_Real Quicksort diff -r 5545bfdfefcc -r 4e2a0d4e7a82 src/HOL/ex/Summation.thy --- a/src/HOL/ex/Summation.thy Thu Apr 24 00:23:38 2014 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -(* Author: Florian Haftmann, TU Muenchen *) - -header {* Some basic facts about discrete summation *} - -theory Summation -imports Main -begin - -text {* Auxiliary. *} - -lemma add_setsum_orient: - "setsum f {k.. k < l \ setsum f {j.. :: "(int \ 'a\ab_group_add) \ int \ 'a" where - "\ f k = f (k + 1) - f k" - -lemma \_shift: - "\ (\k. l + f k) = \ f" - by (simp add: \_def fun_eq_iff) - -lemma \_same_shift: - assumes "\ f = \ g" - shows "\l. plus l \ f = g" -proof - - fix k - from assms have "\k. \ f k = \ g k" by simp - then have k_incr: "\k. f (k + 1) - g (k + 1) = f k - g k" - by (simp add: \_def algebra_simps) - then have "\k. f ((k - 1) + 1) - g ((k - 1) + 1) = f (k - 1) - g (k - 1)" - by blast - then have k_decr: "\k. f (k - 1) - g (k - 1) = f k - g k" - by simp - have "\k. f k - g k = f 0 - g 0" - proof - - fix k - show "f k - g k = f 0 - g 0" - by (induct k rule: int_induct) (simp_all add: k_incr k_decr) - qed - then have "\k. (plus (g 0 - f 0) \ f) k = g k" - by (simp add: algebra_simps) - then have "plus (g 0 - f 0) \ f = g" .. - then show ?thesis .. -qed - -text {* The formal sum operator. *} - -definition \ :: "(int \ 'a\ab_group_add) \ int \ int \ 'a" where - "\ f j l = (if j < l then setsum f {j.. l then - setsum f {l.._same [simp]: - "\ f j j = 0" - by (simp add: \_def) - -lemma \_positive: - "j < l \ \ f j l = setsum f {j.._def) - -lemma \_negative: - "j > l \ \ f j l = - \ f l j" - by (simp add: \_def) - -lemma add_\: - "\ f j k + \ f k l = \ f j l" - by (simp add: \_def algebra_simps add_setsum_int) - (simp_all add: add_setsum_orient [of f k j l] - add_setsum_orient [of f j l k] - add_setsum_orient [of f j k l] add_setsum_int) - -lemma \_incr_upper: - "\ f j (l + 1) = \ f j l + f l" -proof - - have "{l.. f l (l + 1) = f l" by (simp add: \_def) - moreover have "\ f j (l + 1) = \ f j l + \ f l (l + 1)" by (simp add: add_\) - ultimately show ?thesis by simp -qed - -text {* Fundamental lemmas: The relation between @{term \} and @{term \}. *} - -lemma \_\: - "\ (\ f j) = f" -proof - fix k - show "\ (\ f j) k = f k" - by (simp add: \_def \_incr_upper) -qed - -lemma \_\: - "\ (\ f) j l = f l - f j" -proof - - from \_\ have "\ (\ (\ f) j) = \ f" . - then obtain k where "plus k \ \ (\ f) j = f" by (blast dest: \_same_shift) - then have "\q. f q = k + \ (\ f) j q" by (simp add: fun_eq_iff) - then show ?thesis by simp -qed - -end