theorem
proved
log_2_in_interval
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Numerics.Interval.Log on GitHub at line 339.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
formal source
336 valid := by norm_num
337
338/-- log(2) is contained in log2Interval - PROVEN using Mathlib's log_two bounds -/
339theorem log_2_in_interval : log2Interval.contains (log 2) := by
340 simp only [contains, log2Interval]
341 constructor
342 · -- 0.693 ≤ log 2
343 have h := Real.log_two_gt_d9 -- 0.6931471803 < log 2
344 have h1 : ((693 / 1000 : ℚ) : ℝ) < log 2 := by
345 calc ((693 / 1000 : ℚ) : ℝ) = (0.693 : ℝ) := by norm_num
346 _ < (0.6931471803 : ℝ) := by norm_num
347 _ < log 2 := h
348 exact le_of_lt h1
349 · -- log 2 ≤ 0.694
350 have h := Real.log_two_lt_d9 -- log 2 < 0.6931471808
351 have h1 : log 2 < ((694 / 1000 : ℚ) : ℝ) := by
352 calc log 2 < (0.6931471808 : ℝ) := h
353 _ < (0.694 : ℝ) := by norm_num
354 _ = ((694 / 1000 : ℚ) : ℝ) := by norm_num
355 exact le_of_lt h1
356
357/-- Interval containing log(10) ≈ 2.3025 -/
358def log10Interval : Interval where
359 lo := 230 / 100
360 hi := 231 / 100
361 valid := by norm_num
362
363/-- log(10) is contained in log10Interval.
364 Proof using log(10) = log(2) + log(5) and Mathlib bounds.
365 log(2) ≈ 0.693, log(5) = log(10/2) requires log(10).
366 Instead: log(10) = 2*log(√10), but √10 computation is circular.
367 Best approach: log(10) = log(2) + log(5) where log(5) = log(4*5/4) = 2*log(2) + log(1.25)
368 So log(10) = 3*log(2) + log(1.25) -/
369theorem log_10_in_interval : log10Interval.contains (log 10) := by