Skip to content

feat(NumberTheory/Modular): interior and closure of fundamental domain#35946

Open
loefflerd wants to merge 1 commit intoleanprover-community:masterfrom
loefflerd:DL_funDomain_closure
Open

feat(NumberTheory/Modular): interior and closure of fundamental domain#35946
loefflerd wants to merge 1 commit intoleanprover-community:masterfrom
loefflerd:DL_funDomain_closure

Conversation

@loefflerd
Copy link
Contributor

Show that the open and closed fundamental domains for the modular group are related by the interior / closure operations.


Open in Gitpod

@github-actions
Copy link

github-actions bot commented Mar 1, 2026

PR summary 693459cd7a

Import changes for modified files

Dependency changes

File Base Count Head Count Change
Mathlib.NumberTheory.Modular 2097 2098 +1 (+0.05%)
Import changes for all files
Files Import difference
Mathlib.NumberTheory.Modular 1

Declarations diff

+ coe_fd
+ coe_fdo
+ fd_eq_closure_fdo
+ fdo_eq_interior_fd
+ fdo_subset_fd
+ isClosed_coe_fd
+ isClosed_fd
+ isOpenMap_norm
+ isOpenMap_re
+ isOpen_fdo
+ mem_closure_of_arc
+ mem_closure_of_one_lt_norm
+ one_le_normSq_iff
+ one_lt_normSq_iff

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for scripts/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@loefflerd loefflerd added the t-number-theory Number theory (also use t-algebra or t-analysis to specialize) label Mar 3, 2026
@loefflerd loefflerd requested a review from CBirkbeck March 3, 2026 11:46
Copy link
Collaborator

@CBirkbeck CBirkbeck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This all looks good, I only have these minor golfs.

Comment on lines +585 to +591
have : ContinuousAt (fun a : ℝ ↦ (UpperHalfPlane.ofComplex (a * x : ℂ) : ℂ)) 1 := by
apply ContinuousAt.comp
· fun_prop
· apply ContinuousAt.comp
· apply OpenPartialHomeomorph.continuousAt
simpa [UpperHalfPlane.ofComplex] using x.coe_im_pos
· fun_prop
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
have : ContinuousAt (fun a : ℝ ↦ (UpperHalfPlane.ofComplex (a * x : ℂ) : ℂ)) 1 := by
apply ContinuousAt.comp
· fun_prop
· apply ContinuousAt.comp
· apply OpenPartialHomeomorph.continuousAt
simpa [UpperHalfPlane.ofComplex] using x.coe_im_pos
· fun_prop
have : ContinuousAt (fun a : ℝ ↦ (UpperHalfPlane.ofComplex (a * x : ℂ) : ℂ)) 1 := by
apply ContinuousAt.comp (by fun_prop)
apply ContinuousAt.comp _ (by fun_prop)
apply OpenPartialHomeomorph.continuousAt
simpa [UpperHalfPlane.ofComplex] using x.coe_im_pos

simpa [Set.mem_preimage, Set.mem_Icc, abs_le] using hξ.2

end Topology

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

Comment on lines +210 to +211
obtain ⟨w, -, hw⟩ := hεs this
exact w.ne_zero hw
Copy link
Collaborator

@CBirkbeck CBirkbeck Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
obtain ⟨w, -, hw⟩ := hεs this
exact w.ne_zero hw
simpa [UpperHalfPlane.ne_zero] using hεs this

simp [← normSq_eq_norm_sq, normSq_apply]
ring
rw [hxnorm, one_pow, add_assoc, lt_add_iff_pos_right]
rw [← NNReal.coe_pos] at ha
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
rw [← NNReal.coe_pos] at ha

Comment on lines +637 to +641
rw [UpperHalfPlane.isOpenEmbedding_coe.tendsto_nhds_iff, Function.comp_def]
dsimp only
rw [show 𝓝 (x : ℂ) = 𝓝 (x + (((0 : ℝ≥0) : ℝ) : ℂ) * Complex.I) by simp]
apply Continuous.tendsto
fun_prop
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
rw [UpperHalfPlane.isOpenEmbedding_coe.tendsto_nhds_iff, Function.comp_def]
dsimp only
rw [show 𝓝 (x : ℂ) = 𝓝 (x + (((0 : ℝ≥0) : ℝ) : ℂ) * Complex.I) by simp]
apply Continuous.tendsto
fun_prop
rw [UpperHalfPlane.isOpenEmbedding_coe.tendsto_nhds_iff, Function.comp_def,
show 𝓝 (x : ℂ) = 𝓝 (x + (((0 : ℝ≥0) : ℝ) : ℂ) * Complex.I) by simp]
apply Continuous.tendsto
fun_prop

