424 lemma ball_cong: |
424 lemma ball_cong: |
425 "\<lbrakk> A = B; \<And>x. x \<in> B \<Longrightarrow> P x \<longleftrightarrow> Q x \<rbrakk> \<Longrightarrow> |
425 "\<lbrakk> A = B; \<And>x. x \<in> B \<Longrightarrow> P x \<longleftrightarrow> Q x \<rbrakk> \<Longrightarrow> |
426 (\<forall>x\<in>A. P x) \<longleftrightarrow> (\<forall>x\<in>B. Q x)" |
426 (\<forall>x\<in>A. P x) \<longleftrightarrow> (\<forall>x\<in>B. Q x)" |
427 by (simp add: Ball_def) |
427 by (simp add: Ball_def) |
428 |
428 |
429 lemma ball_cong_strong [cong]: |
429 lemma ball_cong_simp [cong]: |
430 "\<lbrakk> A = B; \<And>x. x \<in> B =simp=> P x \<longleftrightarrow> Q x \<rbrakk> \<Longrightarrow> |
430 "\<lbrakk> A = B; \<And>x. x \<in> B =simp=> P x \<longleftrightarrow> Q x \<rbrakk> \<Longrightarrow> |
431 (\<forall>x\<in>A. P x) \<longleftrightarrow> (\<forall>x\<in>B. Q x)" |
431 (\<forall>x\<in>A. P x) \<longleftrightarrow> (\<forall>x\<in>B. Q x)" |
432 by (simp add: simp_implies_def Ball_def) |
432 by (simp add: simp_implies_def Ball_def) |
433 |
433 |
434 lemma bex_cong: |
434 lemma bex_cong: |
435 "\<lbrakk> A = B; \<And>x. x \<in> B \<Longrightarrow> P x \<longleftrightarrow> Q x \<rbrakk> \<Longrightarrow> |
435 "\<lbrakk> A = B; \<And>x. x \<in> B \<Longrightarrow> P x \<longleftrightarrow> Q x \<rbrakk> \<Longrightarrow> |
436 (\<exists>x\<in>A. P x) \<longleftrightarrow> (\<exists>x\<in>B. Q x)" |
436 (\<exists>x\<in>A. P x) \<longleftrightarrow> (\<exists>x\<in>B. Q x)" |
437 by (simp add: Bex_def cong: conj_cong) |
437 by (simp add: Bex_def cong: conj_cong) |
438 |
438 |
439 lemma bex_cong_strong [cong]: |
439 lemma bex_cong_simp [cong]: |
440 "\<lbrakk> A = B; \<And>x. x \<in> B =simp=> P x \<longleftrightarrow> Q x \<rbrakk> \<Longrightarrow> |
440 "\<lbrakk> A = B; \<And>x. x \<in> B =simp=> P x \<longleftrightarrow> Q x \<rbrakk> \<Longrightarrow> |
441 (\<exists>x\<in>A. P x) \<longleftrightarrow> (\<exists>x\<in>B. Q x)" |
441 (\<exists>x\<in>A. P x) \<longleftrightarrow> (\<exists>x\<in>B. Q x)" |
442 by (simp add: simp_implies_def Bex_def cong: conj_cong) |
442 by (simp add: simp_implies_def Bex_def cong: conj_cong) |
443 |
443 |
444 lemma bex1_def: "(\<exists>!x\<in>X. P x) \<longleftrightarrow> (\<exists>x\<in>X. P x) \<and> (\<forall>x\<in>X. \<forall>y\<in>X. P x \<longrightarrow> P y \<longrightarrow> x = y)" |
444 lemma bex1_def: "(\<exists>!x\<in>X. P x) \<longleftrightarrow> (\<exists>x\<in>X. P x) \<and> (\<forall>x\<in>X. \<forall>y\<in>X. P x \<longrightarrow> P y \<longrightarrow> x = y)" |
937 by auto |
937 by auto |
938 |
938 |
939 lemma image_cong: "\<lbrakk> M = N; \<And>x. x \<in> N \<Longrightarrow> f x = g x \<rbrakk> \<Longrightarrow> f ` M = g ` N" |
939 lemma image_cong: "\<lbrakk> M = N; \<And>x. x \<in> N \<Longrightarrow> f x = g x \<rbrakk> \<Longrightarrow> f ` M = g ` N" |
940 by (simp add: image_def) |
940 by (simp add: image_def) |
941 |
941 |
942 lemma image_cong_strong: "\<lbrakk> M = N; \<And>x. x \<in> N =simp=> f x = g x\<rbrakk> \<Longrightarrow> f ` M = g ` N" |
942 lemma image_cong_simp: "\<lbrakk> M = N; \<And>x. x \<in> N =simp=> f x = g x\<rbrakk> \<Longrightarrow> f ` M = g ` N" |
943 by (simp add: image_def simp_implies_def) |
943 by (simp add: image_def simp_implies_def) |
944 |
944 |
945 lemma image_Int_subset: "f ` (A \<inter> B) \<subseteq> f ` A \<inter> f ` B" |
945 lemma image_Int_subset: "f ` (A \<inter> B) \<subseteq> f ` A \<inter> f ` B" |
946 by blast |
946 by blast |
947 |
947 |