Green's theorem on the truncated standard fundamental-domain tile
ProvedMTT.GreenTile.green_tile_truncated_fdLet and let be the standard fundamental domain of truncated at height : the region between the unit-circle arc and the horizontal line over . Let be continuous on the open set , with differentiable in and differentiable in there, and with continuous partial derivatives , on . Then (Green's theorem, in divergence form, for the tile)
where . The right-hand side is the counterclockwise boundary integral over the four boundary pieces (the arc, the right edge , the top , the left edge ), and the arc contributes only through the term since there.
This is the region-Stokes step needed to turn the Petersson area integral over a fundamental domain into a boundary integral (Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, (8.2.17)–(8.2.22)); Mathlib's divergence theorem is available only for rectangles, and the standard tile has a curvilinear side. Fundamental domains of are finite unions of -translates of this tile, so the identity, applied tile by tile after pulling back by the translating matrices, is the analytic input for the Eichler–Shimura pairing identity used in the injectivity half of Eichler–Shimura.
Formalization Note The area integral is over the open region regionBetween with respect to the product Lebesgue measure on ; the boundary terms are interval integrals. The hypotheses only ask for the partial derivatives and (as HasDerivAt along horizontal, resp. vertical, lines) and their continuity on ; no joint Fréchet differentiability is assumed.
import Mathlib.MeasureTheory.Integral.Prod import Mathlib.MeasureTheory.Integral.IntervalIntegral.FundThmCalculus import Mathlib.MeasureTheory.Integral.IntervalIntegral.IntegrationByParts import Mathlib.MeasureTheory.Measure.Lebesgue.Basic import Mathlib.Analysis.SpecialFunctions.Sqrt import Mathlib.Analysis.SpecialFunctions.Pow.Deriv set_option autoImplicit false noncomputable section open MeasureTheory Set
theorem MTT.GreenTile.green_tile_truncated_fd
(H : ℝ) (hH : 1 < H) (A B Ax By : ℝ → ℝ → ℂ)
(hA : ∀ x y : ℝ, |x| < 1 → 0 < y → HasDerivAt (fun s ↦ A s y) (Ax x y) x)
(hB : ∀ x y : ℝ, |x| < 1 → 0 < y → HasDerivAt (fun t ↦ B x t) (By x y) y)
(hAc : ContinuousOn (fun p : ℝ × ℝ ↦ A p.1 p.2) {p : ℝ × ℝ | |p.1| < 1 ∧ 0 < p.2})
(hAxc : ContinuousOn (fun p : ℝ × ℝ ↦ Ax p.1 p.2) {p : ℝ × ℝ | |p.1| < 1 ∧ 0 < p.2})
(hByc : ContinuousOn (fun p : ℝ × ℝ ↦ By p.1 p.2) {p : ℝ × ℝ | |p.1| < 1 ∧ 0 < p.2}) :
(∫ p in regionBetween (fun x : ℝ ↦ Real.sqrt (1 - x ^ 2)) (fun _ ↦ H)
(Set.Ioo (-(1 / 2)) (1 / 2)), (Ax p.1 p.2 + By p.1 p.2) ∂(volume.prod volume)) =
(∫ x in (-(1 / 2) : ℝ)..(1 / 2), (B x H - B x (Real.sqrt (1 - x ^ 2)))) +
(∫ x in (-(1 / 2) : ℝ)..(1 / 2),
A x (Real.sqrt (1 - x ^ 2)) * ((-x / Real.sqrt (1 - x ^ 2) : ℝ) : ℂ)) +
(∫ y in (Real.sqrt 3 / 2)..H, (A (1 / 2) y - A (-(1 / 2)) y)) := by sorry