Comment on lines +592 to +594
have := this.tendsto
rw [UpperHalfPlane.ofComplex_apply_of_im_pos (by simpa using x.coe_im_pos)] at this
simpa
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
have := this.tendsto
rw [UpperHalfPlane.ofComplex_apply_of_im_pos (by simpa using x.coe_im_pos)] at this
simpa
simpa [UpperHalfPlane.ofComplex_apply_of_im_pos (by simpa using x.coe_im_pos)] using
this.tendsto

Comment on lines +651 to +672
lemma fdo_eq_interior_fd : 𝒟ᵒ = interior 𝒟 := by
refine subset_antisymm (isOpen_fdo.subset_interior_iff.mpr fdo_subset_fd) ?_
have ho1 := UpperHalfPlane.isOpenMap_re.image_interior_subset 𝒟
have ho2 := UpperHalfPlane.isOpenMap_norm.image_interior_subset 𝒟
intro x hx
constructor
· rw [Set.image_subset_iff] at ho2
have := ho2 hx
rw [Set.mem_preimage] at this
rw [one_lt_normSq_iff, ← Set.mem_Ioi, ← interior_Ici]
apply Set.mem_of_mem_of_subset this (interior_mono ?_)
rw [Set.image_subset_iff]
intro ξ hξ
simpa [Set.mem_preimage, Set.mem_Ici, one_le_normSq_iff] using hξ.1
· rw [Set.image_subset_iff] at ho1
have := ho1 hx
rw [Set.mem_preimage] at this
rw [abs_lt, ← Set.mem_Ioo, ← interior_Icc]
apply Set.mem_of_mem_of_subset this (interior_mono ?_)
rw [Set.image_subset_iff]
intro ξ hξ
simpa [Set.mem_preimage, Set.mem_Icc, abs_le] using hξ.2
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
lemma fdo_eq_interior_fd : 𝒟ᵒ = interior 𝒟 := by
refine subset_antisymm (isOpen_fdo.subset_interior_iff.mpr fdo_subset_fd) ?_
have ho1 := UpperHalfPlane.isOpenMap_re.image_interior_subset 𝒟
have ho2 := UpperHalfPlane.isOpenMap_norm.image_interior_subset 𝒟
intro x hx
constructor
· rw [Set.image_subset_iff] at ho2
have := ho2 hx
rw [Set.mem_preimage] at this
rw [one_lt_normSq_iff, ← Set.mem_Ioi, ← interior_Ici]
apply Set.mem_of_mem_of_subset this (interior_mono ?_)
rw [Set.image_subset_iff]
intro ξ hξ
simpa [Set.mem_preimage, Set.mem_Ici, one_le_normSq_iff] using hξ.1
· rw [Set.image_subset_iff] at ho1
have := ho1 hx
rw [Set.mem_preimage] at this
rw [abs_lt, ← Set.mem_Ioo, ← interior_Icc]
apply Set.mem_of_mem_of_subset this (interior_mono ?_)
rw [Set.image_subset_iff]
intro ξ hξ
simpa [Set.mem_preimage, Set.mem_Icc, abs_le] using hξ.2
lemma fdo_eq_interior_fd : 𝒟ᵒ = interior 𝒟 := by
refine subset_antisymm (isOpen_fdo.subset_interior_iff.mpr fdo_subset_fd) ?_
have ho1 := UpperHalfPlane.isOpenMap_re.image_interior_subset 𝒟
have ho2 := UpperHalfPlane.isOpenMap_norm.image_interior_subset 𝒟
intro x hx
rw [Set.image_subset_iff] at *
constructor
· rw [one_lt_normSq_iff, ← Set.mem_Ioi, ← interior_Ici]
apply Set.mem_of_mem_of_subset (Set.mem_preimage.mp (ho2 hx)) (interior_mono ?_)
rw [Set.image_subset_iff]
intro ξ hξ
simpa [Set.mem_preimage, Set.mem_Ici, one_le_normSq_iff] using hξ.1
· rw [abs_lt, ← Set.mem_Ioo, ← interior_Icc]
apply Set.mem_of_mem_of_subset ((Set.mem_preimage.mp (ho1 hx))) (interior_mono ?_)
rw [Set.image_subset_iff]
intro ξ hξ
simpa [Set.mem_preimage, Set.mem_Icc, abs_le] using hξ.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-number-theory Number theory (also use t-algebra or t-analysis to specialize)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants