698 |
698 |
699 lemma Gleason9_34_exists: |
699 lemma Gleason9_34_exists: |
700 assumes A: "A \<in> preal" |
700 assumes A: "A \<in> preal" |
701 and "\<forall>x\<in>A. x + u \<in> A" |
701 and "\<forall>x\<in>A. x + u \<in> A" |
702 and "0 \<le> z" |
702 and "0 \<le> z" |
703 shows "\<exists>b\<in>A. b + (rat z) * u \<in> A" |
703 shows "\<exists>b\<in>A. b + (of_int z) * u \<in> A" |
704 proof (cases z rule: int_cases) |
704 proof (cases z rule: int_cases) |
705 case (nonneg n) |
705 case (nonneg n) |
706 show ?thesis |
706 show ?thesis |
707 proof (simp add: prems, induct n) |
707 proof (simp add: prems, induct n) |
708 case 0 |
708 case 0 |
709 from preal_nonempty [OF A] |
709 from preal_nonempty [OF A] |
710 show ?case by force |
710 show ?case by force |
711 case (Suc k) |
711 case (Suc k) |
712 from this obtain b where "b \<in> A" "b + rat (int k) * u \<in> A" .. |
712 from this obtain b where "b \<in> A" "b + of_int (int k) * u \<in> A" .. |
713 hence "b + rat (int k)*u + u \<in> A" by (simp add: prems) |
713 hence "b + of_int (int k)*u + u \<in> A" by (simp add: prems) |
714 thus ?case by (force simp add: left_distrib add_ac prems) |
714 thus ?case by (force simp add: left_distrib add_ac prems) |
715 qed |
715 qed |
716 next |
716 next |
717 case (neg n) |
717 case (neg n) |
718 with prems show ?thesis by simp |
718 with prems show ?thesis by simp |
719 qed |
719 qed |
720 |
|
721 |
720 |
722 lemma Gleason9_34_contra: |
721 lemma Gleason9_34_contra: |
723 assumes A: "A \<in> preal" |
722 assumes A: "A \<in> preal" |
724 shows "[|\<forall>x\<in>A. x + u \<in> A; 0 < u; 0 < y; y \<notin> A|] ==> False" |
723 shows "[|\<forall>x\<in>A. x + u \<in> A; 0 < u; 0 < y; y \<notin> A|] ==> False" |
725 proof (induct u, induct y) |
724 proof (induct u, induct y) |
734 have cpos [simp]: "0 < c" |
733 have cpos [simp]: "0 < c" |
735 by (simp add: zero_less_Fract_iff [OF dpos, symmetric] upos) |
734 by (simp add: zero_less_Fract_iff [OF dpos, symmetric] upos) |
736 have apos [simp]: "0 < a" |
735 have apos [simp]: "0 < a" |
737 by (simp add: zero_less_Fract_iff [OF bpos, symmetric] ypos) |
736 by (simp add: zero_less_Fract_iff [OF bpos, symmetric] ypos) |
738 let ?k = "a*d" |
737 let ?k = "a*d" |
739 have frle: "Fract a b \<le> rat ?k * (Fract c d)" |
738 have frle: "Fract a b \<le> Fract ?k 1 * (Fract c d)" |
740 proof - |
739 proof - |
741 have "?thesis = ((a * d * b * d) \<le> c * b * (a * d * b * d))" |
740 have "?thesis = ((a * d * b * d) \<le> c * b * (a * d * b * d))" |
742 by (simp add: rat_def mult_rat le_rat order_less_imp_not_eq2 mult_ac) |
741 by (simp add: mult_rat le_rat order_less_imp_not_eq2 mult_ac) |
743 moreover |
742 moreover |
744 have "(1 * (a * d * b * d)) \<le> c * b * (a * d * b * d)" |
743 have "(1 * (a * d * b * d)) \<le> c * b * (a * d * b * d)" |
745 by (rule mult_mono, |
744 by (rule mult_mono, |
746 simp_all add: int_one_le_iff_zero_less zero_less_mult_iff |
745 simp_all add: int_one_le_iff_zero_less zero_less_mult_iff |
747 order_less_imp_le) |
746 order_less_imp_le) |
749 show ?thesis by simp |
748 show ?thesis by simp |
750 qed |
749 qed |
751 have k: "0 \<le> ?k" by (simp add: order_less_imp_le zero_less_mult_iff) |
750 have k: "0 \<le> ?k" by (simp add: order_less_imp_le zero_less_mult_iff) |
752 from Gleason9_34_exists [OF A closed k] |
751 from Gleason9_34_exists [OF A closed k] |
753 obtain z where z: "z \<in> A" |
752 obtain z where z: "z \<in> A" |
754 and mem: "z + rat ?k * Fract c d \<in> A" .. |
753 and mem: "z + of_int ?k * Fract c d \<in> A" .. |
755 have less: "z + rat ?k * Fract c d < Fract a b" |
754 have less: "z + of_int ?k * Fract c d < Fract a b" |
756 by (rule not_in_preal_ub [OF A notin mem ypos]) |
755 by (rule not_in_preal_ub [OF A notin mem ypos]) |
757 have "0<z" by (rule preal_imp_pos [OF A z]) |
756 have "0<z" by (rule preal_imp_pos [OF A z]) |
758 with frle and less show False by arith |
757 with frle and less show False by (simp add: Fract_of_int_eq) |
759 qed |
758 qed |
760 |
759 |
761 |
760 |
762 lemma Gleason9_34: |
761 lemma Gleason9_34: |
763 assumes A: "A \<in> preal" |
762 assumes A: "A \<in> preal" |