# HG changeset patch # User haftmann # Date 1311535645 -7200 # Node ID 610efb6bda1fef3957c368145370115e253d17fe # Parent 521de6ab277a29751ba2fe15740c70cd3e49bff3 more coherent structure in and across theories diff -r 521de6ab277a -r 610efb6bda1f NEWS --- a/NEWS Sat Jul 23 23:33:59 2011 +0200 +++ b/NEWS Sun Jul 24 21:27:25 2011 +0200 @@ -79,6 +79,10 @@ SUPR_apply ~> SUP_apply INCOMPATIBILITY. +* Theorem collections ball_simps and bex_simps do not contain theorems referring +to UNION any longer; these have been moved to collection UN_ball_bex_simps. +INCOMPATIBILITY. + * Archimedian_Field.thy: floor now is defined as parameter of a separate type class floor_ceiling. diff -r 521de6ab277a -r 610efb6bda1f src/HOL/Complete_Lattice.thy --- a/src/HOL/Complete_Lattice.thy Sat Jul 23 23:33:59 2011 +0200 +++ b/src/HOL/Complete_Lattice.thy Sun Jul 24 21:27:25 2011 +0200 @@ -476,6 +476,14 @@ from dual.Sup_eq_top_iff show ?thesis . qed +lemma INF_eq_bot_iff: + "(\i\A. f i) = \ \ (\x>\. \i\A. f i < x)" + unfolding INF_def Inf_eq_bot_iff by auto + +lemma SUP_eq_top_iff: + "(\i\A. f i) = \ \ (\x<\. \i\A. x < f i)" + unfolding SUP_def Sup_eq_top_iff by auto + end @@ -929,7 +937,7 @@ lemma UN_Un[simp]: "(\i \ A \ B. M i) = (\i\A. M i) \ (\i\B. M i)" by (fact SUP_union) -lemma UN_UN_flatten: "(\x \ (\y\A. B y). C x) = (\y\A. \x\B y. C x)" -- "FIXME generalize" +lemma UN_UN_flatten: "(\x \ (\y\A. B y). C x) = (\y\A. \x\B y. C x)" by blast lemma UN_subset_iff: "((\i\I. A i) \ B) = (\i\I. A i \ B)" @@ -1067,44 +1075,13 @@ "\A B f. (\x\f`A. B x) = (\a\A. B (f a))" by auto -lemma ball_simps [simp,no_atp]: - "\A P Q. (\x\A. P x \ Q) \ ((\x\A. P x) \ Q)" - "\A P Q. (\x\A. P \ Q x) \ (P \ (\x\A. Q x))" - "\A P Q. (\x\A. P \ Q x) \ (P \ (\x\A. Q x))" - "\A P Q. (\x\A. P x \ Q) \ ((\x\A. P x) \ Q)" - "\P. (\x\{}. P x) \ True" - "\P. (\x\UNIV. P x) \ (\x. P x)" - "\a B P. (\x\insert a B. P x) \ (P a \ (\x\B. P x))" +lemma UN_ball_bex_simps [simp, no_atp]: "\A P. (\x\\A. P x) \ (\y\A. \x\y. P x)" - "\A B P. (\x\ UNION A B. P x) = (\a\A. \x\ B a. P x)" - "\P Q. (\x\Collect Q. P x) \ (\x. Q x \ P x)" - "\A P f. (\x\f`A. P x) \ (\x\A. P (f x))" - "\A P. (\ (\x\A. P x)) \ (\x\A. \ P x)" - by auto - -lemma bex_simps [simp,no_atp]: - "\A P Q. (\x\A. P x \ Q) \ ((\x\A. P x) \ Q)" - "\A P Q. (\x\A. P \ Q x) \ (P \ (\x\A. Q x))" - "\P. (\x\{}. P x) \ False" - "\P. (\x\UNIV. P x) \ (\x. P x)" - "\a B P. (\x\insert a B. P x) \ (P a | (\x\B. P x))" + "\A B P. (\x\UNION A B. P x) = (\a\A. \x\ B a. P x)" "\A P. (\x\\A. P x) \ (\y\A. \x\y. P x)" "\A B P. (\x\UNION A B. P x) \ (\a\A. \x\B a. P x)" - "\P Q. (\x\Collect Q. P x) \ (\x. Q x \ P x)" - "\A P f. (\x\f`A. P x) \ (\x\A. P (f x))" - "\A P. (\(\x\A. P x)) \ (\x\A. \ P x)" by auto -lemma (in complete_linorder) INF_eq_bot_iff: - fixes f :: "'b \ 'a" - shows "(\i\A. f i) = \ \ (\x>\. \i\A. f i < x)" - unfolding INF_def Inf_eq_bot_iff by auto - -lemma (in complete_linorder) SUP_eq_top_iff: - fixes f :: "'b \ 'a" - shows "(\i\A. f i) = \ \ (\x<\. \i\A. x < f i)" - unfolding SUP_def Sup_eq_top_iff by auto - text {* \medskip Maxiscoping: pulling out big Unions and Intersections. *} diff -r 521de6ab277a -r 610efb6bda1f src/HOL/Set.thy --- a/src/HOL/Set.thy Sat Jul 23 23:33:59 2011 +0200 +++ b/src/HOL/Set.thy Sun Jul 24 21:27:25 2011 +0200 @@ -1540,6 +1540,30 @@ lemma distinct_lemma: "f x \ f y ==> x \ y" by iprover +lemma ball_simps [simp, no_atp]: + "\A P Q. (\x\A. P x \ Q) \ ((\x\A. P x) \ Q)" + "\A P Q. (\x\A. P \ Q x) \ (P \ (\x\A. Q x))" + "\A P Q. (\x\A. P \ Q x) \ (P \ (\x\A. Q x))" + "\A P Q. (\x\A. P x \ Q) \ ((\x\A. P x) \ Q)" + "\P. (\x\{}. P x) \ True" + "\P. (\x\UNIV. P x) \ (\x. P x)" + "\a B P. (\x\insert a B. P x) \ (P a \ (\x\B. P x))" + "\P Q. (\x\Collect Q. P x) \ (\x. Q x \ P x)" + "\A P f. (\x\f`A. P x) \ (\x\A. P (f x))" + "\A P. (\ (\x\A. P x)) \ (\x\A. \ P x)" + by auto + +lemma bex_simps [simp, no_atp]: + "\A P Q. (\x\A. P x \ Q) \ ((\x\A. P x) \ Q)" + "\A P Q. (\x\A. P \ Q x) \ (P \ (\x\A. Q x))" + "\P. (\x\{}. P x) \ False" + "\P. (\x\UNIV. P x) \ (\x. P x)" + "\a B P. (\x\insert a B. P x) \ (P a | (\x\B. P x))" + "\P Q. (\x\Collect Q. P x) \ (\x. Q x \ P x)" + "\A P f. (\x\f`A. P x) \ (\x\A. P (f x))" + "\A P. (\(\x\A. P x)) \ (\x\A. \ P x)" + by auto + subsubsection {* Monotonicity of various operations *}