From f0b84fcbffbef0ab9c6d0a6d7737ea4b764b4c0e Mon Sep 17 00:00:00 2001 From: Stefan Kebekus Date: Wed, 7 Aug 2024 10:46:08 +0200 Subject: [PATCH] Update holomorphic_primitive2.lean --- Nevanlinna/holomorphic_primitive2.lean | 68 +++++++++++++++++--------- 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/Nevanlinna/holomorphic_primitive2.lean b/Nevanlinna/holomorphic_primitive2.lean index 1e4c877..a202aef 100644 --- a/Nevanlinna/holomorphic_primitive2.lean +++ b/Nevanlinna/holomorphic_primitive2.lean @@ -89,18 +89,45 @@ theorem primitive_fderivAtBasepointZero rw [← intervalIntegral.integral_sub t₂ t₃] rw [Filter.eventually_iff_exists_mem] - let s := f⁻¹' Metric.ball (f 0) (c / (4 : ℝ)) - have h₁s : IsOpen s := IsOpen.preimage hf Metric.isOpen_ball - have h₂s : 0 ∈ s := by - apply Set.mem_preimage.mpr - apply Metric.mem_ball_self - linarith + obtain ⟨s, h₁s, h₂s⟩ : ∃ s ⊆ f⁻¹' Metric.ball (f 0) (c / (4 : ℝ)), IsOpen s ∧ 0 ∈ s := by + have B : Metric.ball (f 0) (c / 4) ∈ nhds (f 0) := by + apply Metric.ball_mem_nhds (f 0) + linarith + exact eventually_nhds_iff.mp (continuousAt_def.1 hf (Metric.ball (f 0) (c / (4 : ℝ))) B) - obtain ⟨ε, h₁ε, h₂ε⟩ := Metric.isOpen_iff.1 h₁s 0 h₂s + obtain ⟨ε, h₁ε, h₂ε⟩ : ∃ ε > 0, (Metric.ball 0 ε) ×ℂ (Metric.ball 0 ε) ⊆ s := by + obtain ⟨ε', h₁ε', h₂ε'⟩ : ∃ ε' > 0, Metric.ball 0 ε' ⊆ s := by + apply Metric.mem_nhds_iff.mp + apply IsOpen.mem_nhds + exact h₂s.1 + exact h₂s.2 + use (2 : ℝ)⁻¹ * ε' + constructor + · simpa + · intro x hx + apply h₂ε' + simp + calc Complex.abs x + _ ≤ |x.re| + |x.im| := Complex.abs_le_abs_re_add_abs_im x + _ < (2 : ℝ)⁻¹ * ε' + |x.im| := by + apply (add_lt_add_iff_right |x.im|).mpr + have : x.re ∈ Metric.ball 0 (2⁻¹ * ε') := (Complex.mem_reProdIm.1 hx).1 + simp at this + exact this + _ < (2 : ℝ)⁻¹ * ε' + (2 : ℝ)⁻¹ * ε' := by + apply (add_lt_add_iff_left ((2 : ℝ)⁻¹ * ε')).mpr + have : x.im ∈ Metric.ball 0 (2⁻¹ * ε') := (Complex.mem_reProdIm.1 hx).2 + simp at this + exact this + _ = ε' := by + rw [← add_mul] + abel_nf + simp - have h₃ε : ∀ y ∈ Metric.ball 0 ε, ‖(f y) - (f 0)‖ < (c / (4 : ℝ)) := by + have h₃ε : ∀ y ∈ (Metric.ball 0 ε) ×ℂ (Metric.ball 0 ε), ‖(f y) - (f 0)‖ < (c / (4 : ℝ)) := by intro y hy - apply mem_ball_iff_norm.mp (h₂ε hy) + apply mem_ball_iff_norm.mp + exact h₁s (h₂ε hy) use Metric.ball 0 (ε / (4 : ℝ)) constructor @@ -148,12 +175,11 @@ theorem primitive_fderivAtBasepointZero _ < ε / 4 := h₁y apply le_of_lt apply h₃ε { re := x, im := 0 } - rw [mem_ball_iff_norm] - simp - have : { re := x, im := 0 } = (x : ℂ) := by rfl - rw [this] - rw [Complex.abs_ofReal] - linarith + constructor + · simp + linarith + · simp + exact h₁ε have t₂ : ‖∫ (x : ℝ) in (0)..(y.im), f { re := y.re, im := x } - f 0‖ ≤ (c / (4 : ℝ)) * |y.im - 0| := by apply intervalIntegral.norm_integral_le_of_norm_le_const @@ -166,13 +192,11 @@ theorem primitive_fderivAtBasepointZero apply le_of_lt apply h₃ε { re := y.re, im := x } - simp - - calc Complex.abs { re := y.re, im := x } - _ ≤ |y.re| + |x| := by - apply Complex.abs_le_abs_re_add_abs_im { re := y.re, im := x } - _ < ε := by - linarith + constructor + · simp + linarith + · simp + linarith calc ‖(∫ (x : ℝ) in (0)..(y.re), f { re := x, im := 0 } - f 0) + Complex.I • ∫ (x : ℝ) in (0)..(y.im), f { re := y.re, im := x } - f 0‖ _ ≤ ‖(∫ (x : ℝ) in (0)..(y.re), f { re := x, im := 0 } - f 0)‖ + ‖Complex.I • ∫ (x : ℝ) in (0)..(y.im), f { re := y.re, im := x } - f 0‖ := by