Skip to content

Commit 72cdb72

Browse files
committed
Bump mathlib
1 parent 63313fa commit 72cdb72

13 files changed

+86
-60
lines changed

RMT4.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,8 @@ lemma 𝓘_nonempty [good_domain U] : (𝓘 U).Nonempty := by
101101
have f_eq_comp := (good_domain.is_open.eventually_mem hz₀).mono g_sqf
102102
have dg_nonzero : deriv g z₀ ≠ 0 := by
103103
have e3 := e2.differentiableAt.deriv_eq_deriv_pow_div_pow zero_lt_two f_eq_comp (f_noz hz₀)
104-
simp [e3, deriv_sub_const]
104+
simp [e3, deriv_sub_const, f]
105105
intro h
106-
norm_num at h
107106
have := g_sqf hz₀
108107
rw [Pi.pow_apply, h, zero_pow two_ne_zero] at this
109108
cases f_noz hz₀ this

RMT4/Bunch.lean

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ lemma eventuallyEq (hi : a ∈ B.S i) (hj : a ∈ B.S j) (h : B i a = B j a) :
4949
lemma tile_inter {s₁ s₂ : Set α} (hi₁ : i₁ ∈ B.idx z) (hi₂ : i₂ ∈ B.idx z) (hi : i ∈ B.idx z)
5050
(h₁ : s₁ ∈ 𝓝 z.1) (h₂ : s₂ ∈ 𝓝 z.1) :
5151
∃ s ∈ 𝓝 z.1, B.tile i s ⊆ B.tile i₁ s₁ ∩ B.tile i₂ s₂ := by
52-
suffices : ∀ᶠ b in 𝓝 z.1, (b, B i b) ∈ B.tile i₁ s₁ ∩ B.tile i₂ s₂
53-
· simpa only [eventually_iff_exists_mem, ← subset_iff_forall] using this
52+
suffices h : ∀ᶠ b in 𝓝 z.1, (b, B i b) ∈ B.tile i₁ s₁ ∩ B.tile i₂ s₂
53+
by simpa only [eventually_iff_exists_mem, ← subset_iff_forall] using h
5454
have l1 := eventuallyEq hi₁.1 hi.1 (hi₁.2.trans hi.2.symm)
5555
have l2 := eventuallyEq hi₂.1 hi.1 (hi₂.2.trans hi.2.symm)
5656
filter_upwards [h₁, h₂, l1, l2] with b e1 e2 e3 e4
@@ -120,7 +120,11 @@ theorem nhd_is_nhd (a : space B) (s : Set (space B)) (hs : s ∈ nhd a) :
120120
· simp only [nhd, h, dite_false] ; simp
121121
· simp [hs]
122122

123-
lemma nhds_eq_nhd : 𝓝 z = nhd z := nhds_mkOfNhds _ _ pure_le nhd_is_nhd
123+
lemma nhds_eq_nhd : 𝓝 z = nhd z := by
124+
refine nhds_mkOfNhds _ _ pure_le ?_
125+
intro a s hs
126+
obtain ⟨t, h1, _, h3⟩ := nhd_is_nhd a s hs -- TODO simplify `nhd_is_nhd`
127+
apply eventually_of_mem h1 h3
124128

