diff --git a/Aristotle/Basic.lean b/Aristotle/Basic.lean index 62f2a3c..68e65c8 100644 --- a/Aristotle/Basic.lean +++ b/Aristotle/Basic.lean @@ -1,53 +1,45 @@ import Mathlib -open MeromorphicOn Real Set Classical Topology +open Filter Set Topology variable {๐•œ : Type*} [NontriviallyNormedField ๐•œ] {E : Type*} [NormedAddCommGroup E] [NormedSpace ๐•œ E] - {X : Type*} {x : X} [TopologicalSpace X] - -theorem eventually_nhdsWithin_eventually_nhds_iff_of_isOpen {s : Set X} {a : X} {p : X โ†’ Prop} - (hs : IsOpen s) : (โˆ€แถ  y in ๐“[s] a, โˆ€แถ  x in ๐“ y, p x) โ†” โˆ€แถ  x in ๐“[s] a, p x := by - nth_rw 2 [โ† eventually_eventually_nhdsWithin] - constructor - ยท intro h - filter_upwards [h] with _ hy - exact eventually_nhdsWithin_of_eventually_nhds hy - ยท intro h - filter_upwards [h, eventually_nhdsWithin_of_forall fun _ a โ†ฆ a] with _ _ _ - simp_all [IsOpen.nhdsWithin_eq] - -@[simp] -theorem eventually_nhdsNE_eventually_nhds_iff [T1Space X] {a : X} {p : X โ†’ Prop} : - (โˆ€แถ  y in ๐“[โ‰ ] a, โˆ€แถ  x in ๐“ y, p x) โ†” โˆ€แถ  x in ๐“[โ‰ ] a, p x := - eventually_nhdsWithin_eventually_nhds_iff_of_isOpen isOpen_ne - -theorem Filter.EventuallyEq.nhdsNE_deriv {f fโ‚ : ๐•œ โ†’ E} {x : ๐•œ} (h : fโ‚ =แถ [๐“[โ‰ ] x] f) : - deriv fโ‚ =แถ [๐“[โ‰ ] x] deriv f := by - rw [Filter.EventuallyEq, โ† eventually_nhdsNE_eventually_nhds_iff] at * - filter_upwards [h] with y hy - apply Filter.EventuallyEq.deriv hy + {f : ๐•œ โ†’ E} {U : Set ๐•œ} /-- -Derivatives of meromorphic functions are meromorphic. +The singular set of a meromorphic function is countable. -/ -@[fun_prop] -protected theorem MeromorphicAt.deriv [CompleteSpace E] {f : ๐•œ โ†’ E} {x : ๐•œ} (h : MeromorphicAt f x) : - MeromorphicAt (deriv f) x := by - rw [MeromorphicAt.iff_eventuallyEq_zpow_smul_analyticAt] at h - obtain โŸจn, g, hโ‚g, hโ‚‚gโŸฉ := h - have : _root_.deriv (fun z โ†ฆ (z - x) ^ n โ€ข g z) - =แถ [๐“[โ‰ ] x] fun z โ†ฆ (n * (z - x) ^ (n - 1)) โ€ข g z + (z - x) ^ n โ€ข _root_.deriv g z := by - filter_upwards [eventually_nhdsWithin_of_eventually_nhds hโ‚g.eventually_analyticAt, - eventually_nhdsWithin_of_forall fun _ a โ†ฆ a] with zโ‚€ hโ‚ hโ‚‚ - rw [deriv_smul (DifferentiableAt.zpow (by fun_prop) (by simp_all [sub_ne_zero_of_ne hโ‚‚])) - (by fun_prop), add_comm, deriv_comp_sub_const (f := (ยท ^ n))] - aesop - rw [MeromorphicAt.meromorphicAt_congr (Filter.EventuallyEq.nhdsNE_deriv hโ‚‚g), - MeromorphicAt.meromorphicAt_congr this] - sorry +theorem MeromorphicOn.countable_compl_analyticAt [SecondCountableTopology ๐•œ] [CompleteSpace E] + (h : MeromorphicOn f U) : + ({z | AnalyticAt ๐•œ f z}แถœ โˆฉ U).Countable := by + classical + have := discreteTopology_of_codiscreteWithin (eventually_codiscreteWithin_analyticAt f h) + apply countable_of_Lindelof_of_discrete -theorem MeromorphicAt.order_deriv [CompleteSpace E] {f : ๐•œ โ†’ E} {x : ๐•œ} (h : MeromorphicAt f x) (hโ‚‚ : h.order โ‰  0) : - h.deriv.order = h.order -1 := by + +variable + [MeasurableSpace ๐•œ] [SecondCountableTopology ๐•œ] [BorelSpace ๐•œ] + [MeasurableSpace E] [CompleteSpace E] [BorelSpace E] + +/-- +Meromorphic functions are measurable. +-/ +theorem meromorphic_measurable {f : ๐•œ โ†’ E} (h : MeromorphicOn f Set.univ) : + Measurable f := by + set s := {z : ๐•œ | AnalyticAt ๐•œ f z} + have hโ‚ : sแถœ.Countable := by simpa using h.countable_compl_analyticAt + have hโ‚‚ : IsOpen s := isOpen_analyticAt ๐•œ f + have hโ‚ƒ : ContinuousOn f s := fun z hz โ†ฆ hz.continuousAt.continuousWithinAt + apply measurable_of_isOpen + intro V hV + rw [(by aesop : f โปยน' V = (f โปยน' V โˆฉ s) โˆช (f โปยน' V โˆฉ sแถœ))] + apply MeasurableSet.union (IsOpen.measurableSet _) (hโ‚.mono inter_subset_right).measurableSet + rw [isOpen_iff_mem_nhds] at * + intro x a + simp_all [mem_setOf_eq, mem_inter_iff, mem_preimage, inter_mem_iff, and_true, s] + apply hโ‚ƒ.continuousAt (hโ‚‚ x a.2) (hV (f x) a.1) + +lemma ฯโ‚€ {r : โ„} {hr : r โ‰  0} {f g : โ„ โ†’ โ„‚} (h : MeromorphicOn f Set.univ) : + Measurable (fun x โ†ฆ f x.1 + g x.2 : โ„ ร— โ„ โ†’ โ„‚) := by sorry