Skip to main content
AlexKontorovich/PrimeNumberTheoremAnd
Source indexedlemma · leanprover/lean4:v4.32.0

integral_const_div_self_add_im

PrimeNumberTheoremAnd.ResidueCalcOnRectangles · PrimeNumberTheoremAnd/ResidueCalcOnRectangles.lean:520 to 541

Mathematical statement

Exact Lean statement

lemma integral_const_div_self_add_im (hy : y ≠ 0) :
    ∫ x : ℝ in x₁..x₂, A / (x + y * I) =
    A * (Real.log (x₂ ^ 2 + y ^ 2) / 2 - Real.log (x₁ ^ 2 + y ^ 2) / 2) -
    A * I * (arctan (x₂ / y) - arctan (x₁ / y))

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
lemma integral_const_div_self_add_im (hy : y  0) :    ∫ x :  in x₁..x₂, A / (x + y * I) =    A * (Real.log (x₂ ^ 2 + y ^ 2) / 2 - Real.log (x₁ ^ 2 + y ^ 2) / 2) -    A * I * (arctan (x₂ / y) - arctan (x₁ / y)) := by  have e1 {x : } : A / (x + y * I) = A * x / (x ^ 2 + y ^ 2) - A * I * y / (x ^ 2 + y ^ 2) := by    ring_nf    simp_rw [inv_re_add_im]    ring  have e2 : IntervalIntegrable (fun x  A * x / (x ^ 2 + y ^ 2)) volume x₁ x₂ := by    apply Continuous.intervalIntegrable    simp_rw [mul_div_assoc]    norm_cast    exact continuous_const.mul (continuous_ofReal.comp (continuous_self_div_sq_add_sq hy))  have e3 : IntervalIntegrable (fun x  A * I * y / (x ^ 2 + y ^ 2)) volume x₁ x₂ := by    apply Continuous.intervalIntegrable    refine continuous_const.div (by fun_prop) (fun x => ?_)    norm_cast    exact sq_add_sq_ne_zero hy  simp_rw [integral_congr (fun _ _ => e1), integral_sub e2 e3, mul_div_assoc]  norm_cast  simp_rw [intervalIntegral.integral_const_mul, intervalIntegral.integral_ofReal,    integral_self_div_sq_add_sq hy, integral_const_div_sq_add_sq hy]