src/HOL/Nonstandard_Analysis/HLog.thy
changeset 70723 4e39d87c9737
parent 67399 eab6ce8368fa
equal deleted inserted replaced
70722:ae2528273eeb 70723:4e39d87c9737
     6 section \<open>Logarithms: Non-Standard Version\<close>
     6 section \<open>Logarithms: Non-Standard Version\<close>
     7 
     7 
     8 theory HLog
     8 theory HLog
     9   imports HTranscendental
     9   imports HTranscendental
    10 begin
    10 begin
    11 
       
    12 
       
    13 (* should be in NSA.ML *)
       
    14 lemma epsilon_ge_zero [simp]: "0 \<le> \<epsilon>"
       
    15   by (simp add: epsilon_def star_n_zero_num star_n_le)
       
    16 
       
    17 lemma hpfinite_witness: "\<epsilon> \<in> {x. 0 \<le> x \<and> x \<in> HFinite}"
       
    18   by auto
       
    19 
       
    20 
    11 
    21 definition powhr :: "hypreal \<Rightarrow> hypreal \<Rightarrow> hypreal"  (infixr "powhr" 80)
    12 definition powhr :: "hypreal \<Rightarrow> hypreal \<Rightarrow> hypreal"  (infixr "powhr" 80)
    22   where [transfer_unfold]: "x powhr a = starfun2 (powr) x a"
    13   where [transfer_unfold]: "x powhr a = starfun2 (powr) x a"
    23 
    14 
    24 definition hlog :: "hypreal \<Rightarrow> hypreal \<Rightarrow> hypreal"
    15 definition hlog :: "hypreal \<Rightarrow> hypreal \<Rightarrow> hypreal"
    37   by transfer simp
    28   by transfer simp
    38 
    29 
    39 lemma powhr_not_zero [simp]: "\<And>a x. x powhr a \<noteq> 0 \<longleftrightarrow> x \<noteq> 0"
    30 lemma powhr_not_zero [simp]: "\<And>a x. x powhr a \<noteq> 0 \<longleftrightarrow> x \<noteq> 0"
    40   by transfer simp
    31   by transfer simp
    41 
    32 
    42 lemma powhr_divide: "\<And>a x y. 0 < x \<Longrightarrow> 0 < y \<Longrightarrow> (x / y) powhr a = (x powhr a) / (y powhr a)"
    33 lemma powhr_divide: "\<And>a x y. 0 \<le> x \<Longrightarrow> 0 \<le> y \<Longrightarrow> (x / y) powhr a = (x powhr a) / (y powhr a)"
    43   by transfer (rule powr_divide)
    34   by transfer (rule powr_divide)
    44 
    35 
    45 lemma powhr_add: "\<And>a b x. x powhr (a + b) = (x powhr a) * (x powhr b)"
    36 lemma powhr_add: "\<And>a b x. x powhr (a + b) = (x powhr a) * (x powhr b)"
    46   by transfer (rule powr_add)
    37   by transfer (rule powr_add)
    47 
    38