472 unfolding cr_real_eq rel_fun_def by (simp split: split_if_asm, metis) |
472 unfolding cr_real_eq rel_fun_def by (simp split: split_if_asm, metis) |
473 |
473 |
474 instance proof |
474 instance proof |
475 fix a b c :: real |
475 fix a b c :: real |
476 show "a + b = b + a" |
476 show "a + b = b + a" |
477 by transfer (simp add: add_ac realrel_def) |
477 by transfer (simp add: ac_simps realrel_def) |
478 show "(a + b) + c = a + (b + c)" |
478 show "(a + b) + c = a + (b + c)" |
479 by transfer (simp add: add_ac realrel_def) |
479 by transfer (simp add: ac_simps realrel_def) |
480 show "0 + a = a" |
480 show "0 + a = a" |
481 by transfer (simp add: realrel_def) |
481 by transfer (simp add: realrel_def) |
482 show "- a + a = 0" |
482 show "- a + a = 0" |
483 by transfer (simp add: realrel_def) |
483 by transfer (simp add: realrel_def) |
484 show "a - b = a + - b" |
484 show "a - b = a + - b" |
485 by (rule minus_real_def) |
485 by (rule minus_real_def) |
486 show "(a * b) * c = a * (b * c)" |
486 show "(a * b) * c = a * (b * c)" |
487 by transfer (simp add: mult_ac realrel_def) |
487 by transfer (simp add: ac_simps realrel_def) |
488 show "a * b = b * a" |
488 show "a * b = b * a" |
489 by transfer (simp add: mult_ac realrel_def) |
489 by transfer (simp add: ac_simps realrel_def) |
490 show "1 * a = a" |
490 show "1 * a = a" |
491 by transfer (simp add: mult_ac realrel_def) |
491 by transfer (simp add: ac_simps realrel_def) |
492 show "(a + b) * c = a * c + b * c" |
492 show "(a + b) * c = a * c + b * c" |
493 by transfer (simp add: distrib_right realrel_def) |
493 by transfer (simp add: distrib_right realrel_def) |
494 show "(0\<Colon>real) \<noteq> (1\<Colon>real)" |
494 show "(0\<Colon>real) \<noteq> (1\<Colon>real)" |
495 by transfer (simp add: realrel_def) |
495 by transfer (simp add: realrel_def) |
496 show "a \<noteq> 0 \<Longrightarrow> inverse a * a = 1" |
496 show "a \<noteq> 0 \<Longrightarrow> inverse a * a = 1" |
705 lemma le_Real: |
705 lemma le_Real: |
706 assumes X: "cauchy X" and Y: "cauchy Y" |
706 assumes X: "cauchy X" and Y: "cauchy Y" |
707 shows "Real X \<le> Real Y = (\<forall>r>0. \<exists>k. \<forall>n\<ge>k. X n \<le> Y n + r)" |
707 shows "Real X \<le> Real Y = (\<forall>r>0. \<exists>k. \<forall>n\<ge>k. X n \<le> Y n + r)" |
708 unfolding not_less [symmetric, where 'a=real] less_real_def |
708 unfolding not_less [symmetric, where 'a=real] less_real_def |
709 apply (simp add: diff_Real not_positive_Real X Y) |
709 apply (simp add: diff_Real not_positive_Real X Y) |
710 apply (simp add: diff_le_eq add_ac) |
710 apply (simp add: diff_le_eq ac_simps) |
711 done |
711 done |
712 |
712 |
713 lemma le_RealI: |
713 lemma le_RealI: |
714 assumes Y: "cauchy Y" |
714 assumes Y: "cauchy Y" |
715 shows "\<forall>n. x \<le> of_rat (Y n) \<Longrightarrow> x \<le> Real Y" |
715 shows "\<forall>n. x \<le> of_rat (Y n) \<Longrightarrow> x \<le> Real Y" |