pith. machine review for the scientific record. sign in
theorem

log_2_in_interval

proved
show as:
view math explainer →
module
IndisputableMonolith.Numerics.Interval.Log
domain
Numerics
line
339 · github
papers citing
none yet

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

Tracked in the explainer inventory; generation is lazy so crawlers do not trigger LLM jobs.

open explainer

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