src/HOL/Library/Extended_Nonnegative_Real.thy
changeset 70381 b151d1f00204
parent 70380 2b0dca68c3ee
child 71834 919a55257e62
equal deleted inserted replaced
70380:2b0dca68c3ee 70381:b151d1f00204
  1110 lemma enn2real_positive_iff: "0 < enn2real x \<longleftrightarrow> (0 < x \<and> x < top)"
  1110 lemma enn2real_positive_iff: "0 < enn2real x \<longleftrightarrow> (0 < x \<and> x < top)"
  1111   by (cases x rule: ennreal_cases) auto
  1111   by (cases x rule: ennreal_cases) auto
  1112 
  1112 
  1113 lemma enn2real_eq_posreal_iff[simp]: "c > 0 \<Longrightarrow> enn2real x = c \<longleftrightarrow> x = c"
  1113 lemma enn2real_eq_posreal_iff[simp]: "c > 0 \<Longrightarrow> enn2real x = c \<longleftrightarrow> x = c"
  1114   by (cases x) auto
  1114   by (cases x) auto
       
  1115 
       
  1116 lemma ennreal_enn2real_if: "ennreal (enn2real r) = (if r = top then 0 else r)"
       
  1117   by(auto intro!: ennreal_enn2real simp add: less_top)
  1115 
  1118 
  1116 subsection \<open>Coercion from \<^typ>\<open>enat\<close> to \<^typ>\<open>ennreal\<close>\<close>
  1119 subsection \<open>Coercion from \<^typ>\<open>enat\<close> to \<^typ>\<open>ennreal\<close>\<close>
  1117 
  1120 
  1118 
  1121 
  1119 definition ennreal_of_enat :: "enat \<Rightarrow> ennreal"
  1122 definition ennreal_of_enat :: "enat \<Rightarrow> ennreal"
  1322 lemma tendsto_enn2ereal_iff[simp]: "((\<lambda>i. enn2ereal (f i)) \<longlongrightarrow> enn2ereal x) F \<longleftrightarrow> (f \<longlongrightarrow> x) F"
  1325 lemma tendsto_enn2ereal_iff[simp]: "((\<lambda>i. enn2ereal (f i)) \<longlongrightarrow> enn2ereal x) F \<longleftrightarrow> (f \<longlongrightarrow> x) F"
  1323   using continuous_on_enn2ereal[THEN continuous_on_tendsto_compose, of f x F]
  1326   using continuous_on_enn2ereal[THEN continuous_on_tendsto_compose, of f x F]
  1324     continuous_on_e2ennreal[THEN continuous_on_tendsto_compose, of "\<lambda>x. enn2ereal (f x)" "enn2ereal x" F UNIV]
  1327     continuous_on_e2ennreal[THEN continuous_on_tendsto_compose, of "\<lambda>x. enn2ereal (f x)" "enn2ereal x" F UNIV]
  1325   by auto
  1328   by auto
  1326 
  1329 
       
  1330 lemma ennreal_tendsto_0_iff: "(\<And>n. f n \<ge> 0) \<Longrightarrow> ((\<lambda>n. ennreal (f n)) \<longlonglongrightarrow> 0) \<longleftrightarrow> (f \<longlonglongrightarrow> 0)"
       
  1331   by (metis (mono_tags) ennreal_0 eventuallyI order_refl tendsto_ennreal_iff)
       
  1332     
  1327 lemma continuous_on_add_ennreal:
  1333 lemma continuous_on_add_ennreal:
  1328   fixes f g :: "'a::topological_space \<Rightarrow> ennreal"
  1334   fixes f g :: "'a::topological_space \<Rightarrow> ennreal"
  1329   shows "continuous_on A f \<Longrightarrow> continuous_on A g \<Longrightarrow> continuous_on A (\<lambda>x. f x + g x)"
  1335   shows "continuous_on A f \<Longrightarrow> continuous_on A g \<Longrightarrow> continuous_on A (\<lambda>x. f x + g x)"
  1330   by (transfer fixing: A) (auto intro!: tendsto_add_ereal_nonneg simp: continuous_on_def)
  1336   by (transfer fixing: A) (auto intro!: tendsto_add_ereal_nonneg simp: continuous_on_def)
  1331 
  1337 
  1728   using suminf_ennreal_eq by blast
  1734   using suminf_ennreal_eq by blast
  1729 
  1735 
  1730 lemma less_top_ennreal: "x < top \<longleftrightarrow> (\<exists>r\<ge>0. x = ennreal r)"
  1736 lemma less_top_ennreal: "x < top \<longleftrightarrow> (\<exists>r\<ge>0. x = ennreal r)"
  1731   by (cases x) auto
  1737   by (cases x) auto
  1732 
  1738 
       
  1739 lemma enn2real_less_iff[simp]: "x < top \<Longrightarrow> enn2real x < c \<longleftrightarrow> x < c"
       
  1740   using ennreal_less_iff less_top_ennreal by auto
       
  1741 
       
  1742 lemma enn2real_le_iff[simp]: "\<lbrakk>x < top; c > 0\<rbrakk> \<Longrightarrow> enn2real x \<le> c \<longleftrightarrow> x \<le> c"
       
  1743   by (cases x) auto
       
  1744 
       
  1745 lemma enn2real_less:
       
  1746   assumes "enn2real e < r" "e \<noteq> top" shows "e < ennreal r"
       
  1747   using enn2real_less_iff assms top.not_eq_extremum by blast
       
  1748 
       
  1749 lemma enn2real_le:
       
  1750   assumes "enn2real e \<le> r" "e \<noteq> top" shows "e \<le> ennreal r"
       
  1751   by (metis assms enn2real_less ennreal_enn2real_if eq_iff less_le)
       
  1752 
  1733 lemma tendsto_top_iff_ennreal:
  1753 lemma tendsto_top_iff_ennreal:
  1734   fixes f :: "'a \<Rightarrow> ennreal"
  1754   fixes f :: "'a \<Rightarrow> ennreal"
  1735   shows "(f \<longlongrightarrow> top) F \<longleftrightarrow> (\<forall>l\<ge>0. eventually (\<lambda>x. ennreal l < f x) F)"
  1755   shows "(f \<longlongrightarrow> top) F \<longleftrightarrow> (\<forall>l\<ge>0. eventually (\<lambda>x. ennreal l < f x) F)"
  1736   by (auto simp: less_top_ennreal order_tendsto_iff )
  1756   by (auto simp: less_top_ennreal order_tendsto_iff )
  1737 
  1757