125129
lemma mem_nhds_tfae (h : Nonempty (B.idx z)) : List.TFAE [
126130
s ∈ 𝓝 z,

RMT4/Covering.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ lemma nhd_from_eq_nhd {z : covering Λ} (h : ↑z.1 ∈ Λ.S x) : nhd_from x z =
121121
lemma nhd_eq_toBunch_nhd : nhd = Λ.toBunch.nhd := by
122122
ext ⟨a, b⟩ s
123123
have : Nonempty (Λ.toBunch.idx (a, b)) := by
124-
simp [toBunch, Bunch.idx, FF]
125-
refine ⟨a.1, a.prop, Λ.mem a, b, by ring⟩
124+
dsimp [toBunch, Bunch.idx, FF]
125+
exact ⟨(a, b), Λ.mem a, by ring⟩
126126
simp only [Bunch.nhd, this, dite_true, IsBasis.mem_filter_iff]
127127
constructor
128128
· intro h

RMT4/Glue.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ lemma Continuous.Iic_extend' (hf : Continuous f) : Continuous (IicExtend f) :=
103103
lemma continuous_glue_Iic (hf : Continuous f) (hg : Continuous g)
104104
(h : f ⟨a, le_rfl⟩ = g ⟨a, ⟨inf_le_left, le_sup_left⟩⟩) : Continuous (glue_Iic f g) := by
105105
rw [glue_Iic_eq]
106-
suffices : Continuous fun t => if t ≤ a then IicExtend f t else IccExtend inf_le_sup g t
107-
· exact this.comp continuous_subtype_val
106+
suffices h : Continuous fun t => if t ≤ a then IicExtend f t else IccExtend inf_le_sup g t
107+
by exact h.comp continuous_subtype_val
108108
refine hf.Iic_extend'.if_le hg.Icc_extend' continuous_id continuous_const ?_
109109
rintro x rfl ; simpa [IccExtend_of_mem] using h
110110

RMT4/Lift.lean

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Mathlib.Analysis.Convex.Segment
33
import Mathlib.Topology.Covering
44
import Mathlib.Topology.LocallyConstant.Basic
55
import RMT4.Glue
6+
import Mathlib
67

78
open Set Topology Metric unitInterval Filter ContinuousMap
89

@@ -29,6 +30,25 @@ instance : Zero (Iic t) := ⟨0, nonneg'⟩
2930
def reachable (f : E → X) (γ : C(I, X)) (A : E) (t : I) : Prop :=
3031
∃ Γ : C(Iic t, E), Γ 0 = A ∧ ∀ s, f (Γ s) = γ s
3132

33+
def reachable' (f : E → X) (γ : C(I, X)) (A : E) (t : I) : Prop :=
34+
∃ Γ : C(I, E), Γ 0 = A ∧ ∀ s ≤ t, f (Γ s) = γ s
35+
36+
example : reachable f γ A t ↔ reachable' f γ A t := by
37+
constructor
38+
· rintro ⟨Γ, h1, h2⟩
39+
refine ⟨⟨IicExtend Γ, ?_⟩, ?_, ?_⟩
40+
· apply Continuous.comp Γ.2
41+
apply Continuous.subtype_mk
42+
apply continuous_const.min continuous_id
43+
· simp [IicExtend, projIic, min, ← h1]
44+
congr
45+
simp [inf_eq_right, t.2.1]
46+
· intro s hs
47+
specialize h2 ⟨s, hs⟩
48+
simp at h2
49+
simp [← h2, IicExtend, projIic, min_eq_right hs]
50+
· sorry
51+
3252
lemma reachable_zero (hγ : γ 0 = f A) : reachable f γ A 0 := by
3353
refine ⟨⟨λ _ => A, continuous_const⟩, rfl, ?_⟩
3454
intro ⟨s, (hs : s ≤ 0)⟩ ; simp [le_antisymm hs s.2.1, hγ]
@@ -42,7 +62,7 @@ lemma reachable_extend {T : Trivialization (f ⁻¹' {γ t}) f} (h : MapsTo γ (
4262
have l1 : f (Γ T₁) = γ t₁ := h2 T₁
4363
have l2 : Γ T₁ ∈ T.source := T.mem_source.2 <| l1 ▸ h left_mem_uIcc
4464
refine ⟨trans_Iic Γ δ ?_, trans_Iic_of_le nonneg', λ s => ?_⟩
45-
· simpa only [ContinuousMap.coe_mk, ← l1, ← T.proj_toFun _ l2] using (T.left_inv' l2).symm
65+
· simpa only [T₁, δ, ContinuousMap.coe_mk, ← l1, ← T.proj_toFun _ l2] using (T.left_inv' l2).symm
4666
· by_cases H : s ≤ t₁ <;> simp only [trans_Iic, glue_Iic, ContinuousMap.coe_mk, H, dite_true, h2]
4767
have l5 : γ s ∈ T.baseSet := h ⟨inf_le_left.trans (not_le.1 H).le, le_trans s.2 le_sup_right⟩
4868
have l6 {z} : (γ s, z) ∈ T.target := T.mem_target.2 l5
@@ -74,11 +94,13 @@ theorem Lift (hf : IsCoveringMap f) (hγ : γ 0 = f A) : ∃! Γ : C(I, E), Γ 0
7494
have l2 : IsClopen {t | reachable f γ A t} := isClopen_iff_nhds.2 (λ t => reachable_nhds_iff hf)
7595
let ⟨Γ, h1, h2⟩ := ((isClopen_iff.1 l2).resolve_left <| Nonempty.ne_empty l1).symm ▸ mem_univ 1
7696
let Γ₁ : C(I, E) := ⟨IicExtend Γ, Γ.2.Iic_extend'⟩
77-
have l3 : Γ₁ 0 = A := by simpa [IicExtend, projIic] using h1
97+
have l3 : Γ₁ 0 = A := by simpa [Γ₁, IicExtend, projIic] using h1
7898
have l4 : f ∘ Γ₁ = γ := by
7999
ext1 s
80100
simp only [IicExtend, coe_mk, Function.comp_apply, projIic]
81101
convert h2 ⟨s, s.2.2
102+
simp [Γ₁, IicExtend, projIic]
103+
congr
82104
simpa using s.2.2
83105
refine ⟨Γ₁, ⟨l3, l4⟩, ?_⟩
84106
intro Γ₂ ⟨hh1, hh2⟩
@@ -151,7 +173,7 @@ theorem HLL (hp : IsCoveringMap p) (f₀ : C(Y, X)) (F : C(Y × I, X)) (hF : ∀
151173
ext ⟨y, t⟩
152174
let Hy : C(I, E) := ⟨λ t => H (y, t), sorry
153175
have h4 : (p ∘ fun t => H (y, t)) = fun t => F (y, t) := sorry
154-
simp [← hG2 y Hy ⟨hH2 y, h4⟩]
176+
simp [← hG2 y Hy ⟨hH2 y, h4⟩, Hy]
155177

156178
-- theorem HomLift (hf : IsCoveringMap f) (h0 : γ (0, 0) = f e) :
157179
-- ∃ Γ : C(I × I, E), Γ (0, 0) = e ∧ f ∘ Γ = γ := by

RMT4/Primitive.lean

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ lemma DifferentiableOn.exists_primitive (f_holo : DifferentiableOn ℂ f U)
6464
have φ_diff {t} (ht : t ∈ I) : DifferentiableOn ℂ (λ w => φ w t) U :=
6565
f_holo.comp differentiable_bary.differentiableOn (λ z hz => hU.bary hz ht)
6666
have φ_derz {z} (hz : z ∈ U) {t} (ht : t ∈ I) : HasDerivAt (λ x => φ x t) (ψ z t) z := by
67-
convert (f_deri (hU.bary hz ht)).comp z hasDerivAt_bary' ; simp ; ring
67+
convert (f_deri (hU.bary hz ht)).comp z hasDerivAt_bary' ; simp [ψ] ; ring
6868
have φ_dert {t} (ht : t ∈ I) : HasDerivAt (φ z) ((z - z₀) * _root_.deriv f ((1 - t) • z₀ + t • z)) t := by
6969
convert (f_deri (hU.bary hz ht)).comp t has_deriv_at_bary using 1 ; ring
7070
have ψ_cont : ContinuousOn (ψ z) I :=
@@ -91,7 +91,7 @@ lemma DifferentiableOn.exists_primitive (f_holo : DifferentiableOn ℂ f U)
9191
rw [(φ_derz (K_subs hw) ht).deriv]
9292
have f_bary := hC _ ((K_conv.starConvex hz₀).bary hw ht)
9393
have ht' : |t| ≤ 1 := by { rw [abs_le] ; constructor <;> linarith [ht.1, ht.2] }
94-
simpa [abs_eq_self.2 C_nonneg] using mul_le_mul ht' f_bary (by simp) (by simp)
94+
simpa [ψ, abs_eq_self.2 C_nonneg] using mul_le_mul ht' f_bary (by simp) (by simp)
9595

9696
apply has_deriv_at_integral_of_continuous_of_lip zero_le_one δ_pos
9797
· exact eventually_of_mem (hU'.mem_nhds hz) (λ _ => φ_cont)
@@ -107,22 +107,22 @@ lemma DifferentiableOn.exists_primitive (f_holo : DifferentiableOn ℂ f U)
107107
have g_dert : ∀ t ∈ Ioo (0:ℝ) 1, HasDerivAt g (h t) t := by
108108
rintro t ht
109109
convert (hasDerivAt_id t).smul (φ_dert (Ioo_subset_Icc_self ht)) using 1
110-
simp [add_comm] ; ring
110+
simp [ψ, h, add_comm] ; ring
111111
have h_intg : IntervalIntegrable h volume (0:ℝ) 1 := by
112112
apply ContinuousOn.intervalIntegrable
113-
simp only [Interval, min_eq_left, zero_le_one, max_eq_right]
113+
simp only [h, Interval, min_eq_left, zero_le_one, max_eq_right]
114114
convert (φ_cont hz).add (continuousOn_const.mul ψ_cont) ; simp
115115

116116
convert ← integral_eq_sub_of_hasDerivAt_of_le zero_le_one g_cont g_dert h_intg using 1
117-
· simp only
117+
· simp only [ψ, h]
118118
rw [intervalIntegral.integral_add]
119119
· simp
120120
· apply ContinuousOn.intervalIntegrable ; convert φ_cont hz ; simp [Interval]
121121
· apply ContinuousOn.intervalIntegrable
122122
refine continuousOn_const.mul ?_
123123
convert ψ_cont
124124
simp
125-
· simp [detail.φ]
125+
· simp [g, φ, detail.φ]
126126

127127
have : HasDerivAt (primitive f z₀)
128128
((∫ t in (0:ℝ)..1, φ z t) + (z - z₀) * ∫ t in (0:ℝ)..1, ψ z t) z := by

RMT4/cindex.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,6 @@ lemma exists_cindex_eq_order (hp : HasFPowerSeriesAt f p z₀) :
180180
exact hr.2
181181
rw [circleIntegral.integral_congr hr.1.le this]
182182
simp [circleIntegral]
183-
exact intervalIntegral.integral_zero
184183

185184
lemma cindex_eventually_eq_order (hp : HasFPowerSeriesAt f p z₀) :
186185
∀ᶠ r in 𝓝[>] 0, cindex z₀ r f = p.order := by

RMT4/deriv_inj.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ lemma crucial (hU : IsOpen U) (hcr : closedBall c r ⊆ U) (hz₀ : z₀ ∈ bal
1414
have h2 : ∀ z ∈ closedBall c r, g z ≠ 0 := by
1515
rintro z hz
1616
by_cases h : z = z₀
17-
case pos => simp [dslope, h, Function.update, hf'z₀]
18-
case neg => simp [dslope, h, Function.update, slope, sub_ne_zero.2 h, hfz₀, hfz z hz h]
17+
case pos => simp [g, dslope, h, Function.update, hf'z₀]
18+
case neg => simp [g, dslope, h, Function.update, slope, sub_ne_zero.2 h, hfz₀, hfz z hz h]
1919
have h10 : ∀ z ∈ sphere c r, z - z₀ ≠ 0 :=
2020
λ z hz => sub_ne_zero.2 (sphere_disjoint_ball.ne_of_mem hz hz₀)
21-
suffices : cindex c r f = ((2 * Real.pi * I)⁻¹ * ∮ z in C(c, r), (z - z₀)⁻¹) + cindex c r g
22-
· rw [this, integral_sub_inv_of_mem_ball hz₀, cindex_eq_zero hU hr hcr h1 h2]
23-
field_simp [two_ne_zero, Real.pi_ne_zero, I_ne_zero]
21+
suffices this : cindex c r f = ((2 * Real.pi * I)⁻¹ * ∮ z in C(c, r), (z - z₀)⁻¹) + cindex c r g
22+
by rw [this, integral_sub_inv_of_mem_ball hz₀, cindex_eq_zero hU hr hcr h1 h2]
23+
field_simp [two_ne_zero, Real.pi_ne_zero, I_ne_zero]
2424
have h6 : ∀ z ∈ sphere c r, deriv f z / f z = (z - z₀)⁻¹ + deriv g z / g z := by
2525
rintro z hz
2626
have h3 : ∀ z ∈ U, f z = (z - z₀) * g z :=

RMT4/etape2.lean

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ lemma non_injective_schwarz {f : ℂ → ℂ} (f_diff : DifferentiableOn ℂ f
7070
let g := φ u_in_𝔻 ∘ f
7171
have g_diff : DifferentiableOn ℂ g 𝔻 := (φ u_in_𝔻).is_diff.comp f_diff f_img
7272
have g_maps : MapsTo g 𝔻 𝔻 := (φ u_in_𝔻).maps_to.comp f_img
73-
have g_0_eq_0 : g 0 = 0 := by simp [φ]
73+
have g_0_eq_0 : g 0 = 0 := by simp [g, φ]
7474
by_cases h : ‖deriv g 0‖ = 1
7575
case pos =>
7676
have g_lin : EqOn g (λ (z : ℂ) => z • deriv g 0) (ball 0 1) := by
@@ -123,22 +123,22 @@ lemma step_2 (hz₀ : z₀ ∈ U) (f : embedding U 𝔻) (hf : f '' U ⊂ 𝔻)
123123
have φᵤf_ne_zero : ∀ z ∈ U, φᵤf z ≠ 0 := λ z z_in_U hz => by
124124
refine u_not_in_f_U ⟨z, z_in_U, ?_⟩
125125
apply φᵤ.is_inj (f.maps_to z_in_U) u_in_𝔻
126-
dsimp at hz
126+
dsimp [φᵤf] at hz
127127
rw [hz]
128-
simp [φ]
128+
simp [φᵤ, φ]
129129
obtain ⟨g, hg⟩ := φᵤf.sqrt' φᵤf_ne_zero
130130
let v : ℂ := g z₀
131131
have v_in_𝔻 : v ∈ 𝔻 := g.maps_to hz₀
132132
let h : embedding U 𝔻 := (φ v_in_𝔻).comp g
133-
have h_z₀_eq_0 : h z₀ = 0 := by simp [φ]
133+
have h_z₀_eq_0 : h z₀ = 0 := by simp [h, φ]
134134
let σ : ℂ → ℂ := λ z => z ^ 2
135135
let ψ : ℂ → ℂ := φ (neg_in_𝔻 u_in_𝔻) ∘ σ ∘ φ (neg_in_𝔻 v_in_𝔻)
136136
have f_eq_ψ_h : EqOn f (ψ ∘ h) U := λ z hz => by
137137
have e1 := φ_inv v_in_𝔻 (g.maps_to hz)
138138
have e2 := hg hz
139139
have e3 := φ_inv u_in_𝔻 (f.maps_to hz)
140-
dsimp at e2
141-
simp [e1, ← e2, e3]
140+
dsimp [φᵤf] at e2
141+
simp [ψ, σ, h, e1, ← e2, e3]
142142
have ψ_is_diff : DifferentiableOn ℂ ψ 𝔻 := by
143143
refine (φ (neg_in_𝔻 u_in_𝔻)).is_diff.comp ?_ ?_
144144
· apply DifferentiableOn.comp
@@ -152,7 +152,7 @@ lemma step_2 (hz₀ : z₀ ∈ U) (f : embedding U 𝔻) (hf : f '' U ⊂ 𝔻)
152152
exact (φ (neg_in_𝔻 v_in_𝔻)).maps_to
153153
· refine MapsTo.comp ?_ (φ (neg_in_𝔻 v_in_𝔻)).maps_to
154154
intros z hz
155-
simpa [𝔻] using hz
155+
simpa [σ, 𝔻] using hz
156156
have deriv_eq_mul : deriv f z₀ = deriv ψ 0 * deriv h z₀ := by
157157
have e1 : U ∈ 𝓝 z₀ := good_domain.is_open.mem_nhds hz₀
158158
have e2 : 𝔻 ∈ 𝓝 (0 : ℂ) := ball_mem_nhds _ zero_lt_one
@@ -166,12 +166,13 @@ lemma step_2 (hz₀ : z₀ ∈ U) (f : embedding U 𝔻) (hf : f '' U ⊂ 𝔻)
166166
· exact norm_pos_iff.2 (embedding.deriv_ne_zero good_domain.is_open hz₀)
167167
· apply non_injective_schwarz ψ_is_diff
168168
· refine λ z hz => (φ (neg_in_𝔻 u_in_𝔻)).maps_to (mem_𝔻_iff.mpr ?_)
169-
simpa using mem_𝔻_iff.mp ((φ (neg_in_𝔻 v_in_𝔻)).maps_to hz)
169+
simpa [σ] using mem_𝔻_iff.mp ((φ (neg_in_𝔻 v_in_𝔻)).maps_to hz)
170170
· simp only [InjOn, not_forall, exists_prop]
171171
have e1 : (2⁻¹ : ℂ) ∈ 𝔻 := by apply mem_𝔻_iff.mpr; norm_num
172172
have e2 : (-2⁻¹ : ℂ) ∈ 𝔻 := neg_in_𝔻 e1
173173
refine ⟨φ v_in_𝔻 2⁻¹, (φ v_in_𝔻).maps_to e1, φ v_in_𝔻 (-2⁻¹), (φ v_in_𝔻).maps_to e2, ?_, ?_⟩
174-
· simp [φ_inv v_in_𝔻 e1, φ_inv v_in_𝔻 e2]
174+
· unfold_let
175+
simp [φ_inv v_in_𝔻 e1, φ_inv v_in_𝔻 e2]
175176
· intro h
176177
have := (φ v_in_𝔻).is_inj e1 e2 h
177178
norm_num at this

RMT4/has_sqrt.lean

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ lemma EqOn_zero_of_deriv_eq_zero (hU : IsOpen U) (hU' : IsPreconnected U) {f :
2323
refine eventually_nhds_iff.2 ⟨r, hr, λ z hz => ?_⟩
2424
rw [Pi.zero_apply, ← hfz₀]
2525
suffices h : ∀ z ∈ ball z₀ r, fderivWithin ℂ f (ball z₀ r) z = 0
26-
{ exact (convex_ball z₀ r).is_const_of_fderivWithin_eq_zero (hf.mono hrU) h hz (mem_ball_self hr) }
26+
by exact (convex_ball z₀ r).is_const_of_fderivWithin_eq_zero (hf.mono hrU) h hz (mem_ball_self hr)
2727
rintro w hw
2828
have : UniqueDiffWithinAt ℂ (ball z₀ r) w := isOpen_ball.uniqueDiffWithinAt hw
2929
rw [fderivWithin_eq_fderiv this (hf.differentiableAt (hU.mem_nhds (hrU hw)))]
@@ -34,8 +34,8 @@ lemma EqOn_of_deriv_eq_zero (hU : IsOpen U) (hU' : IsPreconnected U) {f : ℂ
3434
(hf : DifferentiableOn ℂ f U) (hf' : EqOn (deriv f) 0 U) (hz₀ : z₀ ∈ U) :
3535
EqOn f (λ _ => f z₀) U := by
3636
set g := λ z => f z - f z₀
37-
have h2 : EqOn (deriv g) 0 U := λ z hz => by simp [deriv_sub_const, hf' hz]
38-
have h3 : g z₀ = 0 := by simp
37+
have h2 : EqOn (deriv g) 0 U := λ z hz => by rw [deriv_sub_const, hf' hz]
38+
have h3 : g z₀ = 0 := by simp [g]
3939
have := EqOn_zero_of_deriv_eq_zero hU hU' (hf.sub_const _) h2 hz₀ h3
4040
exact λ z hz => sub_eq_zero.1 (this hz)
4141

@@ -70,15 +70,16 @@ lemma has_primitives.has_logs (hp : has_primitives U) (hU : IsOpen U) (hU' : IsP
7070
have e4 : DifferentiableOn ℂ (exp ∘ g) U := differentiable_exp.comp_differentiableOn h3
7171
have e1 : DifferentiableOn ℂ h U := hf.div e4 (λ z _ => exp_ne_zero _)
7272
refine ⟨g, h3, ?_⟩
73-
suffices : EqOn h (λ _ => 1) U
74-
· exact λ z hz => eq_of_div_eq_one (this hz)
75-
have : 1 = h z₀ := by simp [exp_log, hfz z₀ hz₀]
73+
suffices h : EqOn h (λ _ => 1) U
74+
by exact λ z hz => eq_of_div_eq_one (h hz)
75+
have : 1 = h z₀ := by unfold_let ; simp [exp_log, hfz z₀ hz₀]
7676
rw [this]
7777
refine EqOn_of_deriv_eq_zero hU hU' e1 (λ z hz => ?_) hz₀
7878
have f0 : U ∈ 𝓝 z := hU.mem_nhds hz
7979
dsimp
80+
unfold_let
8081
rw [Pi.div_def, deriv_div (hf.differentiableAt f0) (e4.differentiableAt f0) (exp_ne_zero _)]
8182
rw [deriv.scomp z differentiableAt_exp (h3.differentiableAt f0)]
82-
have e5 : deriv g z = deriv lf z := by simp
83+
have e5 : deriv g z = deriv lf z := by unfold_let ; simp
8384
field_simp [exp_ne_zero, hlf2 hz, hfz z hz, e5]
8485
ring

RMT4/hurwitz.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -403,9 +403,9 @@ theorem hurwitz_inj [NeBot p]
403403
have hg : TendstoLocallyUniformlyOn G g p U :=
404404
hurwitz4 hf (uniformContinuous_id.sub uniformContinuous_const)
405405
have hgx : g x = 0 := sub_self _
406-
have hgy : g y = 0 := by simp [hfxy]
407-
suffices : ∀ z ∈ U, g z = 0
408-
· exact ⟨f x, by simpa [sub_eq_zero] using this⟩
406+
have hgy : g y = 0 := by simp [g, hfxy]
407+
suffices this : ∀ z ∈ U, g z = 0
408+
by exact ⟨f x, by simpa [sub_eq_zero, g] using this⟩
409409
--
410410
contrapose hi; simp only [not_frequently, InjOn, not_forall]
411411
have h1 : DifferentiableOn ℂ g U := hg.differentiableOn hG hU

lake-manifest.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[{"url": "https://github.com/leanprover/std4",
55
"type": "git",
66
"subDir": null,
7-
"rev": "f1cae6351cf7010d504e6652f05e8aa2da0dd4cb",
7+
"rev": "ff9850c4726f6b9fb8d8e96980c3fcb2900be8bd",
88
"name": "std",
99
"manifestFile": "lake-manifest.json",
1010
"inputRev": "main",
@@ -13,7 +13,7 @@
1313
{"url": "https://github.com/leanprover-community/quote4",
1414
"type": "git",
1515
"subDir": null,
16-
"rev": "190ec9abbc4cd43b1b6a1401722c0b54418a98b0",
16+
"rev": "fd760831487e6835944e7eeed505522c9dd47563",
1717
"name": "Qq",
1818
"manifestFile": "lake-manifest.json",
1919
"inputRev": "master",
@@ -22,7 +22,7 @@
2222
{"url": "https://github.com/leanprover-community/aesop",
2323
"type": "git",
2424
"subDir": null,
25-
"rev": "1f200b89e635064ba6f614ae82c7aced0b28d929",
25+
"rev": "056ca0fa8f5585539d0b940f532d9750c3a2270f",
2626
"name": "aesop",
2727
"manifestFile": "lake-manifest.json",
2828
"inputRev": "master",
@@ -31,10 +31,10 @@
3131
{"url": "https://github.com/leanprover-community/ProofWidgets4",
3232
"type": "git",
3333
"subDir": null,
34-
"rev": "f5b2b6ff817890d85ffd8ed47637e36fcac544a6",
34+
"rev": "fb65c476595a453a9b8ffc4a1cea2db3a89b9cd8",
3535
"name": "proofwidgets",
3636
"manifestFile": "lake-manifest.json",
37-
"inputRev": "v0.0.28",
37+
"inputRev": "v0.0.30",
3838
"inherited": true,
3939
"configFile": "lakefile.lean"},
4040
{"url": "https://github.com/leanprover/lean4-cli",
@@ -49,7 +49,7 @@
4949
{"url": "https://github.com/leanprover-community/import-graph.git",
5050
"type": "git",
5151
"subDir": null,
52-
"rev": "9618fa9d33d128679a5e376a9ffd3c9440b088f4",
52+
"rev": "64d082eeaad1a8e6bbb7c23b7a16b85a1715a02f",
5353
"name": "importGraph",
5454
"manifestFile": "lake-manifest.json",
5555
"inputRev": "main",
@@ -58,12 +58,21 @@
5858
{"url": "https://github.com/leanprover-community/mathlib4.git",
5959
"type": "git",
6060
"subDir": null,
61-
"rev": "998cfc8bbcf09a654986ea0e26373c1f7d1bd6eb",
61+
"rev": "16003723509e6a2d8517dac98e096e3b3ca6b1de",
6262
"name": "mathlib",
6363
"manifestFile": "lake-manifest.json",
6464
"inputRev": null,
6565
"inherited": false,
6666
"configFile": "lakefile.lean"},
67+
{"url": "https://github.com/PatrickMassot/checkdecls.git",
68+
"type": "git",
69+
"subDir": null,
70+
"rev": "2ee81a0269048010900117b675876a1d8db5883c",
71+
"name": "checkdecls",
72+
"manifestFile": "lake-manifest.json",
73+
"inputRev": null,
74+
"inherited": false,
75+
"configFile": "lakefile.lean"},
6776
{"url": "https://github.com/xubaiw/CMark.lean",
6877
"type": "git",
6978
"subDir": null,
@@ -99,15 +108,6 @@
99108
"manifestFile": "lake-manifest.json",
100109
"inputRev": "main",
101110
"inherited": false,
102-
"configFile": "lakefile.lean"},
103-
{"url": "https://github.com/PatrickMassot/checkdecls.git",
104-
"type": "git",
105-
"subDir": null,
106-
"rev": "2ee81a0269048010900117b675876a1d8db5883c",
107-
"name": "checkdecls",
108-
"manifestFile": "lake-manifest.json",
109-
"inputRev": null,
110-
"inherited": false,
111111
"configFile": "lakefile.lean"}],
112112
"name": "rMT4",
113113
"lakeDir": ".lake"}

0 commit comments

Comments
 (0)