-
Notifications
You must be signed in to change notification settings - Fork 1.2k
[Merged by Bors] - Add q-expansion identities for Eisenstein series. #27844
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
CBirkbeck
wants to merge
85
commits into
leanprover-community:master
from
CBirkbeck:breakup_eisenstein_q_exp_identity
Closed
Changes from 76 commits
Commits
Show all changes
85 commits
Select commit
Hold shift + click to select a range
d53f78e
feat(Analysis/NormedSpace/FunctionSeries): Add SummableUniformlyOn ve…
CBirkbeck 9a0f6cc
update
CBirkbeck 89ad73f
Merge remote-tracking branch 'origin/master' into derivwithin_tsum
CBirkbeck d4df7b6
Merge remote-tracking branch 'origin/master' into derivwithin_tsum
CBirkbeck 7311794
move files
CBirkbeck 2f47769
imports
CBirkbeck 5a4f0f3
mk_all
CBirkbeck da64063
fix name
CBirkbeck 8802150
fix name
CBirkbeck f78e869
name fix again
CBirkbeck 991df02
fix
CBirkbeck 5311723
merge
CBirkbeck aaf9ca4
updates
CBirkbeck 612c83a
updates
CBirkbeck 9a292d7
updates2
CBirkbeck 141652a
fix build
CBirkbeck 89406e3
fix
CBirkbeck 8f1c4a3
Add itereatedDerivWithin version of zpow lemmas
CBirkbeck df2bf4a
add file!
CBirkbeck 217237c
fix build
CBirkbeck db2fc70
open
CBirkbeck 17a3282
add content
CBirkbeck 96a4c69
space
CBirkbeck d385050
fix
CBirkbeck cd79ab4
fix name
CBirkbeck 6d05eb4
add doc string
CBirkbeck 4fca1af
add eventually version
CBirkbeck b06ce35
update
CBirkbeck 98009c7
merge fix
CBirkbeck 513cd68
golf
CBirkbeck 9e6816d
small fixes
CBirkbeck fa5c3ad
merge fix
CBirkbeck b05c86d
Merge remote-tracking branch 'origin/derivwithin_tsum' into cot_serie…
CBirkbeck deab207
open
CBirkbeck 738c91f
imports£
CBirkbeck 72b220e
cleanup
CBirkbeck f1185b7
lint fix
CBirkbeck 7ec21bf
add q_exp
CBirkbeck 970ef6b
docstrings
CBirkbeck 1874f54
space
CBirkbeck 90867a1
feat(Topology/Algebra/InfiniteSum/NatInt): add more pnat tsum lemmas
CBirkbeck ae866f9
doc string
CBirkbeck 62a78b1
docstring
CBirkbeck f686b78
implicit
CBirkbeck 7297e01
fix
CBirkbeck 9a3aed3
tidy
CBirkbeck 4845a6e
save
CBirkbeck b0e32f9
save
CBirkbeck fdffabe
update
CBirkbeck f173f58
merge
CBirkbeck 8fca6b2
merge
CBirkbeck 81370ac
add gcd lemma
CBirkbeck 55dd250
fix imports
CBirkbeck 55525ae
fix
CBirkbeck 032d305
Merge remote-tracking branch 'upstream/master' into breakup_eisenstei…
CBirkbeck 47985be
merge fix
CBirkbeck af87944
Merge remote-tracking branch 'upstream/master' into pnat_tsums
CBirkbeck 0c5b1bc
update with to_additive
CBirkbeck 6ce0152
rev updates
CBirkbeck f86b844
fix build@
CBirkbeck eac37be
Merge remote-tracking branch 'upstream/master' into breakup_eisenstei…
CBirkbeck 8b9d22d
updates in prog
CBirkbeck 002a871
update 2
CBirkbeck 982461d
fix build
CBirkbeck eb8b96d
updates
CBirkbeck cf89fc4
Apply suggestions from code review
CBirkbeck 115a663
updates in prog
CBirkbeck 873bb22
rev updates
CBirkbeck ecbf528
fix line
CBirkbeck f40505c
more small updates
CBirkbeck 263d877
more small updates 2
CBirkbeck 0038db4
fix merge
CBirkbeck 848a5dd
updates
CBirkbeck b00cdcf
last bit of cleanup
CBirkbeck b852cf2
fix build
CBirkbeck dc8ce4f
rev updates
CBirkbeck 2e40b4a
Apply suggestions from code review
CBirkbeck 1845629
Apply suggestions from code review
CBirkbeck 12d3d86
field_simp fix
CBirkbeck 810884a
remove old lemma
CBirkbeck ded67c0
doc string
CBirkbeck 4b14823
fix
CBirkbeck fd4a2b4
rename theorems to lemmas and add doc strings to thms
CBirkbeck 7c89a17
fix doc strings
CBirkbeck 1bf6c48
doc string fix
CBirkbeck File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| /- | ||
| Copyright (c) 2025 Chris Birkbeck. All rights reserved. | ||
| Released under Apache 2.0 license as described in the file LICENSE. | ||
| Authors: Chris Birkbeck | ||
| -/ | ||
| import Mathlib.Analysis.CStarAlgebra.Classes | ||
| import Mathlib.Analysis.Complex.LocallyUniformLimit | ||
| import Mathlib.Topology.Algebra.InfiniteSum.UniformOn | ||
|
|
||
| /-! | ||
| # Differentiability of uniformly convergent series sums of functions | ||
| We collect some results about the differentiability of infinite sums. | ||
| -/ | ||
|
|
||
| lemma SummableLocallyUniformlyOn.differentiableOn {ι E : Type*} [NormedAddCommGroup E] | ||
| [NormedSpace ℂ E] [CompleteSpace E] {f : ι → ℂ → E} {s : Set ℂ} | ||
| (hs : IsOpen s) (h : SummableLocallyUniformlyOn (fun n ↦ ((fun z ↦ f n z))) s) | ||
| (hf2 : ∀ n r, r ∈ s → DifferentiableAt ℂ (f n) r) : | ||
| DifferentiableOn ℂ (fun z ↦ ∑' n , f n z) s := by | ||
| obtain ⟨g, hg⟩ := h | ||
| have hc := (hasSumLocallyUniformlyOn_iff_tendstoLocallyUniformlyOn.mp hg).differentiableOn ?_ hs | ||
| · apply hc.congr | ||
| apply hg.tsum_eqOn | ||
| · filter_upwards with t r hr using | ||
| DifferentiableWithinAt.fun_sum fun a ha ↦ (hf2 a r hr).differentiableWithinAt |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
180 changes: 180 additions & 0 deletions
180
Mathlib/NumberTheory/ModularForms/EisensteinSeries/QExpansion.lean
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,180 @@ | ||
| /- | ||
| Copyright (c) 2025 Chris Birkbeck. All rights reserved. | ||
| Released under Apache 2.0 license as described in the file LICENSE. | ||
| Authors: Chris Birkbeck | ||
| -/ | ||
| import Mathlib.Analysis.Complex.SummableUniformlyOn | ||
| import Mathlib.Analysis.SpecialFunctions.Trigonometric.Cotangent | ||
|
|
||
| /-! | ||
| # Einstein series q-expansions | ||
|
|
||
| We give some identities for q-expansions of Eisenstein series that will be used in describing their | ||
| q-expansions. | ||
|
|
||
| -/ | ||
|
|
||
| open Set Metric TopologicalSpace Function Filter Complex EisensteinSeries | ||
|
|
||
| open _root_.UpperHalfPlane hiding I | ||
|
|
||
| open scoped Topology Real Nat Complex Pointwise | ||
|
|
||
| local notation "ℍₒ" => upperHalfPlaneSet | ||
|
|
||
| private lemma iteratedDerivWithin_cexp_aux (k m : ℕ) (p : ℝ) {S : Set ℂ} (hs : IsOpen S) : | ||
| EqOn (iteratedDerivWithin k (fun s : ℂ ↦ cexp (2 * π * I * m * s / p)) S) | ||
| (fun s ↦ (2 * π * I * m / p) ^ k * cexp (2 * π * I * m * s / p)) S := by | ||
| apply EqOn.trans (iteratedDerivWithin_of_isOpen hs) | ||
| intro x hx | ||
| have : (fun s ↦ cexp (2 * π * I * m * s / p)) = fun s ↦ cexp (((2 * π * I * m) / p) * s) := by | ||
| ext z | ||
| ring_nf | ||
| simp only [this, iteratedDeriv_cexp_const_mul] | ||
| ring_nf | ||
|
|
||
| private lemma aux_IsBigO_mul (k l : ℕ) (p : ℝ) {f : ℕ → ℂ} | ||
| (hf : f =O[atTop] (fun n ↦ ((n ^ l) : ℝ))) : | ||
| (fun n ↦ f n * (2 * π * I * n / p) ^ k) =O[atTop] fun n ↦ (↑(n ^ (l + k)) : ℝ) := by | ||
| have h0 : (fun n : ℕ ↦ (2 * π * I * n / p) ^ k) =O[atTop] (fun n ↦ ((n ^ k) : ℝ)) := by | ||
| have h1 : (fun n : ℕ ↦ (2 * π * I * n / p) ^ k) = | ||
| (fun n : ℕ ↦ ((2 * π * I / p) ^ k) * n ^ k) := by | ||
| ext z | ||
| ring | ||
| simpa [h1] using (Complex.isBigO_ofReal_right.mp (Asymptotics.isBigO_const_mul_self | ||
| ((2 * π * I / p) ^ k) (fun (n : ℕ) ↦ (↑(n ^ k) : ℝ)) atTop)) | ||
| simp only [Nat.cast_pow] at * | ||
| convert hf.mul h0 | ||
| ring | ||
|
|
||
| open BoundedContinuousFunction in | ||
| theorem summableLocallyUniformlyOn_iteratedDerivWithin_smul_cexp (k l : ℕ) {f : ℕ → ℂ} {p : ℝ} | ||
| (hp : 0 < p) (hf : f =O[atTop] (fun n ↦ ((n ^ l) : ℝ))) : | ||
| SummableLocallyUniformlyOn (fun n ↦ (f n) • | ||
| iteratedDerivWithin k (fun z ↦ cexp (2 * π * I * z / p) ^ n) ℍₒ) ℍₒ := by | ||
| apply SummableLocallyUniformlyOn_of_locally_bounded isOpen_upperHalfPlaneSet | ||
| intro K hK hKc | ||
| have : CompactSpace K := isCompact_univ_iff.mp (isCompact_iff_isCompact_univ.mp hKc) | ||
| let c : ContinuousMap K ℂ := ⟨fun r : K ↦ Complex.exp (2 * π * I * r / p), by fun_prop⟩ | ||
| let r : ℝ := ‖mkOfCompact c‖ | ||
| have hr : ‖r‖ < 1 := by | ||
| simp only [norm_norm, r, norm_lt_iff_of_compact Real.zero_lt_one, mkOfCompact_apply, | ||
| ContinuousMap.coe_mk, c] | ||
| intro x | ||
| have h1 : cexp (2 * π * I * (x / p)) = cexp (2 * π * I * x / p) := by | ||
| ring_nf | ||
| simpa using h1 ▸ norm_exp_two_pi_I_lt_one ⟨((x : ℂ) / p) , by aesop⟩ | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| refine ⟨_, by simpa using (summable_norm_mul_geometric_of_norm_lt_one' hr | ||
| (Asymptotics.isBigO_norm_left.mpr (aux_IsBigO_mul k l p hf))), ?_⟩ | ||
| intro n z hz | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| have h0 := pow_le_pow_left₀ (by apply norm_nonneg _) (norm_coe_le_norm (mkOfCompact c) ⟨z, hz⟩) n | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| simp only [norm_mkOfCompact, mkOfCompact_apply, ContinuousMap.coe_mk, ← exp_nsmul', Pi.smul_apply, | ||
| iteratedDerivWithin_cexp_aux k n p isOpen_upperHalfPlaneSet (hK hz), smul_eq_mul, | ||
| norm_mul, norm_pow, Complex.norm_div, norm_ofNat, norm_real, Real.norm_eq_abs, norm_I, mul_one, | ||
| norm_natCast, abs_norm, ge_iff_le, r, c] at * | ||
| rw [← mul_assoc] | ||
| gcongr | ||
| convert h0 | ||
| rw [← norm_pow, ← exp_nsmul'] | ||
|
|
||
| /-- This is a version of `summableLocallyUniformlyOn_iteratedDerivWithin_qExpansion` for level one | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| and q-expansion coefficients all `1`. -/ | ||
| theorem summableLocallyUniformlyOn_iteratedDerivWithin_cexp (k : ℕ) : | ||
| SummableLocallyUniformlyOn | ||
| (fun n ↦ iteratedDerivWithin k (fun z ↦ cexp (2 * π * I * z) ^ n) ℍₒ) ℍₒ := by | ||
| have h0 : (fun n : ℕ ↦ (1 : ℂ)) =O[atTop] (fun n ↦ ((n ^ 1) : ℝ)) := by | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| simp only [Asymptotics.isBigO_iff, norm_one, norm_pow, Real.norm_natCast, | ||
| eventually_atTop, ge_iff_le] | ||
| refine ⟨1, 1, fun b hb ↦ by norm_cast; simp [hb]⟩ | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| simpa using summableLocallyUniformlyOn_iteratedDerivWithin_smul_cexp k 1 (p := 1) | ||
| (by norm_num) h0 | ||
|
|
||
| theorem differentiableAt_iteratedDerivWithin_cexp (n a : ℕ) {s : Set ℂ} (hs : IsOpen s) | ||
| {r : ℂ} (hr : r ∈ s) : DifferentiableAt ℂ | ||
| (iteratedDerivWithin a (fun z ↦ cexp (2 * π * I * z) ^ n) s) r := by | ||
| apply DifferentiableOn.differentiableAt _ (hs.mem_nhds hr) | ||
| suffices DifferentiableOn ℂ (iteratedDeriv a (fun z ↦ cexp (2 * π * I * z) ^ n)) s by | ||
| apply this.congr (iteratedDerivWithin_of_isOpen hs) | ||
| fun_prop | ||
|
|
||
| lemma iteratedDerivWithin_tsum_cexp_eq (k : ℕ) (z : ℍ) : | ||
| iteratedDerivWithin k (fun z ↦ ∑' n : ℕ, cexp (2 * π * I * z) ^ n) ℍₒ z = | ||
| ∑' n : ℕ, iteratedDerivWithin k (fun s : ℂ ↦ cexp (2 * π * I * s) ^ n) ℍₒ z := by | ||
| rw [iteratedDerivWithin_tsum k isOpen_upperHalfPlaneSet (by simpa using z.2)] | ||
| · exact fun x hx ↦ summable_geometric_iff_norm_lt_one.mpr | ||
| (UpperHalfPlane.norm_exp_two_pi_I_lt_one ⟨x, hx⟩) | ||
| · exact fun n _ _ ↦ summableLocallyUniformlyOn_iteratedDerivWithin_cexp n | ||
| · exact fun n l z hl hz ↦ differentiableAt_iteratedDerivWithin_cexp n l | ||
| isOpen_upperHalfPlaneSet hz | ||
|
|
||
| theorem contDiffOn_tsum_cexp (k : ℕ∞) : | ||
| ContDiffOn ℂ k (fun z : ℂ ↦ ∑' n : ℕ, cexp (2 * π * I * z) ^ n) ℍₒ := | ||
| contDiffOn_of_differentiableOn_deriv fun m _ z hz ↦ | ||
| (((summableLocallyUniformlyOn_iteratedDerivWithin_cexp m).differentiableOn | ||
| isOpen_upperHalfPlaneSet (fun n _ hz ↦ differentiableAt_iteratedDerivWithin_cexp n m | ||
| isOpen_upperHalfPlaneSet hz)) z hz).congr (fun z hz ↦ iteratedDerivWithin_tsum_cexp_eq m ⟨z, hz⟩) | ||
| (iteratedDerivWithin_tsum_cexp_eq m ⟨z, hz⟩) | ||
|
|
||
| private lemma iteratedDerivWithin_tsum_exp_aux_eq {k : ℕ} (hk : 1 ≤ k) (z : ℍ) : | ||
| iteratedDerivWithin k (fun z ↦ ((π * I) - | ||
| (2 * π * I) * ∑' n : ℕ, cexp (2 * π * I * z) ^ n)) ℍₒ z = | ||
| -(2 * π * I) ^ (k + 1) * ∑' n : ℕ, n ^ k * cexp (2 * π * I * z) ^ n := by | ||
| have : iteratedDerivWithin k (fun z ↦ ((π * I) - | ||
| (2 * π * I) * ∑' n : ℕ, cexp (2 * π * I * z) ^ n)) ℍₒ z = | ||
| -(2 * π * I) * ∑' n : ℕ, iteratedDerivWithin k (fun s : ℂ ↦ cexp (2 * π * I * s) ^ n) ℍₒ z := by | ||
| rw [iteratedDerivWithin_const_sub hk, iteratedDerivWithin_fun_neg, | ||
| iteratedDerivWithin_const_mul (by simpa using z.2) (isOpen_upperHalfPlaneSet.uniqueDiffOn)] | ||
| · simp only [iteratedDerivWithin_tsum_cexp_eq, neg_mul] | ||
| · exact (contDiffOn_tsum_cexp k).contDiffWithinAt (by simpa using z.2) | ||
| have h : -(2 * π * I * (2 * π * I) ^ k) * ∑' (n : ℕ), n ^ k * cexp (2 * π * I * z) ^ n = | ||
| -(2 * π * I) * ∑' n : ℕ, (2 * π * I * n) ^ k * cexp (2 * π * I * z) ^ n := by | ||
| simp_rw [← tsum_mul_left] | ||
| congr | ||
| ext y | ||
| ring | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| simp only [this, neg_mul, pow_succ', h, neg_inj, mul_eq_mul_left_iff, mul_eq_zero, | ||
| OfNat.ofNat_ne_zero, ofReal_eq_zero, Real.pi_ne_zero, or_self, I_ne_zero, or_false] | ||
| congr | ||
| ext n | ||
| have := exp_nsmul' (p := 1) (a := 2 * π * I) (n := n) | ||
| simp_rw [div_one] at this | ||
| simpa [this, UpperHalfPlane.coe] using | ||
| iteratedDerivWithin_cexp_aux k n 1 isOpen_upperHalfPlaneSet z.2 | ||
|
|
||
| theorem EisensteinSeries.qExpansion_identity {k : ℕ} (hk : 1 ≤ k) (z : ℍ) : | ||
| ∑' n : ℤ, 1 / ((z : ℂ) + n) ^ (k + 1) = ((-2 * π * I) ^ (k + 1) / k !) * | ||
| ∑' n : ℕ, n ^ k * cexp (2 * π * I * z) ^ n := by | ||
| have : (-1) ^ k * (k : ℕ)! * ∑' n : ℤ, 1 / ((z : ℂ) + n) ^ (k + 1) = | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| -(2 * π * I) ^ (k + 1) * ∑' n : ℕ, n ^ k * cexp (2 * π * I * z) ^ n := by | ||
| rw [← iteratedDerivWithin_tsum_exp_aux_eq hk z, | ||
| ← iteratedDerivWithin_cot_pi_mul_eq_mul_tsum_div_pow hk (by simpa using z.2)] | ||
| exact iteratedDerivWithin_congr (fun x hx ↦ by (simpa using pi_mul_cot_pi_q_exp ⟨x, hx⟩)) | ||
| (by simpa using z.2) | ||
| simp_rw [(eq_inv_mul_iff_mul_eq₀ (by simp [Nat.factorial_ne_zero])).mpr this, ← tsum_mul_left] | ||
| congr | ||
| ext n | ||
| have h3 : (k ! : ℂ) ≠ 0 := by simp [Nat.factorial_ne_zero] | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| rw [show (-2 * π * I) ^ (k + 1) = (-1) ^ (k + 1) * (2 * π * I) ^ (k + 1) by rw [← neg_pow]; ring] | ||
| field_simp [h3] | ||
| ring_nf | ||
| simp [Nat.mul_two] | ||
|
|
||
| theorem summable_pow_mul_cexp (k : ℕ) (e : ℕ+) (z : ℍ) : | ||
| Summable fun c : ℕ ↦ (c : ℂ) ^ k * cexp (2 * π * I * e * z) ^ c := by | ||
| have he : 0 < (e * (z : ℂ)).im := by | ||
| simpa using z.2 | ||
| apply ((summableLocallyUniformlyOn_iteratedDerivWithin_smul_cexp 0 k (p := 1) | ||
| (f := fun n ↦ (n ^ k : ℂ)) (by norm_num) | ||
| (by simp [← Complex.isBigO_ofReal_right, Asymptotics.isBigO_refl])).summable he).congr | ||
| grind [ofReal_one, div_one, ← Complex.exp_nsmul, nsmul_eq_mul, iteratedDerivWithin_zero, | ||
| Pi.smul_apply, smul_eq_mul, mul_eq_mul_left_iff, pow_eq_zero_iff', Nat.cast_eq_zero] | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
|
|
||
| theorem EisensteinSeries.qExpansion_identity_pnat {k : ℕ} (hk : 1 ≤ k) (z : ℍ) : | ||
| ∑' n : ℤ, 1 / ((z : ℂ) + n) ^ (k + 1) = ((-2 * π * I) ^ (k + 1) / k !) * | ||
| ∑' n : ℕ+, n ^ k * cexp (2 * π * I * z) ^ (n : ℕ) := by | ||
| have hk0 : k ≠ 0 := by omega | ||
| rw [EisensteinSeries.qExpansion_identity hk z, ← tsum_zero_pnat_eq_tsum_nat] | ||
| · simp only [neg_mul, CharP.cast_eq_zero, ne_eq, hk0, not_false_eq_true, zero_pow, pow_zero, | ||
| mul_one, zero_add] | ||
|
CBirkbeck marked this conversation as resolved.
Outdated
|
||
| · apply (summable_pow_mul_cexp k 1 z).congr | ||
| simp | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.