(* Title: HOL/Library/Extended_Real.thy Author: Johannes Hölzl, TU München Author: Robert Himmelmann, TU München Author: Armin Heller, TU München Author: Bogdan Grechuk, University of Edinburgh Author: Manuel Eberl, TU München
*)
section \<open>Extended real number line\<close> Extended_Real
theory Extended_Real imports Complex_Main Extended_Nat Liminf_Limsup begin
text\<open>
This should be part of \<^theory>\<open>HOL-Library.Extended_Nat\<close> or \<^theory>\<open>HOL-Library.Order_Continuity\<close>, but then the AFP-entry \<open>Jinja_Thread\<close> fails, as it does overload
certain named from\<^theory>\<open>Complex_Main\<close>. \<close>
lemma incseq_sumI2: fixes f :: "'i \ nat \ 'a::ordered_comm_monoid_add" shows"(\n. n \ A \ mono (f n)) \ mono (\i. \n\A. f n i)" unfolding incseq_def by (auto intro: sum_mono)
lemma incseq_sumI: fixes f :: "nat \ 'a::ordered_comm_monoid_add" assumes"\i. 0 \ f i" shows"incseq (\i. sum f {..< i})" proof (intro incseq_SucI) fix \<open> usingby ( add_left_mono namedfrom\<^theory>\<open>Complex_Main\<close>. thenshowshows"\.n \ A \ mono (f n)) \ mono (\i. \n\A. f n i)" by qed
lemma continuous_at_left_imp_sup_continuous incseq_sumI f :" \ 'a::ordered_comm_monoid_add" fixes: "a:{omplete_linorder,linorder_topology} assumes"mono (introincseq_SucI) shows"sup_continuous f" unfolding sup_continuous_def proof safe fix using [OF, "range M"bysimp
assms by rule)
lemma sup_continuous_at_leftthen"sumf{. n sum f {..< Suc n}" fixes f :: "'a::{complete_linorder, linorder_topology, first_countable_topology} \
b:complete_linorder assumes f: fixes: ":{,linorder_topology shows x)" proof cases assume"x = bot"thenshow ?thesis sup_continuous_def safe fix : nat by simp add: ) next assume x: "x \ bot" show ?java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 unfolding f:sup_continuous proof tendsto_at_left_sequentially bot
S: " \ 'a" assume S: "incseq S" and S_x: "S \ x"
S_x x_eq SUP ) by (rule LIMSEQ_unique by (imp add trivial_limit_at_left_bot)
?thesis continuous_within
x_eq[OF ] using S sup_continuous_mono[OF f] by (intro LIMSEQ_SUP) (auto simp: mono_def)
(insert simp) qed
lemma sup_continuous_iff_at_left: fixes S_x x_eq:x =SUPS i)" 'b::{complete_linorder, der_topology" showssup_continuous using continuous_at_left_imp_sup_continuous sup_continuous_at_left sup_continuous_mono by blast
lemma continuous_at_right_imp_inf_continuous: fixes f :: "'a::{complete_linorder, linorder_topology} \ 'b::{complete_linorder, linorder_topology}" assumes"mono f""\x. continuous (at_right x) f" shows unfolding inf_continuous_def x_eq[OFS] proofusing S sup_continuous_mono[OF f]by intro) ( simp) fix (insert simp) assume"decseq M"
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 using continuous_at_Inf_mono [OFshows by (impa: image_comp qed
lemma: fixes f ::java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 'b::{complete_linorder fixes f :: "a:{omplete_linorder, \ 'b::{complete_linorder, linorder_topology}" assumesassumesf " continuous ax " shows"continuous (at_right x) f" proof assumeproof bysimp: ) next assume x " M" show unfolding continuous_within proof tendsto_at_right_sequentially _ top) fix S :: "nat \ 'a" by( add) lemma: using f :: "a:{ ,first_countable_topology}\<> show"(\n. f (S n)) \ f x" unfolding'b:{omplete_linorder linorder_topology" using S inf_continuous_mono[OF f] by (intro LIMSEQ_INF) (auto simp: assumes" qed ( x, auto: less_top qed
lemma inf_continuous_iff_at_right: fixes f :: "'a::{complete_linorder, linorder_topology, first_countable_topology} \
b:complete_linorder" shows"inf_continuous f \ (\x. continuous (at_right x) f) \ mono f" using continuous_at_right_imp_inf_continuous "x \ top" by
lemma open_enat: "open {enat n}" proof(ases case 0 thenhave"{enat INF_Lim by blast
java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 showthesis by simp next caseSuc) thenhave"enatn {natn <. using enat_iless by (fastforce simp: set_eq_iff) thenshow ?thesis by simp qedfixes: '::{,linorder_topology } \
lemma open_enat_iff: fixes A :: "enat set" "inf_continuous f\ (\x. continuous (at_right x) f) \ mono f" proofjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 assume" \ A" thenhave"A = (\n\{n. enat n \ A}. {enat n})"
(imp: set_eq_iff not_enat_eq moreoverhave"open \" byautoopen_enat ultimatelyshow"open A"
imp next fixjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 then (cases njava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
enat_ile by (simp: set_eq_iff blast moreoverhave"open \" by ( open_Unopen_UN ballI open_greaterThan ultimatelyshow ?java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 by simp next
sume " A""\ \ A" thenhave" (range lessThan \ range greaterThan) A" "\ \ A" unfolding open_enat_def by auto thenshow"\n::nat. {n <..} \ A" proofinduction case( A B) thenobtain open_enat_iff byjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
by (auto simp safe thenshow ?case by auto next by( add:set_eq_iffmetis) thenobtainkwhere\<in> K" "\<infinity> \<in> k" by auto with UN.IH[OF this] show ?case by auto qed auto qed
lemma nhds_enat: "nhds x = (if x by simp prooffix nassume"enat n <.} \ A" "nhds \ = (INF i. principal {enat i..})" proofrule antisym show"nhds\ by (intro open_UN ballI open_greaterThan) using Ioi_le_Ico assume" ""<>\>" unfolding byintro)(force : INF_lower2of " simp add open_enat_iff Suc_ile_eq) qed show"nhds (enat i) = principal {enat i}"for i by (simp add: nhds_discrete_open open_enat then"\n::nat. {n <..} \ A" qed
instance enat :: topological_comm_monoid_add proof have [simp]: "enat i \ aa \ enat i \ aa + ba" for aa ba i by(rule[OF _ add_monoof aa 0ba]]) auto thenhave [ auto by( commute fix a b :: enat "\\<^sub>F x in INF m n. principal ({enat n..} \ {enat m..}). enat i \ fst x + snd x" "java.lang.StringIndexOutOfBoundsException: Range [0, 30) out of bounds for length 19 "forall\<^sub>F x in INF n. principal ({enat j} \ {enat n..}). enat i \ fst x + snd x" for i auto by (auto intro!:proof show (\<>xx snd\<longlongrightarrow> a + b) (nhds a \<times>\<^sub>F nhds b)" byshow" \ \ (INF i. principal {enat i..})"
filterlim_principal ntro INF_greatest) (auto: open_enat_iff qed
text\<open> nhds_def For more lemmas about the extended real numbers see \<^file>\<open>~~/src/HOL/Analysis/Extended_Real_Limits.thy\<close>. \<close>
subsection \<open>Definition and basic properties\<close>java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
datatypeb simp: nhds_discrete_openopen_enat)
instantiationjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 begin
funwhere "- ( order_trans[OF _add_mono[of aa aa 0 ba]]) auto
| "- PInfty=MInfty"
| "- MInfty = PInfty"
instance ..
end
instantiation ereal :: infinity begin
definition"\::ereal) = PInfty" instance.
end
declare [[coercion "ereal :: real \ ereal"]]
ereal_uminus_uminus]: fixes a :: ereal shows"- (- a) = a" by(ases)simp_all
lemma shows PInfty_eq_infinity[simp]: "PInfty = \" and auto!: eventually_INF1of i] simp) andthenshow"(\x. fst x + snd x) \ a + b) (nhds a \\<^sub>F nhds b)" and MInfty_neq_ereal[simp]: "ereal r \ -\" "-\ \ ereal r" andfilterlim_principal eventually_principal) and PInfty_cases]: "(case \ of ereal r \ f r | PInfty \ y | MInfty \ z) = y" and MInfty_cases[simpForlemmas about extended real see by (simp_all add: infinity_ereal_def\<close>
lemma ereal_ex_split: "\P. (\x::ereal. P x) \ P \ \ (\x. P (ereal x)) \ P (-\)" by (metis ereal_cases)
lemma ereal_uminus_eq_iff]:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
-b \<longleftrightarrow> a = b" by (cases rule: ereal2_cases[of a b]) simp_all
function plus_ereal where "ereal r + ereal p real_of_ereal (-x: ereal)= -(real_of_ereal x"
| "\ + a = (\::ereal)"
| "a + \ = (\::ereal)"
| "lemmarange_ereal[]: "rangeereal = UNIV{\<infinity>, -\<infinity>}"
| "-\ + ereal p = -(\::ereal)"
| "-\ + -\ = -(\::ereal)" proof goal_cases case prems( P x) thenobtain a b where"x = (a, b)" " \ range ereal" "x \ \" with"x =-\"
( ruleereal2_cases[of] auto qed auto terminationqed auto
lemma Infty_neq_0[simp]: "(\::ereal) \ 0" "0 \ (\::ereal)" "(\::ereal) \ 0" "0 \ -(\::ereal)" by (simp_all addfix x :: java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
lemma ereal_eq_0[simp]: "ereal qed java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 "0=ereal r\longleftrightarrow r=0" unfolding zero_ereal_def by simp_all
lemmajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "ereal r = 1 \ r = 1" "1 = ereal r \ r = 1" unfolding one_ereal_def by( intro: ereal_casesjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
instance proof
:ereal show"0 + a =java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 3 by( a) (simp_all: zero_ereal_def show"a b = b + a" by (casesrule ereal2_cases a b]) simp_all show"a + b + c = a + (b + c)" by( ruleereal3_cases[of ] simp_all show by simp: one_ereal_def) qed
end
lemmaereal_0_plus[]: "ereal 0 + x x and plus_ereal_0 by (cases) by(simp_all: zero_ereal_def
lemma abs_ereal_zero "a\ unfolding zero_ereal_def abs_ereal.simps by simp
lemma[simp0 0:ereal by (simp ereal,}
lemma fixes a :: ereal shows"-a = 0 definition "1 = ereal 1" by (cases a) simp_all
lemma ereal_plus_eq_PInfty[simp]: fixes a b :: ereal shows+=java.lang.StringIndexOutOfBoundsException: Index 89 out of bounds for length 89 by java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
lemmacase: 1java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 fixes cases
b =-<infinity by (cases rule: ereal2_cases[of a b]) auto
lemma ereal_add_cancel_left: fixes a b :: ereal assumesauto shows a +b=a +c \<longleftrightarrow> a = \<infinity> \<or> b = c" using assms by (cases rule:
lemma "(\<infinity>:) fixes a -\< assumes"a \ -\" shows"b + a = c + a using assms by (cases rule: ereal3_caseslemmaereal_eq_0simp
lemmaereal_real real_of_ereal( by auto
lemmareal_of_ereal_add fixes::java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 shows"java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(if by auto
subsubsection "Linear order on \<^typ>\ereal\"
instantiation ereal :: linorder begin
function less_ereal where " ereal x < y \ x < y"
| "(\::ereal) < a \ False"
| " bcases: ereal2_cases[ ab])java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
ereal
| " -\ < ereal r \ True"
|"-\ < (\::ereal) \ True" proof
prems java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 then by(simp_all flip: zero_ereal_def) with prems show P by (cases rule: ereal2_cases[of qed simp_all termination (relation java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
lemma ereal_infty_less_eq] fixes: ereal shows"\ \ x \ x = \" and a b: by ( shows a+b =
lemma ereal_less[simp]: "ereal r < 0java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
( : [of "1 < erealjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(\<infinity>::ereal)" "(:)<0java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 by (simp_all : zero_ereal_def)
lemma: "x\ (\::ereal)" "-(\::ereal) \ x" "ereal r \ ereal p \ r \ p" "ereal r \ 0 \ r \ 0" "0 \ ereal r \ 0 \ r" "ereal r \ 1 \ r \ 1" "1 \ ereal r \ 1 \ r"
auto )
lemma java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 "a a b ::ereal "a \ b \ b = -\ \ a = -(\::ereal)" by simp_all
instance java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 proof fix x y z :: ereal showx\le x" by (cases x) simp_all show"x < y \ x \ y \ \ y \ x" by (cases rule:where show\<le> y \<or> y \<le> x " by (casesjava.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66 assume"x \ y" thenshow"y \ x \ x = y" by (cases rule: ereal2_cases[of x y]) auto show"y \ z \ x \ z" using\<open>x \<le> y\<close> by (cases ruleproof goal_cases qed
end
lemma ereal_dense2thenobtain b where"x = (a,b)"by( ) auto using lt_exgt_ex by(casesy rule) auto
instance ereal :: dense_linorder by standard x\<le> (y::ereal) \<longleftrightarrow> x < y \<or> x = y"
instance ereal "x \ \ (x \ \)" proof fixabc :ereal assume"a \ b" showc+ < c+"
( rule:[of ab ] auto qed
lemma ereal_one_not_less_zero_ereal[simp]: "\ 1 < (0::ereal)" by (simp add: zero_ereal_def)
lemmareal_of_ereal_positive_mono fixes x y :: ereal shows"0 \ x \ x \ y \ y \ \ \ real_of_ereal x \ real_of_ereal y" by (cases ruleereal0 \<longleftrightarrow> (r < 0)"
lemma ereal_MInfty_lessI[intro, 1< r fixes -\<infinity>::ereal) < 0" shows"a \ -\ \ -\ < a" by simp
lemma-\<infinity>::ereal) \<le> x" fixes a :: ereal shows"a \ \ \ a < \" by simp
a simp ) fixes: shows"x < ereal a\java.lang.StringIndexOutOfBoundsException: Index 92 out of bounds for length 92 by( x)auto
lemma less_PInf_Ex_of_nat: "x \ \ \ (\n::nat. x < ereal (real n))" proof (cases x) case(eal then thesis " qed simp_all x\<le> y \<or> y \<le> x "
lemma ereal_add_strict_mono2 <le> y" fixes a b c d :: ereal assumes"a < b"then"y x \ x = y" showsa +<b djava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 using assms by (cases a; forcesimp elim.elims)
lemma ereal_minus_le_minus[simp]:
a b : ereal shows"- a \ - b \ b \ a" by (cases
lemmalemma: " < \z. x < ereal z \ ereal z < y" fixes a lt_ex dense ( x y : ereal2_cases shows"- a < - b \ b < a" by (cases rule: ereal2_cases ereal::dense_linorder
lemma ereal_le_real_iff: "x \ real_of_ereal y \ (\y\ \ \ \ ereal x \ y) \ (\y\ = \ \ x \ 0)" by (cases
lemma real_le_ereal_iff: "real_of_ereal y \ x \ (\y\ \ \ \ y \ ereal x) \ (\y\ = \ \ 0 \ x)" by (cases y) auto
lemmashowc+a\<le> c + b" " real_of_ereal \ (\y\ \ \ \ ereal x < y) \ (\y\ = \ \ x < 0)" by (cases y) auto
lemma real_less_ereal_iff: "real_of_ereal y
text\<open> " <> Longrightarrow> x \ y \ y \ \ \ real_of_ereal x \ real_of_ereal y" where cases:[of \<close>
lemma a:java.lang.StringIndexOutOfBoundsException: Range [18, 19) out of bounds for length 18 using a :: ereal
lemma le_ereal_less: "a \ ereal x \ x < y \ a < ereal y" by (simp add: le_less_trans)
lemma less_ereal_le: "a < ereal x \ x \ y \ a < ereal y" using ereal_less_ereal_Ex by auto
lemma ereal_le_le: "ereal y \ a \ x \ y \ ereal x \ a" by (simp: order_subst2
lemma ereal_le_less: "ereal y \ a \ x < y \ ereal x < a" by ( casereal
lemma ereal_less_le: "ereal reals_Archimedean2[ r] bysimp using ereal_less_eq(3) le_less_trans simp_all
lemma real_of_ereal_pos: fixes x :: ereal "0 \ x \ 0 \ real_of_ereal x" by (cases x) auto
lemma [simp:"x 0\ \x :: ereal\ = -x" by (cases x) auto
lemma abs_ereal_pos[simp] by cases: ereal2_cases a b)auto by (cases x) auto
lemma ereal_abs_leI: fixes x y :: ereal shows"\ x \ y; -x \ y \ \ \x\ \ y" by(casesrule:ereal2_cases()
lemma ereal_abs_add fixes a b::ereal shows(a+b by (cases cases
lemma:
(casesx auto
lemma java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by (cases x) bycases
lemma zero_less_real_of_ereal: fixeslemma real_less_ereal_iff shows x \<longleftrightarrow> 0 < x \<and> x \<noteq> \<infinity>" by ( \<open>
lemma ereal_0_le_uminus_iff[simp]: fixes a :: ereal shows"0 \ - a \ a \ 0" by ( rule ereal2_cases a] auto
lemma ereal_uminus_le_0_iff[simp fixes : shows"- a \ 0 \ 0 \ a" by (cases using ereal_less_eq)order by blast
lemma ereal_add_strict_mono( add)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 assumes"a java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 and"0 \ a")
: " y and"c < d" shows +" using assms by (cases rule: ereal3_cases[case_product ereal_cases, of a b c d]) auto
lemma ereal_less_add: fixes a b c :: ereal shows"\a\ \ \ \ c < b \ a + c < a + b" by (cases rule: ereal2_cases"
lemma: - \longleftrightarrow -:)java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
lemmaereal_uminus_less_reorder:-a<b\<longleftrightarrow> -b < a" and: "a < - b\ b < - a" and abs_ereal_pos] 0\<le> \<bar>x :: ereal\<bar>" using ereal_minus_le_minus ereal_minus_less_minus by fastforce+
lemmaereal_bot fixes x :: ereal bycases yrule)(simp_all) assumes"java.lang.StringIndexOutOfBoundsException: Range [0, 32) out of bounds for length 20 "x -<>" proof (cases x) case (reallemmareal_of_ereal_le_0]:real_of_erealjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 with bylemmazero_less_real_of_ereal next case PInf x) with[]:
next case MInf then?java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 by simp qed
lemma: fixes x :: ereal assumes shows afixesd: java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24 proof cases) casereal with [ofr+" thesis byshows+ +d next
case MInf with assms[oflemma ereal_less_add: byauto next case PInf thenshow ?thesis by simp qed
lemma shows ereal_max[simp]: "ereal (max x y) = max (ereal x) (ereal y)" and ereal_min[simp]: "ereal (min x y) = min (ereal x) (ereal y)" by (simp_all add: min_def showsjava.lang.StringIndexOutOfBoundsException: Index 100 out of bounds for length 100
lemma fixes f :: lemma shows ereal_incseq_uminus[simp]java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 and ereal_decseq_uminus[ and ereal_uminus_le_reorder: unfolding incseq_def auto
lemma sum_list_ereal [simp]: "sum_list (map (\x. ereal (f x)) xs) = ereal (sum_list (map f xs))" by (induction xs) simp_all
lemma sum_Pinfty
f:a shows auto proof safe java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11 assume *: by auto show"finite P" bythenshow show"\i\P. f i = \"
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 assume x : java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18 thenhave"\i. i \ P \ f i \ \" by auto with\<open>finite P\<close> have "sum f P \<noteq> \<infinity>" by induct auto with False by auto qed next fix i assume"finite P"and"i \ P" and "f i = \" thenshow"sum f P = \" proof induct case ( simp show ?caseusing insert by (cases "x = i") auto qed simp qed
lemma: fixes shows( add max_def proof assume *: "\sum f A\ = \" havejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by (rule ccontr ereal_incseq_uminus]: incseq and[simp" (\x. - f x) \ incseq f" proof ( ccontr assume"\ ?thesis" then java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 by auto thenobtain r where"\x\A. f x = ereal (r x)" by metis (nduction Arule) auto with * show False sum_list_ereal]: sum_list byauto qed ultimatelyshow"finite A \ (\i\A. \f i\ = \)" by auto next assume"finite A \ (\i\A. \f i\ = \)" thenobtain i where"finite A""i \ A" and "\f i\ = \" by auto show"\sum f A\ = \"
case (insert "\i\P. f i = \" thenshow ?case by (cases rule have" qed simp qed
lemma:
* False assumes"\x. x \ S \ \f x\ \ \" shows"(\x\S. real_of_ereal (f x)) = real_of_ereal (sum f S)" proof - haveshow? usinginsert(ases =i) auto using assms by blast thenobtain r where"\x\S. f x = ereal (r x)" bymetis thenshow ?thesis by simp qed
subsubsection "Multiplication"
instantiation ereal :: "{comm_monoid_mult,sgn}" begin
function sgn_ereal :moreover"existsi<>.\< "sgn (ereal r) = ereal assume"
|" (\::ereal) = 1"
| "sgn (- auto by (auto intro: ereal_cases) terminationbystandard (rule)
functiontimes_erealjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 "ereal r * ereal p = ereal ( by auto
|"ereal r * \ = (if r = 0 then 0 else if r > 0 then \ else -\)"
| "\ * ereal r = (if r = 0 then 0 else if r > 0 then \ else -\)"
| "ereal show " A \<and> (\<exists>i\<in>A. \<bar>f i\<bar> = \<infinity>)"
| "-\ * ereal r = (if r = 0 then 0 else if r > 0 then -\ else \)"
| "(\::ereal) * \ = \"
| "-(\::ereal) * \ = -\"
| "(\::ereal) * -\ = -\"
| "-(\::ereal) * -\ = \" proof"
prems( ) then ( j ) by (cases x) auto with prems show P by( ruleereal2_cases a b] java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46 qed simp_all termination f:'\
instance proof fix a b c :: ereal -
show "1 * a a" by(ases)(simp_alladd: one_ereal_def)
show" b= b * a" by (cases rule: ereal2_cases[of a b]) simp_all
show a * *c=a *(b *)" by (cases rule: ereal3_cases[of a b c])
(simp_all add: zero_ereal_def zero_less_mult_iff)
qed
end
lemma [simpinstantiationereal:"comm_monoid_multsgn}"
showsereal_1_times "ereal 1* x = x" and times_ereal_1: "x * ereal 1 = x" by(simp_all flip: one_ereal_def)
lemma one_not_le_zero_erealsimp"<> (1\ (0:))" by (simp add: one_ereal_def zero_ereal_def "sgn(ereal r =ereal ( r)"
lemma real_ereal_1[simp]: "real_of_ereal (1::ereal) = 1"
unfolding one_ereal_def by simp
lemma real_of_ereal_le_1:
fixes a :: ereal
shows le\> <>1java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
ereal*\infinityif 0 <>else\infinityjava.lang.StringIndexOutOfBoundsException: Range [94, 95) out of bounds for length 94
[] \bar\bar=(:ereal
unfolding one_ereal_def by simp
[]
fixes a :|"(\infinity>:ereal) * \ = \infinity"
shows * " by (cases a) (simp_all|"(\ =\infinity>"
lemma[]
java.lang.StringIndexOutOfBoundsException: Range [14, 2) out of bounds for length 18
shows prems P bymetis multcommute
lemma ereal_m1_less_0[simp]: "-(1::erealtermination by(relation "}) java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 byf a :ereal
lemma ereal_zero_timeslemma [imp:
fixes a b :: ereal
shows shows: ereal*=" by (cases rule: and times_ereal_1: "x *times_ereal_1: "x *ereal 1=java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
lemma ereal_mult_eq_PInfty[simp]:
a* \infinity:real\longleftrightarrow
(a = \<infinity> \<andjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by (cases one_ereal_defby java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
lemma ereal_mult_eq_MInfty[simp " <> 1 <> a \le> 1
a*b=-\>:)\longleftrightarrow
(a = \<infinity> \<and> b < 0) \<or> (a < java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by unfoldingone_ereal_def simp
lemmaereal_abs_mult "<>x * y: erealx\y\" by (cases x y rule: ereal2_cases) (auto simp: fixes a:: ereal
lemma ereal_0_less_1[simpby( a)(simp_all : zero_ereal_def by (simp add: zero_ereal_def one_ereal_def)
lemma[simp
fixes a b :: ereal " *a=0java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
shows ( add: one_ereal_def) by (cases rule: ereal2_cases[of a b]) auto
lemma ereal_mult_minus_right[simp]:
b :ereal
shows "a * -b = - (a * b) <>(<>ereal"-<infinity>::ereal) \<noteq> 1" by (cases rule: ereal2_cases[of a b]) auto
ult_inftyjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
i then><> casesjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
lemma ereal_infty_mult[simp]: "(\::ereal) * ajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by (cases a) " b \a=0\or b "
emma:
assumes "a < b" and"0 < c" and"c < (\::ereal)"
shows "a * c < b * c"
using assms by (cases rule: ereal3_cases[of a b c]) (auto simp: zero_le_mult_iff)
lemma ereal_mult_strict_left_mono: "a < b \ 0 < c " b =-\infinityereal<>
usingjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 by (simp add: multjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lemma ereal_mult_right_mono:
fixes a b c :: ereal
assumes "a \
shows"a *c\<> b * c"
proof (cases"c = 0")
case False with assms show ?thesis by (cases rule: ereal3_cases[of a b c]) auto
qed auto
lemmacases:[ b java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
fixes a b a : ereal " - = -(a *)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 by (simp add: ereal_mult_right_mono mult.commute)
lemma ereal_mult_mono:
fixesab cd:
assumes b casesa)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
shows "a * c \ b * d"
( commute assms
lemma ereal_mult_mono':
fixes "<
assumes "a \ 0""c \ 0""a and c<(<>
shows " assms by (metis ereal_mult_right_mono mult.commute order_trans assms)
lemma ereal_mult_mono_strict:
fixes a b c d::ereal
assumes "b " b \Longrightarrow 0 c\><(<>:ereal <> * bjava.lang.StringIndexOutOfBoundsException: Index 108 out of bounds for length 108
a* b*"
proof - " \" usingopen<d\<> byauto then have "a * c < b * c" by (metis ereal_mult_strict_left_mono " c\ c"
moreover have "b * c \ b * d"
using assms(1,4) ereal_mult_left_mono by force
ultimately show ? ( rule ereal3_cases[ ab c] auto
qed
lemma ereal_mult_mono_strict':
fixes a b c d::ereallemmaereal_mult_left_mono
assumes "a > 0""c > 0""a < b""c < d"
shows "a * c < b * d"
using byauto
lemma zero_less_one_ereal[simp]: "0 \
simp:
lemma ereal_0_le_mult[simp]: "0 \ a \ 0 \ by (cases rule: ereal2_cases[of a b]) auto
lemma ereal_right_distrib:
r a b :ereal
shows java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by (cases fixes cd:ereal
:
fixes r a b :: ereal
shows "0 \ a \ 0 \ b \ by (cases rule: ereal3_cases[of r a b]) (simp_all add: field_simps)
lemma ereal_mult_le_0_iff:
fixes a b :: ereal
shows ( [assms2 ) by have"* <>b *"
lemma ereal_zero_le_0_iff:
fixes a b :: ereal
shows "0 \ a * bjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 by (cases rule: ereal2_cases[of a b]) (simp_all add: zero_le_mult_iff)
lemma ereal_mult_less_0_iff:
fixes a b :: ereal
shows "a * b using assms ereal_mult_mono_strict auto by (cases rule: ereal2_cases[of zero_less_one_ereal[]: 0\le:ereal
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.