Skip to content

Commit

Permalink
Clean up Montel
Browse files Browse the repository at this point in the history
  • Loading branch information
vbeffara committed Mar 17, 2024
1 parent fb0ad45 commit 33ebaff
Showing 1 changed file with 54 additions and 33 deletions.
87 changes: 54 additions & 33 deletions RMT4/montel.lean
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import RMT4.hurwitz

open Set Function Metric UniformConvergence Complex

variable {ΞΉ : Type*} {U K : Set β„‚} {z : β„‚} {F : ΞΉ β†’ β„‚ β†’α΅€[compacts U] β„‚}
variable {ΞΉ : Type*} {U K : Set β„‚} {z : β„‚} {F : ΞΉ β†’ β„‚ β†’α΅€[compacts U] β„‚} {Q : Set β„‚ β†’ Set β„‚}

@[simp] lemma union_compacts : ⋃₀ compacts U = U :=
subset_antisymm (λ _ ⟨_, hK, hz⟩ => hK.1 hz)
Expand All @@ -15,6 +15,23 @@ variable {ΞΉ : Type*} {U K : Set β„‚} {z : β„‚} {F : ΞΉ β†’ β„‚ β†’α΅€[compacts
def UniformlyBoundedOn (F : ΞΉ β†’ β„‚ β†’ β„‚) (U : Set β„‚) : Prop :=
βˆ€ K ∈ compacts U, βˆƒ M > 0, βˆ€ z ∈ K, range (eval z ∘ F) βŠ† closedBall 0 M

def UniformlyBoundedOn' (F : ΞΉ β†’ β„‚ β†’ β„‚) (U : Set β„‚) : Prop :=
βˆ€ K ∈ compacts U, βˆƒ Q, IsCompact Q ∧ βˆ€ i, MapsTo (F i) K Q

lemma uniformlyBoundedOn_iff_uniformlyBoundedOn' (F : ΞΉ β†’ β„‚ β†’ β„‚) (U : Set β„‚) :
UniformlyBoundedOn F U ↔ UniformlyBoundedOn' F U := by
constructor <;> intro h K hK
· obtain ⟨M, -, hM2⟩ := h K hK
refine ⟨closedBall 0 M, isCompact_closedBall _ _, fun i z hz => ?_⟩
exact hM2 z hz <| mem_range.mpr ⟨i, rfl⟩
· obtain ⟨Q, hQ1, hQ2⟩ := h K hK
obtain ⟨M, hM⟩ := hQ1.isBounded.subset_closedBall 0
refine ⟨M βŠ” 1, by simp, fun z hz y => ?_⟩
rintro ⟨i, rfl⟩
have := hM (hQ2 i hz)
simp at this
simp [this]

lemma UniformlyBoundedOn.totally_bounded_at (h1 : UniformlyBoundedOn F U) (hz : z ∈ U) :
TotallyBounded (range (Ξ» (i : ΞΉ) => F i z)) := by
obtain ⟨M, _, hM⟩ := h1 {z} ⟨singleton_subset_iff.2 hz, isCompact_singleton⟩
Expand All @@ -39,6 +56,25 @@ lemma UniformlyBoundedOn.deriv (h1 : UniformlyBoundedOn F U) (hU : IsOpen U)
sphere_subset_closedBall.trans (closedBall_subset_cthickening hzβ‚€ Ξ΄) hz
simpa using hM z this ⟨i, rfl⟩

lemma UniformlyBoundedOn'.deriv (h1 : UniformlyBoundedOn' F U) (hU : IsOpen U)
(h2 : βˆ€ i, DifferentiableOn β„‚ (F i) U) :
UniformlyBoundedOn' (deriv ∘ F) U := by
rintro K ⟨hK1, hK2⟩
obtain ⟨δ, hδ, h⟩ := hK2.exists_cthickening_subset_open hU hK1
have e1 : cthickening δ K ∈ compacts U :=
⟨h, isCompact_of_isClosed_isBounded isClosed_cthickening hK2.isBounded.cthickening⟩
obtain ⟨Q, hQ1, hQ2⟩ := h1 _ e1
obtain ⟨M, hM⟩ := hQ1.isBounded.subset_closedBall 0
refine ⟨closedBall 0 (M / δ), isCompact_closedBall _ _, ?_⟩
intro i x hx
simp only [mem_closedBall_zero_iff]
refine norm_deriv_le_aux hΞ΄ ?_ ?_
Β· exact (h2 i).diffContOnCl_ball ((closedBall_subset_cthickening hx Ξ΄).trans h)
Β· rintro z hz
have : z ∈ cthickening δ K :=
sphere_subset_closedBall.trans (closedBall_subset_cthickening hx Ξ΄) hz
simpa using hM (hQ2 i this)

lemma UniformlyBoundedOn.equicontinuous_on
(h1 : UniformlyBoundedOn F U)
(hU : IsOpen U)
Expand Down Expand Up @@ -69,9 +105,9 @@ lemma UniformlyBoundedOn.equicontinuous_on
field_simp [hMp.lt.ne.symm, mul_comm]

def 𝓕K (U : Set β„‚) (Q : Set β„‚ β†’ Set β„‚) : Set (β„‚ β†’α΅€[compacts U] β„‚) :=
{f | DifferentiableOn β„‚ f U ∧ βˆ€ K ∈ compacts U, MapsTo f K (Q K)}
{f ∈ 𝓗 U | βˆ€ K ∈ compacts U, MapsTo f K (Q K)}

theorem isClosed_𝓕K (hU : IsOpen U) {Q : Set β„‚ β†’ Set β„‚} (hQ : βˆ€ K ∈ compacts U, IsCompact (Q K)) :
theorem isClosed_𝓕K (hU : IsOpen U) (hQ : βˆ€ K ∈ compacts U, IsCompact (Q K)) :
IsClosed (𝓕K U Q) := by
rw [𝓕K, setOf_and] ; apply (isClosed_𝓗 hU).inter
simp only [setOf_forall, MapsTo]
Expand All @@ -81,45 +117,30 @@ theorem isClosed_𝓕K (hU : IsOpen U) {Q : Set β„‚ β†’ Set β„‚} (hQ : βˆ€ K ∈
exact ((UniformOnFun.uniformContinuous_eval_of_mem β„‚ (compacts U)
(mem_singleton z) ⟨singleton_subset_iff.2 (hK.1 hz), isCompact_singleton⟩).continuous)

theorem isCompact_𝓕K (hU : IsOpen U) {Q : Set β„‚ β†’ Set β„‚} (hQ : βˆ€ K ∈ compacts U, IsCompact (Q K)) :
IsCompact (𝓕K U Q) := by
theorem uniformlyBoundedOn_𝓕K (hQ : βˆ€ K ∈ compacts U, IsCompact (Q K)) :
UniformlyBoundedOn (Subtype.val : 𝓕K U Q β†’ _) U := by
rw [uniformlyBoundedOn_iff_uniformlyBoundedOn']
exact fun K hK => ⟨Q K, hQ K hK, fun f => f.2.2 K hK⟩

theorem isCompact_𝓕K (hU : IsOpen U) (hQ : βˆ€ K ∈ compacts U, IsCompact (Q K)) :
IsCompact (𝓕K U Q) := by
rw [isCompact_iff_compactSpace]
apply @ArzelaAscoli.compactSpace_of_closedEmbedding (𝓕K U Q) β„‚ β„‚ _ _ Subtype.val _
apply @ArzelaAscoli.compactSpace_of_closedEmbedding _ _ _ _ _ (Subtype.val : 𝓕K U Q β†’ _) _
(compacts U) (fun K hK => hK.2)
Β· constructor
Β· constructor
Β· tauto
Β· exact fun f g => Subtype.ext
Β· simpa [range, UniformOnFun.ofFun] using isClosed_𝓕K hU hQ
· refine ⟨⟨by tauto, fun f g => Subtype.ext⟩, ?_⟩
simpa [range, UniformOnFun.ofFun] using isClosed_𝓕K hU hQ
Β· intro K hK
refine UniformlyBoundedOn.equicontinuous_on ?_ hU (fun f => f.2.1) hK
intro K' hK'
have := (hQ K' hK').isBounded
have := (isBounded_iff_subset_closedBall 0).mp this
obtain ⟨M, hM⟩ := this
refine ⟨M βŠ” 1, by simp, fun z hz y hy => ?_⟩
obtain ⟨f, rfl⟩ := mem_range.mp hy
have := hM (f.2.2 K' hK' hz)
simp at this
simp [this]
exact UniformlyBoundedOn.equicontinuous_on (uniformlyBoundedOn_𝓕K hQ) hU (fun f => f.2.1) hK
Β· intro K hK z hz
refine ⟨Q K, hQ K hK, fun f => f.2.2 K hK hz⟩

theorem montel (hU : IsOpen U) (h1 : UniformlyBoundedOn F U) (h2 : βˆ€ i, DifferentiableOn β„‚ (F i) U) :
TotallyBounded (range F) := by

choose! M hM using h1
let Q (K : Set β„‚) : Set β„‚ := closedBall 0 (M K)
let S := 𝓕K U Q

have l1 : range F βŠ† S := by
have l1 : range F βŠ† 𝓕K U (fun K => closedBall 0 (M K)) := by
rintro f ⟨i, rfl⟩
refine ⟨h2 i, fun K hK z hz => ?_⟩
apply (hM K hK).2 z hz
simp
exact ⟨h2 i, fun K hK z hz => (hM K hK).2 z hz <| mem_range.mpr (by simp)⟩
apply totallyBounded_subset l1
apply IsCompact.totallyBounded
apply isCompact_𝓕K hU
intro K _
exact isCompact_closedBall _ _
exact IsCompact.totallyBounded <| isCompact_𝓕K hU <| fun K _ => isCompact_closedBall _ _

#print axioms montel

0 comments on commit 33ebaff

Please sign in to comment.