src/HOL/Library/Extended_Nonnegative_Real.thy
changeset 67451 12bcfbac45a1
parent 67443 3abf6a722518
child 67452 aab817885622
equal deleted inserted replaced
67450:b0ae74b86ef3 67451:12bcfbac45a1
   568   by (simp add: ennreal_mult_eq_top_iff)
   568   by (simp add: ennreal_mult_eq_top_iff)
   569 
   569 
   570 lemma enn2ereal_eq_top_iff[simp]: "enn2ereal x = \<infinity> \<longleftrightarrow> x = top"
   570 lemma enn2ereal_eq_top_iff[simp]: "enn2ereal x = \<infinity> \<longleftrightarrow> x = top"
   571   by transfer (simp add: top_ereal_def)
   571   by transfer (simp add: top_ereal_def)
   572 
   572 
   573 lemma enn2ereal_top: "enn2ereal top = \<infinity>"
   573 lemma enn2ereal_top[simp]: "enn2ereal top = \<infinity>"
   574   by transfer (simp add: top_ereal_def)
   574   by transfer (simp add: top_ereal_def)
   575 
   575 
   576 lemma e2ennreal_infty: "e2ennreal \<infinity> = top"
   576 lemma e2ennreal_infty[simp]: "e2ennreal \<infinity> = top"
   577   by (simp add: top_ennreal.abs_eq top_ereal_def)
   577   by (simp add: top_ennreal.abs_eq top_ereal_def)
   578 
   578 
   579 lemma ennreal_top_minus[simp]: "top - x = (top::ennreal)"
   579 lemma ennreal_top_minus[simp]: "top - x = (top::ennreal)"
   580   by transfer (auto simp: top_ereal_def max_def)
   580   by transfer (auto simp: top_ereal_def max_def)
   581 
   581 
   923 lemma enn2ereal_ennreal[simp]: "0 \<le> x \<Longrightarrow> enn2ereal (ennreal x) = x"
   923 lemma enn2ereal_ennreal[simp]: "0 \<le> x \<Longrightarrow> enn2ereal (ennreal x) = x"
   924   by transfer (simp add: max_absorb2)
   924   by transfer (simp add: max_absorb2)
   925 
   925 
   926 lemma e2ennreal_enn2ereal[simp]: "e2ennreal (enn2ereal x) = x"
   926 lemma e2ennreal_enn2ereal[simp]: "e2ennreal (enn2ereal x) = x"
   927   by (simp add: e2ennreal_def max_absorb2 ennreal.enn2ereal_inverse)
   927   by (simp add: e2ennreal_def max_absorb2 ennreal.enn2ereal_inverse)
       
   928 
       
   929 lemma e2ennreal_ereal [simp]: "e2ennreal (ereal x) = ennreal x"
       
   930 by (metis e2ennreal_def enn2ereal_inverse ennreal.rep_eq sup_ereal_def)
   928 
   931 
   929 lemma ennreal_0[simp]: "ennreal 0 = 0"
   932 lemma ennreal_0[simp]: "ennreal 0 = 0"
   930   by (simp add: ennreal_def max.absorb1 zero_ennreal.abs_eq)
   933   by (simp add: ennreal_def max.absorb1 zero_ennreal.abs_eq)
   931 
   934 
   932 lemma ennreal_1[simp]: "ennreal 1 = 1"
   935 lemma ennreal_1[simp]: "ennreal 1 = 1"
   998   by transfer
  1001   by transfer
   999      (simp add: max.absorb2 zero_ereal_def ereal_max[symmetric] del: ereal_max)
  1002      (simp add: max.absorb2 zero_ereal_def ereal_max[symmetric] del: ereal_max)
  1000 
  1003 
  1001 lemma ennreal_minus_top[simp]: "ennreal a - top = 0"
  1004 lemma ennreal_minus_top[simp]: "ennreal a - top = 0"
  1002   by (simp add: minus_top_ennreal)
  1005   by (simp add: minus_top_ennreal)
       
  1006 
       
  1007 lemma e2eenreal_enn2ereal_diff [simp]:
       
  1008   "e2ennreal(enn2ereal x - enn2ereal y) = x - y" for x y
       
  1009 by (cases x, cases y, auto simp add: ennreal_minus e2ennreal_neg)
  1003 
  1010 
  1004 lemma ennreal_mult: "0 \<le> a \<Longrightarrow> 0 \<le> b \<Longrightarrow> ennreal (a * b) = ennreal a * ennreal b"
  1011 lemma ennreal_mult: "0 \<le> a \<Longrightarrow> 0 \<le> b \<Longrightarrow> ennreal (a * b) = ennreal a * ennreal b"
  1005   by transfer (simp add: max_absorb2)
  1012   by transfer (simp add: max_absorb2)
  1006 
  1013 
  1007 lemma ennreal_mult': "0 \<le> a \<Longrightarrow> ennreal (a * b) = ennreal a * ennreal b"
  1014 lemma ennreal_mult': "0 \<le> a \<Longrightarrow> ennreal (a * b) = ennreal a * ennreal b"
  1463   fix y :: ennreal assume "y < top"
  1470   fix y :: ennreal assume "y < top"
  1464   then obtain r where "y = ennreal r"
  1471   then obtain r where "y = ennreal r"
  1465     by (cases y rule: ennreal_cases) auto
  1472     by (cases y rule: ennreal_cases) auto
  1466   then show "\<exists>i\<in>UNIV. y < of_nat i"
  1473   then show "\<exists>i\<in>UNIV. y < of_nat i"
  1467     using reals_Archimedean2[of "max 1 r"] zero_less_one
  1474     using reals_Archimedean2[of "max 1 r"] zero_less_one
  1468     by (auto simp: ennreal_of_nat_eq_real_of_nat ennreal_def less_ennreal.abs_eq eq_onp_def max.absorb2
  1475     by (simp add: ennreal_Ex_less_of_nat)
  1469              dest!: one_less_of_natD intro: less_trans)
       
  1470 qed
  1476 qed
  1471 
  1477 
  1472 lemma ennreal_SUP_eq_top:
  1478 lemma ennreal_SUP_eq_top:
  1473   fixes f :: "'a \<Rightarrow> ennreal"
  1479   fixes f :: "'a \<Rightarrow> ennreal"
  1474   assumes "\<And>n. \<exists>i\<in>I. of_nat n \<le> f i"
  1480   assumes "\<And>n. \<exists>i\<in>I. of_nat n \<le> f i"