src/HOL/Real.thy
changeset 55945 e96383acecf9
parent 54863 82acc20ded73
child 56078 624faeda77b5
equal deleted inserted replaced
55944:7ab8f003fe41 55945:e96383acecf9
   387 qed
   387 qed
   388 
   388 
   389 lemma eq_Real:
   389 lemma eq_Real:
   390   "cauchy X \<Longrightarrow> cauchy Y \<Longrightarrow> Real X = Real Y \<longleftrightarrow> vanishes (\<lambda>n. X n - Y n)"
   390   "cauchy X \<Longrightarrow> cauchy Y \<Longrightarrow> Real X = Real Y \<longleftrightarrow> vanishes (\<lambda>n. X n - Y n)"
   391   using real.rel_eq_transfer
   391   using real.rel_eq_transfer
   392   unfolding real.pcr_cr_eq cr_real_def fun_rel_def realrel_def by simp
   392   unfolding real.pcr_cr_eq cr_real_def rel_fun_def realrel_def by simp
   393 
   393 
   394 lemma Domainp_pcr_real [transfer_domain_rule]: "Domainp pcr_real = cauchy"
   394 lemma Domainp_pcr_real [transfer_domain_rule]: "Domainp pcr_real = cauchy"
   395 by (simp add: real.domain_eq realrel_def)
   395 by (simp add: real.domain_eq realrel_def)
   396 
   396 
   397 instantiation real :: field_inverse_zero
   397 instantiation real :: field_inverse_zero
   443 
   443 
   444 lemma add_Real:
   444 lemma add_Real:
   445   assumes X: "cauchy X" and Y: "cauchy Y"
   445   assumes X: "cauchy X" and Y: "cauchy Y"
   446   shows "Real X + Real Y = Real (\<lambda>n. X n + Y n)"
   446   shows "Real X + Real Y = Real (\<lambda>n. X n + Y n)"
   447   using assms plus_real.transfer
   447   using assms plus_real.transfer
   448   unfolding cr_real_eq fun_rel_def by simp
   448   unfolding cr_real_eq rel_fun_def by simp
   449 
   449 
   450 lemma minus_Real:
   450 lemma minus_Real:
   451   assumes X: "cauchy X"
   451   assumes X: "cauchy X"
   452   shows "- Real X = Real (\<lambda>n. - X n)"
   452   shows "- Real X = Real (\<lambda>n. - X n)"
   453   using assms uminus_real.transfer
   453   using assms uminus_real.transfer
   454   unfolding cr_real_eq fun_rel_def by simp
   454   unfolding cr_real_eq rel_fun_def by simp
   455 
   455 
   456 lemma diff_Real:
   456 lemma diff_Real:
   457   assumes X: "cauchy X" and Y: "cauchy Y"
   457   assumes X: "cauchy X" and Y: "cauchy Y"
   458   shows "Real X - Real Y = Real (\<lambda>n. X n - Y n)"
   458   shows "Real X - Real Y = Real (\<lambda>n. X n - Y n)"
   459   unfolding minus_real_def
   459   unfolding minus_real_def
   461 
   461 
   462 lemma mult_Real:
   462 lemma mult_Real:
   463   assumes X: "cauchy X" and Y: "cauchy Y"
   463   assumes X: "cauchy X" and Y: "cauchy Y"
   464   shows "Real X * Real Y = Real (\<lambda>n. X n * Y n)"
   464   shows "Real X * Real Y = Real (\<lambda>n. X n * Y n)"
   465   using assms times_real.transfer
   465   using assms times_real.transfer
   466   unfolding cr_real_eq fun_rel_def by simp
   466   unfolding cr_real_eq rel_fun_def by simp
   467 
   467 
   468 lemma inverse_Real:
   468 lemma inverse_Real:
   469   assumes X: "cauchy X"
   469   assumes X: "cauchy X"
   470   shows "inverse (Real X) =
   470   shows "inverse (Real X) =
   471     (if vanishes X then 0 else Real (\<lambda>n. inverse (X n)))"
   471     (if vanishes X then 0 else Real (\<lambda>n. inverse (X n)))"
   472   using assms inverse_real.transfer zero_real.transfer
   472   using assms inverse_real.transfer zero_real.transfer
   473   unfolding cr_real_eq fun_rel_def by (simp split: split_if_asm, metis)
   473   unfolding cr_real_eq rel_fun_def by (simp split: split_if_asm, metis)
   474 
   474 
   475 instance proof
   475 instance proof
   476   fix a b c :: real
   476   fix a b c :: real
   477   show "a + b = b + a"
   477   show "a + b = b + a"
   478     by transfer (simp add: add_ac realrel_def)
   478     by transfer (simp add: add_ac realrel_def)
   544 
   544 
   545 lemma positive_Real:
   545 lemma positive_Real:
   546   assumes X: "cauchy X"
   546   assumes X: "cauchy X"
   547   shows "positive (Real X) \<longleftrightarrow> (\<exists>r>0. \<exists>k. \<forall>n\<ge>k. r < X n)"
   547   shows "positive (Real X) \<longleftrightarrow> (\<exists>r>0. \<exists>k. \<forall>n\<ge>k. r < X n)"
   548   using assms positive.transfer
   548   using assms positive.transfer
   549   unfolding cr_real_eq fun_rel_def by simp
   549   unfolding cr_real_eq rel_fun_def by simp
   550 
   550 
   551 lemma positive_zero: "\<not> positive 0"
   551 lemma positive_zero: "\<not> positive 0"
   552   by transfer auto
   552   by transfer auto
   553 
   553 
   554 lemma positive_add:
   554 lemma positive_add: