From 6d9af8f2ae775c28d393a5e3e7742efcdeb7162d Mon Sep 17 00:00:00 2001 From: Vasily Ilin Date: Tue, 20 Oct 2026 22:18:05 +0000 Subject: [PATCH] perf: reduce Ehrhart volume proof elaboration --- .../AnalysisSupport.lean | 164 ++++++ .../EhrhartVolumeInequality/Convergence.lean | 71 +-- .../EhrhartVolumeInequality/Convexity.lean | 325 ++++------- .../EhrhartVolumeInequality/Foundations.lean | 436 +++++---------- .../FourierAnalysis.lean | 363 +++---------- LeanPool/EhrhartVolumeInequality/Imports.lean | 1 + .../Regularization.lean | 507 +++++------------- .../EhrhartVolumeInequality/Resolvent.lean | 365 ++++--------- .../EhrhartVolumeInequality/Variation.lean | 283 +++------- 9 files changed, 801 insertions(+), 1714 deletions(-) create mode 100644 LeanPool/EhrhartVolumeInequality/AnalysisSupport.lean diff --git a/LeanPool/EhrhartVolumeInequality/AnalysisSupport.lean b/LeanPool/EhrhartVolumeInequality/AnalysisSupport.lean new file mode 100644 index 0000000000..d399c009ee --- /dev/null +++ b/LeanPool/EhrhartVolumeInequality/AnalysisSupport.lean @@ -0,0 +1,164 @@ +/- +Copyright (c) 2026 OpenAI and Dean Cureton. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: OpenAI, Dean Cureton +-/ + +module + +public import Mathlib.Analysis.Calculus.FDeriv.Basic +public import Mathlib.MeasureTheory.Integral.IntervalIntegral.Basic +import Mathlib.Topology.UniformSpace.Ascoli +import Mathlib.Analysis.InnerProductSpace.Adjoint +import Mathlib.Analysis.BoxIntegral.UnitPartition +import Mathlib.Analysis.Calculus.Rademacher +import Mathlib.Analysis.Complex.ValueDistribution.LogCounting.Basic + +/-! +# Analytic support for the Ehrhart volume inequality + +Narrow interfaces for differentiation, lattice counts, complex analysis, and Hilbert-space +arguments. +-/ + +namespace Ehrhart + +open MeasureTheory +open Set Filter +open scoped NNReal Pointwise Topology + +/-- Rademacher's theorem for real-valued Lipschitz functions on a finite real product. -/ +public theorem ae_differentiableAt_lipschitz_realPi + {n : ℕ} {C : ℝ≥0} {f : (Fin n → ℝ) → ℝ} (hf : LipschitzWith C f) : + ∀ᵐ x ∂(volume : Measure (Fin n → ℝ)), DifferentiableAt ℝ f x := + hf.ae_differentiableAt + + +/-- Membership in the integer lattice scaled by the reciprocal of a natural number. -/ +public theorem mem_scaledIntegerSpan_iff {n k : ℕ} [NeZero k] {x : Fin n → ℝ} : + x ∈ (k : ℝ)⁻¹ • Submodule.span ℤ (Set.range (Pi.basisFun ℝ (Fin n))) ↔ + ∀ i, (k : ℝ) * x i ∈ Set.range (algebraMap ℤ ℝ) := + BoxIntegral.unitPartition.mem_smul_span_iff + +/-- Lattice counts in a bounded Jordan-measurable set converge to its volume. -/ +public theorem scaledIntegerSpan_count_tendsto_volume {n : ℕ} (s : Set (Fin n → ℝ)) + (hbounded : Bornology.IsBounded s) (hmeasurable : MeasurableSet s) + (hfrontier : volume (frontier s) = 0) : + Tendsto + (fun k : ℕ => + (Nat.card ↑(s ∩ (k : ℝ)⁻¹ • + Submodule.span ℤ (Set.range (Pi.basisFun ℝ (Fin n)))) : ℝ) / + (k : ℝ) ^ Fintype.card (Fin n)) + atTop (𝓝 (volume.real s)) := + tendsto_card_div_pow_atTop_volume s hbounded hmeasurable hfrontier + + +/-- Rademacher's theorem restricted to a measurable subset of a finite real product. -/ +public theorem ae_differentiableWithinAt_lipschitzOn_realPi + {n : ℕ} {C : ℝ≥0} {f : (Fin n → ℝ) → ℝ} {s : Set (Fin n → ℝ)} + (hf : LipschitzOnWith C f s) (hs : MeasurableSet s) : + ∀ᵐ x ∂(volume.restrict s), DifferentiableWithinAt ℝ f s x := + hf.ae_differentiableWithinAt hs + +/-- Jensen's inequality for the logarithmic norm of an entire function on the unit circle. -/ +public theorem log_norm_le_unitCircle_integral_of_differentiable + {g : ℂ → ℂ} (hg : Differentiable ℂ g) (hzero : g 0 ≠ 0) : + Real.log ‖g 0‖ ≤ (2 * Real.pi)⁻¹ * + ∫ θ : ℝ in 0..2 * Real.pi, Real.log ‖g (Complex.exp (θ * Complex.I))‖ := by + have hanalytic : AnalyticOnNhd ℂ g (Set.univ : Set ℂ) := + hg.differentiableOn.analyticOnNhd isOpen_univ + have hmeromorphic : Meromorphic g := fun w => (hg.analyticAt w).meromorphicAt + have hdivisor : 0 ≤ MeromorphicOn.divisor g (Set.univ : Set ℂ) := + MeromorphicOn.AnalyticOnNhd.divisor_nonneg hanalytic + have hcount := Function.locallyFinsuppWithin.logCounting_nonneg + hdivisor (by norm_num : (1 : ℝ) ≤ 1) + have hjensen := + Function.locallyFinsuppWithin.logCounting_divisor_eq_circleAverage_sub_const + hmeromorphic (by norm_num : (1 : ℝ) ≠ 0) + rw [(hg.analyticAt 0).meromorphicTrailingCoeffAt_of_ne_zero hzero] at hjensen + rw [hjensen] at hcount + have hcenter : + Real.log ‖g 0‖ ≤ Real.circleAverage (fun w : ℂ => Real.log ‖g w‖) 0 1 := + sub_nonneg.mp hcount + simpa only [Real.circleAverage_def, circleMap_zero, Complex.ofReal_one, one_mul, + smul_eq_mul] using hcenter + +/-- The logarithmic norm of an entire function is integrable on every circle. -/ +public theorem intervalIntegrable_log_norm_circle_of_differentiable + {g : ℂ → ℂ} (hg : Differentiable ℂ g) (c : ℂ) (R : ℝ) : + IntervalIntegrable + (fun θ : ℝ => Real.log ‖g (c + R * Complex.exp (θ * Complex.I))‖) + volume 0 (2 * Real.pi) := by + have hcircle : CircleIntegrable (fun w : ℂ => Real.log ‖g w‖) c R := by + apply MeromorphicOn.circleIntegrable_log_norm + intro w _ + exact (hg.analyticAt w).meromorphicAt + change IntervalIntegrable + (fun θ : ℝ => Real.log ‖g (c + R * Complex.exp (θ * Complex.I))‖) + volume 0 (2 * Real.pi) at hcircle + exact hcircle + + +/-- Pointwise compactness and equicontinuity give compactness in the compact-open topology. -/ +public theorem isCompact_continuousMap_family_of_pointwise + {X Y : Type*} [TopologicalSpace X] [UniformSpace Y] + (S : Set C(X, Y)) (hcompact : IsCompact (ContinuousMap.toFun '' S)) + (hequicontinuous : Equicontinuous ((↑) : S → X → Y)) : IsCompact S := + ArzelaAscoli.isCompact_of_equicontinuous S hcompact hequicontinuous + + +/-- A self-adjoint defect has dense range in the orthogonal complement of its fixed space. -/ +public theorem continuousLinearMap_id_sub_range_closure_eq_fixedSpace_orthogonal + {𝕜 E : Type*} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] + [CompleteSpace E] (T : E →L[𝕜] E) + (hT : ∀ x y, inner 𝕜 (T x) y = inner 𝕜 x (T y)) : + (ContinuousLinearMap.id 𝕜 E - T).range.topologicalClosure = + (LinearMap.eqLocus T.toLinearMap 1).orthogonal := by + let S := ContinuousLinearMap.id 𝕜 E - T + have hSadj : S.adjoint = S := by + symm + apply (ContinuousLinearMap.eq_adjoint_iff S S).2 + intro x y + change inner 𝕜 (x - T x) y = inner 𝕜 x (y - T y) + rw [inner_sub_left, inner_sub_right, hT] + have hker : S.ker = LinearMap.eqLocus T.toLinearMap 1 := by + ext x + change x - T x = 0 ↔ T x = x + rw [sub_eq_zero] + exact eq_comm + calc + S.range.topologicalClosure = S.ker.orthogonal := by + simpa only [hSadj] using S.orthogonal_ker.symm + _ = (LinearMap.eqLocus T.toLinearMap 1).orthogonal := by rw [hker] + +/-- A continuous linear map vanishing on a set vanishes on its closed linear span. -/ +public theorem continuousLinearMap_eq_zero_of_mem_topologicalClosure_span + {𝕜 E F : Type*} [NontriviallyNormedField 𝕜] + [NormedAddCommGroup E] [NormedSpace 𝕜 E] + [NormedAddCommGroup F] [NormedSpace 𝕜 F] + (L : E →L[𝕜] F) {s : Set E} + (hs : ∀ x ∈ s, L x = 0) {x : E} + (hx : x ∈ (Submodule.span 𝕜 s).topologicalClosure) : L x = 0 := by + have hspan : Submodule.span 𝕜 s ≤ L.ker := Submodule.span_le.mpr hs + exact (Submodule.topologicalClosure_minimal _ hspan L.isClosed_ker) hx + +/-- A continuous linear map preserves containment in closed linear spans. -/ +public theorem continuousLinearMap_map_topologicalClosure_span_le + {𝕜 E F : Type*} [NontriviallyNormedField 𝕜] + [NormedAddCommGroup E] [NormedSpace 𝕜 E] + [NormedAddCommGroup F] [NormedSpace 𝕜 F] + (L : E →L[𝕜] F) {s : Set E} {t : Set F} + (h : Set.MapsTo L s t) : + (Submodule.span 𝕜 s).topologicalClosure.map L.toLinearMap ≤ + (Submodule.span 𝕜 t).topologicalClosure := by + have hspan : Submodule.span 𝕜 s ≤ + (Submodule.span 𝕜 t).topologicalClosure.comap L.toLinearMap := by + apply Submodule.span_le.mpr + intro x hx + exact (Submodule.span 𝕜 t).le_topologicalClosure (Submodule.subset_span (h hx)) + exact Submodule.map_le_iff_le_comap.mpr + (Submodule.topologicalClosure_minimal _ hspan + ((Submodule.span 𝕜 t).isClosed_topologicalClosure.preimage L.continuous)) + + +end Ehrhart diff --git a/LeanPool/EhrhartVolumeInequality/Convergence.lean b/LeanPool/EhrhartVolumeInequality/Convergence.lean index 4ff2aa3af4..ca29f00708 100644 --- a/LeanPool/EhrhartVolumeInequality/Convergence.lean +++ b/LeanPool/EhrhartVolumeInequality/Convergence.lean @@ -8,6 +8,7 @@ module public import LeanPool.EhrhartVolumeInequality.Convexity import all LeanPool.EhrhartVolumeInequality.Convexity +import Mathlib.Analysis.BoxIntegral.UnitPartition /-! # Ehrhart volume inequality: Convergence @@ -39,7 +40,6 @@ private theorem ae_differentiableAt_of_locallyLipschitzOn_open (hf : LocallyLipschitzOn s f) : ∀ᵐ x : Space n ∂(volume : Measure (Space n)), x ∈ s → DifferentiableAt ℝ f x := by - classical have hlocal : ∀ x : s, ∃ (u : Set (Space n)) (C : ℝ≥0), IsOpen u ∧ (x : Space n) ∈ u ∧ @@ -75,7 +75,7 @@ private theorem ae_differentiableAt_of_locallyLipschitzOn_open ∀ᵐ x : Space n ∂((volume : Measure (Space n)).restrict (u i)), DifferentiableWithinAt ℝ f (u i) x := - (hflip i).ae_differentiableWithinAt (huopen i).measurableSet + ae_differentiableWithinAt_lipschitzOn_realPi (hflip i) (huopen i).measurableSet filter_upwards [hrad, ae_restrict_mem (huopen i).measurableSet] with x hx hxu exact hx.differentiableAt ((huopen i).mem_nhds hxu) @@ -141,7 +141,6 @@ private theorem finiteEnergySourceLegendre_gradient_eq_phaseMaximizer phase u F.potential z ≤ phase u F.potential x) : SpatialBergmanFatouScheffe.actualGradient (legendreTransform F.potential) u = x := by - classical ext i let v : Space n := Pi.single i (1 : ℝ) have hline : HasDerivAt @@ -185,7 +184,7 @@ private theorem finiteEnergySourceLegendre_gradient_eq_phaseMaximizer simp only [zero_smul, add_zero] rw [hbase] unfold phase at hfen ⊢ - linarith + linarith only [hfen] have hzero : (fderiv ℝ (legendreTransform F.potential) u) v - pairing v x = 0 := by @@ -198,7 +197,7 @@ private theorem finiteEnergySourceLegendre_gradient_eq_phaseMaximizer (fderiv ℝ (legendreTransform F.potential) u) v - pairing v x at hd rw [hlocal.deriv_eq_zero] at hd - linarith + exact (hd).symm have hcoordinate : pairing (SpatialBergmanFatouScheffe.actualGradient @@ -207,7 +206,7 @@ private theorem finiteEnergySourceLegendre_gradient_eq_phaseMaximizer rw [SpatialBergmanFatouScheffe.pairing_actualGradient_eq_fderiv] have hcomm : pairing v x = pairing x v := by simp only [pairing, mul_comm] - linarith + linarith only [hzero, hcomm] simpa only [v, pairing, Pi.single_apply, mul_ite, mul_one, mul_zero, Finset.sum_ite_eq', Finset.mem_univ, ↓reduceIte] using hcoordinate @@ -223,10 +222,10 @@ private theorem momentNormalized_phaseMaximizer_iff constructor <;> intro h z · have hz := h z simp only [phase, momentNormalizedPotential] at hz ⊢ - linarith + linarith only [hz] · have hz := h z simp only [phase, momentNormalizedPotential] at hz ⊢ - linarith + linarith only [hz] end BergmanJetDualPhaseConcentration @@ -284,7 +283,7 @@ private theorem momentNormalized_off_phase_setIntegral_le_exp_mul_base apply Real.exp_le_exp.mpr have h := hphase x hx unfold phase at h - nlinarith + nlinarith only [hk, hkpos, h] _ ≤ ∫ x : Space n, Real.exp ((k - 1) * M) * monomialWeight 1 u (momentNormalizedPotential F) x @@ -337,7 +336,7 @@ private theorem exists_momentNormalized_phase_gap_outside_ball simpa only [ge_iff_le, mul_comm] using (div_le_iff₀ hδ).mp hle have hscale := mul_lt_mul_of_pos_left hxnorm hδ have hcoerce := hcoercive x - nlinarith + linarith only [hR, hscale, hcoerce] let t : Set (Space n) := Metric.closedBall (0 : Space n) R ∩ (Metric.ball x₀ r)ᶜ @@ -390,10 +389,10 @@ private theorem exists_momentNormalized_phase_gap_outside_ball η ≤ phase u (momentNormalizedPotential F) x₀ - phase u (momentNormalizedPotential F) z := min_le_right _ _ - linarith + linarith only [hzx, hηle] · have hout := houter x hxR have hηle : η ≤ (1 : ℝ) := min_le_left _ _ - linarith + linarith only [hout, hηle] · refine ⟨1, zero_lt_one, fun x hx => ?_⟩ apply houter x intro hxR @@ -471,7 +470,7 @@ private theorem concave_radial_gap_of_off_ball simpa only [ge_iff_le, smul_eq_mul] using hraw have hygap := hgap y hyout have htbound : t * (f x - f x₀) ≤ -η := by - linarith + linarith only [hsegle, hygap] have hquot : (r * (f x - f x₀)) / d ≤ -η := by calc (r * (f x - f x₀)) / d = @@ -484,7 +483,7 @@ private theorem concave_radial_gap_of_off_ball have h1 : f x - f x₀ ≤ (-η * d) / r := (le_div_iff₀' hr).mpr hscale have h2 : (-η * d) / r = -((η / r) * d) := by ring rw [h2] at h1 - linarith + linarith only [h1] private theorem exists_eventual_momentNormalized_moving_phase_gap_outside_ball {n : ℕ} {K : CenteredBody n} @@ -525,7 +524,7 @@ private theorem exists_eventual_momentNormalized_moving_phase_gap_outside_ball simpa only [ge_iff_le, dist_eq_norm] using hd have hradial := concave_radial_gap_of_off_ball (concaveOn_momentNormalized_phase F u₀) - x₀ (half_pos hr) hgap x (le_trans (by linarith) hdist) + x₀ (half_pos hr) hgap x (le_trans (by linarith only [hr]) hdist) have hpert : pairing (u k - u₀) (x - x₀) ≤ (η / r) * ‖x - x₀‖ := by @@ -596,7 +595,7 @@ private theorem exists_eventual_momentNormalized_moving_ball_volume_exp_le_monom {x : Space n | phase u₀ φ x₀ - ε / 2 < phase u₀ φ x} := by change phase u₀ φ x₀ - ε / 2 < phase u₀ φ x₀ - linarith + linarith only [hε] obtain ⟨r, hr, hball⟩ := (Metric.isOpen_iff.mp hopen) x₀ hx₀ have hballpos : @@ -678,12 +677,10 @@ private theorem exists_eventual_momentNormalized_moving_ball_volume_exp_le_monom have hphase : phase (u j) φ x₀ - ε ≤ phase (u j) φ x := by have habs := (abs_lt.mp hpair).1 change phase u₀ φ x₀ - ε / 2 < phase u₀ φ x at hlocal - linarith - unfold monomialWeight + linarith only [hsplit, habs, hlocal] apply Real.exp_le_exp.mpr apply mul_le_mul_of_nonneg_left hphase hk.le _ ≤ monomialIntegral k (u j) φ := by - unfold monomialIntegral apply setIntegral_le_integral hkint exact Filter.Eventually.of_forall fun x => (Real.exp_pos _).le @@ -742,13 +739,12 @@ private theorem exists_eventual_momentNormalized_moving_off_ball_exponential have hptendsto : Tendsto (fun k : ℕ => phase (u k) φ x₀) atTop (𝓝 P₀) := by - simpa only [P₀, phase, comp_apply] using - (((continuous_pairing_left x₀).continuousAt.tendsto.comp hu).sub_const + exact (((continuous_pairing_left x₀).continuousAt.tendsto.comp hu).sub_const (φ x₀)) have hplower : ∀ᶠ k : ℕ in atTop, P₀ - 1 < phase (u k) φ x₀ := - hptendsto (Ioi_mem_nhds (by linarith)) + hptendsto (Ioi_mem_nhds (by linarith only [])) have hinterior : ∀ᶠ k : ℕ in atTop, u k ∈ interior K.carrier := hu.eventually (isOpen_interior.mem_nhds hu₀) @@ -825,7 +821,7 @@ private theorem exists_eventual_momentNormalized_moving_off_ball_exponential apply mul_le_mul_of_nonneg_right _ (Real.exp_pos _).le apply mul_le_mul_of_nonneg_left _ (div_pos hB hV).le apply Real.exp_le_exp.mpr - linarith + linarith only [hkp, hkone, hkreal, hkpos, hnum, hupper, hden', hquot] _ = A * Real.exp (-((k : ℝ) * (η / 2))) := rfl private theorem tendsto_momentNormalized_moving_off_ball_probability @@ -880,7 +876,6 @@ private theorem tendsto_momentNormalized_moving_off_ball_probability (setIntegral_nonneg Metric.isOpen_ball.measurableSet.compl fun x _ => (Real.exp_pos _).le) (by - unfold monomialIntegral exact integral_nonneg fun x => (Real.exp_pos _).le) end BergmanJetMovingMonomialTailConvergence @@ -1068,7 +1063,7 @@ private theorem tendsto_integral_bounded_continuous_of_concentrating_normalized_ have hb := mul_le_mul_of_nonneg_left hballmass (half_pos hε).le exact add_le_add_left (hb.trans_eq (mul_one _)) _ - _ < ε := by linarith + _ < ε := by linarith only [hktail] private theorem tendsto_momentNormalized_moving_monomial_bounded_observable {n : ℕ} {K : CenteredBody n} @@ -1117,7 +1112,6 @@ private theorem tendsto_momentNormalized_moving_monomial_bounded_observable intro k x dsimp [w] apply div_nonneg (Real.exp_pos _).le - unfold monomialIntegral exact integral_nonneg fun y => (Real.exp_pos _).le have hwmass : ∀ᶠ k : ℕ in atTop, @@ -1173,8 +1167,6 @@ private theorem triangularUnitLatticeStep_integrable {n : ℕ} (k : ℕ) : Integrable (triangularUnitLatticeStep B s G k) (volume : Measure (Space n)) := by - classical - unfold triangularUnitLatticeStep apply integrable_finsetSum intro J hJ exact (integrableOn_const @@ -1196,7 +1188,6 @@ private theorem integral_triangularUnitLatticeStep_eq_integralSum {n : ℕ} (BoxIntegral.BoxAdditiveMap.toSMul (Measure.toBoxAdditive (volume : Measure (Space n)))) (BoxIntegral.unitPartition.prepartition (k + 1) B) := by - classical unfold triangularUnitLatticeStep rw [MeasureTheory.integral_finsetSum] · unfold BoxIntegral.integralSum @@ -1278,7 +1269,6 @@ private theorem triangularUnitLatticeStep_eq_tag_of_mem {n : ℕ} s.indicator (G (k + 1)) (BoxIntegral.unitPartition.tag (k + 1) (BoxIntegral.unitPartition.index (k + 1) x)) := by - classical let ν : Fin n → ℤ := BoxIntegral.unitPartition.index (k + 1) x let J : BoxIntegral.Box (Fin n) := BoxIntegral.unitPartition.box (k + 1) ν @@ -1311,8 +1301,6 @@ private theorem triangularUnitLatticeStep_eq_zero_of_not_mem {n : ℕ} (k : ℕ) (x : Space n) (hx : x ∉ (B : Set (Space n))) : triangularUnitLatticeStep B s G k x = 0 := by - classical - unfold triangularUnitLatticeStep apply Finset.sum_eq_zero intro J hJ apply Set.indicator_of_notMem @@ -1345,7 +1333,6 @@ private theorem tendsto_moving_lattice_sum_of_ae_tag_convergence {n : ℕ} G (k + 1) u) / ((k + 1 : ℕ) : ℝ) ^ n) atTop (𝓝 (∫ x in s, g x ∂(volume : Measure (Space n)))) := by - classical have hmajor : Integrable ((B : Set (Space n)).indicator (fun _ : Space n => C)) @@ -1459,7 +1446,6 @@ private theorem ae_finiteEnergySourceLegendreGradient_left_inverse_gibbs rw [htransport] exact ae_differentiableAt_finiteEnergySourceLegendre_target F htransport - unfold finiteEnergySourceGradientPushforward at htarget have hdual : ∀ᵐ x : Space n ∂(finiteEnergySourceGibbsProbability F), @@ -1502,11 +1488,6 @@ private theorem finiteEnergySourceLegendreGradient_pushforward_target filter_upwards [ae_finiteEnergySourceLegendreGradient_left_inverse_gibbs F htransport] with x hx - change - SpatialBergmanFatouScheffe.actualGradient - (legendreTransform F.potential) - (SpatialBergmanFatouScheffe.actualGradient - F.potential x) = x exact hx change Measure.map D (normalizedTargetBodyMeasure K) = finiteEnergySourceGibbsProbability F @@ -1516,7 +1497,6 @@ private theorem finiteEnergySourceLegendreGradient_pushforward_target rw [htransport] _ = Measure.map (D ∘ G) (finiteEnergySourceGibbsProbability F) := by - unfold finiteEnergySourceGradientPushforward exact Measure.map_map hD hG _ = Measure.map (fun x : Space n => x) (finiteEnergySourceGibbsProbability F) := @@ -1652,7 +1632,7 @@ private theorem abs_momentNormalizedLaurentObservable_le (volume : Measure (Space n)) := hρ.bdd_mul hf.aestronglyMeasurable (Filter.Eventually.of_forall fun x => by - simpa only [Real.norm_eq_abs] using hC x) + exact hC x) change |∫ x : Space n, f x * ρ x ∂(volume : Measure (Space n))| ≤ C calc @@ -1660,8 +1640,7 @@ private theorem abs_momentNormalizedLaurentObservable_le ∂(volume : Measure (Space n))| ≤ ∫ x : Space n, ‖f x * ρ x‖ ∂(volume : Measure (Space n)) := by - simpa only [norm_mul, Real.norm_eq_abs] using - (MeasureTheory.norm_integral_le_integral_norm + exact (MeasureTheory.norm_integral_le_integral_norm (fun x : Space n => f x * ρ x)) _ ≤ ∫ x : Space n, C * ρ x ∂(volume : Measure (Space n)) := by @@ -1699,7 +1678,6 @@ private theorem integral_momentNormalizedDiagonal_eq_laurentObservable_average momentNormalizedLaurentObservable F k f (u : Space n)) / (bergmanDimension K k : ℝ) := by - classical let := (monomialIndex_finite K hk).fintype have hmono : ∀ u : monomialIndex K k, Integrable @@ -1713,7 +1691,7 @@ private theorem integral_momentNormalizedDiagonal_eq_laurentObservable_average K hk F htransport u).bdd_mul hf.aestronglyMeasurable (Filter.Eventually.of_forall fun x => by - simpa only [Real.norm_eq_abs] using hC x) + exact hC x) calc (∫ x : Space n, f x * normalizedDiagonalDensity @@ -1862,7 +1840,6 @@ private theorem tendsto_momentTaggedLaurentObservable_unitPartition_tag (𝓝 (f (SpatialBergmanFatouScheffe.actualGradient (legendreTransform F.potential) u))) := by - unfold momentNormalizedLaurentObservable exact tendsto_momentNormalized_moving_monomial_bounded_observable F htransport hu hdu (SpatialBergmanFatouScheffe.actualGradient @@ -1930,8 +1907,6 @@ private theorem ae_tendsto_momentTaggedLaurentObservable_interior_unitPartition_ · have hxclosure : x ∉ closure (interior K.carrier) := by intro hcl apply hxfront - change x ∈ closure (interior K.carrier) \ - interior (interior K.carrier) exact ⟨hcl, by simpa only [interior_interior] using hx⟩ have hcomp : (closure (interior K.carrier))ᶜ ∈ 𝓝 x := diff --git a/LeanPool/EhrhartVolumeInequality/Convexity.lean b/LeanPool/EhrhartVolumeInequality/Convexity.lean index abffb6c06c..d7386ea4a5 100644 --- a/LeanPool/EhrhartVolumeInequality/Convexity.lean +++ b/LeanPool/EhrhartVolumeInequality/Convexity.lean @@ -132,14 +132,14 @@ private theorem momentWeakHolomorphicJointMollifierLowerBound_le_mollification 0 ≤ |sourceJointCoverTime q| + ‖sourceJointRealTimeCLM n‖ := add_nonneg (abs_nonneg _) (norm_nonneg _) - linarith + linarith only [hn] calc C ≤ momentWeakJointCoverFiniteMinorant K F (q - y) := by dsimp [C, momentWeakHolomorphicJointMollifierLowerBound, momentWeakJointCoverFiniteMinorant] - nlinarith [BodyScale.canonicalScale_pos K] + nlinarith only [hmin, BodyScale.canonicalScale_pos K] _ ≤ momentWeakJointCoverUpperEnvelope K F htransport p (q - y) := momentWeakJointCoverFiniteMinorant_le_upperEnvelope @@ -270,7 +270,7 @@ private theorem integrable_exp_neg_momentWeakHolomorphicStrictJointTorusWeight momentWeakHolomorphicStrictJointTorusWeight_norm_coercivity K F htransport p k t hε₀.le hε₁ q dsimp [δ, C] - linarith + linarith only [hc] private theorem momentWeakHolomorphicStrictJointWeightedMeasure_isFinite {n : ℕ} (K : CenteredBody n) @@ -518,8 +518,7 @@ private theorem tendsto_momentWeakHolomorphicStrictJointTorusWeight (sourceJointTimeEmbedding (sourceTorusCoverPoint q) t) rw [momentWeakJointCoverUpperEnvelope_timeEmbedding_of_pos K F htransport p (sourceTorusCoverPoint q) ht] at hcover - simpa only [momentWeakHolomorphicStrictJointTorusWeight, jointSourceTorusWeight_eq_cover, - momentTorusEnvelopeTimeSlice] using hcover + exact hcover private def momentWeakHolomorphicUniformRadialRate {n : ℕ} (K : CenteredBody n) : ℝ := @@ -529,7 +528,6 @@ private def momentWeakHolomorphicUniformRadialRate private theorem momentWeakHolomorphicUniformRadialRate_pos {n : ℕ} (K : CenteredBody n) : 0 < momentWeakHolomorphicUniformRadialRate K := by - unfold momentWeakHolomorphicUniformRadialRate apply lt_min · apply inv_pos.mpr exact_mod_cast momentCoerciveMonomialDegree_pos K @@ -644,15 +642,6 @@ private theorem integrable_momentWeakHolomorphicUniformDensityMajorant (1 : ℝ)) (sourceTorusBaseMeasure n) := by simpa only [neg_mul, mul_one, sourceTorusBaseMeasure] using hrad.mul_prod hang - change Integrable - (fun q : LogTorus n => - Real.exp - (momentWeakHolomorphicUniformCoercivityConstant - K F htransport) * - (Real.exp - (-momentWeakHolomorphicUniformRadialRate K * ‖q.1‖) * - (1 : ℝ))) - (sourceTorusBaseMeasure n) exact hprod.const_mul (Real.exp (momentWeakHolomorphicUniformCoercivityConstant @@ -678,7 +667,7 @@ private theorem exp_neg_momentWeakHolomorphicStrictJointTorusWeight_le_uniform have hcoerce := momentWeakHolomorphicStrictJointTorusWeight_uniform_norm_coercivity K F htransport p k ht hε₀ hε₁ q - linarith + linarith only [hcoerce] private theorem tendsto_momentWeakHolomorphicStrictJointTimeDensity {n : ℕ} (K : CenteredBody n) @@ -856,7 +845,6 @@ private theorem momentTorusTruncatedJetOrderDensity_le_diagonal_mul_cutoff ∑ i : Fin (bergmanDimension K k), (N : ℝ) * momentTorusJetBasisWeight K hk F htransport p q i := by - unfold momentTorusTruncatedJetOrderDensity apply Finset.sum_le_sum intro i _ apply mul_le_mul_of_nonneg_right @@ -881,7 +869,6 @@ private theorem momentPositiveTorusJetSlope_nonneg (p : LogSpace n) (N : ℕ) (q : LogTorus n) : 0 ≤ momentPositiveTorusJetSlope K hk F htransport p N q := by - unfold momentPositiveTorusJetSlope exact div_nonneg (momentTorusTruncatedJetOrderDensity_nonneg K hk F htransport p N q) @@ -903,7 +890,6 @@ private theorem momentPositiveTorusJetSlope_le_cutoff have hdiag := diagonalKernel_momentNormalized_pos K hk F htransport q.1 - unfold momentPositiveTorusJetSlope apply (div_le_iff₀ (mul_pos hkreal hdiag)).mpr calc momentTorusTruncatedJetOrderDensity @@ -957,7 +943,6 @@ private theorem continuous_momentPositiveTorusJetSlope K hk F htransport p N) := by have hkreal : 0 < (k : ℝ) := by exact_mod_cast hk - unfold momentPositiveTorusJetSlope apply (continuous_momentTorusTruncatedJetOrderDensity K hk F htransport p N).div @@ -1017,7 +1002,6 @@ private theorem continuous_momentTorusJetSlope normalizedTargetBodyMeasure K) (p : LogSpace n) (k : ℕ) : Continuous (momentTorusJetSlope K F htransport p k) := by - classical change Continuous (fun q : LogTorus n => if hk : 0 < k then @@ -1134,7 +1118,6 @@ private theorem momentPositiveTorusJetSlope_le_cover_positive_secant DifferentiableAt ℝ (momentJetGeodesic K hk F htransport p N (sourceTorusCoverPoint q)) 0 := by - unfold momentJetGeodesic exact (hasDerivAt_logarithmicPotential (momentHolomorphicBasisWeight K hk F htransport @@ -1169,7 +1152,6 @@ private theorem momentPositiveJointGeodesic_le_tailUpperEnvelope calc momentPositiveJointGeodesic K F htransport p k w ≤ momentJointTailSup K F htransport p r w := by - unfold momentJointTailSup apply le_csSup (momentJointTailSup_range_bddAbove K F htransport p r w) @@ -1385,7 +1367,7 @@ private theorem ae_limsup_momentTorusJetSlope_le_envelope_positive_secant Real.log (finiteEnergySourcePartition F / normalizedVolume K.carrier)) - linarith + linarith only [h] exact limsup_momentTorusJetSlope_le_envelope_positive_secant K F htransport p (x, θ) hinterior hmax ht @@ -1431,7 +1413,6 @@ private theorem momentBodyEnvelopePositiveSecant_le_canonicalScale (q : LogTorus n) : momentBodyEnvelopePositiveSecant K p t q ≤ BodyScale.canonicalScale K := by - unfold momentBodyEnvelopePositiveSecant apply (div_le_iff₀ ht).mpr rw [momentBodyTorusWeight_zero] have h := momentTorusEnvelopeTimeSlice_le_normalized_add @@ -1441,13 +1422,12 @@ private theorem momentBodyEnvelopePositiveSecant_le_canonicalScale momentBodyTorusWeight K p t q ≤ momentNormalizedPotential (momentBodyOptimizer K) q.1 + BodyScale.canonicalScale K * t at h - linarith + linarith only [h] private theorem measurable_momentBodyEnvelopePositiveSecant {n : ℕ} (K : CenteredBody n) (p : LogSpace n) (t : ℝ) : Measurable (momentBodyEnvelopePositiveSecant K p t) := by - unfold momentBodyEnvelopePositiveSecant exact ((measurable_momentBodyTorusWeight K p t).sub (measurable_momentBodyTorusWeight K p 0)).div_const t @@ -1478,8 +1458,7 @@ private theorem ae_limsup_momentTorusJetSlope_le_bodySecant_base (momentBodyOptimizer_transport K) p k q) atTop ≤ momentBodyEnvelopePositiveSecant K p t q filter_upwards [hprod] with q hq - simpa only [momentBodyEnvelopePositiveSecant, momentBodyTorusWeight, - momentTorusEnvelopeTimeSlice_zero, Prod.mk.eta] using hq q.2 + exact hq q.2 private theorem ae_limsup_momentTorusJetSlope_le_bodySecant_Gibbs {n : ℕ} (K : CenteredBody n) @@ -1493,17 +1472,6 @@ private theorem ae_limsup_momentTorusJetSlope_le_bodySecant_Gibbs momentBodyEnvelopePositiveSecant K p t q := by have hbase := ae_limsup_momentTorusJetSlope_le_bodySecant_base K p ht - change - ∀ᵐ q : LogTorus n - ∂((sourceTorusBaseMeasure n).withDensity - (fun q => ENNReal.ofReal - (sourceNormalizedDensity - (momentBodyTorusWeight K p) 0 q))), - Filter.limsup - (fun k : ℕ => momentTorusJetSlope - K (momentBodyOptimizer K) - (momentBodyOptimizer_transport K) p k q) atTop ≤ - momentBodyEnvelopePositiveSecant K p t q exact (withDensity_absolutelyContinuous (sourceTorusBaseMeasure n) (fun q => ENNReal.ofReal @@ -1597,9 +1565,6 @@ private theorem upperSemicontinuous_of_complexTorusCover apply upperSemicontinuous_iff_isOpen_preimage.mpr intro a apply (complexTorusCoverProjection_isOpenQuotientMap n).isQuotientMap.isOpen_preimage.mp - change IsOpen - ((fun z : LogSpace n => - f (complexTorusCoverProjection n z)) ⁻¹' Set.Iio a) exact hf.isOpen_preimage a end BergmanJetPortmanteauSlopeBridge @@ -1747,8 +1712,7 @@ private theorem limsup_measureReal_moving_upperLevel_le_of_probability_tendsto (μ := (μ : Measure X)) (fun N : ℕ => (hclosed N).measurableSet.nullMeasurableSet) hanti ⟨0, measure_ne_top (μ : Measure X) (S 0)⟩ - simpa only [Measure.real, comp_def] using - (ENNReal.tendsto_toReal + exact (ENNReal.tendsto_toReal (measure_ne_top (μ : Measure X) (⋂ N : ℕ, S N))).comp hENN have hlimit : @@ -1956,7 +1920,7 @@ private theorem angularSourceFreeScalarRadialGraphTest_barPartial_memLp angularSourceFreeScalarRadialGraphTest_periodic hperiod m apply (continuous_torusFunctionBarPartialRepresentative_of_periodic ((contDiff_angularSourceFreeScalarRadialGraphTest hU m).of_le - (by norm_num)) hVp).memLp_of_hasCompactSupport + (by decide)) hVp).memLp_of_hasCompactSupport exact hasCompactSupport_torusFunctionBarPartialRepresentative_of_periodic V hVp (hasCompactSupport_angularSourceFreeScalarRadialGraphTest U m) @@ -2078,7 +2042,7 @@ private theorem torusFunctionBarPartialRepresentative_angularSourceFreeScalarRad unfold angularSourceFreeScalarRadialGraphTest rw [barPartial_mul (contDiff_complexSourceCoverRadialCutoff_all m 1) - (hU.of_le (by norm_num)) z j] + (hU.of_le (by decide)) z j] ring unfold sourceTorusBarPartial change torusScalarRepresentative @@ -2105,7 +2069,6 @@ private theorem angularSourceFreeScalarRadialGraphTest_scalar_L2_tendsto have hcut := angularSourceRadialCutoff_smul_L2_tendsto hu apply Filter.Tendsto.congr' _ hcut filter_upwards [] with m - unfold angularScalarL2OfRepresentative apply MemLp.toLp_congr filter_upwards [] with q rw [torusScalarRepresentative_angularSourceFreeScalarRadialGraphTest] @@ -2175,7 +2138,7 @@ private theorem angularSourceFreeTruncatedGradientL2_ae_eq rw [hder, hcomm, torusFunctionBarPartialRepresentative_angularSourceFreeScalarRadialGraphTest hU m q] - simp only [Complex.coe_smul, add_sub_cancel_right] + simp only [add_sub_cancel_right] private theorem angularSourceFreeTruncatedGradientL2_resolvent_pairing {n : ℕ} {a : LogTorus n → ℝ} (ha : Continuous a) @@ -2393,7 +2356,7 @@ private theorem angularSourceFreeResolventDefectPairingBound ‖angularSourceFreeInverseRootGradientL2 hr‖ * ‖g - angularWeakScalarResolventCLM a g‖ := by let ha2 : ContDiff ℝ 2 (angularCoverPotential a) := - ha3.of_le (by norm_num) + ha3.of_le (by decide) let W : angularWeightedFormL2 a := WithLp.snd (angularWeakDolbeaultResolvent a g : @@ -2465,10 +2428,6 @@ private theorem angularSourceFreeBrascampLieb_of_mem_resolventDefect_closure f (T.range : Set (angularWeightedScalarL2 a)) hf (norm_nonneg r) intro v hv obtain ⟨g, rfl⟩ := hv - change - ‖@inner ℂ (angularWeightedScalarL2 a) _ f - (g - angularWeakScalarResolventCLM a g)‖ ≤ - ‖r‖ * ‖g - angularWeakScalarResolventCLM a g‖ exact angularSourceFreeResolventDefectPairingBound ha ha3 hH hU hperiod hu hr g @@ -2595,7 +2554,7 @@ private theorem momentWeakHolomorphicJointMollification_le_support_add LaurentJetSeparatedness.bodyRadius K) * 2 := by have htwo : (2 : ℝ) * ‖y.1‖ ≤ 2 := by - linarith + linarith only [hyfst] exact add_le_add (le_refl _) (mul_le_mul_of_nonneg_left htwo hnR) have htime : @@ -2651,7 +2610,7 @@ private theorem momentWeakHolomorphicJointMollification_le_support_add dsimp [C, momentWeakHolomorphicJointMollifierSupportError, momentWeakJointCoverFiniteMajorant] - linarith + linarith only [hscaled, hsupport, hnormpot] _ = C := by rw [MeasureTheory.integral_mul_const, integral_sourceJointTrueRadialMollifier, one_mul] @@ -2721,7 +2680,7 @@ private theorem momentWeakHolomorphicStrictJointTorusWeight_le_support_add simp only [sourceJointTimeEmbedding, sourceTorusCoverPoint, MatrixTorusBochnerBridge.matrixSourceCoverPotential_logarithmicPoint] rw [href] - nlinarith + linarith only [hstrict', hweak'] private theorem momentWeakHolomorphicStrictJoint_centered_mem_resolventDefect_range_closure {n : ℕ} (K : CenteredBody n) @@ -2796,7 +2755,6 @@ private theorem upperRegularization_sourceJointCover_translate_le have happrox : ∃ c ∈ localUpperBounds f q, c < upperRegularization f q + η := by - unfold upperRegularization exact exists_lt_of_csInf_lt (hlocal q) (lt_add_of_pos_right _ hη) obtain ⟨c, hc, hcη⟩ := happrox @@ -2813,13 +2771,11 @@ private theorem upperRegularization_sourceJointCover_translate_le 𝓝 ((Homeomorph.addRight d) q), f y ≤ c + C := by rw [← (Homeomorph.addRight d).map_nhds_eq q, Filter.eventually_map] - simpa only [Homeomorph.addRight, Homeomorph.homeomorph_mk_coe, Equiv.coe_addRight, - add_comm] using hnear - simpa only [add_comm, Homeomorph.addRight, Homeomorph.homeomorph_mk_coe, - Equiv.coe_addRight] using hevent + exact hnear + exact hevent have hreg := upperRegularization_le_of_eventually f (q + d) htranslate - linarith + linarith only [hcη, hreg] private theorem upperRegularization_sourceJointCover_le_translate {n : ℕ} (f : SourceJointComplexCover n → ℝ) @@ -2836,7 +2792,6 @@ private theorem upperRegularization_sourceJointCover_le_translate have happrox : ∃ c ∈ localUpperBounds f (q + d), c < upperRegularization f (q + d) + η := by - unfold upperRegularization exact exists_lt_of_csInf_lt (hlocal (q + d)) (lt_add_of_pos_right _ hη) obtain ⟨c, hc, hcη⟩ := happrox @@ -2849,18 +2804,16 @@ private theorem upperRegularization_sourceJointCover_le_translate have hevent : ∀ᶠ y : SourceJointComplexCover n in 𝓝 ((Homeomorph.addRight d) q), f y ≤ c := by - simpa only [Homeomorph.addRight, Homeomorph.homeomorph_mk_coe, Equiv.coe_addRight, - add_comm] using hc + exact hc rw [← (Homeomorph.addRight d).map_nhds_eq q, Filter.eventually_map] at hevent - simpa only [add_comm, Homeomorph.addRight, Homeomorph.homeomorph_mk_coe, - Equiv.coe_addRight] using hevent + exact hevent have hnear : ∀ᶠ y : SourceJointComplexCover n in 𝓝 q, f y ≤ c := htranslate.mono fun y hy => (hshift y).trans hy have hreg := upperRegularization_le_of_eventually f q hnear - linarith + linarith only [hcη, hreg] private def momentWeakJointRealTimeShift (n : ℕ) (h : ℝ) : SourceJointComplexCover n := @@ -2889,7 +2842,7 @@ private theorem momentWeakJointCoverFiniteGeodesic_le_time_translate (q + momentWeakJointRealTimeShift n h) := by have htime : sourceJointCoverTime q ≤ sourceJointCoverTime q + h := by - linarith + linarith only [hh] have hmono := monotone_momentJetGeodesic K (Nat.zero_lt_succ k) F htransport p q.1 (Nat.floor (BodyScale.canonicalScale K * @@ -2916,7 +2869,7 @@ private theorem momentWeakJointCoverFiniteGeodesic_time_translate_le BodyScale.canonicalScale K * h := by have htime : sourceJointCoverTime q ≤ sourceJointCoverTime q + h := by - linarith + linarith only [hh] have hshift := momentWeakBodyScaleJetGeodesic_time_shift_le K F htransport p q.1 k htime unfold momentWeakJointCoverFiniteGeodesic @@ -2937,7 +2890,6 @@ private theorem momentWeakJointCoverTailSup_le_time_translate momentWeakJointCoverTailSup K F htransport p r q ≤ momentWeakJointCoverTailSup K F htransport p r (q + momentWeakJointRealTimeShift n h) := by - unfold momentWeakJointCoverTailSup apply csSup_le (Set.range_nonempty _) rintro _ ⟨j, rfl⟩ calc @@ -2972,7 +2924,6 @@ private theorem momentWeakJointCoverTailSup_time_translate_le (q + momentWeakJointRealTimeShift n h) ≤ momentWeakJointCoverTailSup K F htransport p r q + BodyScale.canonicalScale K * h := by - unfold momentWeakJointCoverTailSup apply csSup_le (Set.range_nonempty _) rintro _ ⟨j, rfl⟩ calc @@ -3010,7 +2961,6 @@ private theorem momentWeakJointCoverTailUpperEnvelope_le_time_translate momentWeakJointCoverTailUpperEnvelope K F htransport p r (q + momentWeakJointRealTimeShift n h) := by - unfold momentWeakJointCoverTailUpperEnvelope exact upperRegularization_sourceJointCover_le_translate (momentWeakJointCoverTailSup K F htransport p r) (momentWeakJointCoverTailSup_localUpperBounds_nonempty @@ -3032,7 +2982,6 @@ private theorem momentWeakJointCoverTailUpperEnvelope_time_translate_le momentWeakJointCoverTailUpperEnvelope K F htransport p r q + BodyScale.canonicalScale K * h := by - unfold momentWeakJointCoverTailUpperEnvelope exact upperRegularization_sourceJointCover_translate_le (momentWeakJointCoverTailSup K F htransport p r) (momentWeakJointCoverTailSup_localUpperBounds_nonempty @@ -3110,8 +3059,8 @@ private theorem sourceJointTimeEmbedding_sub_eq_add_realTimeShift (sourceJointTimeEmbedding z s - y) + momentWeakJointRealTimeShift n (t - s) := by apply Prod.ext - · simp only [sourceJointTimeEmbedding, Prod.fst_sub, momentWeakJointRealTimeShift, - Complex.ofReal_sub, Prod.fst_add, add_zero] + · simp only [sourceJointTimeEmbedding, Prod.fst_sub, momentWeakJointRealTimeShift, Prod.fst_add, + add_zero] · simp only [sourceJointTimeEmbedding, Prod.snd_sub, momentWeakJointRealTimeShift, Complex.ofReal_sub, Prod.snd_add] ring @@ -3141,7 +3090,7 @@ private theorem abs_momentWeakJointCoverUpperEnvelope_timeEmbedding_sub_le rw [hident] rw [abs_of_nonneg (sub_nonneg.mpr hmono), abs_of_nonneg hh] - linarith + linarith only [hupper] · have hh : 0 ≤ s - t := sub_nonneg.mpr hts have hident := sourceJointTimeEmbedding_sub_eq_add_realTimeShift @@ -3154,7 +3103,7 @@ private theorem abs_momentWeakJointCoverUpperEnvelope_timeEmbedding_sub_le rw [hident] rw [abs_of_nonpos (sub_nonpos.mpr hmono), abs_of_nonpos (sub_nonpos.mpr hts)] - linarith + linarith only [hupper] private theorem abs_momentWeakHolomorphicJointTrueRadialMollification_time_sub_le {n : ℕ} (K : CenteredBody n) @@ -3272,7 +3221,6 @@ private theorem abs_momentWeakHolomorphicStrictJointTorusWeight_time_sub_le jointSourceTorusWeight_eq_cover, momentWeakHolomorphicStrictJointTorusWeight, jointSourceTorusWeight_eq_cover] - unfold momentWeakHolomorphicStrictJointCoverWeight simp only [sourceJointTimeEmbedding] calc |((1 - ε) * @@ -3395,7 +3343,7 @@ private theorem abs_jointSourceCoverVelocity_momentWeakHolomorphicJointMollifica hE (sourceJointTimeEmbedding z t) refine hconv.integrable.congr (Filter.Eventually.of_forall fun y => ?_) - simp only [ContinuousLinearMap.lsmul_apply, smul_eq_mul, E, ρ] + simp only [ContinuousLinearMap.lsmul_apply, smul_eq_mul, ρ] have hs : Integrable (fun y : SourceJointComplexCover n => ρ y * E (sourceJointTimeEmbedding z s - y)) @@ -3407,7 +3355,7 @@ private theorem abs_jointSourceCoverVelocity_momentWeakHolomorphicJointMollifica hE (sourceJointTimeEmbedding z s) refine hconv.integrable.congr (Filter.Eventually.of_forall fun y => ?_) - simp only [ContinuousLinearMap.lsmul_apply, smul_eq_mul, E, ρ] + simp only [ContinuousLinearMap.lsmul_apply, smul_eq_mul, ρ] have hd : Integrable (fun y : SourceJointComplexCover n => ρ y * E (sourceJointTimeEmbedding z t - y) - @@ -3416,7 +3364,7 @@ private theorem abs_jointSourceCoverVelocity_momentWeakHolomorphicJointMollifica have hmajor : Integrable (fun y : SourceJointComplexCover n => |ρ y| * B) (volume : Measure (SourceJointComplexCover n)) := by - simpa only [Real.norm_eq_abs] using hρ.norm.mul_const B + exact hρ.norm.mul_const B have hpoint (y : SourceJointComplexCover n) : ‖ρ y * E (sourceJointTimeEmbedding z t - y) - ρ y * E (sourceJointTimeEmbedding z s - y)‖ ≤ @@ -3831,8 +3779,7 @@ private theorem sourceFreeProbability_memLp_two_of_bound let : IsProbabilityMeasure (sourceProbability a t) := hprob apply MemLp.of_bound hF.aestronglyMeasurable |B| filter_upwards [] with q - simpa only [Real.norm_eq_abs] using - (hbound q).trans (le_abs_self B) + exact (hbound q).trans (le_abs_self B) private theorem sourceFreeProbabilityVariance_eq_momentVariance {n : ℕ} @@ -3971,8 +3918,7 @@ private theorem hasDerivAt_sourceFreeLogPartition_of_majorant (fun u : ℝ => -Real.log (sourcePartition a u)) (sourceFirstMoment a f t / sourcePartition a t) t have h := (hfirst.log hpart.ne').neg - refine (h.congr_of_eventuallyEq - (Filter.Eventually.of_forall fun _ => rfl)).congr_deriv ?_ + refine h.congr_deriv ?_ ring private theorem hasDerivAt_sourceFreeFirstMoment_of_majorant @@ -4048,8 +3994,7 @@ private theorem hasDerivAt_sourceFreeFirstMoment_of_majorant ((j u q - f u q ^ 2) * sourceTimeDensity a u q) u := by filter_upwards [] with q u _ have hprod := (hfderiv u q).fun_mul (hderiv u q).neg.exp - refine (hprod.congr_of_eventuallyEq - (Filter.Eventually.of_forall fun _ => rfl)).congr_deriv ?_ + refine hprod.congr_deriv ?_ dsimp [sourceTimeDensity] ring have hfirstint := sourceFreeWeightedObservable_integrable_of_majorant @@ -4140,7 +4085,7 @@ private theorem zero_lt_of_mem_positiveHalfBall have habs : |u - t| < t / 2 := by simpa only [mem_ball, Real.dist_eq] using hu have hlower := (abs_lt.mp habs).1 - linarith + linarith only [hlower, ht] private theorem sourceFreeLogCurvature_nonneg_of_complexBrascamp_and_schur {n : ℕ} @@ -4292,8 +4237,7 @@ private theorem contDiff_momentWeakHolomorphicStrictJointPhysicalMixedCover (contDiff_momentWeakHolomorphicStrictJointCoverWeight K F htransport p ε k)) 4 have hv : ContDiff ℝ 3 (jointSourceCoverVelocity G) := by - unfold jointSourceCoverVelocity - exact (hG.fderiv_right (m := 3) (by norm_num)).clm_apply + exact (hG.fderiv_right (m := 3) (by rfl)).clm_apply contDiff_const exact Complex.ofRealCLM.contDiff.comp (hv.comp (contDiff_id.prodMk contDiff_const)) @@ -4476,7 +4420,7 @@ private theorem barPartialRepresentative_centeredCover unfold momentWeakHolomorphicStrictJointPhysicalCenteredCover rw [barPartial_sub ((contDiff_momentWeakHolomorphicStrictJointPhysicalMixedCover - K F htransport p ε k t).of_le (by norm_num)) + K F htransport p ε k t).of_le (by decide)) contDiff_const z i] simp only [barPartialCoordinate, fderiv_fun_const, Pi.zero_apply, _root_.zero_apply, mul_zero, add_zero, zero_div, sub_zero] @@ -4635,7 +4579,7 @@ private theorem centeredVelocity_probability_integral_eq_zero ν, A] change (∫ q : LogTorus n, ((v q - A : ℝ) : ℂ) ∂ν) = 0 rw [integral_complex_ofReal, hreal] - norm_num + rfl private theorem momentWeakHolomorphicStrictJointPhysicalCenteredVelocity_angular_integral_eq_zero {n : ℕ} (K : CenteredBody n) @@ -4719,7 +4663,7 @@ private theorem continuous_angularSourceFreeInverseRootGradientField have hroot := continuous_angularMatrixSquareRoot_inverse (continuous_angularTorusComplexHessianMatrix ha2) hH have hrow := continuous_torusFunctionBarPartialRepresentative_of_periodic - (hU.of_le (by norm_num)) hperiod + (hU.of_le (by decide)) hperiod change Continuous (fun q : LogTorus n => WithLp.toLp 2 (fun i : Fin n => @@ -5034,30 +4978,15 @@ private theorem momentWeakHolomorphicStrictJointPhysicalBrascamp (momentWeakHolomorphicStrictJointPhysicalCenteredCover_periodic K F htransport p ε k t) hu hr hclosure - have hleft : hu.toLp (torusScalarRepresentative U) = - hv.toLp - (momentWeakHolomorphicStrictJointPhysicalCenteredVelocity - K F htransport p ε k t) := by - apply MemLp.toLp_congr - filter_upwards [] with q - exact congrFun hUeq q - have hnorm' : - ‖hv.toLp - (momentWeakHolomorphicStrictJointPhysicalCenteredVelocity - K F htransport p ε k t)‖ ≤ - ‖hr.toLp (angularSourceFreeInverseRootGradientField a U)‖ := by - change - ‖hu.toLp (torusScalarRepresentative U)‖ ≤ - ‖hr.toLp (angularSourceFreeInverseRootGradientField a U)‖ - at hnorm - rw [hleft] at hnorm - exact hnorm + change + ‖hu.toLp (torusScalarRepresentative U)‖ ≤ + ‖hr.toLp (angularSourceFreeInverseRootGradientField a U)‖ at hnorm rw [momentWeakHolomorphicStrictJointPhysicalVariance_eq_angular_L2_norm_sq_div_partition K F htransport p ε hε₀ hε₁ k t hB, rowEnergy_probabilityMean_eq_L2_norm_sq_div_partition K F htransport p ε hε₀ hε₁ k t hJ] exact mul_le_mul_of_nonneg_left - ((sq_le_sq₀ (norm_nonneg _) (norm_nonneg _)).mpr hnorm') + ((sq_le_sq₀ (norm_nonneg _) (norm_nonneg _)).mpr (by simpa only [hUeq] using hnorm)) (inv_nonneg.mpr (momentWeakHolomorphicStrictJointPartition_pos K F htransport p k t hε₀ hε₁).le) @@ -5142,7 +5071,6 @@ private theorem convexOn_momentWeakHolomorphicStrictJointLogPartition_Ioi_of_tim Function.Periodic G (imaginaryShift d, (0 : ℂ)) := momentWeakHolomorphicStrictJointCoverWeight_spatial_periodic K F htransport p ε k - change ConvexOn ℝ (Set.Ioi 0) (sourceLogPartition a) apply convexOn_sourceFreeLogPartition_Ioi_of_complexBrascamp_and_schur a f j E (fun t => continuous_momentWeakHolomorphicStrictJointTorusWeight @@ -5280,7 +5208,7 @@ private theorem exp_neg_canonicalScale_mul_volume_le_momentBodyPartition momentNormalizedPotential (momentBodyOptimizer K) q.1 + BodyScale.canonicalScale K * t at hupper - linarith + linarith only [hupper] _ = momentBodyPartition K p t := (momentBodyPartition_eq_integral K p t).symm @@ -5289,7 +5217,6 @@ private theorem exp_neg_canonicalScale_mul_le_momentBodyNormalizedPartition (p : LogSpace n) {t : ℝ} (ht : 0 < t) : Real.exp (-(BodyScale.canonicalScale K * t)) ≤ momentBodyNormalizedPartition K p t := by - unfold momentBodyNormalizedPartition apply (le_div_iff₀ K.volume_pos).mpr exact exp_neg_canonicalScale_mul_volume_le_momentBodyPartition K p ht @@ -5309,7 +5236,7 @@ private theorem momentBodyLogPartition_le_canonicalScale_mul_of_pos have hlog := Real.strictMonoOn_log.monotoneOn hleft hright hlower rw [Real.log_exp] at hlog unfold momentBodyLogPartition - linarith + linarith only [hlog] private theorem convexOn_Ici_of_convexOn_Ioi_and_zero_linear_upper (f : ℝ → ℝ) (C : ℝ) @@ -5323,8 +5250,8 @@ private theorem convexOn_Ici_of_convexOn_Ioi_and_zero_linear_upper intro y a b hy ha hb hab rcases hb.eq_or_lt with hbzero | hbpos · have hb0 : b = 0 := hbzero.symm - have ha1 : a = 1 := by linarith - simp only [ha1, mul_zero, hb0, zero_mul, add_zero, hfzero, Std.le_refl] + have ha1 : a = 1 := by linarith only [hbzero, hab] + simp only [mul_zero, hb0, zero_mul, add_zero, hfzero, Std.le_refl] · let e : ℕ → ℝ := fun j => 1 / ((j : ℝ) + 1) have he : Tendsto e atTop (𝓝 (0 : ℝ)) := by exact tendsto_one_div_add_atTop_nhds_zero_nat @@ -5367,7 +5294,7 @@ private theorem convexOn_Ici_of_convexOn_Ioi_and_zero_linear_upper calc f (a * e j + b * y) ≤ a * f (e j) + b * f y := by - simpa only [smul_eq_mul] using hcv + exact hcv _ ≤ a * (C * e j) + b * f y := by gcongr refine ⟨convex_Ici 0, ?_⟩ @@ -5381,15 +5308,13 @@ private theorem convexOn_Ici_of_convexOn_Ioi_and_zero_linear_upper · have hy0 : y = 0 := hyzero.symm subst y simp only [smul_eq_mul, mul_zero, add_zero, hfzero, Std.le_refl] - · simpa only [smul_eq_mul, mul_zero, zero_add, ge_iff_le] using - hsegment y a b hypos ha hb hab + · exact hsegment y a b hypos ha hb hab · rcases hy.eq_or_lt with hyzero | hypos · have hy0 : y = 0 := hyzero.symm subst y - have hswap := hsegment x b a hxpos hb ha (by linarith) + have hswap := hsegment x b a hxpos hb ha (by linarith only [hab]) simpa only [smul_eq_mul, mul_zero, add_zero, ge_iff_le, add_comm] using hswap - · simpa only [smul_eq_mul] using - hfconv.2 hxpos hypos ha hb hab + · exact hfconv.2 hxpos hypos ha hb hab private theorem convexOn_momentWeakHolomorphicEnvelopeLogPartition_Ioi_of_strict {n : ℕ} (K : CenteredBody n) @@ -5416,9 +5341,9 @@ private theorem convexOn_momentWeakHolomorphicEnvelopeLogPartition_Ioi_of_strict have hm : 0 < a * x + b * y := by rcases ha.eq_or_lt with hazero | hapos · have ha0 : a = 0 := hazero.symm - have hb1 : b = 1 := by linarith + have hb1 : b = 1 := by linarith only [hazero, hab] simp only [ha0, zero_mul, hb1, one_mul, zero_add, hy] - · nlinarith [mul_pos hapos hx, mul_nonneg hb hy.le] + · linarith only [mul_pos hapos hx, mul_nonneg hb hy.le] have hmid := tendsto_momentWeakHolomorphicStrictJointLogPartition K F htransport p ε hε hε₀ hε₁ hm @@ -5428,22 +5353,10 @@ private theorem convexOn_momentWeakHolomorphicEnvelopeLogPartition_Ioi_of_strict have hright := tendsto_momentWeakHolomorphicStrictJointLogPartition K F htransport p ε hε hε₀ hε₁ hy - change - sourceLogPartition - (fun (t : ℝ) (q : LogTorus n) => - momentTorusEnvelopeTimeSlice K F htransport p q t) - (a * x + b * y) ≤ - a * sourceLogPartition - (fun (t : ℝ) (q : LogTorus n) => - momentTorusEnvelopeTimeSlice K F htransport p q t) x + - b * sourceLogPartition - (fun (t : ℝ) (q : LogTorus n) => - momentTorusEnvelopeTimeSlice K F htransport p q t) y apply le_of_tendsto_of_tendsto hmid ((hleft.const_mul a).add (hright.const_mul b)) exact Filter.Eventually.of_forall fun k => by - simpa only [smul_eq_mul] using - (hstrict k).2 hx hy ha hb hab + exact (hstrict k).2 hx hy ha hb hab private theorem convexOn_momentBodyLogPartition_Ioi_of_holomorphicStrict {n : ℕ} (K : CenteredBody n) @@ -5534,10 +5447,10 @@ private theorem convexOn_momentBodyLogPartition_Ici have hεle (k : ℕ) : ε k ≤ 1 := by have hk : (1 : ℝ) ≤ (k : ℝ) + 1 := by have hnonneg : 0 ≤ (k : ℝ) := Nat.cast_nonneg k - linarith + linarith only [] dsimp [ε] simpa only [one_div, ge_iff_le, ne_eq, one_ne_zero, not_false_eq_true, - div_self] using one_div_le_one_div_of_le (by norm_num : (0 : ℝ) < 1) hk + div_self] using one_div_le_one_div_of_le (by exact zero_lt_one : (0 : ℝ) < 1) hk have hε : Tendsto ε atTop (𝓝 (0 : ℝ)) := by exact tendsto_one_div_add_atTop_nhds_zero_nat apply convexOn_momentBodyLogPartition_Ici_of_holomorphicStrict @@ -5568,7 +5481,6 @@ private theorem analyticAt_momentHolomorphicRepresentative (p : TorusCharacters.LogSpace n) : AnalyticAt ℂ (momentHolomorphicRepresentative K hk F htransport s) p := by - classical unfold momentHolomorphicRepresentative rw [LinearMap.comp_apply, Finsupp.linearCombination_apply] unfold Finsupp.sum @@ -5604,7 +5516,6 @@ private theorem momentHolomorphicJetMap_apply_eq_iteratedFDeriv (momentHolomorphicRepresentative K hk F htransport s) p) (fun q => Pi.single (multiIndexCoordinate α.val q) (1 : ℂ)) := by - classical unfold momentHolomorphicJetMap momentHolomorphicRepresentative rw [LinearMap.comp_apply, LinearMap.comp_apply, @@ -5655,7 +5566,7 @@ private theorem momentHolomorphicJetMap_apply_eq_iteratedFDeriv rw [iteratedFDeriv_const_smul_apply (LaurentJetSeparatedness.analyticAt_normalizedHolomorphicMonomial K hk (momentNormalizedPotential F) u p).contDiffAt] - simp only [holomorphicMonomialJet, smul_eq_mul, smul_apply] + simp only [holomorphicMonomialJet, smul_apply] private theorem momentHolomorphicRepresentative_iteratedFDeriv_comp_perm {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -5690,7 +5601,6 @@ private theorem moment_iteratedFDeriv_coordinate_eq_zero_of_mem_jetFiltration (iteratedFDeriv ℂ r (momentHolomorphicRepresentative K hk F htransport s) p) (fun a => Pi.single (q a) (1 : ℂ)) = 0 := by - classical subst r obtain ⟨σ, hσ⟩ := exists_multiIndexCoordinate_perm α q hcount let β : JetCounting.JetIndexLT n ((∑ i, α i) + 1) := @@ -5720,8 +5630,7 @@ private theorem moment_iteratedFDeriv_coordinate_eq_zero_of_mem_jetFiltration (1 : ℂ)) ∘ σ) := by congr 1 funext a - simpa only [Function.comp_apply] using - congrArg (fun i : Fin n => Pi.single i (1 : ℂ)) (hσ a) + exact congrArg (fun i : Fin n => Pi.single i (1 : ℂ)) (hσ a) _ = (iteratedFDeriv ℂ (∑ i, α i) (momentHolomorphicRepresentative K hk F htransport s) p) (fun a => Pi.single (multiIndexCoordinate α a) (1 : ℂ)) := @@ -5741,7 +5650,6 @@ private theorem moment_iteratedFDeriv_eq_zero_of_mem_jetFiltration K hk F htransport p (r + 1)) : iteratedFDeriv ℂ r (momentHolomorphicRepresentative K hk F htransport s) p = 0 := by - classical apply ContinuousMultilinearMap.toMultilinearMap_injective apply Module.Basis.ext_multilinear (fun _ : Fin r => Pi.basisFun ℂ (Fin n)) @@ -5875,11 +5783,10 @@ private theorem continuous_momentLocalCoverPotential {n : ℕ} (K : CenteredBody n) (F : SourceFiniteEnergyPotential K) : Continuous (momentLocalCoverPotential K F) := by - unfold momentLocalCoverPotential apply (continuous_momentNormalizedPotential F).comp (f := realLogCoordinate) - unfold realLogCoordinate - fun_prop + exact continuous_pi fun i ↦ + Continuous.const_mul (Continuous.comp' Complex.continuous_re (continuous_apply i)) 2 private def momentLocalPotentialMaximum {n : ℕ} (K : CenteredBody n) (F : SourceFiniteEnergyPotential K) @@ -6282,7 +6189,7 @@ private theorem eventually_momentPositiveJointGeodesic_local_le_maximum_add [eventually_momentPositiveJointGeodesic_local_bound K F htransport p R hR, herr] with k hbound hsmall w hw - exact (hbound w hw).trans (by linarith) + exact (hbound w hw).trans (by linarith only [hsmall]) private theorem eventually_momentJointTailSup_local_le_maximum_add {n : ℕ} (K : CenteredBody n) @@ -6318,7 +6225,6 @@ private theorem eventually_momentJointTailUpperEnvelope_local_le_maximum_add [eventually_momentJointTailSup_local_le_maximum_add K F htransport p R hR hε] with r hr w hw - unfold momentJointTailUpperEnvelope apply upperRegularization_le_of_eventually exact Filter.mem_of_superset ((isOpen_sourceLocalJointRegion p R).mem_nhds hw) @@ -6416,7 +6322,7 @@ private theorem momentBodyPartition_ge_local_box (momentBodyOptimizer_transport K) (0 : LogSpace n) q R t hR ht hcover unfold momentBodyTorusWeight - exact Real.exp_le_exp.mpr (by linarith) + exact Real.exp_le_exp.mpr (by linarith only [hlocal]) calc Real.exp (-momentLocalPotentialMaximum K @@ -6489,7 +6395,7 @@ private theorem momentBodyLogPartition_le_linear sourceLocalBallVolumeConstant n R * Real.exp (-(n : ℝ) * t)) + Real.log (normalizedVolume K.carrier) := by - linarith + linarith only [hlog] _ = (n : ℝ) * t + (momentLocalPotentialMaximum K (momentBodyOptimizer K) (0 : LogSpace n) R - @@ -6516,7 +6422,7 @@ private theorem exists_momentBodyLogPartition_linear_growth · calc momentBodyLogPartition K (0 : LogSpace n) t ≤ (n : ℝ) * t + momentBodyLocalPartitionGrowthConstant K 1 := - momentBodyLogPartition_le_linear K 1 t (by norm_num) ht + momentBodyLogPartition_le_linear K 1 t (by exact zero_lt_one) ht _ ≤ (n : ℝ) * t + max (momentBodyLocalPartitionGrowthConstant K 1) 0 := by gcongr @@ -6585,7 +6491,7 @@ private theorem nonnegative_le_exp_mul_one_sub_exp_neg simp only [add_neg_cancel, Real.exp_zero] rw [hcancel] at hexp have hfactor : u * Real.exp (-u) ≤ 1 - Real.exp (-u) := by - nlinarith + linarith only [hexp] calc u = u * 1 := by ring _ ≤ u * Real.exp (C - u) := by @@ -6608,7 +6514,6 @@ private theorem measurable_momentBodyEnvelopeRelativeDensity {n : ℕ} (K : CenteredBody n) (p : LogSpace n) (t : ℝ) : Measurable (momentBodyEnvelopeRelativeDensity K p t) := by - unfold momentBodyEnvelopeRelativeDensity exact Real.continuous_exp.measurable.comp ((measurable_momentBodyTorusWeight K p t).sub (measurable_momentBodyTorusWeight K p 0)).neg @@ -6686,7 +6591,6 @@ private theorem ae_momentBodyEnvelopeRelativeDensity_le_one filter_upwards [ae_momentBodyEnvelopePositiveSecant_nonneg_Gibbs K p ht] with q hq - unfold momentBodyEnvelopeRelativeDensity rw [← Real.exp_zero] apply Real.exp_le_exp.mpr have hmul := mul_nonneg hq ht.le @@ -6694,9 +6598,9 @@ private theorem ae_momentBodyEnvelopeRelativeDensity_le_one momentBodyEnvelopePositiveSecant K p t q * t = momentBodyTorusWeight K p t q - momentBodyTorusWeight K p 0 q := by - simp only [momentBodyEnvelopePositiveSecant, momentBodyTorusWeight_zero, isUnit_iff_ne_zero, - ne_eq, ht.ne', not_false_eq_true, IsUnit.div_mul_cancel] - linarith + simp only [momentBodyEnvelopePositiveSecant, isUnit_iff_ne_zero, ne_eq, ht.ne', + not_false_eq_true, IsUnit.div_mul_cancel] + linarith only [hmul, hid] private theorem integrable_momentBodyEnvelopeRelativeDensity_Gibbs {n : ℕ} (K : CenteredBody n) @@ -6728,7 +6632,7 @@ private theorem exp_neg_dimension_mul_le_momentBodyNormalizedPartition (momentBodyNormalizedPartition K (0 : LogSpace n) t) := by unfold momentBodyLogPartition at hgrowth - linarith + linarith only [hgrowth] calc Real.exp (-((n : ℝ) * t)) ≤ Real.exp @@ -6745,7 +6649,7 @@ private theorem one_sub_momentBodyNormalizedPartition_le_dimension_mul have hpart := exp_neg_dimension_mul_le_momentBodyNormalizedPartition K ht have hexp := Real.add_one_le_exp (-((n : ℝ) * t)) - linarith + linarith only [hpart, hexp] private theorem integral_momentBodyEnvelopePositiveSecant_le_partition_complement {n : ℕ} (K : CenteredBody n) @@ -6781,8 +6685,8 @@ private theorem integral_momentBodyEnvelopePositiveSecant_le_partition_complemen momentBodyTorusWeight K p 0 q have hid : momentBodyEnvelopePositiveSecant K p t q * t = u := by - simp only [momentBodyEnvelopePositiveSecant, momentBodyTorusWeight_zero, isUnit_iff_ne_zero, - ne_eq, ht.ne', not_false_eq_true, IsUnit.div_mul_cancel, u] + simp only [momentBodyEnvelopePositiveSecant, isUnit_iff_ne_zero, ne_eq, ht.ne', + not_false_eq_true, IsUnit.div_mul_cancel, u] have hu : 0 ≤ u := by rw [← hid] exact mul_nonneg hq ht.le @@ -6793,13 +6697,6 @@ private theorem integral_momentBodyEnvelopePositiveSecant_le_partition_complemen K p ht q) ht.le have hsandwich := nonnegative_le_exp_mul_one_sub_exp_neg hu huC - change - (momentBodyTorusWeight K p t q - - momentBodyTorusWeight K p 0 q) / t ≤ - Real.exp (C * t) * - (1 - Real.exp - (-(momentBodyTorusWeight K p t q - - momentBodyTorusWeight K p 0 q))) / t exact (div_le_div_iff_of_pos_right ht).mpr hsandwich have hint := integral_mono_ae (integrable_momentBodyEnvelopePositiveSecant_Gibbs @@ -6916,7 +6813,6 @@ private theorem continuous_sourcePositiveJointTimePoint_fixed {n : ℕ} (t : ℝ) (ht : 0 < t) : Continuous (fun z : LogSpace n => sourcePositiveJointTimePoint z t ht) := by - unfold sourcePositiveJointTimePoint apply Continuous.subtype_mk exact continuous_id.prodMk continuous_const @@ -6961,7 +6857,6 @@ private theorem upperSemicontinuous_momentTorusTailUpperEnvelopeTimeSlice UpperSemicontinuous (momentTorusTailUpperEnvelopeTimeSlice K F htransport p r t ht) := by - unfold momentTorusTailUpperEnvelopeTimeSlice apply upperSemicontinuous_periodic_real_torusRepresentative (fun z : LogSpace n => momentJointTailUpperEnvelope K F htransport p r @@ -7032,8 +6927,7 @@ private theorem moment_diagonalTerm_le_exp_bodyRadius_mul Real.exp ((k : ℝ) * pairing (u : Space n) y) := by rw [← Real.exp_add] apply Real.exp_le_exp.mpr - nlinarith - unfold diagonalTerm + nlinarith only [hpair, hnorm] calc Real.exp ((k : ℝ) * pairing (u : Space n) x) / monomialNormSquared k (u : Space n) @@ -7064,7 +6958,6 @@ private theorem moment_diagonalKernel_le_exp_bodyRadius_mul ((k : ℝ) * (((n : ℝ) * bodyRadius K) * dist x y)) * diagonalKernel K k (momentNormalizedPotential F) y := by - classical let := (monomialIndex_finite K hk).fintype unfold diagonalKernel rw [tsum_fintype, tsum_fintype, Finset.mul_sum] @@ -7113,7 +7006,7 @@ private theorem log_momentNormalized_diagonalKernel_div_sub_le_bodyRadius Real.log (diagonalKernel K k (momentNormalizedPotential F) y) / - (k : ℝ) := by linarith + (k : ℝ) := by linarith only [hscaled] _ = ((n : ℝ) * bodyRadius K) * dist x y := by (field_simp; ring) @@ -7136,7 +7029,7 @@ private theorem abs_log_momentNormalized_diagonalKernel_div_sub_le_bodyRadius log_momentNormalized_diagonalKernel_div_sub_le_bodyRadius K hk F htransport y x rw [dist_comm y x] at h - linarith + linarith only [h] · exact log_momentNormalized_diagonalKernel_div_sub_le_bodyRadius K hk F htransport x y @@ -7194,7 +7087,7 @@ theorem tendsto_of_dense_eventually_equiLipschitz intro ε hε let δ : ℝ := ε / (4 * ((C : ℝ) + 1)) have hC : 0 ≤ (C : ℝ) := C.coe_nonneg - have hC1 : 0 < (C : ℝ) + 1 := by linarith + have hC1 : 0 < (C : ℝ) + 1 := by linarith only [hC] have hδ : 0 < δ := by dsimp [δ] positivity @@ -7203,7 +7096,7 @@ theorem tendsto_of_dense_eventually_equiLipschitz calc (C : ℝ) * dist x y ≤ ((C : ℝ) + 1) * dist x y := by - exact mul_le_mul_of_nonneg_right (by linarith) + exact mul_le_mul_of_nonneg_right (by linarith only []) (dist_nonneg : 0 ≤ dist x y) _ < ((C : ℝ) + 1) * δ := mul_lt_mul_of_pos_left hxy hC1 @@ -7239,7 +7132,7 @@ theorem tendsto_of_dense_eventually_equiLipschitz (add_le_add_left (dist_triangle (f k y) (g y) (g x)) (dist (f k x) (f k y))) - _ < ε := by linarith + _ < ε := by linarith only [hsmall, hmid, hfirst, hlast] exact Filter.eventually_atTop.mp hnear private theorem finiteEnergySourceNormalized_actualGradient_phase_max @@ -7260,7 +7153,7 @@ private theorem finiteEnergySourceNormalized_actualGradient_phase_max have h := finiteEnergySourcePhase_actualGradient_le F x hx z unfold phase at h ⊢ simp only [momentNormalizedPotential] - linarith + linarith only [h] private theorem tendsto_log_momentNormalized_diagonalKernel_div_all {n : ℕ} (K : CenteredBody n) @@ -7321,7 +7214,7 @@ private theorem exists_open_eventual_uniform_of_equiLipschitz dist (f k y) (g y) < ε := by let δ : ℝ := ε / (4 * ((C : ℝ) + 1)) have hC : 0 ≤ (C : ℝ) := C.coe_nonneg - have hC1 : 0 < (C : ℝ) + 1 := by linarith + have hC1 : 0 < (C : ℝ) + 1 := by linarith only [hC] have hδ : 0 < δ := by dsimp [δ] positivity @@ -7343,7 +7236,7 @@ private theorem exists_open_eventual_uniform_of_equiLipschitz calc (C : ℝ) * dist x y ≤ ((C : ℝ) + 1) * dist x y := by - exact mul_le_mul_of_nonneg_right (by linarith) + exact mul_le_mul_of_nonneg_right (by linarith only []) (dist_nonneg : 0 ≤ dist x y) _ < ((C : ℝ) + 1) * δ := mul_lt_mul_of_pos_left hxy hC1 @@ -7369,7 +7262,7 @@ private theorem exists_open_eventual_uniform_of_equiLipschitz (add_le_add_left (dist_triangle (f k x) (g x) (g y)) (dist (f k y) (f k x))) - _ < ε := by linarith + _ < ε := by linarith only [hlast, hfirst, hsmall, hmid] private theorem exists_open_eventual_log_momentNormalized_diagonalKernel_uniform_all {n : ℕ} (K : CenteredBody n) @@ -7427,7 +7320,7 @@ private theorem exists_open_eventual_log_momentNormalized_diagonalKernel_div_ge_ have h := hk y hy rw [Real.dist_eq] at h have habs := (abs_lt.mp h).1 - linarith + linarith only [habs] end BergmanJetGlobalLogKernelEquiLipschitz @@ -7624,7 +7517,7 @@ private theorem eventual_open_momentTorusJetSlope_lt_clampedTailSecant let η : ℝ := (a - G q) / 2 have hη : 0 < η := by dsimp [η, G] - linarith + linarith only [ha] have hηt : 0 < η * t := mul_pos hη ht obtain ⟨V, hV, hqV, hzero⟩ := exists_open_eventual_log_momentNormalized_diagonalKernel_div_ge_sub_all @@ -7642,7 +7535,7 @@ private theorem eventual_open_momentTorusJetSlope_lt_clampedTailSecant have hqW : q ∈ W := by refine ⟨?_, hqV⟩ change G q < G q + η - linarith + linarith only [hη, hηt] refine ⟨max N₀ (momentJointTailStart K F htransport p + r + 1), W, hW, hqW, ?_⟩ @@ -7672,7 +7565,7 @@ private theorem eventual_open_momentTorusJetSlope_lt_clampedTailSecant apply (div_le_iff₀ ht).mpr have hlog' := hlog field_simp [ht.ne'] - linarith + linarith only [hlog'] have hyG : G y < G q + η := hy.1 calc momentTorusJetSlope K F htransport p k y ≤ @@ -7684,10 +7577,10 @@ private theorem eventual_open_momentTorusJetSlope_lt_clampedTailSecant (k : ℝ)) / t := hfinite _ ≤ momentTorusTailPositiveSecant K F htransport p r t ht y + η := hquot - _ ≤ G y + η := by linarith + _ ≤ G y + η := by linarith only [hsec, hquot, hyG] _ < a := by dsimp [η] at hyG ⊢ - linarith + linarith only [hyG] end BergmanJetTorusSlopeJointNeighborhoodUpper @@ -7755,7 +7648,6 @@ private theorem upperSemicontinuous_momentBodyClampedTailPositiveSecant (p : LogSpace n) (r : ℕ) (t : ℝ) (ht : 0 < t) : UpperSemicontinuous (momentBodyClampedTailPositiveSecant K p r t ht) := by - unfold momentBodyClampedTailPositiveSecant exact (continuous_const.upperSemicontinuous).sup (upperSemicontinuous_momentBodyTailPositiveSecant K p r t ht) @@ -7780,7 +7672,6 @@ private theorem momentBodyTailPositiveSecant_le_scale_add_inv simpa only [momentTorusTailUpperEnvelopeTimeSlice, momentJointMajorant, jointRealCoordinate_sourcePositiveJointTimePoint, realLogCoordinate_sourceTorusCoverPoint, jointLogTime_sourcePositiveJointTimePoint] using hmajor - unfold momentBodyTailPositiveSecant calc (momentTorusTailUpperEnvelopeTimeSlice K (momentBodyOptimizer K) @@ -7788,7 +7679,7 @@ private theorem momentBodyTailPositiveSecant_le_scale_add_inv momentNormalizedPotential (momentBodyOptimizer K) q.1) / t ≤ (BodyScale.canonicalScale K * t + 1) / t := - (div_le_div_iff_of_pos_right ht).mpr (by linarith) + (div_le_div_iff_of_pos_right ht).mpr (by linarith only [hmajor']) _ = BodyScale.canonicalScale K + 1 / t := by field_simp @@ -7805,7 +7696,6 @@ private theorem momentBodyClampedTailPositiveSecant_le_scale_add_inv (q : LogTorus n) : momentBodyClampedTailPositiveSecant K p r t ht q ≤ BodyScale.canonicalScale K + 1 / t := by - unfold momentBodyClampedTailPositiveSecant apply max_le · exact add_nonneg (BodyScale.canonicalScale_pos K).le (by positivity) @@ -8105,7 +7995,7 @@ private theorem limsup_momentBodyMovingJetIntegral_ge_sharp (integral_momentBodyMovingJetSlope_le_canonicalScale K p) have hlim := Filter.le_limsup_of_frequently_le hshift.frequently (Filter.isBoundedUnder_of_eventually_le hbounded) - linarith + linarith only [hlim] private theorem integral_momentBodyEnvelopePositiveSecant_ge_sharp_of_weak {n : ℕ} (hn : 0 < n) (K : CenteredBody n) @@ -8186,10 +8076,9 @@ private theorem normalizedVolume_le_sharpConstant_of_momentBodyWeakProbability normalizedVolume K.carrier ≤ sharpConstant n := by have hn' : 0 < (n : ℝ) := by exact_mod_cast hn have hbound : BodyScale.canonicalScale K ≤ (n : ℝ) + 1 := by - nlinarith [(div_le_iff₀ (by positivity : 0 < (n : ℝ) + 1)).mp - (momentBodySharpJetScale_le_dimension_of_weakProbability hn K hweak)] - change normalizedVolume K.carrier ≤ - ((n : ℝ) + 1) ^ n / (n.factorial : ℝ) + nlinarith only [hn', + (div_le_iff₀ (by positivity : 0 < (n : ℝ) + 1)).mp + (momentBodySharpJetScale_le_dimension_of_weakProbability hn K hweak)] apply (le_div_iff₀ (by positivity : 0 < (n.factorial : ℝ))).mpr simpa only [BodyScale.canonicalScale_pow hn K, mul_comm] using pow_le_pow_left₀ (BodyScale.canonicalScale_pos K).le hbound n @@ -8226,7 +8115,6 @@ private theorem normalizedMonomialDensity_momentNormalized_pos 0 < normalizedMonomialDensity K k (momentNormalizedPotential F) u x := by have hkreal : (0 : ℝ) < k := by exact_mod_cast hk - unfold normalizedMonomialDensity apply div_pos · exact Real.exp_pos _ · exact monomialIntegral_momentNormalized_pos @@ -8245,11 +8133,6 @@ private theorem integral_normalizedMonomialDensity_momentNormalized have hkreal : (0 : ℝ) < k := by exact_mod_cast hk unfold normalizedMonomialDensity rw [MeasureTheory.integral_div] - change - monomialNormSquared k (u : Space n) - (momentNormalizedPotential F) / - monomialNormSquared k (u : Space n) - (momentNormalizedPotential F) = 1 apply div_self exact (monomialIntegral_momentNormalized_pos @@ -8285,8 +8168,8 @@ private theorem integral_weightedDiagonalKernel_momentNormalized rw [MeasureTheory.integral_finsetSum] · simp_rw [integral_normalizedMonomialDensity_momentNormalized K hk F htransport] - simp only [Finset.sum_const, Finset.card_univ, fintypeCard_eq_ncard, nsmul_eq_mul, mul_one, - bergmanDimension, Nat.card_eq_fintype_card] + simp only [Finset.sum_const, Finset.card_univ, nsmul_eq_mul, mul_one, bergmanDimension, + Nat.card_eq_fintype_card] · intro u _ exact normalizedMonomialDensity_momentNormalized_integrable K hk F htransport u @@ -8311,7 +8194,6 @@ private theorem normalizedDiagonalDensity_momentNormalized_pos (x : Space n) : 0 < normalizedDiagonalDensity K k (momentNormalizedPotential F) x := by - unfold normalizedDiagonalDensity exact div_pos (weightedDiagonalKernel_momentNormalized_pos K hk F htransport x) @@ -8497,7 +8379,6 @@ private theorem momentWeakTorusGibbsProbability_body_eq_zeroTime (momentBodyOptimizer K) = sourceProbability (momentBodyTorusWeight K p) 0 := by rw [momentWeakTorusGibbsProbability_eq_base_withDensity] - unfold sourceProbability congr 1 funext q rw [momentWeakTorusGibbsDensity_body_eq_zeroTime K p q] @@ -8552,18 +8433,6 @@ private theorem momentTorusBergmanProbability_eq_normalizedRadial_prod_angular (BergmanJetSlope.continuous_normalizedDiagonalDensity K hk (continuous_momentNormalizedPotential F)).measurable rw [momentTorusBergmanProbability_eq_base_withDensity K hk F] - change - ((volume : Measure (Space n)).prod (angularMeasure n)).withDensity - (fun q : LogTorus n => - ENNReal.ofReal - (normalizedDiagonalDensity - K k (momentNormalizedPotential F) q.1)) = - ((volume : Measure (Space n)).withDensity - (fun x : Space n => - ENNReal.ofReal - (normalizedDiagonalDensity - K k (momentNormalizedPotential F) x))).prod - (angularMeasure n) exact (MeasureTheory.prod_withDensity_left hmeas).symm private theorem integral_normalizedBergmanMeasure_momentNormalized @@ -8666,10 +8535,6 @@ private theorem momentBodyZeroGibbsProbability_eq_radial_prod_angular (momentBodyOptimizer K)).prod (momentNormalizedAngularHaarProbability n) := by apply Subtype.ext - change - sourceProbability (momentBodyTorusWeight K p) 0 = - (finiteEnergySourceGibbsProbability - (momentBodyOptimizer K)).prod (angularMeasure n) exact (momentWeakTorusGibbsProbability_body_eq_zeroTime K p).symm diff --git a/LeanPool/EhrhartVolumeInequality/Foundations.lean b/LeanPool/EhrhartVolumeInequality/Foundations.lean index 88d5f85623..098acef4a2 100644 --- a/LeanPool/EhrhartVolumeInequality/Foundations.lean +++ b/LeanPool/EhrhartVolumeInequality/Foundations.lean @@ -8,21 +8,23 @@ module public import Mathlib.Analysis.Convex.Basic public import Mathlib.Topology.MetricSpace.Pseudo.Defs +import Mathlib.Algebra.Module.ZLattice.Basic import Mathlib.Algebra.Order.Archimedean.Real.Hom -import Mathlib.Analysis.BoxIntegral.UnitPartition +import LeanPool.EhrhartVolumeInequality.AnalysisSupport import Mathlib.Analysis.Calculus.BumpFunction.Convolution -import Mathlib.Analysis.Calculus.Rademacher -import Mathlib.Analysis.Complex.ValueDistribution.LogCounting.Basic +import Mathlib.Analysis.Analytic.Order +import Mathlib.Analysis.Complex.CauchyIntegral import Mathlib.Analysis.Convex.Continuous import Mathlib.Analysis.Convex.Measure import Mathlib.Analysis.Fourier.AddCircleMulti import Mathlib.Analysis.InnerProductSpace.JointEigenspace import Mathlib.Analysis.SpecialFunctions.Choose +import Mathlib.Analysis.SpecialFunctions.Integrals.Basic import Mathlib.Data.Sym.Card +import Mathlib.MeasureTheory.Integral.CircleAverage import Mathlib.MeasureTheory.Integral.Layercake import Mathlib.MeasureTheory.Integral.ExpDecay import Mathlib.MeasureTheory.SpecificCodomains.Pi -import Mathlib.Topology.UniformSpace.Ascoli /-! # Ehrhart volume inequality: Foundations @@ -98,7 +100,6 @@ structure CenteredBody (n : ℕ) where private theorem CenteredBody.volume_pos {n : ℕ} (K : CenteredBody n) : 0 < normalizedVolume K.carrier := by - unfold normalizedVolume exact ENNReal.toReal_pos (MeasureTheory.Measure.measure_pos_of_nonempty_interior (volume : Measure (Space n)) K.fullDimensional).ne' @@ -142,8 +143,8 @@ private theorem mem_scaledIntegerLattice_iff {n k : ℕ} (hk : 0 < k) ∀ i, (k : ℝ) * x i ∈ Set.range (algebraMap ℤ ℝ) := by let : NeZero k := ⟨Nat.ne_of_gt hk⟩ rw [scaledIntegerLattice, ← Submodule.coe_pointwise_smul] - exact BoxIntegral.unitPartition.mem_smul_span_iff - (n := k) (v := x) + exact mem_scaledIntegerSpan_iff + private theorem mem_monomialIndex_iff {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -202,7 +203,7 @@ private theorem mem_monomialIndex_one_iff {n : ℕ} ⟨zero_mem_interior K, ?_⟩ intro i refine ⟨0, ?_⟩ - simp only [algebraMap_int_eq, eq_intCast, Int.cast_zero, Nat.cast_one, Pi.zero_apply, mul_zero] + simp only [eq_intCast, Int.cast_zero, Pi.zero_apply, mul_zero] private theorem monomial_count_div_pow_tendsto_volume {n : ℕ} (K : CenteredBody n) : @@ -227,8 +228,8 @@ private theorem monomial_count_div_pow_tendsto_volume {n : ℕ} rw [BodyMeasure.volume_interior_eq_volume K] simpa only [monomialIndex, scaledIntegerLattice, Nat.card_coe_set_eq, Fintype.card_fin, hvolume] using - (tendsto_card_div_pow_atTop_volume - (s := interior K.carrier) hbounded hmeas hfront) + (scaledIntegerSpan_count_tendsto_volume + (interior K.carrier) hbounded hmeas hfront) end LatticeAsymptotics @@ -246,13 +247,11 @@ private def supportFunction {n : ℕ} private theorem continuous_pairing_left {n : ℕ} (x : Space n) : Continuous (fun u : Space n => pairing u x) := by - unfold pairing exact continuous_finsetSum Finset.univ (fun i _ => (continuous_apply i).mul continuous_const) private theorem continuous_pairing_right {n : ℕ} (u : Space n) : Continuous (fun x : Space n => pairing u x) := by - unfold pairing exact continuous_finsetSum Finset.univ (fun i _ => continuous_const.mul (continuous_apply i)) @@ -261,7 +260,6 @@ private theorem pairing_le_supportFunction {n : ℕ} (hcompact : IsCompact K) {u : Space n} (hu : u ∈ K) (x : Space n) : pairing u x ≤ supportFunction K x := by - unfold supportFunction exact le_csSup (hcompact.bddAbove_image (continuous_pairing_left x).continuousOn) (Set.mem_image_of_mem _ hu) @@ -271,7 +269,6 @@ private theorem supportFunction_le {n : ℕ} (x : Space n) {c : ℝ} (hbound : ∀ y ∈ K, pairing y x ≤ c) : supportFunction K x ≤ c := by - unfold supportFunction apply csSup_le (hnonempty.image _) rintro _ ⟨y, hy, rfl⟩ exact hbound y hy @@ -390,7 +387,7 @@ private theorem sum_abs_le_dimension_mul_norm {n : ℕ} (x : Space n) : (∑ i, |x i|) ≤ ∑ _i : Fin n, ‖x‖ := by apply Finset.sum_le_sum intro i _ - simpa only [Real.norm_eq_abs] using norm_le_pi_norm x i + exact norm_le_pi_norm x i _ = (n : ℝ) * ‖x‖ := by simp only [Finset.sum_const, Finset.card_univ, Fintype.card_fin, nsmul_eq_mul] @@ -435,7 +432,7 @@ private theorem integrable_exp_neg_mul_norm {n : ℕ} (hn : 0 < n) mul_le_mul_of_nonneg_left hsum hb.le _ = a * ‖x‖ := by rw [div_mul_eq_mul_div, mul_div_assoc, mul_div_cancel_left₀ _ hnreal.ne'] - linarith + linarith only [hscaled] private def monomialWeight {n : ℕ} (k : ℝ) (u : Space n) (φ : Space n → ℝ) (x : Space n) : ℝ := @@ -450,7 +447,6 @@ private theorem continuous_monomialWeight {n : ℕ} (k : ℝ) (u : Space n) {φ : Space n → ℝ} (hφ : Continuous φ) : Continuous (monomialWeight k u φ) := by - unfold monomialWeight exact Real.continuous_exp.comp (continuous_const.mul ((SupportFunction.continuous_pairing_right u).sub hφ)) @@ -514,7 +510,7 @@ private theorem integrable_monomialWeight_of_support_le {n : ℕ} C - δ * ∑ i, |x i| := by have hsupport := hpotential x have hinterior := hgap x - linarith + linarith only [hsupport, hinterior] calc k * (SupportFunction.pairing u x - φ x) ≤ k * (C - δ * ∑ i, |x i|) := @@ -535,7 +531,7 @@ private theorem integrable_monomialWeight_of_bounded_support {n : ℕ} (C := C) (k := k) (hk := hk) intro x have hlower := (abs_le.mp (hbounded x)).1 - linarith + linarith only [hlower] private theorem monomialIntegral_pos_of_bounded_support {n : ℕ} {K : Set (Space n)} (hcompact : IsCompact K) @@ -546,7 +542,6 @@ private theorem monomialIntegral_pos_of_bounded_support {n : ℕ} |φ x - SupportFunction.supportFunction K x| ≤ C) {k : ℝ} (hk : 0 < k) : 0 < monomialIntegral k u φ := by - unfold monomialIntegral monomialWeight exact MeasureTheory.integral_exp_pos (integrable_monomialWeight_of_bounded_support hcompact hu hφ hbounded hk) @@ -578,7 +573,6 @@ private def dualVector {n : ℕ} private theorem dual_apply_eq_pairing {n : ℕ} (f : Space n →L[ℝ] ℝ) (x : Space n) : f x = SupportFunction.pairing x (dualVector f) := by - classical have hexpansion : (∑ i : Fin n, x i • (Pi.single i (1 : ℝ) : Space n)) = x := by @@ -633,7 +627,6 @@ private theorem abs_pairing_le_sum_abs_mul_norm {n : ℕ} (a x : Space n) : |SupportFunction.pairing a x| ≤ (∑ i, |a i|) * ‖x‖ := by - unfold SupportFunction.pairing calc |∑ i, a i * x i| ≤ ∑ i, |a i * x i| := Finset.abs_sum_le_sum_abs _ _ @@ -642,7 +635,7 @@ private theorem abs_pairing_le_sum_abs_mul_norm {n : ℕ} apply Finset.sum_le_sum intro i _ exact mul_le_mul_of_nonneg_left - (by simpa only [Real.norm_eq_abs] using norm_le_pi_norm x i) + (by exact norm_le_pi_norm x i) (abs_nonneg (a i)) _ = (∑ i, |a i|) * ‖x‖ := by rw [Finset.sum_mul] @@ -673,12 +666,12 @@ private theorem one_le_abs_cast_sub {i j : ℕ} (hij : i ≠ j) : rcases lt_or_gt_of_ne hij with hlt | hgt · have hcast : (i : ℝ) + 1 ≤ (j : ℝ) := by exact_mod_cast Nat.succ_le_of_lt hlt - rw [abs_of_nonpos (by linarith)] - linarith + rw [abs_of_nonpos (by linarith only [hcast])] + linarith only [hcast] · have hcast : (j : ℝ) + 1 ≤ (i : ℝ) := by exact_mod_cast Nat.succ_le_of_lt hgt - rw [abs_of_nonneg (by linarith)] - linarith + rw [abs_of_nonneg (by linarith only [hcast])] + linarith only [hcast] private theorem rayBall_pairwise_disjoint {n : ℕ} (v : Space n) : Pairwise (Function.onFun Disjoint (rayBall v)) := by @@ -775,9 +768,9 @@ private theorem supportFunction_le_pairing_add_on_rayTube {n : ℕ} SupportFunction.pairing (y - u) x ≤ ((n : ℝ) * (R + ‖u‖)) * (‖v‖ / 4) := by rw [hsplit, pairing_add_right] - linarith + linarith only [hpairw, hvsep, hray, hsplit] rw [pairing_sub_left] at htotal - linarith + linarith only [htotal] private theorem monomialWeight_bounded_below_on_rayTube {n : ℕ} {K : Set (Space n)} (hcompact : IsCompact K) @@ -797,13 +790,12 @@ private theorem monomialWeight_bounded_below_on_rayTube {n : ℕ} hcompact hnonempty hseparate refine ⟨Real.exp (-(k * (D + C))), Real.exp_pos _, fun x hx => ?_⟩ - unfold MonomialIntegrability.monomialWeight apply Real.exp_le_exp.mpr have hsupport := hD x hx have hpotential := hupper x have hlower : -(D + C) ≤ SupportFunction.pairing u x - φ x := by - linarith + linarith only [hsupport, hpotential] calc -(k * (D + C)) = k * (-(D + C)) := by ring _ ≤ k * (SupportFunction.pairing u x - φ x) := @@ -915,7 +907,6 @@ private def weightedDiagonalKernel {n : ℕ} private theorem monomialIndex_finite {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) : (LatticeAsymptotics.monomialIndex K k).Finite := by - classical have hkreal : (k : ℝ) ≠ 0 := by exact_mod_cast Nat.ne_of_gt hk unfold LatticeAsymptotics.monomialIndex @@ -933,7 +924,7 @@ private theorem zero_mem_monomialIndex {n k : ℕ} K hk 0).mpr refine ⟨LatticeAsymptotics.zero_mem_interior K, ?_⟩ intro i - exact ⟨0, by simp only [algebraMap_int_eq, eq_intCast, Int.cast_zero, Pi.zero_apply, mul_zero]⟩ + exact ⟨0, by simp only [eq_intCast, Int.cast_zero, Pi.zero_apply, mul_zero]⟩ private theorem bergmanDimension_pos {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) : @@ -1013,7 +1004,6 @@ private theorem differentiable_characterExponent {n : ℕ} private theorem differentiable_torusCharacter {n : ℕ} (m : Fin n → ℤ) : Differentiable ℂ (torusCharacter m) := by - unfold torusCharacter exact (differentiable_characterExponent m).cexp private theorem characterExponent_add {n : ℕ} @@ -1037,7 +1027,6 @@ private theorem characterExponent_imaginaryShift {n : ℕ} characterExponent m (imaginaryShift q) = ((∑ i, m i * q i : ℤ) : ℂ) * (2 * (Real.pi : ℂ) * Complex.I) := by - unfold characterExponent imaginaryShift calc (∑ i, (m i : ℂ) * ((q i : ℂ) * (2 * (Real.pi : ℂ) * Complex.I))) = @@ -1071,8 +1060,7 @@ private theorem characterExponent_realLogSlice_re {n : ℕ} (∑ i, (m i : ℝ) * x i) / 2 := by unfold characterExponent realLogSlice simp only [← mul_div_assoc, Complex.re_sum, Complex.div_ofNat_re, Complex.mul_re, - Complex.intCast_re, Complex.ofReal_re, Complex.intCast_im, Complex.ofReal_im, mul_zero, - sub_zero, Finset.sum_div] + Complex.intCast_re, Complex.ofReal_re, Complex.ofReal_im, mul_zero, sub_zero, Finset.sum_div] private theorem norm_sq_torusCharacter_realLogSlice {n : ℕ} (m : Fin n → ℤ) (x : Space n) : @@ -1142,7 +1130,6 @@ private abbrev weightedHilbert {n : ℕ} (k : ℕ) private theorem radialWeight_measurable {n : ℕ} (k : ℕ) {φ : Space n → ℝ} (hφ : Continuous φ) : Measurable (radialWeight k φ) := by - unfold radialWeight exact ENNReal.measurable_ofReal.comp (Real.continuous_exp.comp (continuous_const.mul hφ)).measurable @@ -1153,7 +1140,6 @@ private theorem weightedTorusMeasure_eq_withDensity {n : ℕ} (k : ℕ) ((volume : Measure (Space n)).prod (angularMeasure n)).withDensity (fun z : LogTorus n => radialWeight k φ z.1) := by - unfold weightedTorusMeasure radialMeasure exact MeasureTheory.prod_withDensity_left (radialWeight_measurable k hφ) @@ -1275,8 +1261,7 @@ private theorem radial_exp_integral_eq_monomialIntegral {n : ℕ} (k : ℕ) (radialWeight_measurable k hφ) hfinite] apply MeasureTheory.integral_congr_ae filter_upwards [] with x - simpa only [smul_eq_mul] using - radialWeight_mul_exp_pairing k φ m u hm x + exact radialWeight_mul_exp_pairing k φ m u hm x private theorem radial_exp_integrable {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -1295,15 +1280,13 @@ private theorem radial_exp_integrable {n k : ℕ} have hfinite : ∀ᵐ x ∂(volume : Measure (Space n)), radialWeight k φ x < ⊤ := Filter.Eventually.of_forall fun _ => ENNReal.ofReal_lt_top - unfold radialMeasure apply (MeasureTheory.integrable_withDensity_iff_integrable_smul' (radialWeight_measurable k hφ) hfinite).2 have hmono := MonomialIntegrability.integrable_monomialWeight_of_centeredBody K hu hφ hbounded hkreal refine hmono.congr (Filter.Eventually.of_forall fun x => ?_) - simpa only [smul_eq_mul] using - (radialWeight_mul_exp_pairing k φ m u hm x).symm + exact (radialWeight_mul_exp_pairing k φ m u hm x).symm private theorem torusMonomial_sq_integrable {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -1349,7 +1332,6 @@ private theorem integral_torusMonomial_norm_sq_eq_monomialIntegral ∂(weightedTorusMeasure k φ)) = MonomialIntegrability.monomialIntegral (k : ℝ) u φ := by - unfold weightedTorusMeasure calc (∫ z : LogTorus n, ‖torusMonomial m z‖ ^ 2 ∂(radialMeasure k φ).prod (angularMeasure n)) = @@ -1388,7 +1370,6 @@ private theorem torusMonomial_inner_factor {n : ℕ} (k : ℕ) conj (radialCharacter m x) * radialCharacter q x ∂(radialMeasure k φ)) * if m = q then (1 : ℂ) else 0 := by - unfold weightedTorusMeasure calc (∫ z : LogTorus n, conj (torusMonomial m z) * torusMonomial q z @@ -1448,7 +1429,6 @@ private theorem indexedMonomialLp_ae {n k : ℕ} (indexedMonomialLp K hk hφ hbounded u : LogTorus n → ℂ) =ᵐ[weightedTorusMeasure k φ] torusMonomial (integerExponent K hk u) := by - unfold indexedMonomialLp exact MeasureTheory.MemLp.coeFn_toLp _ end WeightedTorusHilbert @@ -1516,7 +1496,6 @@ private theorem continuous_normalizedMonomialDensity {n k : ℕ} (u : LatticeAsymptotics.monomialIndex K k) : Continuous (BergmanMonomials.normalizedMonomialDensity K k φ u) := by - unfold BergmanMonomials.normalizedMonomialDensity exact (MonomialIntegrability.continuous_monomialWeight (k : ℝ) (u : Space n) hφ).div_const _ @@ -1536,7 +1515,6 @@ private theorem continuous_normalizedDiagonalDensity {n k : ℕ} {φ : Space n → ℝ} (hφ : Continuous φ) : Continuous (BergmanNormalization.normalizedDiagonalDensity K k φ) := by - unfold BergmanNormalization.normalizedDiagonalDensity exact (continuous_weightedDiagonalKernel K hk hφ).div_const _ end BergmanJetSlope @@ -1602,7 +1580,7 @@ private theorem sum_range_jetCount (n N : ℕ) : (∑ j ∈ Finset.range N, (n + j).choose n) = (n + N).choose (n + 1) := by cases N with - | zero => simp only [Finset.range_zero, Finset.sum_empty, add_zero, Nat.choose_succ_self] + | zero => simp only [Finset.range_zero, Finset.sum_empty, Nat.choose_succ_self] | succ N => simpa only [Nat.add_comm, Nat.add_assoc] using Nat.sum_range_add_choose N n @@ -1664,7 +1642,6 @@ private theorem differentiable_normalizedHolomorphicMonomial {n k : ℕ} (φ : Space n → ℝ) (u : LatticeAsymptotics.monomialIndex K k) : Differentiable ℂ (normalizedHolomorphicMonomial K hk φ u) := by - unfold normalizedHolomorphicMonomial exact (TorusCharacters.differentiable_torusCharacter _).const_mul _ private def multiIndexCoordinate {n : ℕ} (α : Fin n → ℕ) : @@ -1789,7 +1766,6 @@ private theorem contDiff_mollifiedSupport {n : ℕ} (hcompact : IsCompact K) (hnonempty : K.Nonempty) (ρ : ContDiffBump (0 : Space n)) : ContDiff ℝ ∞ (mollifiedSupport K ρ) := by - unfold mollifiedSupport exact ρ.hasCompactSupport_normed.contDiff_convolution_left (ContinuousLinearMap.lsmul ℝ ℝ) ρ.contDiff_normed @@ -1819,12 +1795,10 @@ private theorem convexOn_mollifiedSupport {n : ℕ} SupportFunction.supportFunction K (x - t)) := by simpa only [sub_eq_add_neg, add_comm, preimage_univ, Function.comp_def] using (convexOn_supportFunction hcompact hnonempty).translate_right (-t) - simpa only [smul_eq_mul] using - htranslate.smul + exact htranslate.smul (ρ.nonneg_normed (μ := (volume : Measure (Space n))) t) · intro x hx - simpa only [ContinuousLinearMap.lsmul_apply, smul_eq_mul] using - (ρ.hasCompactSupport_normed.convolutionExists_left + exact (ρ.hasCompactSupport_normed.convolutionExists_left (ContinuousLinearMap.lsmul ℝ ℝ) ρ.continuous_normed (continuous_supportFunction hcompact hnonempty).locallyIntegrable @@ -1840,7 +1814,6 @@ private theorem dist_mollifiedSupport_le {n : ℕ} dist (mollifiedSupport K ρ x) (SupportFunction.supportFunction K x) ≤ ((n : ℝ) * R) * ρ.rOut := by - unfold mollifiedSupport apply ρ.dist_normed_convolution_le (continuous_supportFunction hcompact hnonempty).aestronglyMeasurable intro y hy @@ -1867,7 +1840,7 @@ private theorem exists_smooth_convex_potential_uniformly_close {n : ℕ} let L : ℝ := (n : ℝ) * R have hL : 0 ≤ L := mul_nonneg (Nat.cast_nonneg n) hRpos.le let δ : ℝ := ε / (L + 1) - have hδ : 0 < δ := div_pos hε (by linarith) + have hδ : 0 < δ := div_pos hε (by linarith only [hL]) let ρ : ContDiffBump (0 : Space n) := ⟨δ / 2, δ, half_pos hδ, half_lt_self hδ⟩ refine ⟨mollifiedSupport K ρ, @@ -1880,9 +1853,9 @@ private theorem exists_smooth_convex_potential_uniformly_close {n : ℕ} dsimp [δ] rw [← mul_div_assoc] apply (div_lt_iff₀ (by linarith : 0 < L + 1)).mpr - nlinarith + linarith only [hε] rw [Real.dist_eq] at hdist - exact lt_of_le_of_lt hdist (by simpa only [ρ, L] using hsmall) + exact lt_of_le_of_lt hdist (by exact hsmall) private theorem exists_smooth_convex_potential_of_centeredBody {n : ℕ} (K : CenteredBody n) : @@ -1895,7 +1868,7 @@ private theorem exists_smooth_convex_potential_of_centeredBody {n : ℕ} K.fullDimensional.mono interior_subset obtain ⟨φ, hφ, hconvex, hclose⟩ := exists_smooth_convex_potential_uniformly_close - K.compact hnonempty (show (0 : ℝ) < 1 by norm_num) + K.compact hnonempty (show (0 : ℝ) < 1 by exact zero_lt_one) exact ⟨φ, hφ, hconvex, fun x => (hclose x).le⟩ private def smoothConvexPotential {n : ℕ} (K : CenteredBody n) : @@ -1999,10 +1972,7 @@ private theorem exists_orthonormalBasis_simultaneously_adapted_finite · have hscaled : χ i • x ∈ F i := by rw [← heig] exact (F i).starProjection_apply_mem x - have hmem := (F i).smul_mem (χ i)⁻¹ hscaled - have hxF : x ∈ F i := by - simpa only [smul_smul, ne_eq, hzero, not_false_eq_true, inv_mul_cancel₀, one_smul] using - hmem + have hxF : x ∈ F i := ((F i).smul_mem_iff hzero).mp hscaled have hfix : (F i).starProjection x = x := Submodule.starProjection_eq_self_iff.mpr hxF simpa only [σ, code, T, ContinuousLinearMap.coe_coe, Fin.isValue, hzero, ↓reduceIte, @@ -2033,15 +2003,14 @@ private theorem exists_orthonormalBasis_simultaneously_adapted_finite have hscaled : code σ j • b i ∈ F j := by rw [← heig] exact (F j).starProjection_apply_mem (b i) - have hmem := (F j).smul_mem (code σ j)⁻¹ hscaled - simpa only [smul_smul, ne_eq, hzero, not_false_eq_true, inv_mul_cancel₀, one_smul] using hmem + exact ((F j).smul_mem_iff hzero).mp hscaled + private theorem finite_range_antitone_submodule {V : Type*} [NormedAddCommGroup V] [InnerProductSpace ℂ V] [FiniteDimensional ℂ V] (F : ℕ → Submodule ℂ V) (hF : Antitone F) : (Set.range F).Finite := by - classical let d := Module.finrank ℂ V let rankFin : Submodule ℂ V → Fin (d + 1) := fun S => ⟨Module.finrank ℂ S, @@ -2052,7 +2021,7 @@ private theorem finite_range_antitone_submodule obtain ⟨i, rfl⟩ := hS obtain ⟨j, rfl⟩ := hW have hr : Module.finrank ℂ (F i) = Module.finrank ℂ (F j) := by - simpa only using congrArg Fin.val heq + exact congrArg Fin.val heq rcases le_total i j with hij | hji · exact (Submodule.eq_of_le_of_finrank_eq (hF hij) hr.symm).symm · exact Submodule.eq_of_le_of_finrank_eq (hF hji) hr @@ -2131,7 +2100,6 @@ private theorem card_adaptedIndices_eq_finrank {ι V : Type*} [Fintype ι] (b : OrthonormalBasis ι ℂ V) (S : Submodule ℂ V) (hb : ∀ i, b i ∈ S ∨ b i ∈ Sᗮ) : (adaptedIndices b S).card = Module.finrank ℂ S := by - classical have hindependent : LinearIndependent ℂ (fun i : adaptedIndices b S => b (i : ι)) := by @@ -2181,7 +2149,6 @@ private theorem analyticAt_normalizedHolomorphicMonomial {n k : ℕ} AnalyticAt ℂ (AdaptedBergmanBasis.normalizedHolomorphicMonomial K hk φ u) p := by - unfold AdaptedBergmanBasis.normalizedHolomorphicMonomial exact analyticAt_const.fun_mul (analyticAt_torusCharacter (WeightedTorusHilbert.integerExponent K hk u) p) @@ -2220,7 +2187,7 @@ private theorem exists_phase_le_const_sub_mul_sum_abs {n : ℕ} have hsupport := (abs_le.mp (hbounded x)).1 have hinterior := hgap x unfold phase - linarith + linarith only [hsupport, hinterior] private theorem exists_phase_maximizer {n : ℕ} {K : Set (Space n)} (hcompact : IsCompact K) @@ -2246,11 +2213,11 @@ private theorem exists_phase_maximizer {n : ℕ} have hrange : (C - phase u φ 0) / δ ≤ R := le_max_right _ _ have hscale := (div_le_iff₀ hδ).mp hrange - nlinarith + linarith only [hscale] have hnorm := SupportFunction.norm_le_sum_abs x have hscale := mul_lt_mul_of_pos_left hxnorm hδ have hcoerce := hcoercive x - nlinarith [mul_le_mul_of_nonneg_left hnorm hδ.le] + linarith only [hR, hnorm, hscale, hcoerce, mul_le_mul_of_nonneg_left hnorm hδ.le] private theorem legendreTransform_eq_of_maximizer {n : ℕ} {u : Space n} {φ : Space n → ℝ} @@ -2258,7 +2225,6 @@ private theorem legendreTransform_eq_of_maximizer {n : ℕ} (hmax : ∀ y : Space n, phase u φ y ≤ phase u φ x) : legendreTransform φ u = phase u φ x := by - unfold legendreTransform apply le_antisymm · apply csSup_le · exact ⟨phase u φ x, ⟨x, rfl⟩⟩ @@ -2384,7 +2350,7 @@ private theorem convex_extrapolation_lower {n : ℕ} (t - 1) * φ y + φ (y + t • (x - y)) := by field_simp rw [hcancel] at hscaled - linarith + linarith only [hscaled] private theorem convex_supportCompatible_sub_le_support {n : ℕ} (K : CenteredBody n) @@ -2400,7 +2366,7 @@ private theorem convex_supportCompatible_sub_le_support {n : ℕ} φ x - φ y - SupportFunction.supportFunction K.carrier (x - y) := by have hstrict := lt_of_not_ge hnot - linarith + linarith only [hstrict] let gap : ℝ := φ x - φ y - SupportFunction.supportFunction K.carrier (x - y) @@ -2415,7 +2381,7 @@ private theorem convex_supportCompatible_sub_le_support {n : ℕ} have hcancel : (D / gap + 1) * gap = D + gap := by field_simp rw [hcancel] at hmul - linarith + linarith only [hmul, hgappos] have hconv := convex_extrapolation_lower hconvex x y ht have hsupport := supportFunction_add_smul_le K y (x - y) (show 0 ≤ t from (zero_le_one.trans ht)) @@ -2424,9 +2390,9 @@ private theorem convex_supportCompatible_sub_le_support {n : ℕ} φ (y + t • (x - y)) ≤ SupportFunction.supportFunction K.carrier y + t * SupportFunction.supportFunction K.carrier (x - y) + C := by - linarith + linarith only [hsupport, hupper] dsimp [D, gap] at hlarge - linarith + linarith only [hupper, hsupport, hconv, hlarge] private theorem convex_supportCompatible_lipschitz {n : ℕ} (K : CenteredBody n) @@ -2466,7 +2432,7 @@ private theorem convex_supportCompatible_lipschitz {n : ℕ} exact mul_le_mul_of_nonneg_right (mul_le_mul_of_nonneg_left hradius (Nat.cast_nonneg n)) (norm_nonneg _) - linarith + linarith only [hrec, hmax, hradius, hpair, hsupport] private def phaseSlopeBound {n : ℕ} (K : CenteredBody n) (L : NNReal) : ℝ := @@ -2475,7 +2441,6 @@ private def phaseSlopeBound {n : ℕ} (K : CenteredBody n) private theorem phaseSlopeBound_nonneg {n : ℕ} (K : CenteredBody n) (L : NNReal) : 0 ≤ phaseSlopeBound K L := by - unfold phaseSlopeBound exact add_nonneg (mul_nonneg (Nat.cast_nonneg n) (LaurentJetSeparatedness.bodyRadius_pos K).le) @@ -2541,7 +2506,7 @@ private theorem phase_abs_sub_le {n k : ℕ} LaurentJetSeparatedness.bodyRadius K) * dist x y := by rw [dist_eq_norm] have hpot : |φ x - φ y| ≤ (L : ℝ) * dist x y := by - simpa only [Real.dist_eq] using hφ.dist_le_mul x y + exact hφ.dist_le_mul x y calc |LaplaceAsymptotics.phase (u : Space n) φ x - LaplaceAsymptotics.phase (u : Space n) φ y| = @@ -2607,7 +2572,7 @@ private theorem eventually_bergmanDimension_le_volume_mul_pow have hlimit := BergmanMonomials.bergmanDimension_div_pow_tendsto_volume K have hevent := hlimit.eventually (gt_mem_nhds (show normalizedVolume K.carrier < - normalizedVolume K.carrier + 1 by linarith)) + normalizedVolume K.carrier + 1 by linarith only [])) filter_upwards [hevent, eventually_gt_atTop (0 : ℕ)] with k hquot hk have hkreal : 0 < (k : ℝ) := by exact_mod_cast hk exact (div_le_iff₀ (pow_pos hkreal n)).mp hquot.le @@ -2675,7 +2640,6 @@ private def coordinateMultiplicity {n r : ℕ} private theorem sum_coordinateMultiplicity {n r : ℕ} (q : Fin r → Fin n) : (∑ i : Fin n, coordinateMultiplicity q i) = r := by - classical unfold coordinateMultiplicity rw [← Fintype.card_sigma] exact (Fintype.card_congr (Equiv.sigmaFiberEquiv q)).trans @@ -2711,7 +2675,6 @@ private theorem exists_multiIndexCoordinate_perm {n : ℕ} ∃ σ : Equiv.Perm (Fin (∑ i, α i)), ∀ a, q a = AdaptedBergmanBasis.multiIndexCoordinate α (σ a) := by - classical let e : ∀ i : Fin n, {a : Fin (∑ i, α i) // q a = i} ≃ {a : Fin (∑ i, α i) // @@ -2751,7 +2714,6 @@ private theorem exponentialPartition_pos {ι : Type*} [Fintype ι] (w : ι → ℝ) (order : ι → ℕ) (hw : ∀ i, 0 ≤ w i) (hpositive : ∃ i, 0 < w i) (t : ℝ) : 0 < exponentialPartition w order t := by - classical obtain ⟨i, hi⟩ := hpositive unfold exponentialPartition exponentialMoment simp only [pow_zero, mul_one] @@ -2764,8 +2726,6 @@ private theorem hasDerivAt_exponentialMoment {ι : Type*} [Fintype ι] (w : ι → ℝ) (order : ι → ℕ) (r : ℕ) (t : ℝ) : HasDerivAt (exponentialMoment w order r) (exponentialMoment w order (r + 1) t) t := by - classical - unfold exponentialMoment refine HasDerivAt.fun_sum (u := (Finset.univ : Finset ι)) (fun i _ => ?_) exact ((((hasDerivAt_id t).mul_const (order i : ℝ)).exp).const_mul @@ -2776,8 +2736,6 @@ private theorem hasDerivAt_exponentialPartition {ι : Type*} [Fintype ι] (w : ι → ℝ) (order : ι → ℕ) (t : ℝ) : HasDerivAt (exponentialPartition w order) (exponentialMoment w order 1 t) t := by - change HasDerivAt (exponentialMoment w order 0) - (exponentialMoment w order 1 t) t exact hasDerivAt_exponentialMoment w order 0 t private theorem exponentialMoment_sq_le_partition_mul_second @@ -2787,7 +2745,6 @@ private theorem exponentialMoment_sq_le_partition_mul_second exponentialMoment w order 1 t ^ 2 ≤ exponentialPartition w order t * exponentialMoment w order 2 t := by - unfold exponentialPartition exponentialMoment refine Finset.sum_sq_le_sum_mul_sum_of_sq_le_mul Finset.univ ?_ ?_ ?_ · intro i _ exact mul_nonneg (mul_nonneg (hw i) (pow_nonneg (Nat.cast_nonneg _) _)) (Real.exp_pos _).le @@ -2807,7 +2764,6 @@ private theorem hasDerivAt_logarithmicPotential {ι : Type*} [Fintype ι] HasDerivAt (logarithmicPotential w order k) (exponentialMoment w order 1 t / exponentialPartition w order t / k) t := by - unfold logarithmicPotential exact ((hasDerivAt_exponentialPartition w order t).log (exponentialPartition_pos w order hw hpositive t).ne').div_const k @@ -2860,7 +2816,7 @@ private theorem convexOn_logarithmicPotential {ι : Type*} [Fintype ι] · have hvar := exponentialMoment_sq_le_partition_mul_second w order hw t - nlinarith + linarith only [hvar] · exact sq_nonneg _ · exact hk.le @@ -2873,8 +2829,7 @@ private theorem logarithmicPotential_deriv_nonneg {ι : Type*} [Fintype ι] w order hw hpositive k t).deriv] apply div_nonneg · apply div_nonneg - · unfold exponentialMoment - exact Finset.sum_nonneg fun i _ => + · exact Finset.sum_nonneg fun i _ => mul_nonneg (mul_nonneg (hw i) (by positivity)) (Real.exp_pos _).le · exact (exponentialPartition_pos w order hw hpositive t).le @@ -2925,14 +2880,12 @@ private theorem factorial_mul_volume_pos {n : ℕ} private theorem canonicalScale_pos {n : ℕ} (K : CenteredBody n) : 0 < canonicalScale K := by - unfold canonicalScale exact Real.rpow_pos_of_pos (factorial_mul_volume_pos K) _ private theorem canonicalScale_pow {n : ℕ} (hn : 0 < n) (K : CenteredBody n) : canonicalScale K ^ n = (n.factorial : ℝ) * normalizedVolume K.carrier := by - unfold canonicalScale exact Real.rpow_inv_natCast_pow (factorial_mul_volume_pos K).le (Nat.ne_of_gt hn) @@ -2981,8 +2934,7 @@ private theorem tendsto_choose_floor_mul_div_pow (fun k : ℕ => (((Nat.floor (t * (k : ℝ)) + b : ℕ) : ℝ) ^ r / (r.factorial : ℝ))) := by - simpa only [Nat.cast_add, Function.comp_def] using - (isEquivalent_choose r).comp_tendsto hshift + exact (isEquivalent_choose r).comp_tendsto hshift have hnonzero : ∀ᶠ k : ℕ in atTop, ((Nat.floor (t * (k : ℝ)) + b : ℕ) : ℝ) ^ r / (r.factorial : ℝ) ≠ 0 := by @@ -3111,7 +3063,6 @@ private def coordinateSum (n : ℕ) : Space n →ₗ[ℝ] ℝ where private theorem coordinateSum_surjective (n : ℕ) (hn : 0 < n) : Function.Surjective (coordinateSum n) := by - classical intro t let i : Fin n := ⟨0, hn⟩ refine ⟨fun j => if j = i then t else 0, ?_⟩ @@ -3125,7 +3076,6 @@ private theorem continuous_coordinateSum (n : ℕ) : private theorem mem_centeredSimplex_iff {n : ℕ} {y : Space n} : y ∈ centeredSimplex n ↔ (∀ i, -(1 : ℝ) ≤ y i) ∧ (∑ i, y i) ≤ 1 := by - classical have hc : (0 : ℝ) < (n : ℝ) + 1 := by positivity constructor · rintro ⟨x, hx, rfl⟩ @@ -3134,12 +3084,12 @@ private theorem mem_centeredSimplex_iff {n : ℕ} {y : Space n} : constructor · intro i have hp := mul_nonneg hc.le (hx.1 i) - linarith + linarith only [hp] · have hsum : ((n : ℝ) + 1) * (∑ i, x i) ≤ (n : ℝ) + 1 := (mul_le_mul_of_nonneg_left hx.2 hc.le).trans_eq (mul_one _) simpa only [Finset.sum_sub_distrib, ← Finset.mul_sum, Finset.sum_const, Finset.card_univ, Fintype.card_fin, nsmul_eq_mul, mul_one, tsub_le_iff_right, ge_iff_le] using - (show ((n : ℝ) + 1) * (∑ i, x i) - (n : ℝ) ≤ 1 by linarith) + (show ((n : ℝ) + 1) * (∑ i, x i) - (n : ℝ) ≤ 1 by linarith only [hsum]) · rintro ⟨hy, hsum⟩ let x : Space n := fun i => (y i + 1) / ((n : ℝ) + 1) refine ⟨x, ⟨?_, ?_⟩, ?_⟩ @@ -3149,7 +3099,7 @@ private theorem mem_centeredSimplex_iff {n : ℕ} {y : Space n} : rw [← Finset.sum_div, div_le_iff₀ hc] simpa only [Finset.sum_add_distrib, Finset.sum_const, Finset.card_univ, Fintype.card_fin, nsmul_eq_mul, mul_one, one_mul] using - (show (∑ i, y i) + (n : ℝ) ≤ (n : ℝ) + 1 by linarith) + (show (∑ i, y i) + (n : ℝ) ≤ (n : ℝ) + 1 by linarith only [hsum]) · funext i change ((n : ℝ) + 1) * ((y i + 1) / ((n : ℝ) + 1)) - 1 = y i field_simp @@ -3179,7 +3129,6 @@ private theorem isCompact_standardSimplex (n : ℕ) : constructor · exact hx.1 · intro i - change x i ≤ 1 exact (Finset.single_le_sum (fun j _ => hx.1 j) (Finset.mem_univ i)).trans hx.2 @@ -3204,7 +3153,7 @@ private theorem convex_centeredSimplex (n : ℕ) : change -(1 : ℝ) ≤ a * x i + b * y i have hax : 0 ≤ a * (x i + 1) := mul_nonneg ha (by linarith [hx'.1 i]) have hby : 0 ≤ b * (y i + 1) := mul_nonneg hb (by linarith [hy'.1 i]) - nlinarith + linarith only [hab, hax, hby] · change (∑ i, (a * x i + b * y i)) ≤ 1 rw [Finset.sum_add_distrib, ← Finset.mul_sum, ← Finset.mul_sum] calc @@ -3392,12 +3341,12 @@ private theorem splitStandardSimplex_fiber_of_mem_Ico (n : ℕ) {t : ℝ} · rintro ⟨_, hx, hsum⟩ refine ⟨fun i => mul_nonneg (inv_nonneg.mpr hscale.le) (hx i), ?_⟩ rw [← Finset.mul_sum, inv_mul_le_one₀ hscale] - linarith + linarith only [hsum] · rintro ⟨hx, hsum⟩ refine ⟨ht.1, fun i => (mul_nonneg_iff_of_pos_left (inv_pos.mpr hscale)).mp (hx i), ?_⟩ rw [← Finset.mul_sum, inv_mul_le_one₀ hscale] at hsum - linarith + linarith only [hsum] private theorem splitStandardSimplex_fiber_eq_empty (n : ℕ) {t : ℝ} (ht : t < 0 ∨ 1 < t) : @@ -3473,7 +3422,6 @@ private theorem normalizedVolume_standardSimplex_succ_eq_integral_fibers (splitStandardSimplex n) ≠ ∞ := by rw [volume_splitStandardSimplex n] exact (Ehrhart.Geometry.isCompact_standardSimplex (n + 1)).measure_ne_top - unfold normalizedVolume calc ((volume : Measure (Space (n + 1))) (standardSimplex (n + 1))).toReal = @@ -3500,7 +3448,7 @@ private theorem integral_one_sub_pow_Icc (n : ℕ) : (∫ t in Set.Icc (0 : ℝ) 1, (1 - t) ^ n) = 1 / ((n : ℝ) + 1) := by rw [MeasureTheory.integral_Icc_eq_integral_Ioc, - ← intervalIntegral.integral_of_le (by norm_num : (0 : ℝ) ≤ 1), + ← intervalIntegral.integral_of_le (by exact zero_le_one : (0 : ℝ) ≤ 1), intervalIntegral.integral_comp_sub_left (fun t : ℝ => t ^ n) 1, integral_pow] norm_num @@ -3539,7 +3487,7 @@ private theorem normalizedVolume_standardSimplex (n : ℕ) : | zero => have hz : (0 : Space 0) ∈ standardSimplex 0 := by simp only [standardSimplex, IsEmpty.forall_iff, Finset.univ_eq_empty, Finset.sum_empty, - zero_le_one, and_self, ofPred_true, Matrix.zero_empty, mem_univ] + zero_le_one, and_self, ofPred_true, mem_univ] unfold normalizedVolume rw [MeasureTheory.Measure.volume_pi_eq_dirac (0 : Space 0), MeasureTheory.Measure.dirac_apply_of_mem hz] @@ -3589,7 +3537,6 @@ private theorem centeredSimplex_coordinate_tail {n : ℕ} {y : Space n | y ∈ T ∧ t ≤ y i + 1} = (fun x : Space n => x + (Pi.single i t - 1)) '' (((n : ℝ) + 1 - t) • standardSimplex n) := by - classical let v : Space n := Pi.single i t let b : Space n := v - 1 have hvsum : (∑ j, v j) = t := by simp only [Pi.single_apply, Finset.sum_ite_eq', @@ -3610,7 +3557,7 @@ private theorem centeredSimplex_coordinate_tail {n : ℕ} constructor · rintro ⟨hy, hyt⟩ have hy' := (hT y).mp hy - refine ⟨y - b, ?_, by ext j; simp only [Pi.add_apply, Pi.sub_apply, sub_add_cancel]⟩ + refine ⟨y - b, ?_, by ext j; simp only [sub_add_cancel]⟩ rw [Set.mem_smul_set_iff_inv_smul_mem₀ hp.ne'] change (∀ j, 0 ≤ ((n : ℝ) + 1 - t)⁻¹ * (y j - b j)) ∧ (∑ j, ((n : ℝ) + 1 - t)⁻¹ * (y j - b j)) ≤ 1 @@ -3620,7 +3567,7 @@ private theorem centeredSimplex_coordinate_tail {n : ℕ} by_cases hji : j = i · subst j simp only [b, Pi.sub_apply, v, Pi.single_eq_same, Pi.one_apply] - linarith + linarith only [hyt] · simp only [b, Pi.sub_apply, v, Pi.single_apply, ite_eq_right hji, Pi.one_apply] linarith [hy'.1 j] @@ -3641,7 +3588,7 @@ private theorem centeredSimplex_coordinate_tail {n : ℕ} change -(1 : ℝ) ≤ x j + (v j - 1) linarith [hx0 j, hvnonneg j] · simp only [Pi.add_apply, Finset.sum_add_distrib, hbsum] - linarith + linarith only [hxsum] · change t ≤ (x + b) i + 1 simp only [Pi.add_apply, b, Pi.sub_apply, v, Pi.single_eq_same, Pi.one_apply] @@ -3713,7 +3660,7 @@ private theorem centered_integral_zero_of_coordinate_tails exact (hsupport y hy).2 have hvol : (volume : Measure (Space n)).real K = ((n : ℝ) + 1) ^ n * v := by - have h := htail i (t := 0) (by norm_num) (by positivity) + have h := htail i (t := 0) (by rfl) (by positivity) have hsub : K ⊆ {y : Space n | 0 ≤ y i + 1} := fun y hy => (hsupport y hy).1 rw [measureReal_restrict_apply' hK.measurableSet, @@ -3747,7 +3694,7 @@ private theorem centered_integral_zero_of_coordinate_tails (by positivity : (n : ℝ) + 1 ≠ 0), not_false_eq_true, IsUnit.mul_div_cancel_right] rw [integral_add (hcoord i) hone, integral_const, measureReal_restrict_apply_univ, smul_eq_mul, mul_one, hvol] at hmoment - linarith + exact add_eq_right.mp hmoment /-- The centered simplex has barycenter zero. -/ public @@ -3821,7 +3768,6 @@ private theorem exponentialPartition_le_exp_mul_sum {t : ℝ} (ht : 0 ≤ t) : BergmanGeodesicConvexity.exponentialPartition w order t ≤ Real.exp (t * (J : ℝ)) * ∑ i, w i := by - classical unfold BergmanGeodesicConvexity.exponentialPartition BergmanGeodesicConvexity.exponentialMoment simp only [pow_zero, mul_one] @@ -3925,7 +3871,7 @@ private theorem localUpperBounds_nonempty_of_continuous_majorant have hev : ∀ᶠ y : X in 𝓝 x, b y < b x + 1 := hb.continuousAt.eventually - (Iio_mem_nhds (by linarith : b x < b x + 1)) + (Iio_mem_nhds (by linarith only [] : b x < b x + 1)) exact hev.mono fun y hy => le_trans (hpoint y) hy.le private theorem upperRegularization_mono @@ -3937,7 +3883,6 @@ private theorem upperRegularization_mono apply csInf_le_csInf (localUpperBounds_bddBelow f x) hg intro c hc change (∀ᶠ y : X in 𝓝 x, g y ≤ c) at hc - change ∀ᶠ y : X in 𝓝 x, f y ≤ c exact hc.mono fun y hy => le_trans (hle y) hy private abbrev PositiveJointLogSpace (n : ℕ) := @@ -3951,7 +3896,6 @@ private def jointLogTime {n : ℕ} private theorem jointLogTime_pos {n : ℕ} (q : PositiveJointLogSpace n) : 0 < jointLogTime q := by - unfold jointLogTime exact Real.log_pos q.property private def jointRealCoordinate {n : ℕ} @@ -3965,13 +3909,12 @@ private theorem continuous_jointRealCoordinate (n : ℕ) : private theorem continuous_jointLogTime (n : ℕ) : Continuous (jointLogTime (n := n)) := by - unfold jointLogTime have hτ : Continuous (fun q : PositiveJointLogSpace n => q.val.2) := continuous_snd.comp continuous_subtype_val apply (Complex.continuous_normSq.comp hτ).log intro q - exact ne_of_gt (lt_trans (by norm_num : (0 : ℝ) < 1) q.property) + exact ne_of_gt (lt_trans (by exact zero_lt_one : (0 : ℝ) < 1) q.property) end ActualJetUpperEnvelope @@ -3994,38 +3937,12 @@ private theorem log_norm_le_circleAverage_of_differentiable let G : ℂ → ℂ := fun w => g ((R : ℂ) * w) have hG : Differentiable ℂ G := by exact hg.comp (by fun_prop) - have hGanalytic : AnalyticOnNhd ℂ G (Set.univ : Set ℂ) := - hG.differentiableOn.analyticOnNhd isOpen_univ have hGzero : G 0 ≠ 0 := by simpa only [G, mul_zero, ne_eq] using hzero - have hmeromorphic : Meromorphic G := by - intro w - exact (hG.analyticAt w).meromorphicAt - have hdivisor : - 0 ≤ MeromorphicOn.divisor G (Set.univ : Set ℂ) := - MeromorphicOn.AnalyticOnNhd.divisor_nonneg hGanalytic - have hcount : - 0 ≤ Function.locallyFinsuppWithin.logCounting - (MeromorphicOn.divisor G (Set.univ : Set ℂ)) 1 := - Function.locallyFinsuppWithin.logCounting_nonneg - hdivisor (by norm_num) - have hjensen := - Function.locallyFinsuppWithin.logCounting_divisor_eq_circleAverage_sub_const - hmeromorphic (by norm_num : (1 : ℝ) ≠ 0) - rw [(hG.analyticAt 0).meromorphicTrailingCoeffAt_of_ne_zero - hGzero] at hjensen - have hjensen' : - Function.locallyFinsuppWithin.logCounting - (MeromorphicOn.divisor G (Set.univ : Set ℂ)) 1 = - Real.circleAverage - (fun w : ℂ => Real.log ‖G w‖) 0 1 - Real.log ‖G 0‖ := by - simpa only [top_eq_univ] using hjensen have hcenter : - Real.log ‖G 0‖ ≤ - Real.circleAverage - (fun w : ℂ => Real.log ‖G w‖) 0 1 := by - rw [hjensen'] at hcount - linarith + Real.log ‖G 0‖ ≤ Real.circleAverage (fun w : ℂ => Real.log ‖G w‖) 0 1 := by + simpa only [Real.circleAverage_def, circleMap_zero, Complex.ofReal_one, one_mul, + smul_eq_mul] using log_norm_le_unitCircle_integral_of_differentiable hG hGzero simpa only [G, Real.circleAverage_eq_circleAverage_zero_one, add_zero, Complex.ofReal_one, one_mul, ge_iff_le, mul_zero] using hcenter @@ -4042,15 +3959,12 @@ private theorem log_hilbert_norm_le_circleAverage_all_radius · simp only [hR, Real.circleAverage_zero, Std.le_refl] let g : ℂ → ℂ := fun w => inner ℂ (F 0) (F w) have hg : Differentiable ℂ g := by - simpa only [coe_innerSL_apply, comp_def] using - (innerSL ℂ (F 0)).differentiable.comp hF + exact (innerSL ℂ (F 0)).differentiable.comp hF have hgzero : g 0 ≠ 0 := by - change inner ℂ (F 0) (F 0) ≠ 0 exact (inner_self_ne_zero (𝕜 := ℂ)).mpr hzero have hganalytic : AnalyticOnNhd ℂ g (Set.univ : Set ℂ) := hg.differentiableOn.analyticOnNhd isOpen_univ have hglobal : ∀ᶠ w : ℂ in codiscrete ℂ, g w ≠ 0 := by - change {w : ℂ | g w ≠ 0} ∈ codiscrete ℂ exact hganalytic.preimage_zero_mem_codiscrete hgzero have hnonzero : ∀ᶠ w : ℂ in codiscreteWithin (Metric.sphere (0 : ℂ) |R|), @@ -4070,9 +3984,10 @@ private theorem log_hilbert_norm_le_circleAverage_all_radius simp only [hw, ↓reduceIte, corrected] have hgint : CircleIntegrable (fun w : ℂ => Real.log ‖g w‖) 0 R := by - apply MeromorphicOn.circleIntegrable_log_norm - intro w _ - exact (hg.analyticAt w).meromorphicAt + change IntervalIntegrable + (fun θ : ℝ => Real.log ‖g (0 + R * Complex.exp (θ * Complex.I))‖) + volume 0 (2 * Real.pi) + exact intervalIntegrable_log_norm_circle_of_differentiable hg 0 R have hcorrectedint : CircleIntegrable corrected 0 R := CircleIntegrable.congr_codiscreteWithin hcodiscrete hgint have hFint : CircleIntegrable @@ -4096,7 +4011,7 @@ private theorem log_hilbert_norm_le_circleAverage_all_radius calc Real.log ‖g w‖ ≤ Real.log (‖F 0‖ * ‖F w‖) := by apply Real.log_le_log (norm_pos_iff.mpr hgw) - simpa only [g] using norm_inner_le_norm (F 0) (F w) + exact norm_inner_le_norm (F 0) (F w) _ = Real.log ‖F 0‖ + Real.log ‖F w‖ := Real.log_mul (norm_ne_zero_iff.mpr hzero) (norm_ne_zero_iff.mpr (hcircle w hw)) @@ -4123,7 +4038,7 @@ private theorem log_hilbert_norm_le_circleAverage_all_radius norm_norm, g] rw [hcenter, Real.log_pow] at hcombined norm_num at hcombined - linarith + linarith only [hcombined] private theorem log_hilbert_norm_sq_le_circleAverage_all_radius {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] @@ -4178,7 +4093,7 @@ private theorem roundedLatticeExponent_coordinate_error {n : ℕ} constructor · apply (div_le_iff₀ hkreal).mpr change (⌊(k : ℝ) * u i⌋ : ℝ) ≤ u i * (k : ℝ) - nlinarith + linarith only [hfloor] · change u i - (⌊(k : ℝ) * u i⌋ : ℝ) / (k : ℝ) < 1 / (k : ℝ) have heq : @@ -4188,7 +4103,7 @@ private theorem roundedLatticeExponent_coordinate_error {n : ℕ} field_simp rw [heq] apply (div_lt_div_iff_of_pos_right hkreal).mpr - linarith + linarith only [hnext] private theorem roundedLatticeExponent_norm_sub_le {n : ℕ} {k : ℕ} (hk : 0 < k) (u : Space n) : @@ -4199,7 +4114,7 @@ private theorem roundedLatticeExponent_norm_sub_le {n : ℕ} rw [Real.norm_eq_abs, Pi.sub_apply] have h := roundedLatticeExponent_coordinate_error hk u i rw [abs_of_nonpos (sub_nonpos.mpr h.1)] - linarith [h.2] + linarith only [h] private theorem tendsto_roundedLatticeExponent {n : ℕ} (u : Space n) : @@ -4242,7 +4157,6 @@ private theorem zero_mem_monomialIndex_all_weights {n : ℕ} (0 : Space n) ∈ LatticeAsymptotics.monomialIndex K k := by refine ⟨LatticeAsymptotics.zero_mem_interior K, ?_⟩ - unfold LatticeAsymptotics.scaledIntegerLattice exact Set.zero_mem_smul_set (Submodule.zero_mem _) private def nearestMonomialIndex {n : ℕ} @@ -4418,7 +4332,7 @@ private theorem sourceMomentDensity_integrable {n : ℕ} have h := MonomialIntegrability.integrable_monomialWeight_of_bounded_support K.compact (LatticeAsymptotics.zero_mem_interior K) D.smooth.continuous D.supportBound - (k := (1 : ℝ)) (by norm_num) + (k := (1 : ℝ)) (by exact zero_lt_one) change Integrable (fun x : Space n => Real.exp (1 * @@ -4437,7 +4351,7 @@ private theorem sourceMomentDensity_integral_pos {n : ℕ} have h := MonomialIntegrability.monomialIntegral_pos_of_bounded_support K.compact (LatticeAsymptotics.zero_mem_interior K) D.smooth.continuous D.supportBound - (k := (1 : ℝ)) (by norm_num) + (k := (1 : ℝ)) (by exact zero_lt_one) simpa only [gt_iff_lt, MonomialIntegrability.monomialIntegral, MonomialIntegrability.monomialWeight, SupportFunction.pairing, Pi.zero_apply, zero_mul, Finset.sum_const_zero, zero_sub, mul_neg, one_mul] using h @@ -4452,7 +4366,7 @@ private theorem sourceMomentPhase_le_supportError {n : ℕ} K.compact hp x have hb := (abs_le.mp (D.supportBound x)).1 unfold phase - linarith + linarith only [hs, hb] private theorem sourceMomentPhase_bddAbove {n : ℕ} {K : CenteredBody n} @@ -4468,7 +4382,6 @@ private theorem sourceMomentLegendre_le_supportError {n : ℕ} (D : SourceMomentPotential K) {p : Space n} (hp : p ∈ K.carrier) : legendreTransform D.potential p ≤ D.supportError := by - unfold legendreTransform apply csSup_le (Set.range_nonempty _) rintro _ ⟨x, rfl⟩ exact sourceMomentPhase_le_supportError D hp x @@ -4495,7 +4408,7 @@ private theorem abs_sourceMomentLegendre_le {n : ℕ} · have hlow := neg_sourceMomentPotential_zero_le_legendre D hp have hφ := (le_abs_self (D.potential 0)).trans (le_max_right D.supportError |D.potential 0|) - linarith + linarith only [hlow, hφ] · exact (sourceMomentLegendre_le_supportError D hp).trans (le_max_left D.supportError |D.potential 0|) @@ -4687,8 +4600,7 @@ private theorem isCompact_normalizedSourcePointwiseFamily {n : ℕ} ((sourceBodyLipschitzConstant K : ℝ) * dist x 0) have hQ : IsCompact (Set.univ.pi Q) := isCompact_univ_pi (fun x => by - simpa only [dist_zero_right, Q] using - (isCompact_closedBall (0 : ℝ) + exact (isCompact_closedBall (0 : ℝ) ((sourceBodyLipschitzConstant K : ℝ) * dist x 0))) refine IsCompact.of_isClosed_subset hQ (isClosed_normalizedSourcePointwiseFamily K) ?_ @@ -4737,7 +4649,7 @@ private theorem equicontinuous_normalizedSourceContinuousFamily {n : ℕ} private theorem isCompact_normalizedSourceContinuousFamily {n : ℕ} (K : CenteredBody n) : IsCompact (normalizedSourceContinuousFamily K) := by - apply ArzelaAscoli.isCompact_of_equicontinuous + apply isCompact_continuousMap_family_of_pointwise (normalizedSourceContinuousFamily K) · rw [normalizedSourceContinuousFamily_image] exact isCompact_normalizedSourcePointwiseFamily K @@ -4757,7 +4669,7 @@ private theorem sourceMomentBodyFenchel_le {n : ℕ} Set.range (phase p D.potential) from ⟨x, rfl⟩) change SupportFunction.pairing p x - D.potential x ≤ legendreTransform D.potential p at h - linarith + linarith only [h] end MomentMinimizer @@ -4912,8 +4824,7 @@ private theorem convexOn_of_tendsto_minimumNormalizedSourceContinuousMap (hpoint (a • x + b • y)) ((hpoint x).const_mul a |>.add ((hpoint y).const_mul b)) filter_upwards with j - simpa only [smul_eq_mul] using - (convexOn_minimumNormalizedSourceContinuousMap (D (φ j))).2 + exact (convexOn_minimumNormalizedSourceContinuousMap (D (φ j))).2 (Set.mem_univ x) (Set.mem_univ y) ha hb hab private theorem exists_minimumNormalizedSourceConvex_subsequence {n : ℕ} @@ -5090,9 +5001,9 @@ private theorem minimumNormalizedSourceBodyDual_eq_legendre {n : ℕ} from ⟨y - sourceMomentMinimumPoint D, rfl⟩) rw [minimumNormalizedSource_phase] at h simp only [sub_add_cancel] at h - linarith + linarith only [h] unfold minimumNormalizedSourceBodyDual - linarith + linarith only [hupper] · change sSup (Set.range (phase p (minimumNormalizedSourceContinuousMap D))) ≤ @@ -5111,7 +5022,7 @@ private theorem minimumNormalizedSourceBodyDual_eq_legendre {n : ℕ} (x + sourceMomentMinimumPoint D) ≤ legendreTransform D.potential p at h unfold minimumNormalizedSourceBodyDual - linarith + linarith only [h] private theorem minimumNormalizedSourceBodyDual_nonneg {n : ℕ} {K : CenteredBody n} @@ -5122,7 +5033,7 @@ private theorem minimumNormalizedSourceBodyDual_nonneg {n : ℕ} have h := sourceMomentBodyFenchel_le D hp (sourceMomentMinimumPoint D) unfold minimumNormalizedSourceBodyDual - linarith + linarith only [h] private theorem minimumNormalizedSourceBodyDual_integrableOn {n : ℕ} {K : CenteredBody n} @@ -5260,8 +5171,7 @@ private theorem sourceExtendedBodyLegendre_eq_of_bddAbove {n : ℕ} sourceExtendedBodyLegendre f p = ENNReal.ofReal (legendreTransform f p) := by apply le_antisymm - · unfold sourceExtendedBodyLegendre - apply iSup_le + · apply iSup_le intro j apply ENNReal.ofReal_le_ofReal exact le_csSup hbdd @@ -5271,7 +5181,6 @@ private theorem sourceExtendedBodyLegendre_eq_of_bddAbove {n : ℕ} · have hreal : legendreTransform f p ≤ (sourceExtendedBodyLegendre f p).toReal := by - unfold legendreTransform apply csSup_le (Set.range_nonempty _) rintro _ ⟨x, rfl⟩ apply (ENNReal.ofReal_le_ofReal_iff @@ -5296,7 +5205,6 @@ private theorem sourceExtendedBodyLegendre_limit_le_liminf {n : ℕ} (fun j => ENNReal.ofReal (minimumNormalizedSourceBodyDual (D (φ j)) p)) atTop := by - unfold sourceExtendedBodyLegendre apply iSup_le intro k let q : Space n := @@ -5311,8 +5219,7 @@ private theorem sourceExtendedBodyLegendre_limit_le_liminf {n : ℕ} (fun j => phase p (minimumNormalizedSourceContinuousMap (D (φ j))) q) atTop (𝓝 (phase p f q)) := by - simpa only [phase] using - (tendsto_const_nhds.sub hpoint) + exact (tendsto_const_nhds.sub hpoint) have hphaseENN : Tendsto (fun j => ENNReal.ofReal @@ -5465,7 +5372,7 @@ private theorem sourceExtendedBodyLegendre_lintegral_le_of_uniformEnergy minimumNormalizedSourceBodyDual_energy (D (φ j)) have hvol := K.volume_pos.ne' field_simp at h - linarith + exact h _ ≤ normalizedVolume K.carrier * C := mul_le_mul_of_nonneg_left (henergy (φ j)) K.volume_pos.le @@ -5581,7 +5488,7 @@ private theorem exists_uniform_inner_supportBall {n : ℕ} have hznorm : ‖z‖ < ρ := by rw [hzform, norm_smul, Real.norm_eq_abs] norm_num - nlinarith + linarith only [hdist] have hzball : z ∈ Metric.ball (0 : Space n) r := by simpa only [Metric.mem_ball, dist_eq_norm, sub_zero] using hznorm.trans hρr have hzK : z ∈ K.carrier := @@ -5606,7 +5513,7 @@ private theorem exists_uniform_inner_supportBall {n : ℕ} have hznorm : ‖z‖ < ρ := by rw [hzform, norm_smul, Real.norm_eq_abs] norm_num - nlinarith + linarith only [hdist] have hzbound : |SupportFunction.pairing z x| ≤ (d / 4) * ‖x‖ := by @@ -5637,7 +5544,7 @@ private theorem exists_uniform_inner_supportBall {n : ℕ} SupportFunction.pairing_smul_left] have hzlow := (abs_le.mp hzbound).1 norm_num - nlinarith [mul_nonneg hd.le (norm_nonneg x)] + linarith only [hvbound, hpform, hzlow, mul_nonneg hd.le (norm_nonneg x)] private theorem realVolume_uniformInnerBall {n : ℕ} (c : Space n) @@ -5716,7 +5623,7 @@ private theorem exists_minimumNormalizedSource_linear_coercivity {n : ℕ} have h := minimumNormalizedSourceBodyDual_energy D have hvol := K.volume_pos.ne' field_simp at h - linarith + exact h have hbound : ρ ^ n * (δ * ‖x‖ - minimumNormalizedSourceContinuousMap D x) ≤ @@ -5773,7 +5680,7 @@ private theorem exists_minimumNormalizedSource_linear_coercivity {n : ℕ} (sourceMomentBodyEnergy D + D.potential (sourceMomentMinimumPoint D))) / ρ ^ n := by - linarith + linarith only [hdiv] _ = minimumNormalizedSourceContinuousMap D x + (normalizedVolume K.carrier / ρ ^ n) * (sourceMomentBodyEnergy D + @@ -5815,7 +5722,7 @@ private theorem integrable_exp_neg_mul_norm_all {n : ℕ} {a : ℝ} | zero => rw [MeasureTheory.Measure.volume_pi_eq_dirac (0 : Space 0)] - exact MeasureTheory.integrable_dirac (by simp only [Matrix.zero_empty, neg_mul, enorm_lt_top]) + exact MeasureTheory.integrable_dirac (by simp only [enorm_lt_top]) | succ n => exact MonomialIntegrability.integrable_exp_neg_mul_norm (Nat.zero_lt_succ n) ha @@ -5856,7 +5763,6 @@ private theorem minimumNormalizedSourcePartition_eq {n : ℕ} minimumNormalizedSourcePartition D = Real.exp (D.potential (sourceMomentMinimumPoint D)) * sourceMomentPartition D := by - unfold minimumNormalizedSourcePartition calc (∫ x : Space n, Real.exp (-minimumNormalizedSourceContinuousMap D x) @@ -5934,7 +5840,7 @@ private theorem exists_minimumNormalizedSource_strong_moser_trudinger let t : ℝ := min 1 (ε / B) have ht : 0 < t := by dsimp [t] - exact lt_min (by norm_num) (div_pos hε hB) + exact lt_min (by exact zero_lt_one) (div_pos hε hB) have htone : t ≤ 1 := min_le_left _ _ have htB : t * B ≤ ε := by calc @@ -5975,11 +5881,10 @@ private theorem exists_minimumNormalizedSource_strong_moser_trudinger have hscaled := mul_le_mul_of_nonneg_left hc ht.le rw [← Real.exp_add] apply Real.exp_le_exp.mpr - nlinarith + linarith only [hscaled, htφ] have hbound : minimumNormalizedSourcePartition D ≤ Real.exp (t * B * minimumNormalizedSourceBodyEnergy D) * I := by - unfold minimumNormalizedSourcePartition calc (∫ x : Space n, Real.exp (-minimumNormalizedSourceContinuousMap D x) @@ -6038,7 +5943,7 @@ private theorem exists_sourceMomentBerman_superlevel_uniformEnergy intro D hL have hfunctional := minimumNormalizedSourceBermanFunctional_eq D unfold minimumNormalizedSourceBermanFunctional at hfunctional - nlinarith [hA D] + linarith only [hL, hfunctional, hA D] private theorem exists_sourceMomentBerman_maximizingSequence_uniformEnergy {n : ℕ} (K : CenteredBody n) : @@ -6137,7 +6042,6 @@ private theorem tendsto_minimumNormalizedSourcePartition_of_uniformEnergy_all ∂(volume : Measure (Space n)))) := by obtain ⟨δ, B, _hδ, _hB, hG, hmajor⟩ := exists_minimumNormalizedSource_uniform_gibbs_majorant_all K C - unfold minimumNormalizedSourcePartition apply MeasureTheory.tendsto_integral_of_dominated_convergence (fun x : Space n => Real.exp (B * C) * Real.exp (-δ * ‖x‖)) @@ -6247,7 +6151,7 @@ private theorem minimumNormalizedSourceBodyDual_lintegral_eq_volume_mul_energy minimumNormalizedSourceBodyEnergy D at h have hvol := K.volume_pos.ne' field_simp at h - linarith + exact h private theorem exists_finiteEnergySourceBerman_optimizer {n : ℕ} (K : CenteredBody n) : @@ -6306,15 +6210,6 @@ private theorem exists_finiteEnergySourceBerman_optimizer {n : ℕ} Tendsto (fun j => sourceMomentBermanFunctional (D (φ j))) atTop (𝓝 S) := by - change - Tendsto - (fun j => sourceMomentBermanFunctional (D (φ j))) - atTop - (𝓝 - (sSup - (Set.range - (fun G : SourceMomentPotential K => - sourceMomentBermanFunctional G)))) exact (hmax.comp hφ.tendsto_atTop).congr' (Filter.Eventually.of_forall fun _ => rfl) have hpartition : @@ -6339,7 +6234,7 @@ private theorem exists_finiteEnergySourceBerman_optimizer {n : ℕ} funext j have h := minimumNormalizedSourceBermanFunctional_eq (D (φ j)) unfold minimumNormalizedSourceBermanFunctional at h - linarith + linarith only [h] rw [heq] at hdiff exact hdiff have hlimnonneg : @@ -6406,7 +6301,7 @@ private theorem exists_finiteEnergySourceBerman_optimizer {n : ℕ} field_simp have hS : S ≤ finiteEnergySourceBermanFunctional F := by unfold finiteEnergySourceBermanFunctional - linarith + linarith only [hFenergy] refine ⟨F, D, φ, hφ, ?_, ?_, ?_, ?_⟩ · simpa only using hconv · exact hmaxsub @@ -6432,7 +6327,6 @@ open scoped BigOperators ENNReal InnerProductSpace private theorem continuous_normalizedDensity {n : ℕ} {a : Space n → ℝ} (ha : Continuous a) : Continuous (WeightedPoincare.normalizedDensity a) := by - unfold WeightedPoincare.normalizedDensity exact (Real.continuous_exp.comp ha.neg).div_const _ private theorem integral_normalizedMeasure {n : ℕ} @@ -6484,7 +6378,7 @@ private theorem fderiv_coordinate_eval {n : ℕ} (fderiv ℝ f y) v) x) w = ((fderiv ℝ (fderiv ℝ f) x) w) v := by have hdf : DifferentiableAt ℝ (fderiv ℝ f) x := - (hf.fderiv_right (m := 1) (by norm_num)).differentiable + (hf.fderiv_right (m := 1) (by rfl)).differentiable (by simp only [ne_eq, one_ne_zero, not_false_eq_true]) |>.differentiableAt have heq := fderiv_clm_apply hdf (differentiableAt_const (c := v)) @@ -6553,7 +6447,6 @@ private theorem continuous_sourceSupportClipping {n : ℕ} {K : CenteredBody n} (F : SourceFiniteEnergyPotential K) (R : ℝ) : Continuous (sourceSupportClipping F R) := by - unfold sourceSupportClipping exact F.potential.continuous.sup ((continuous_supportFunction K.compact (K.fullDimensional.mono interior_subset)).sub continuous_const) @@ -6593,14 +6486,6 @@ private theorem convexOn_sourceSupportClipping {n : ℕ} ring refine ⟨convex_univ, ?_⟩ intro x hx y hy a b ha hb hab - change - max (F.potential (a • x + b • y)) - (SupportFunction.supportFunction K.carrier - (a • x + b • y) - R) ≤ - a * max (F.potential x) - (SupportFunction.supportFunction K.carrier x - R) + - b * max (F.potential y) - (SupportFunction.supportFunction K.carrier y - R) apply max_le · calc F.potential (a • x + b • y) ≤ @@ -6641,7 +6526,6 @@ private theorem sourceSupportClipping_le_support {n : ℕ} (x : Space n) : sourceSupportClipping F R x ≤ SupportFunction.supportFunction K.carrier x := by - unfold sourceSupportClipping exact max_le (F.supportUpper x) (sub_le_self _ hR) private theorem sourceSupportClipping_supportBound {n : ℕ} @@ -6656,7 +6540,7 @@ private theorem sourceSupportClipping_supportBound {n : ℕ} SupportFunction.supportFunction K.carrier x - R ≤ sourceSupportClipping F R x := le_max_right _ _ - exact abs_le.mpr ⟨by linarith, by linarith⟩ + exact abs_le.mpr ⟨by linarith only [hl], by linarith⟩ private theorem sourceSupportClipping_lipschitz {n : ℕ} {K : CenteredBody n} @@ -6681,7 +6565,6 @@ private theorem contDiff_mollifiedSourceSupportClipping {n : ℕ} (F : SourceFiniteEnergyPotential K) (R : ℝ) (ρ : ContDiffBump (0 : Space n)) : ContDiff ℝ ∞ (mollifiedSourceSupportClipping F R ρ) := by - unfold mollifiedSourceSupportClipping exact ρ.hasCompactSupport_normed.contDiff_convolution_left (ContinuousLinearMap.lsmul ℝ ℝ) ρ.contDiff_normed @@ -6712,12 +6595,10 @@ private theorem convexOn_mollifiedSourceSupportClipping {n : ℕ} sourceSupportClipping F R (x - y)) := by simpa only [sub_eq_add_neg, add_comm, preimage_univ, comp_def] using (convexOn_sourceSupportClipping F R).translate_right (-y) - simpa only [smul_eq_mul] using - htranslate.smul + exact htranslate.smul (ρ.nonneg_normed (μ := (volume : Measure (Space n))) y) · intro x _hx - simpa only [ContinuousLinearMap.lsmul_apply, smul_eq_mul] using - (ρ.hasCompactSupport_normed.convolutionExists_left + exact (ρ.hasCompactSupport_normed.convolutionExists_left (ContinuousLinearMap.lsmul ℝ ℝ) ρ.continuous_normed (continuous_sourceSupportClipping F R).locallyIntegrable @@ -6830,8 +6711,7 @@ private theorem eventually_sourceSupportClipping_nat_eq {n : ℕ} (SupportFunction.supportFunction K.carrier x - F.potential x)) filter_upwards [hlarge] with j hj - unfold sourceSupportClipping - exact max_eq_left (by linarith) + exact max_eq_left (by linarith only [hj]) private theorem tendsto_sourceSupportClippingPartition {n : ℕ} {K : CenteredBody n} @@ -6842,7 +6722,6 @@ private theorem tendsto_sourceSupportClippingPartition {n : ℕ} Real.exp (-sourceSupportClipping F (j : ℝ) x) ∂(volume : Measure (Space n))) atTop (𝓝 (finiteEnergySourcePartition F)) := by - unfold finiteEnergySourcePartition apply MeasureTheory.tendsto_integral_of_dominated_convergence (fun x : Space n => Real.exp (-F.potential x)) · intro j @@ -6904,7 +6783,6 @@ private theorem recoveryLegendre_le_extended {n : ℕ} (hpfinite : sourceExtendedBodyLegendre F.potential p ≠ ⊤) : legendreTransform D.potential p ≤ (sourceExtendedBodyLegendre F.potential p).toReal + ε := by - unfold legendreTransform apply csSup_le (Set.range_nonempty _) rintro _ ⟨x, rfl⟩ have hphaseENN := @@ -6953,7 +6831,6 @@ private theorem sourceMomentBodyEnergy_le_finiteEnergy_add {n : ℕ} (hdual.add hconst) filter_upwards [hfinite] with p hp exact recoveryLegendre_le_extended F D ε hlower p hp.ne - unfold sourceMomentBodyEnergy calc (normalizedVolume K.carrier)⁻¹ * (∫ p in K.carrier, legendreTransform D.potential p @@ -6971,7 +6848,7 @@ private theorem sourceMomentBodyEnergy_le_finiteEnergy_add {n : ℕ} simp only [normalizedVolume, measureReal_def, smul_eq_mul] have hvol : ((volume : Measure (Space n)) K.carrier).toReal ≠ 0 := by - simpa only [ne_eq, normalizedVolume] using K.volume_pos.ne' + exact K.volume_pos.ne' field_simp [hvol] private theorem exists_smooth_sourceSupportClipping_recovery {n : ℕ} @@ -6990,7 +6867,7 @@ private theorem exists_smooth_sourceSupportClipping_recovery {n : ℕ} mul_nonneg (Nat.cast_nonneg n) (LaurentJetSeparatedness.bodyRadius_pos K).le let δ : ℝ := ε / (L + 1) - have hδ : 0 < δ := div_pos hε (by linarith) + have hδ : 0 < δ := div_pos hε (by linarith only [hL]) let ρ : ContDiffBump (0 : Space n) := ⟨δ / 2, δ, half_pos hδ, half_lt_self hδ⟩ let D := sourceClippedMollificationMoment F R hR ρ @@ -6998,19 +6875,19 @@ private theorem exists_smooth_sourceSupportClipping_recovery {n : ℕ} dsimp [δ] rw [← mul_div_assoc] apply (div_lt_iff₀ (by linarith : 0 < L + 1)).mpr - nlinarith + linarith only [hε] have hclose : ∀ x : Space n, |D.potential x - sourceSupportClipping F R x| < ε := by intro x have hdist := dist_mollifiedSourceSupportClipping_le F hR ρ x rw [Real.dist_eq] at hdist - exact hdist.trans_lt (by simpa only [ρ, L] using hsmall) + exact hdist.trans_lt (by exact hsmall) refine ⟨D, hclose, ?_⟩ apply sourceMomentBodyEnergy_le_finiteEnergy_add F D ε intro x have hclip := sourceSupportClipping_ge F R x have hnear := (abs_lt.mp (hclose x)).1 - linarith + linarith only [hclip, hnear] private theorem sourceClippingRecovery_partition_bounds {n : ℕ} {K : CenteredBody n} @@ -7055,7 +6932,7 @@ private theorem sourceClippingRecovery_partition_bounds {n : ℕ} rw [← Real.exp_add] apply Real.exp_le_exp.mpr have h := (abs_le.mp (hclose x)).2 - linarith + linarith only [h] _ = sourceMomentPartition D := rfl · calc sourceMomentPartition D = @@ -7076,7 +6953,7 @@ private theorem sourceClippingRecovery_partition_bounds {n : ℕ} rw [← Real.exp_add] apply Real.exp_le_exp.mpr have h := (abs_le.mp (hclose x)).1 - linarith + linarith only [h] _ = Real.exp ε * (∫ x : Space n, Real.exp (-sourceSupportClipping F R x) @@ -7198,7 +7075,6 @@ private theorem finiteEnergySourceBermanFunctional_le_sSup {n : ℕ} atTop (𝓝 (finiteEnergySourceBermanFunctional F)) := by simpa only [one_div, finiteEnergySourceBermanFunctional, add_zero] using hlog.sub (tendsto_const_nhds.add hεzero) - change finiteEnergySourceBermanFunctional F ≤ S apply le_of_tendsto hlower filter_upwards with j have hsup : sourceMomentBermanFunctional (D j) ≤ S := @@ -7259,7 +7135,7 @@ private theorem finiteEnergySourcePhase_actualGradient_le let line : ℝ →ᵃ[ℝ] Space n := AffineMap.lineMap x z have hconv : ConvexOn ℝ Set.univ (fun t : ℝ => F.potential (line t)) := by - simpa only [preimage_univ, comp_def] using F.convex.comp_affineMap line + exact F.convex.comp_affineMap line have hline : HasDerivAt (fun t : ℝ => line t) (z - x) 0 := by simpa only [line, AffineMap.lineMap_apply, vsub_eq_sub, vadd_eq_add, hasDerivAt_add_const_iff, @@ -7270,12 +7146,11 @@ private theorem finiteEnergySourcePhase_actualGradient_le have hderiv : HasDerivAt (fun t : ℝ => F.potential (line t)) ((fderiv ℝ F.potential x) (z - x)) 0 := by - simpa only [map_sub, comp_def] using - hx.hasFDerivAt.comp_hasDerivAt_of_eq + exact hx.hasFDerivAt.comp_hasDerivAt_of_eq (0 : ℝ) hline hlinezero.symm have hslope := hconv.le_slope_of_hasDerivAt (Set.mem_univ (0 : ℝ)) (Set.mem_univ (1 : ℝ)) - (by norm_num : (0 : ℝ) < 1) hderiv + (by exact zero_lt_one : (0 : ℝ) < 1) hderiv have htangent : (fderiv ℝ F.potential x) (z - x) ≤ F.potential z - F.potential x := by @@ -7296,7 +7171,7 @@ private theorem finiteEnergySourcePhase_actualGradient_le F.potential x) x := by simp only [SupportFunction.pairing, Pi.sub_apply, mul_sub, Finset.sum_sub_distrib] rw [hpair] at htangent - linarith + linarith only [htangent] private theorem finiteEnergySourceGradient_pairing_le_support {n : ℕ} {K : CenteredBody n} @@ -7351,11 +7226,11 @@ private theorem finiteEnergySourceGradient_pairing_le_support have hupper := F.supportUpper (x + t • v) have hbound : t * gap ≤ C := by dsimp [gap, C] - linarith + linarith only [hupper, hsupp, hphase] have heq : t * gap = gap + (C + 1) := by dsimp [t] field_simp - linarith + linarith only [heq, hupper, hsupp, hphase, hgap'] private theorem finiteEnergySourceGradient_mem_carrier {n : ℕ} {K : CenteredBody n} @@ -7365,7 +7240,6 @@ private theorem finiteEnergySourceGradient_mem_carrier (F.potential : Space n → ℝ) x) : SpatialBergmanFatouScheffe.actualGradient F.potential x ∈ K.carrier := by - classical by_contra hnot obtain ⟨f, c, hbody, hpoint⟩ := geometric_hahn_banach_closed_point @@ -7392,7 +7266,7 @@ private theorem ae_differentiableAt_finiteEnergySource ∂(volume : Measure (Space n)), DifferentiableAt ℝ (F.potential : Space n → ℝ) x := by - exact F.lipschitz.ae_differentiableAt + exact ae_differentiableAt_lipschitz_realPi F.lipschitz private theorem measurable_finiteEnergySourceGradient {n : ℕ} {K : CenteredBody n} @@ -7414,10 +7288,6 @@ private theorem finiteEnergySourceGibbs_ae_of_volume ∂(volume : Measure (Space n)), P x) : ∀ᵐ x : Space n ∂(finiteEnergySourceGibbsProbability F), P x := by - change ∀ᵐ x : Space n - ∂((volume : Measure (Space n)).withDensity - (fun y => ENNReal.ofReal - (WeightedPoincare.normalizedDensity F.potential y))), P x exact (MeasureTheory.withDensity_absolutelyContinuous (volume : Measure (Space n)) (fun y => ENNReal.ofReal @@ -7478,7 +7348,6 @@ private theorem finiteEnergySourceExtendedLegendre_actualGradient rw [sourceExtendedBodyLegendre_eq_of_bddAbove F.potential p hbdd] congr 1 - unfold legendreTransform apply le_antisymm · apply csSup_le (Set.range_nonempty _) rintro _ ⟨z, rfl⟩ @@ -7576,7 +7445,6 @@ private theorem integral_finiteEnergySourceGradientPushforward {n : ℕ} v (SpatialBergmanFatouScheffe.actualGradient F.potential x) ∂(finiteEnergySourceGibbsProbability F)) := by - unfold finiteEnergySourceGradientPushforward exact MeasureTheory.integral_map (measurable_finiteEnergySourceGradient F).aemeasurable v.continuous.aestronglyMeasurable @@ -7587,8 +7455,7 @@ private theorem finiteEnergySourceExtendedLegendre_zero {n : ℕ} sourceExtendedBodyLegendre F.potential (0 : Space n) = 0 := by apply le_antisymm - · unfold sourceExtendedBodyLegendre - apply iSup_le + · apply iSup_le intro j have hphase : phase (0 : Space n) F.potential @@ -7654,7 +7521,7 @@ private theorem finiteEnergyFiniteTarget_fenchel {n : ℕ} change SupportFunction.pairing p x - F.potential x ≤ (sourceExtendedBodyLegendre F.potential p).toReal at hreal - linarith + linarith only [hreal] private def finiteEnergyTargetTestBound {n : ℕ} (K : CenteredBody n) @@ -7710,7 +7577,7 @@ private theorem finiteEnergyTargetDualPhase_le {n : ℕ} have hdual := ENNReal.toReal_nonneg (a := sourceExtendedBodyLegendre F.potential p) unfold finiteEnergyTargetDualPhase - linarith + linarith only [hdual, ht, hpair] private def finiteEnergyTargetGeodesic {n : ℕ} {K : CenteredBody n} @@ -7755,7 +7622,6 @@ private theorem finiteEnergyTargetGeodesic_zero_le {n : ℕ} (v : C(Space n, ℝ)) (x : Space n) : finiteEnergyTargetGeodesic F v 0 x ≤ F.potential x := by - unfold finiteEnergyTargetGeodesic apply csSup_le ((finiteEnergyFiniteTargetSet_nonempty F).image _) rintro _ ⟨p, hp, rfl⟩ @@ -7812,7 +7678,7 @@ private theorem finiteEnergyTargetGeodesic_lipschitz {n : ℕ} (mul_le_mul_of_nonneg_left hpbound (Nat.cast_nonneg n)) (norm_nonneg _) unfold finiteEnergyTargetDualPhase at hy ⊢ - linarith + linarith only [hy, hpair] private theorem continuous_finiteEnergyTargetGeodesic {n : ℕ} {K : CenteredBody n} @@ -7903,7 +7769,7 @@ private theorem finiteEnergyTargetGeodesic_zero_eq_of_differentiableAt change (sourceExtendedBodyLegendre F.potential p).toReal = SupportFunction.pairing p x - F.potential x at hleg - linarith + linarith only [hgeodesic, hleg] private theorem finiteEnergyTargetGeodesic_zero_eq {n : ℕ} {K : CenteredBody n} @@ -7948,13 +7814,6 @@ private theorem finiteEnergyTargetGeodesic_uniform_error {n : ℕ} finiteEnergyTargetGeodesic F v t x + |t| * finiteEnergyTargetTestBound K v := by rw [← finiteEnergyTargetGeodesic_zero_eq F v x] - change - sSup - ((fun p : Space n => - finiteEnergyTargetDualPhase F v 0 p x) '' - finiteEnergyFiniteTargetSet F) ≤ - finiteEnergyTargetGeodesic F v t x + - |t| * finiteEnergyTargetTestBound K v apply csSup_le ((finiteEnergyFiniteTargetSet_nonempty F).image _) rintro _ ⟨p, hp, rfl⟩ @@ -7976,8 +7835,8 @@ private theorem finiteEnergyTargetGeodesic_uniform_error {n : ℕ} 0 * v p ≤ finiteEnergyTargetGeodesic F v t x + |t| * finiteEnergyTargetTestBound K v - linarith - linarith + linarith only [ht, hphase] + linarith only [hzero] · have hupper : finiteEnergyTargetGeodesic F v t x ≤ F.potential x + @@ -7998,8 +7857,8 @@ private theorem finiteEnergyTargetGeodesic_uniform_error {n : ℕ} _ ≤ |t| * finiteEnergyTargetTestBound K v := mul_le_mul_of_nonneg_left htest (abs_nonneg t) unfold finiteEnergyTargetDualPhase - linarith - linarith + linarith only [ht, hfenchel] + linarith only [hupper] private theorem finiteEnergyTargetGeodesic_densityIntegrable {n : ℕ} {K : CenteredBody n} @@ -8026,7 +7885,7 @@ private theorem finiteEnergyTargetGeodesic_densityIntegrable {n : ℕ} have h := (abs_le.mp (finiteEnergyTargetGeodesic_uniform_error F v t x)).1 dsimp [A] - linarith + linarith only [h] end MomentTargetGeodesic @@ -8087,7 +7946,7 @@ private theorem exists_finiteEnergySource_linear_coercivity have h := finiteEnergySourceBodyEnergy_eq_setIntegral F have hvol := K.volume_pos.ne' field_simp at h - linarith + linarith only [h] have hbound : ρ ^ n * (δ * ‖x‖ - F.potential x) ≤ normalizedVolume K.carrier * @@ -8132,7 +7991,7 @@ private theorem exists_finiteEnergySource_linear_coercivity F.potential x + (normalizedVolume K.carrier * finiteEnergySourceBodyEnergy F) / ρ ^ n := by - linarith + linarith only [hdiv] _ = F.potential x + (normalizedVolume K.carrier / ρ ^ n) * finiteEnergySourceBodyEnergy F := by @@ -8156,7 +8015,7 @@ private theorem exists_finiteEnergyTargetGeodesic_linear_coercivity have hF := hcoerc F x have ht := (abs_le.mp (finiteEnergyTargetGeodesic_uniform_error F v t x)).1 - linarith + linarith only [hF, ht] private theorem exists_finiteEnergyTargetGeodesic_minimum {n : ℕ} {K : CenteredBody n} @@ -8195,13 +8054,13 @@ private theorem exists_finiteEnergyTargetGeodesic_minimum (finiteEnergyTargetGeodesic F v t 0 + C) / δ ≤ R := le_max_right 0 _ have h := (div_le_iff₀ hδ).mp hmax - nlinarith + linarith only [h] have hxcoerc := hcoerc x have hzeroMin := hmin hzero change finiteEnergyTargetGeodesic F v t m ≤ finiteEnergyTargetGeodesic F v t 0 at hzeroMin - nlinarith [mul_lt_mul_of_pos_left hnorm hδ] + linarith only [hthreshold, hxcoerc, hzeroMin, mul_lt_mul_of_pos_left hnorm hδ] private def finiteEnergyTargetGeodesicMinimumPoint {n : ℕ} {K : CenteredBody n} @@ -8232,7 +8091,6 @@ private theorem finiteEnergyTargetGeodesic_sub_le_support finiteEnergyTargetGeodesic F v t (x + y) ≤ finiteEnergyTargetGeodesic F v t y + SupportFunction.supportFunction K.carrier x := by - unfold finiteEnergyTargetGeodesic apply csSup_le ((finiteEnergyFiniteTargetSet_nonempty F).image _) rintro _ ⟨p, hp, rfl⟩ @@ -8257,8 +8115,8 @@ private theorem finiteEnergyTargetGeodesic_sub_le_support t * v q) '' finiteEnergyFiniteTargetSet F) + SupportFunction.supportFunction K.carrier x rw [MonomialDivergence.pairing_add_right] - linarith - linarith + linarith only [hphase, hpair] + linarith only [hle] private def minimumNormalizedTargetGeodesicContinuousMap {n : ℕ} {K : CenteredBody n} @@ -8373,7 +8231,7 @@ private theorem minimumNormalizedTargetGeodesicDualMajorant_nonneg F v t hp (finiteEnergyTargetGeodesicMinimumPoint F v t) unfold finiteEnergyTargetDualPhase at hphase unfold minimumNormalizedTargetGeodesicDualMajorant - linarith + linarith only [hphase] private theorem minimumNormalizedTargetGeodesic_phase_le_majorant {n : ℕ} {K : CenteredBody n} @@ -8397,7 +8255,7 @@ private theorem minimumNormalizedTargetGeodesic_phase_le_majorant t * v p - SupportFunction.pairing p m + finiteEnergyTargetGeodesic F v t m rw [MonomialDivergence.pairing_add_right] at hphase - linarith + linarith only [hphase] private theorem minimumNormalizedTargetGeodesic_extendedLegendre_le {n : ℕ} {K : CenteredBody n} @@ -8409,7 +8267,6 @@ private theorem minimumNormalizedTargetGeodesic_extendedLegendre_le (minimumNormalizedTargetGeodesicContinuousMap F v t) p ≤ ENNReal.ofReal (minimumNormalizedTargetGeodesicDualMajorant F v t p) := by - unfold sourceExtendedBodyLegendre apply iSup_le intro j exact ENNReal.ofReal_le_ofReal @@ -8528,7 +8385,6 @@ private theorem finiteEnergySourcePartition_ofTargetGeodesic finiteEnergyTargetGeodesicPartition F v t := by let m : Space n := finiteEnergyTargetGeodesicMinimumPoint F v t - unfold finiteEnergySourcePartition change (∫ x : Space n, Real.exp @@ -8772,7 +8628,7 @@ private theorem exists_exact_optimizer_targetGeodesic_logPartition_le ∂(normalizedTargetBodyMeasure K)) + finiteEnergyTargetGeodesic F v t m at henergy rw [hlog] at hG - linarith + linarith only [henergy, hG] end MomentTargetGeodesicVariation diff --git a/LeanPool/EhrhartVolumeInequality/FourierAnalysis.lean b/LeanPool/EhrhartVolumeInequality/FourierAnalysis.lean index 6c589da55b..02bea7864b 100644 --- a/LeanPool/EhrhartVolumeInequality/FourierAnalysis.lean +++ b/LeanPool/EhrhartVolumeInequality/FourierAnalysis.lean @@ -9,8 +9,9 @@ module public import LeanPool.EhrhartVolumeInequality.Variation public import Mathlib.MeasureTheory.Function.LpSpace.Basic import all LeanPool.EhrhartVolumeInequality.Variation -import Mathlib.Analysis.Matrix.Order +import Mathlib.Analysis.Matrix.Order -- shake: keep (MatrixOrder scope) import Mathlib.Analysis.SpecialFunctions.PolarCoord +import Mathlib.Geometry.Manifold.PartitionOfUnity /-! # Ehrhart volume inequality: FourierAnalysis @@ -147,7 +148,7 @@ private theorem measurable_momentTorusEnvelopeTimeSlice (sourceTorusCoverPoint q) t ht) := by apply Measurable.subtype_mk have hcover := measurable_sourceTorusCoverPoint (n := n) - fun_prop + exact Measurable.prodMk hcover measurable_const change Measurable (fun q : LogTorus n => if h : 0 < t then @@ -212,7 +213,7 @@ private theorem exists_momentNormalized_phase_linear_coercivity normalizedVolume K.carrier)) ≤ C - c - δ * ‖x‖ dsimp [c] - linarith + linarith only [hx] private theorem exists_momentNormalizedPhaseMaximizer {n : ℕ} {K : CenteredBody n} @@ -246,7 +247,7 @@ private theorem exists_momentNormalizedPhaseMaximizer have hbound := hcoerc x change phase u φ x ≤ phase u φ 0 change phase u φ x ≤ C - δ * ‖x‖ at hbound - nlinarith + linarith only [hR, hscale, hbound] private theorem momentNormalized_monomialIntegral_le_exp_mul_base {n : ℕ} {K : CenteredBody n} @@ -292,7 +293,7 @@ private theorem momentNormalized_monomialIntegral_le_exp_mul_base apply Real.exp_le_exp.mpr have hx := hM x unfold phase at hx - nlinarith + nlinarith only [hk, hkpos, hx] _ = Real.exp ((k - 1) * M) * (∫ x : Space n, monomialWeight 1 u @@ -349,7 +350,7 @@ private theorem momentNormalized_log_monomialIntegral_div_le (le_abs_self M) (sub_nonneg.mpr hk) _ ≤ k * |M| := mul_le_mul_of_nonneg_right - (by linarith) (abs_nonneg M) + (by linarith only []) (abs_nonneg M) · calc Real.log (monomialIntegral 1 u @@ -366,7 +367,7 @@ private theorem momentNormalized_log_monomialIntegral_div_le (monomialIntegral 1 u (momentNormalizedPotential F))| := abs_nonneg _ - nlinarith + nlinarith only [hk, hkpos, hI, hbase, hupper, hlog, hnonneg] _ = (|M| + |Real.log (monomialIntegral 1 u @@ -556,7 +557,7 @@ private theorem moment_fixedMonomial_pairing_sub_le_log_diagonal (diagonalKernel K (s * k) (momentNormalizedPotential F) x) / ((s * k : ℕ) : ℝ) at hdiag - linarith + linarith only [hnorm, hdiag] private theorem moment_fixedMonomial_pairing_sub_le_positiveJointGeodesic {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -657,7 +658,6 @@ private theorem moment_fixedMonomial_pairing_sub_le_tailSup _ = momentPositiveJointGeodesic K F htransport p (a + j) q := by rw [hindex] _ ≤ momentJointTailSup K F htransport p r q := by - unfold momentJointTailSup apply le_csSup (momentJointTailSup_range_bddAbove K F htransport p r q) @@ -877,7 +877,7 @@ private theorem exists_eventual_momentNormalized_moving_base_integral_bound apply Real.exp_le_exp.mpr have h := hk z unfold phase at h - linarith + linarith only [h] _ = Real.exp C * (∫ z : Space n, Real.exp (-d * ‖z‖) @@ -911,7 +911,7 @@ private theorem eventually_momentNormalized_moving_phase_le_max_add have hboundary : C - d * R ≤ M := by have hratio : (C - M) / d ≤ R := le_max_right _ _ have hmul := (div_le_iff₀ hd).mp hratio - nlinarith + linarith only [hmul] have hnorm : Tendsto (fun k : ℕ => ‖u k - u₀‖) atTop (𝓝 (0 : ℝ)) := by @@ -952,10 +952,10 @@ private theorem eventually_momentNormalized_moving_phase_le_max_add have hdecay : C - d * ‖z‖ ≤ M := by calc C - d * ‖z‖ ≤ C - d * R := by - nlinarith + nlinarith only [hd, hR, hboundary, herrk, hz'] _ ≤ M := hboundary exact (hk z).trans - (hdecay.trans (by dsimp [M]; linarith)) + (hdecay.trans (by dsimp [M]; linarith only [hε])) private theorem eventually_log_momentNormalized_moving_monomialIntegral_div_le {n : ℕ} (K : CenteredBody n) @@ -1032,7 +1032,7 @@ private theorem eventually_log_momentNormalized_moving_monomialIntegral_div_le (field_simp; ring) _ ≤ phase u₀ (momentNormalizedPotential F) x + ε := by dsimp [M] at * - linarith + linarith only [hsmallk] private theorem eventually_log_momentNormalized_diagonalKernel_div_ge_sub {n : ℕ} (K : CenteredBody n) @@ -1062,7 +1062,7 @@ private theorem eventually_log_momentNormalized_diagonalKernel_div_ge_sub have hpairlower : ∀ᶠ k : ℕ in atTop, pairing u x - ε / 2 < pairing (v k) x := by - exact hpair (Ioi_mem_nhds (by linarith)) + exact hpair (Ioi_mem_nhds (by linarith only [hε])) have hphase := eventually_log_momentNormalized_moving_monomialIntegral_div_le K F htransport hu v hv x hmax (half_pos hε) @@ -1084,7 +1084,7 @@ private theorem eventually_log_momentNormalized_diagonalKernel_div_ge_sub (momentNormalizedPotential F) x) / (k : ℝ) at hdiag unfold phase at hphasek - linarith + linarith only [hpairk, hphasek, hkpos, hdiag] private theorem tendsto_log_momentNormalized_diagonalKernel_div {n : ℕ} (K : CenteredBody n) @@ -1123,7 +1123,7 @@ private theorem tendsto_log_momentNormalized_diagonalKernel_div rw [Real.dist_eq] apply abs_lt.mpr constructor - · linarith + · linarith only [hhalf, hlowerk] · linarith [hupperk x] exact Filter.eventually_atTop.mp hclose @@ -1149,13 +1149,11 @@ private def unweightedTorusMeasure (n : ℕ) : private theorem radialWeight_pos {n k : ℕ} (φ : Space n → ℝ) (x : Space n) : 0 < WeightedTorusHilbert.radialWeight k φ x := by - unfold WeightedTorusHilbert.radialWeight exact ENNReal.ofReal_pos.mpr (Real.exp_pos _) private theorem radialWeight_lt_top {n k : ℕ} (φ : Space n → ℝ) (x : Space n) : WeightedTorusHilbert.radialWeight k φ x < ⊤ := by - unfold WeightedTorusHilbert.radialWeight exact ENNReal.ofReal_lt_top private theorem weightedTorusMeasure_eq_unweighted_withDensity {n k : ℕ} @@ -1209,7 +1207,6 @@ private theorem weightedScalarL2_locallyIntegrable_unweighted {n k : ℕ} (unweightedTorusMeasure n) := by let g : WeightedTorusHilbert.LogTorus n → ℂ := fun z => f z - change LocallyIntegrable g (unweightedTorusMeasure n) apply locallyIntegrable_iff.mpr intro K hK have hweighted : IntegrableOn g K @@ -1242,10 +1239,8 @@ private theorem weightedScalarL2_locallyIntegrable_unweighted {n k : ℕ} K (unweightedTorusMeasure n) := by apply hscaled.congr filter_upwards [] with z - simp only [WeightedTorusHilbert.radialWeight, neg_mul, (Real.exp_pos _).le, - ENNReal.toReal_ofReal, - Complex.real_smul, Complex.ofReal_exp, Complex.ofReal_neg, Complex.ofReal_mul, - Complex.ofReal_natCast] + simp only [WeightedTorusHilbert.radialWeight, (Real.exp_pos _).le, ENNReal.toReal_ofReal, + Complex.real_smul] have hreciprocal : Continuous (fun z : WeightedTorusHilbert.LogTorus n => (Real.exp ((k : ℝ) * φ z.1) : ℂ)) := @@ -1308,12 +1303,6 @@ private theorem unweightedTorusFundamental_measurePreserving (n : ℕ) : MeasurePreserving (torusFundamentalMeasurableEquiv n) (unweightedTorusMeasure n) (unweightedFundamentalMeasure n) := by - change MeasurePreserving - (Prod.map id (angularFundamentalEquiv n)) - ((volume : Measure (Space n)).prod - (WeightedTorusHilbert.angularMeasure n)) - ((volume : Measure (Space n)).prod - (angularFundamentalMeasure n)) exact (MeasurePreserving.id (volume : Measure (Space n))).prod (angularFundamentalEquiv_measurePreserving n) @@ -1422,7 +1411,6 @@ private theorem logarithmicCoverPushforward_isAddHaar (n : ℕ) : (volume : Measure (Space n × Space n)).IsAddHaarMeasure := by rw [Measure.volume_eq_prod] exact Measure.prod.instIsAddHaarMeasure _ _ - unfold logarithmicCoverPushforward exact (logarithmicCoordinatesEquiv n).isAddHaarMeasure_map (volume : Measure (Space n × Space n)) @@ -1521,7 +1509,6 @@ private theorem angularCoverProjection_measurePreserving {n : ℕ} (angularFundamentalBox b)) (WeightedTorusHilbert.angularMeasure n) := by have hb : MeasurableSet (angularFundamentalBox b) := by - unfold angularFundamentalBox exact MeasurableSet.univ_pi' (fun _ => measurableSet_Ioc) have hp : Measurable (angularCoverProjection n) := by apply Measurable.of_eval @@ -1536,12 +1523,6 @@ private theorem angularCoverProjection_measurePreserving {n : ℕ} ((volume : Measure (Space n)).comap (Subtype.val : angularFundamentalBox b → Space n)) = WeightedTorusHilbert.angularMeasure n - change - Measure.map - (UnitAddTorus.measurableEquivPiIoc b).symm - ((volume : Measure (Space n)).comap - (Subtype.val : angularFundamentalBox b → Space n)) = - (volume : Measure (TorusCharacters.AngularTorus n)) exact ((UnitAddTorus.measurePreserving_equivPiIoc b).symm (UnitAddTorus.measurableEquivPiIoc b)).map_eq @@ -1558,12 +1539,6 @@ private theorem realTorusCoverProjection_measurePreserving {n : ℕ} ((volume : Measure (Space n)).restrict (angularFundamentalBox b))) (μ.prod (WeightedTorusHilbert.angularMeasure n)) := by - change MeasurePreserving - (Prod.map id (angularCoverProjection n)) - (μ.prod - ((volume : Measure (Space n)).restrict - (angularFundamentalBox b))) - (μ.prod (WeightedTorusHilbert.angularMeasure n)) exact (MeasurePreserving.id μ).prod (angularCoverProjection_measurePreserving b) @@ -1609,10 +1584,6 @@ private theorem realTorusCoverLift_integrableOn_fundamental {n : ℕ} (volume : Measure (Space n))).restrict (s ×ˢ angularFundamentalBox b)) rw [← Measure.prod_restrict] - change Integrable (g ∘ realTorusCoverProjection n) - (((volume : Measure (Space n)).restrict s).prod - ((volume : Measure (Space n)).restrict - (angularFundamentalBox b))) exact hlift private theorem angularFundamentalBox_mem_nhds {n : ℕ} @@ -1626,7 +1597,7 @@ private theorem angularFundamentalBox_mem_nhds {n : ℕ} (t i - (1 / 2 : ℝ) + 1)) ∈ 𝓝 t := by apply set_pi_mem_nhds Set.finite_univ intro i _ - apply Ioc_mem_nhds <;> linarith + apply Ioc_mem_nhds <;> linarith only [] simpa only [angularFundamentalBox, one_div, mem_Ioc, Set.pi, mem_univ, forall_const] using h private theorem realTorusCoverLift_locallyIntegrable {n : ℕ} @@ -1639,7 +1610,7 @@ private theorem realTorusCoverLift_locallyIntegrable {n : ℕ} angularFundamentalBox (fun i : Fin n => p.2 i - (1 / 2 : ℝ)), ?_, ?_⟩ · exact prod_mem_nhds - (Metric.closedBall_mem_nhds p.1 (by norm_num)) + (Metric.closedBall_mem_nhds p.1 (by exact zero_lt_one)) (angularFundamentalBox_mem_nhds p.2) · exact realTorusCoverLift_integrableOn_fundamental hg (isCompact_closedBall p.1 1) @@ -1831,10 +1802,10 @@ private theorem exists_integer_angularFundamentalBox {n : ℕ} constructor · push_cast have h := Int.ceil_lt_add_one (t i) - linarith + linarith only [h] · push_cast have h := Int.le_ceil (t i) - linarith + linarith only [h] private theorem integer_angularFundamentalBoxes_cover (n : ℕ) : (⋃ q : Fin n → ℤ, @@ -1862,8 +1833,6 @@ private theorem realTorusCoverLift_ae_eq_fundamental {n : ℕ} rw [Measure.volume_eq_prod, ← Measure.prod_restrict] simp only [Measure.restrict_univ] filter_upwards [hp] with x hx - change f (realTorusCoverProjection n x) = - g (realTorusCoverProjection n x) exact hx private theorem realTorusCoverLift_ae_eq {n : ℕ} @@ -1906,11 +1875,6 @@ private theorem complexTorusCoverLift_ae_eq {n : ℕ} (logarithmicCoverJacobianFactor_pos n).ne' have hv := (Measure.ae_smul_measure_iff hc).mp hp filter_upwards [hv] with z hz - change - f (realTorusCoverProjection n - ((logarithmicCoordinatesEquiv n).symm z)) = - g (realTorusCoverProjection n - ((logarithmicCoordinatesEquiv n).symm z)) exact hz private theorem weightedTorus_complexCoverLift_ae_eq {n k : ℕ} @@ -1938,7 +1902,7 @@ private theorem exists_integer_translate_of_angularCoverProjection_eq refine ⟨q, ?_⟩ have hq' : (q : ℝ) = s i - t i := by simpa only [zsmul_eq_mul, mul_one] using hq - linarith + linarith only [hq'] choose q hq using hi exact ⟨q, funext hq⟩ @@ -1949,10 +1913,6 @@ private theorem angularCoverProjection_fundamentalRepresentative (AddCircle.equivIoc 1 0 ((t i : ℝ) : UnitAddCircle)).1) = angularCoverProjection n t := by funext i - change - (((AddCircle.equivIoc 1 0 - ((t i : ℝ) : UnitAddCircle)).1 : ℝ) : UnitAddCircle) = - (t i : UnitAddCircle) exact (AddCircle.equivIoc 1 0).symm_apply_apply ((t i : ℝ) : UnitAddCircle) @@ -2016,7 +1976,6 @@ private theorem barPartialCoordinate_periodic {n : ℕ} F (w + TorusCharacters.imaginaryShift q)) z = fderiv ℝ F z at hd rw [fderiv_comp_add_right] at hd - unfold barPartialCoordinate change ((fderiv ℝ F (z + TorusCharacters.imaginaryShift q)) (Pi.single j (1 : ℂ)) + @@ -2038,11 +1997,6 @@ private theorem complexTorusCoverLift_barPartialRepresentative_eq {n : ℕ} EuclideanSpace ℂ (Fin n)) j) = (fun z : TorusCharacters.LogSpace n => barPartialCoordinate F z j) := by - change - complexTorusCoverLift - (torusScalarRepresentative - (fun z : TorusCharacters.LogSpace n => - barPartialCoordinate F z j)) = _ exact complexTorusCoverLift_torusScalarRepresentative_eq (fun z => barPartialCoordinate F z j) (fun q => barPartialCoordinate_periodic F hperiod j q) @@ -2324,8 +2278,7 @@ private theorem compactSupport_weightedCellAdjointScalarTest {n k : ℕ} (fun p : Space n × Space n => coverAdjointScalarTest ψ j (logarithmicCoordinatesEquiv n p)) := by - simpa only [ContinuousLinearEquiv.coe_toHomeomorph, comp_def] using - (compactSupport_coverAdjointScalarTest hψcompact j).comp_homeomorph + exact (compactSupport_coverAdjointScalarTest hψcompact j).comp_homeomorph (logarithmicCoordinatesEquiv n).toHomeomorph exact hcomp.mul_left @@ -2337,8 +2290,7 @@ private theorem compactSupport_weightedCellAdjointVectorTest {n k : ℕ} have hcomp : HasCompactSupport (fun p : Space n × Space n => ψ (logarithmicCoordinatesEquiv n p)) := by - simpa only [ContinuousLinearEquiv.coe_toHomeomorph, comp_def] using - hψcompact.comp_homeomorph + exact hψcompact.comp_homeomorph (logarithmicCoordinatesEquiv n).toHomeomorph refine hcomp.mono ?_ intro p hp @@ -2809,27 +2761,13 @@ private theorem weightedCellWeakAdjointFunctional_closedGraph_zero (hv : v ∈ functionDolbeaultGraph k φ) : weightedCellWeakAdjointFunctional hφ b hψ hψcompact j v = 0 := by - let L : functionDolbeaultGraphAmbient k φ →L[ℂ] ℂ := - weightedCellWeakAdjointFunctional hφ b hψ hψcompact j - have hspan : - Submodule.span ℂ (smoothFunctionDolbeaultGraphSet k φ) ≤ - L.ker := by - apply Submodule.span_le.mpr - intro v hv' - rcases hv' with ⟨F, hF, hperiod, _hcompact, hFLp, hDLp, rfl⟩ - change - L (WithLp.toLp 2 - (torusScalarL2OfRepresentative φ F hFLp, - torusFunctionBarPartialL2 φ F hDLp)) = 0 - exact weightedCellWeakAdjointFunctional_smoothGraph_zero - hφ b hψ hψcompact hcell - (hF.of_le (by norm_num)) hperiod hFLp hDLp j - have hgraph : functionDolbeaultGraph k φ ≤ L.ker := by - unfold functionDolbeaultGraph - exact Submodule.topologicalClosure_minimal - (Submodule.span ℂ (smoothFunctionDolbeaultGraphSet k φ)) - hspan L.isClosed_ker - exact hgraph hv + refine continuousLinearMap_eq_zero_of_mem_topologicalClosure_span + (weightedCellWeakAdjointFunctional hφ b hψ hψcompact j) ?_ hv + intro w hw + rcases hw with ⟨F, hF, hperiod, _hcompact, hFLp, hDLp, rfl⟩ + exact weightedCellWeakAdjointFunctional_smoothGraph_zero + hφ b hψ hψcompact hcell + (hF.of_le (by decide)) hperiod hFLp hDLp j private theorem weightedZeroGraph_compact_barPartial_zero_of_fundamentalCell {n k : ℕ} {φ : Space n → ℝ} @@ -2904,7 +2842,7 @@ private theorem self_mem_coverFundamentalInterior {n : ℕ} (1 / 2 : ℝ)) (((logarithmicCoordinatesEquiv n).symm z).2 i - (1 / 2 : ℝ) + 1) - constructor <;> linarith + constructor <;> linarith only [] private theorem coverTestWithinFundamentalCell_of_tsupport_subset_interior {n : ℕ} (b : Space n) @@ -2927,7 +2865,6 @@ private theorem exists_finite_fundamental_test_partition {n : ℕ} coverFundamentalInterior (coverCenteredFundamentalBase i)) ∧ (∀ z : TorusCharacters.LogSpace n, ψ z = ∑ i ∈ s, χ i z * ψ z) := by - classical let E := TorusCharacters.LogSpace n let U : E → Set E := fun z => coverFundamentalInterior (coverCenteredFundamentalBase z) @@ -2983,7 +2920,6 @@ private theorem weightedZeroGraph_hasWeakBarPartialZero {n k : ℕ} (∫ weakPoint, (complexTorusCoverLift (fun p : WeightedTorusHilbert.LogTorus n => f p)) weakPoint * coverBarPartialTest weakTest weakCoordinate weakPoint) = 0) := by - classical intro ψ hψ hψcompact j obtain ⟨s, χ, hχ, hχsupport, hpartition⟩ := exists_finite_fundamental_test_partition hψcompact @@ -3013,8 +2949,7 @@ private theorem weightedZeroGraph_hasWeakBarPartialZero {n k : ℕ} coverBarPartialTest (ξ i) j z) (volume : Measure (TorusCharacters.LogSpace n)) := by intro i _ - simpa only [smul_eq_mul] using - hloc.integrable_smul_right_of_hasCompactSupport + exact hloc.integrable_smul_right_of_hasCompactSupport (continuous_coverBarPartialTest (hξ i) j) (compactSupport_coverBarPartialTest (hξcompact i) j) change @@ -3124,7 +3059,6 @@ private def radialCoordinateKernel (w : ℂ) : ℝ := private theorem contDiff_radialCoordinateKernel : ContDiff ℝ ∞ radialCoordinateKernel := by - unfold radialCoordinateKernel apply Real.smoothTransition.contDiff.comp simp_rw [Complex.normSq_apply] have hre : ContDiff ℝ ∞ (fun w : ℂ => w.re) := @@ -3157,16 +3091,14 @@ private def productRadialKernel {n : ℕ} private theorem contDiff_productRadialKernel (n : ℕ) : ContDiff ℝ ∞ (productRadialKernel (n := n)) := by - unfold productRadialKernel apply contDiff_prod intro i hi apply contDiff_radialCoordinateKernel.comp - fun_prop + exact contDiff_apply ℝ ℂ i private theorem productRadialKernel_nonneg {n : ℕ} (w : TorusCharacters.LogSpace n) : 0 ≤ productRadialKernel w := by - unfold productRadialKernel exact Finset.prod_nonneg fun i hi => radialCoordinateKernel_nonneg _ private theorem support_productRadialKernel_subset_closedBall (n : ℕ) : @@ -3175,7 +3107,7 @@ private theorem support_productRadialKernel_subset_closedBall (n : ℕ) : (0 : TorusCharacters.LogSpace n) 1 := by intro w hw rw [Metric.mem_closedBall, dist_zero_right, - pi_norm_le_iff_of_nonneg (by norm_num)] + pi_norm_le_iff_of_nonneg (by exact zero_le_one)] intro i by_contra hi have hzero : radialCoordinateKernel (w i) = 0 := @@ -3198,7 +3130,6 @@ private def productRadialKernelMass (n : ℕ) : ℝ := private theorem productRadialKernelMass_pos (n : ℕ) : 0 < productRadialKernelMass n := by - unfold productRadialKernelMass apply (contDiff_productRadialKernel n).continuous.integral_pos_of_hasCompactSupport_nonneg_nonzero (hasCompactSupport_productRadialKernel n) (fun w => productRadialKernel_nonneg w) @@ -3213,7 +3144,6 @@ private def normalizedProductRadialKernel {n : ℕ} private theorem contDiff_normalizedProductRadialKernel (n : ℕ) : ContDiff ℝ ∞ (normalizedProductRadialKernel (n := n)) := by - unfold normalizedProductRadialKernel exact (contDiff_productRadialKernel n).div_const _ private theorem hasCompactSupport_normalizedProductRadialKernel (n : ℕ) : @@ -3287,7 +3217,6 @@ private theorem continuous_complexPolarSymm : private theorem continuous_radialPolarIntegrand {f : ℂ → ℂ} (hf : Differentiable ℂ f) (c : ℂ) : Continuous (radialPolarIntegrand f c) := by - unfold radialPolarIntegrand apply Continuous.mul (Complex.continuous_ofReal.comp continuous_fst) apply Continuous.mul (Complex.continuous_ofReal.comp @@ -3347,7 +3276,7 @@ private theorem radialPolarIntegrand_eq_zero_outside_compactDomain ((radialCoordinateKernel (Complex.polarCoord.symm p) : ℂ) * f (c - Complex.polarCoord.symm p)) = 0 rw [hzero] - simp only [ofReal_zero, Complex.polarCoord_symm_apply, ofReal_cos, ofReal_sin, zero_mul, mul_zero] + simp only [ofReal_zero, zero_mul, mul_zero] private theorem radialPolarIntegral_eq_compactDomain (f : ℂ → ℂ) (c : ℂ) : @@ -3386,10 +3315,6 @@ private theorem compactPolarDomain_volume : ((volume : Measure ℝ).restrict (Set.Ioc (0 : ℝ) 1)).prod ((volume : Measure ℝ).restrict (Set.Ioo (-Real.pi) Real.pi)) := by - unfold compactPolarDomain - change - ((volume : Measure ℝ).prod (volume : Measure ℝ)).restrict - (Set.Ioc (0 : ℝ) 1 ×ˢ Set.Ioo (-Real.pi) Real.pi) = _ exact (MeasureTheory.Measure.prod_restrict (Set.Ioc (0 : ℝ) 1) (Set.Ioo (-Real.pi) Real.pi)).symm @@ -3495,7 +3420,7 @@ private theorem radialPolar_angle_integral_eq_one_mul_center radialPolarIntegrand (fun _ : ℂ => (1 : ℂ)) 0 (r, θ)) * f c := by have hone : Differentiable ℂ (fun _ : ℂ => (1 : ℂ)) := by - fun_prop + exact differentiable_const 1 rw [radialPolar_angle_integral hf c r, radialPolar_angle_integral hone 0 r] simp only [Complex.real_smul, mul_one] @@ -3508,7 +3433,7 @@ private theorem radialCoordinateKernel_holomorphic_integral radialCoordinateKernel w • f (c - w)) = (∫ w : ℂ, radialCoordinateKernel w) • f c := by have hone : Differentiable ℂ (fun _ : ℂ => (1 : ℂ)) := by - fun_prop + exact differentiable_const 1 calc (∫ w : ℂ, radialCoordinateKernel w • f (c - w)) = @@ -3557,7 +3482,7 @@ private theorem radialCoordinateKernel_holomorphic_integral_at_zero (∫ w : ℂ, radialCoordinateKernel w) • f 0 := by have hneg : Differentiable ℂ (fun w : ℂ => f (-w)) := by apply hf.comp - fun_prop + exact Differentiable.fun_neg differentiable_id simpa only [zero_sub, neg_neg, neg_zero] using radialCoordinateKernel_holomorphic_integral hneg 0 @@ -3593,7 +3518,6 @@ private theorem continuous_productRadialWeightedIntegrand {n : ℕ} {F : TorusCharacters.LogSpace n → ℂ} (hF : Continuous F) : Continuous (productRadialWeightedIntegrand F) := by - unfold productRadialWeightedIntegrand exact (Complex.continuous_ofReal.comp (contDiff_productRadialKernel n).continuous).mul hF @@ -3639,8 +3563,7 @@ private theorem productRadialWeighted_integral_eq_coordinateFubini (TorusCharacters.LogSpace n))) (volume : Measure (TorusCharacters.LogSpace (n + 1))) := by - simpa only [e, MeasurableEquiv.piFinSuccAbove_symm_apply, volume_pi] using - (MeasureTheory.measurePreserving_piFinSuccAbove + exact (MeasureTheory.measurePreserving_piFinSuccAbove (fun _ : Fin (n + 1) => (volume : Measure ℂ)) i).symm have hi : Integrable @@ -3652,8 +3575,7 @@ private theorem productRadialWeighted_integral_eq_coordinateFubini (TorusCharacters.LogSpace n))) := by have h := he.integrable_comp_of_integrable (integrable_productRadialWeightedIntegrand hF) - simpa only [e, MeasurableEquiv.piFinSuccAbove_symm_apply, Fin.insertNthEquiv, Equiv.coe_fn_mk, - Function.comp_def] using h + exact h calc (∫ w : TorusCharacters.LogSpace (n + 1), productRadialWeightedIntegrand F w) = @@ -3663,9 +3585,7 @@ private theorem productRadialWeighted_integral_eq_coordinateFubini ∂((volume : Measure ℂ).prod (volume : Measure (TorusCharacters.LogSpace n))) := by - simpa only [MeasurableEquiv.piFinSuccAbove_symm_apply, Fin.insertNthEquiv, Equiv.coe_fn_mk, - e] using - (he.integral_comp' + exact (he.integral_comp' (productRadialWeightedIntegrand F)).symm _ = ∫ y : TorusCharacters.LogSpace n, ∫ x : ℂ, @@ -3683,10 +3603,6 @@ private theorem differentiable_holomorphicCoordinateReset {n : ℕ} {F : TorusCharacters.LogSpace n → ℂ} (hF : Differentiable ℂ F) (i : Fin n) : Differentiable ℂ (holomorphicCoordinateReset F i) := by - unfold holomorphicCoordinateReset - change Differentiable ℂ - (F ∘ fun w : TorusCharacters.LogSpace n => - Function.update w i 0) apply hF.comp apply differentiable_pi.mpr intro j @@ -3760,8 +3676,7 @@ private theorem productRadialWeighted_slice_integral_reset have hrad : (∫ x : ℂ, (radialCoordinateKernel x : ℂ) * g x) = (↑(∫ x : ℂ, radialCoordinateKernel x) : ℂ) * g 0 := by - simpa only [Complex.real_smul] using - radialCoordinateKernel_holomorphic_integral_at_zero hg + exact radialCoordinateKernel_holomorphic_integral_at_zero hg have hbase : (∫ x : ℂ, (radialCoordinateKernel x : ℂ) * g 0) = (↑(∫ x : ℂ, radialCoordinateKernel x) : ℂ) * g 0 := by @@ -3873,10 +3788,6 @@ private theorem differentiable_holomorphicFinsetReset {n : ℕ} (hF : Differentiable ℂ F) (s : Finset (Fin n)) : Differentiable ℂ (holomorphicFinsetReset F s) := by - unfold holomorphicFinsetReset - change Differentiable ℂ - (F ∘ fun w : TorusCharacters.LogSpace n => - fun i => if i ∈ s then 0 else w i) apply hF.comp apply differentiable_pi.mpr intro i @@ -3896,7 +3807,6 @@ private theorem holomorphicCoordinateReset_finsetReset holomorphicCoordinateReset (holomorphicFinsetReset F s) i = holomorphicFinsetReset F (insert i s) := by funext w - unfold holomorphicCoordinateReset holomorphicFinsetReset apply congrArg F funext j by_cases hji : j = i @@ -4024,9 +3934,6 @@ private theorem productRadialHolomorphicMollification_eq_of_differentiable funext z unfold productRadialHolomorphicMollification rw [MeasureTheory.convolution_def] - change - (∫ w : TorusCharacters.LogSpace n, - normalizedProductRadialKernel w • F (z - w)) = F z exact normalizedProductRadial_holomorphic_integral hF z end WeightedTorusWeylRadialIntegrationBridge @@ -4369,30 +4276,28 @@ private def angularSmoothPartitionBump (t : ℝ) : ℝ := private theorem contDiff_angularSmoothPartitionBump {m : ℕ∞} : ContDiff ℝ m angularSmoothPartitionBump := by - unfold angularSmoothPartitionBump exact (Real.smoothTransition.contDiff.comp (contDiff_id.add contDiff_const)).sub Real.smoothTransition.contDiff private theorem angularSmoothPartitionBump_nonneg (t : ℝ) : 0 ≤ angularSmoothPartitionBump t := by - unfold angularSmoothPartitionBump exact sub_nonneg.mpr - (Real.smoothTransition.monotone (by linarith)) + (Real.smoothTransition.monotone (by linarith only [])) private theorem angularSmoothPartitionBump_zero_of_le {t : ℝ} (ht : t ≤ -1) : angularSmoothPartitionBump t = 0 := by unfold angularSmoothPartitionBump - rw [Real.smoothTransition.zero_of_nonpos (by linarith), - Real.smoothTransition.zero_of_nonpos (by linarith), + rw [Real.smoothTransition.zero_of_nonpos (by linarith only [ht]), + Real.smoothTransition.zero_of_nonpos (by linarith only [ht]), sub_zero] private theorem angularSmoothPartitionBump_zero_of_ge {t : ℝ} (ht : 1 ≤ t) : angularSmoothPartitionBump t = 0 := by unfold angularSmoothPartitionBump - rw [Real.smoothTransition.one_of_one_le (by linarith), + rw [Real.smoothTransition.one_of_one_le (by linarith only [ht]), Real.smoothTransition.one_of_one_le ht, sub_self] @@ -4401,9 +4306,9 @@ private theorem angularSmoothPartitionBump_add_translate angularSmoothPartitionBump t + angularSmoothPartitionBump (t - 1) = 1 := by have hplus : Real.smoothTransition (t + 1) = 1 := - Real.smoothTransition.one_of_one_le (by linarith) + Real.smoothTransition.one_of_one_le (by linarith only [hzero]) have hminus : Real.smoothTransition (t - 1) = 0 := - Real.smoothTransition.zero_of_nonpos (by linarith) + Real.smoothTransition.zero_of_nonpos (by linarith only [hone]) have ht : t - 1 + 1 = t := by ring unfold angularSmoothPartitionBump rw [hplus, ht, hminus] @@ -4415,16 +4320,14 @@ private def angularSmoothPartition {n : ℕ} (t : Space n) : ℝ := private theorem contDiff_angularSmoothPartition {n : ℕ} {m : ℕ∞} : ContDiff ℝ m (angularSmoothPartition (n := n)) := by - unfold angularSmoothPartition apply contDiff_prod intro i _ apply contDiff_angularSmoothPartitionBump.comp - fun_prop + exact contDiff_apply ℝ ℝ i private theorem angularSmoothPartition_nonneg {n : ℕ} (t : Space n) : 0 ≤ angularSmoothPartition t := by - unfold angularSmoothPartition exact Finset.prod_nonneg (fun i _ => angularSmoothPartitionBump_nonneg (t i)) @@ -4444,7 +4347,6 @@ private theorem hasCompactSupport_angularSmoothPartition have hi : angularSmoothPartitionBump (t i) ≠ 0 := by intro hz apply ht - unfold angularSmoothPartition exact Finset.prod_eq_zero (Finset.mem_univ i) hz constructor · by_contra hn @@ -4462,7 +4364,6 @@ private theorem angularSmoothPartition_binary_sum (∑ q : Fin n → Bool, angularSmoothPartition (fun i => t i - if q i then (1 : ℝ) else 0)) = 1 := by - classical calc _ = ∑ q : Fin n → Bool, ∏ i : Fin n, @@ -4497,7 +4398,6 @@ private def binaryAngularFundamentalBase {n : ℕ} private theorem measurableSet_angularFundamentalBox {n : ℕ} (b : Space n) : MeasurableSet (angularFundamentalBox b) := by - unfold angularFundamentalBox exact MeasurableSet.univ_pi' (fun i : Fin n => measurableSet_Ioc) @@ -4506,7 +4406,6 @@ private theorem iUnion_binaryAngularFundamentalBox (⋃ q : Fin n → Bool, angularFundamentalBox (binaryAngularFundamentalBase q)) = Set.univ.pi (fun _ : Fin n => Set.Ioc (-1 : ℝ) 1) := by - classical ext t constructor · intro ht @@ -4552,7 +4451,6 @@ private theorem pairwiseDisjoint_binaryAngularFundamentalBox (Disjoint on (fun q : Fin n → Bool => angularFundamentalBox (binaryAngularFundamentalBase q))) := by - classical intro q r hqr obtain ⟨i, hi⟩ := Function.ne_iff.mp hqr apply Set.disjoint_left.mpr @@ -4618,7 +4516,6 @@ private theorem integral_angularSmoothPartition_eq_fundamental ∫ t : Space n in angularFundamentalBox (0 : Space n), g t ∂(volume : Measure (Space n)) := by - classical let f : Space n → ℂ := fun t => (angularSmoothPartition t : ℂ) * g t have hfc : Continuous f := @@ -4661,7 +4558,6 @@ private theorem integral_angularSmoothPartition_eq_fundamental exact ⟨lt_of_not_ge hleft, le_of_not_gt hn⟩ exact angularSmoothPartitionBump_zero_of_ge hright.le have hzero : angularSmoothPartition t = 0 := by - unfold angularSmoothPartition exact Finset.prod_eq_zero (Finset.mem_univ i) hbump simp only [hzero, Complex.ofReal_zero, zero_mul, f] have htranslate (q : Fin n → Bool) : @@ -4694,7 +4590,7 @@ private theorem integral_angularSmoothPartition_eq_fundamental (fun t : Space n => f (binaryAngularFundamentalBase q + t)) (volume : Measure (Space n)) by - simpa only [comp_def] using h).integrableOn + exact h).integrableOn change (∫ t : Space n, f t ∂(volume : Measure (Space n))) = _ calc @@ -5084,9 +4980,9 @@ private theorem weighted_complex_bochner_coordinate_identity_compact_right ∂(coverWeightedMeasure a) := by let E := TorusCharacters.LogSpace n let μ : Measure E := coverWeightedMeasure a - have haone : ContDiff ℝ 1 a := ha.of_le (by norm_num) - have hfone : ContDiff ℝ 1 F := hF.of_le (by norm_num) - have hgone : ContDiff ℝ 1 G := hG.of_le (by norm_num) + have haone : ContDiff ℝ 1 a := ha.of_le (by decide) + have hfone : ContDiff ℝ 1 F := hF.of_le (by decide) + have hgone : ContDiff ℝ 1 G := hG.of_le (by decide) have hFbar : ContDiff ℝ 1 (fun z : E => barPartialCoordinate F z j) := contDiff_barPartialCoordinate hF j @@ -5180,14 +5076,12 @@ private theorem contDiff_matrixSourceCoverPotential {n : ℕ} {m : ℕ∞} {φ : Space n → ℝ} (hφ : ContDiff ℝ m φ) : ContDiff ℝ m (matrixSourceCoverPotential φ) := by - unfold matrixSourceCoverPotential exact hφ.comp (by fun_prop) private theorem continuous_matrixSourceCoverPotential {n : ℕ} {φ : Space n → ℝ} (hφ : Continuous φ) : Continuous (matrixSourceCoverPotential φ) := by - unfold matrixSourceCoverPotential exact hφ.comp (continuous_fst.comp (logarithmicCoordinatesEquiv n).symm.continuous) @@ -5209,7 +5103,6 @@ private def coverAngularSmoothPartition {n : ℕ} private theorem contDiff_coverAngularSmoothPartition {n : ℕ} {m : ℕ∞} : ContDiff ℝ m (coverAngularSmoothPartition (n := n)) := by - unfold coverAngularSmoothPartition exact contDiff_angularSmoothPartition.comp (by fun_prop) @[simp] private theorem coverAngularSmoothPartition_logarithmicPoint @@ -5235,7 +5128,6 @@ private theorem continuous_partitionedRealCoverIntegrand {f : WeightedTorusHilbert.LogTorus n → ℂ} (hf : Continuous f) : Continuous (partitionedRealCoverIntegrand φ f) := by - unfold partitionedRealCoverIntegrand apply (Complex.continuous_ofReal.comp (Real.continuous_exp.comp (hφ.comp continuous_fst).neg)).mul @@ -5264,13 +5156,11 @@ private theorem hasCompactSupport_partitionedRealCoverIntegrand have hangular : angularSmoothPartition p.2 ≠ 0 := by intro hzero apply hnonzero - simp only [partitionedRealCoverIntegrand, Complex.ofReal_exp, Complex.ofReal_neg, hzero, - Complex.ofReal_zero, zero_mul, mul_zero] + simp only [partitionedRealCoverIntegrand, hzero, Complex.ofReal_zero, zero_mul, mul_zero] have htest : f (p.1, angularCoverProjection n p.2) ≠ 0 := by intro hzero apply hnonzero - simp only [partitionedRealCoverIntegrand, Complex.ofReal_exp, Complex.ofReal_neg, hzero, - mul_zero] + simp only [partitionedRealCoverIntegrand, hzero, mul_zero] apply hp exact ⟨⟨(p.1, angularCoverProjection n p.2), subset_closure htest, rfl⟩, subset_closure hangular⟩ @@ -5298,7 +5188,6 @@ private theorem continuous_unweightedSourceTorusIntegrand {f : WeightedTorusHilbert.LogTorus n → ℂ} (hf : Continuous f) : Continuous (unweightedSourceTorusIntegrand φ f) := by - unfold unweightedSourceTorusIntegrand exact (Complex.continuous_ofReal.comp (Real.continuous_exp.comp (hφ.comp continuous_fst).neg)).mul hf @@ -5471,10 +5360,9 @@ private theorem partitioned_coverWeighted_integral_eq_torus ∂(volume : Measure (Space n × Space n)) := by apply integral_congr_ae filter_upwards [] with p - simp only [complexCoverWeight, coverWeight, Complex.ofReal_exp, Complex.ofReal_neg, - matrixSourceCoverPotential_logarithmicPoint, coverAngularSmoothPartition_logarithmicPoint, - complexTorusCoverProjection_logarithmicPoint, realTorusCoverProjection, - partitionedRealCoverIntegrand, g] + simp only [complexCoverWeight, coverWeight, matrixSourceCoverPotential_logarithmicPoint, + coverAngularSmoothPartition_logarithmicPoint, complexTorusCoverProjection_logarithmicPoint, + realTorusCoverProjection, partitionedRealCoverIntegrand, g] _ = ∫ p : WeightedTorusHilbert.LogTorus n, unweightedSourceTorusIntegrand φ f p ∂((volume : Measure (Space n)).prod @@ -5501,7 +5389,6 @@ private def binaryAngularPartitionSum (n : ℕ) private theorem contDiff_binaryAngularPartitionSum {n : ℕ} {m : ℕ∞} : ContDiff ℝ m (binaryAngularPartitionSum n) := by - unfold binaryAngularPartitionSum apply ContDiff.sum intro q _ exact contDiff_angularSmoothPartition.comp @@ -5512,7 +5399,6 @@ private theorem binaryAngularPartitionSum_eq_one (hzero : ∀ i : Fin n, 0 ≤ t i) (hone : ∀ i : Fin n, t i ≤ 1) : binaryAngularPartitionSum n t = 1 := by - unfold binaryAngularPartitionSum calc _ = ∑ q : Fin n → Bool, angularSmoothPartition @@ -5571,7 +5457,7 @@ private theorem fderiv_binaryAngularPartitionSum_eq_zero Set.univ.pi (fun _ : Fin n => Set.Icc (0 : ℝ) 1) by dsimp [U] rw [closure_pi_set] - simp only [ne_eq, zero_ne_one, not_false_eq_true, closure_Ioo, pi_univ_Icc]] + simp only [ne_eq, zero_ne_one, not_false_eq_true, closure_Ioo]] intro i _ exact ⟨hzero i, hone i⟩ exact (closure_minimal hsub hclosed) ht @@ -5611,7 +5497,6 @@ private theorem sum_fderiv_angularSmoothPartition_binary_eq_zero (∑ q : Fin n → Bool, (fderiv ℝ (angularSmoothPartition (n := n)) (binaryAngularFundamentalBase q + t)) v) = 0 := by - classical have hsum : fderiv ℝ (binaryAngularPartitionSum n) t = ∑ q : Fin n → Bool, @@ -5619,7 +5504,6 @@ private theorem sum_fderiv_angularSmoothPartition_binary_eq_zero (fun s : Space n => angularSmoothPartition (binaryAngularFundamentalBase q + s)) t := by - unfold binaryAngularPartitionSum apply fderiv_fun_sum intro q _ exact (contDiff_angularSmoothPartition @@ -5641,8 +5525,6 @@ private theorem fderiv_angularSmoothPartition_eq_zero_of_zero (ht : angularSmoothPartition t = 0) : fderiv ℝ (angularSmoothPartition (n := n)) t = 0 := by have hmin : IsLocalMin (angularSmoothPartition (n := n)) t := by - change ∀ᶠ s : Space n in 𝓝 t, - angularSmoothPartition t ≤ angularSmoothPartition s exact Filter.Eventually.of_forall (fun s => by rw [ht] exact angularSmoothPartition_nonneg s) @@ -5667,7 +5549,6 @@ private theorem integral_binaryPeriodic_cutoff_eq_zero (∫ t : Space n, (κ t : ℂ) * g t ∂(volume : Measure (Space n))) = 0 := by - classical let F : Space n → ℂ := fun t => (κ t : ℂ) * g t have hFc : Continuous F := @@ -5722,7 +5603,7 @@ private theorem integral_binaryPeriodic_cutoff_eq_zero (fun t : Space n => F (binaryAngularFundamentalBase q + t)) (volume : Measure (Space n)) by - simpa only [comp_def] using h).integrableOn + exact h).integrableOn change (∫ t : Space n, F t ∂(volume : Measure (Space n))) = 0 calc @@ -5827,7 +5708,6 @@ private theorem integral_fderiv_angularSmoothPartition_periodic_eq_zero exact ⟨lt_of_not_ge hleft, le_of_not_gt hn⟩ exact angularSmoothPartitionBump_zero_of_ge hright.le have hzero : angularSmoothPartition t = 0 := by - unfold angularSmoothPartition exact Finset.prod_eq_zero (Finset.mem_univ i) hbump change (fderiv ℝ (angularSmoothPartition (n := n)) t) v = 0 rw [fderiv_angularSmoothPartition_eq_zero_of_zero hzero] @@ -5875,7 +5755,6 @@ private theorem continuous_derivativePartitionedRealCoverIntegrand (n := n) (m := 1)).continuous_fderiv (by simp only [WithTop.coe_one, ne_eq, one_ne_zero, not_false_eq_true])).clm_apply continuous_const - unfold derivativePartitionedRealCoverIntegrand apply (Complex.continuous_ofReal.comp (Real.continuous_exp.comp (hφ.comp continuous_fst).neg)).mul @@ -5908,15 +5787,12 @@ private theorem hasCompactSupport_derivativePartitionedRealCoverIntegrand have hangular : κ p.2 ≠ 0 := by intro hzero apply hnonzero - simp only [derivativePartitionedRealCoverIntegrand, Complex.ofReal_exp, Complex.ofReal_neg, - hzero, - Complex.ofReal_zero, zero_mul, mul_zero, κ] + simp only [derivativePartitionedRealCoverIntegrand, hzero, Complex.ofReal_zero, zero_mul, + mul_zero, κ] have htest : f (p.1, angularCoverProjection n p.2) ≠ 0 := by intro hzero apply hnonzero - simp only [derivativePartitionedRealCoverIntegrand, Complex.ofReal_exp, Complex.ofReal_neg, - hzero, - mul_zero] + simp only [derivativePartitionedRealCoverIntegrand, hzero, mul_zero] apply hp exact ⟨⟨(p.1, angularCoverProjection n p.2), subset_closure htest, rfl⟩, subset_closure hangular⟩ @@ -6127,17 +6003,11 @@ private theorem integral_fderiv_coverAngularSmoothPartition_mul_lift_eq_zero private theorem angularCoverProjection_isOpenQuotientMap (n : ℕ) : IsOpenQuotientMap (angularCoverProjection n) := by - change IsOpenQuotientMap - (Pi.map (fun _ : Fin n => - (fun t : ℝ => (t : UnitAddCircle)))) exact IsOpenQuotientMap.piMap (fun _ => QuotientAddGroup.isOpenQuotientMap_mk) private theorem realTorusCoverProjection_isOpenQuotientMap (n : ℕ) : IsOpenQuotientMap (realTorusCoverProjection n) := by - change IsOpenQuotientMap - (Prod.map (id : Space n → Space n) - (angularCoverProjection n)) exact IsOpenQuotientMap.id.prodMap (angularCoverProjection_isOpenQuotientMap n) @@ -6146,8 +6016,6 @@ private theorem complexTorusCoverProjection_isOpenQuotientMap (n : ℕ) : have h := (realTorusCoverProjection_isOpenQuotientMap n).comp (logarithmicCoordinatesEquiv n).symm.toHomeomorph.isOpenQuotientMap - change IsOpenQuotientMap - (realTorusCoverProjection n ∘ (logarithmicCoordinatesEquiv n).symm) exact h private theorem continuous_torusScalarRepresentative_of_periodic @@ -6184,7 +6052,6 @@ private theorem continuous_sourceAngularCutoffLift {f : WeightedTorusHilbert.LogTorus n → ℂ} (hf : Continuous f) : Continuous (sourceAngularCutoffLift f) := by - unfold sourceAngularCutoffLift exact (Complex.continuous_ofReal.comp (contDiff_coverAngularSmoothPartition (n := n) (m := 1)).continuous).mul @@ -6237,10 +6104,6 @@ private theorem contDiff_sourceAngularCutoffLift {f : WeightedTorusHilbert.LogTorus n → ℂ} (hf : ContDiff ℝ m (complexTorusCoverLift f)) : ContDiff ℝ m (sourceAngularCutoffLift f) := by - change ContDiff ℝ m - (fun z : TorusCharacters.LogSpace n => - (coverAngularSmoothPartition z : ℂ) * - complexTorusCoverLift f z) exact (Complex.ofRealCLM.contDiff.comp (contDiff_coverAngularSmoothPartition (n := n) (m := m))).mul hf @@ -6258,7 +6121,6 @@ private theorem continuous_sourceAngularDerivativeLift (hf : Continuous f) (v : TorusCharacters.LogSpace n) : Continuous (sourceAngularDerivativeLift f v) := by - unfold sourceAngularDerivativeLift apply (Complex.continuous_ofReal.comp (((contDiff_coverAngularSmoothPartition (n := n) (m := 1)).continuous_fderiv @@ -6396,7 +6258,7 @@ private theorem fderiv_complex_mul_apply have h := congrArg (fun A : TorusCharacters.LogSpace n →L[ℝ] ℂ => A v) (fderiv_fun_mul (hF z) (hG z)) - simpa only [_root_.add_apply, _root_.smul_apply, smul_eq_mul] using h + exact h private theorem barPartialCoordinate_mul {n : ℕ} @@ -6730,10 +6592,9 @@ private theorem continuous_sourceTorusBarPartial (TorusCharacters.imaginaryShift q)) (j : Fin n) : Continuous (sourceTorusBarPartial F j) := by - unfold sourceTorusBarPartial exact continuous_torusScalarRepresentative_of_periodic (continuous_barPartialCoordinate - (hF.of_le (by norm_num)) j) + (hF.of_le (by decide)) j) (fun q => barPartialCoordinate_periodic F hperiod j q) private theorem hasCompactSupport_sourceTorusBarPartial @@ -6772,12 +6633,6 @@ private theorem hasCompactSupport_sourceTorusBarPartial Complex.I * torusDirectionalDerivativeRepresentative F v₁ p) * ((2 : ℂ)⁻¹)) = sourceTorusBarPartial F j := by funext p - change - ((fderiv ℝ F _) (Pi.single j (1 : ℂ)) + - Complex.I * (fderiv ℝ F _) (Pi.single j Complex.I)) * - ((2 : ℂ)⁻¹) = - ((fderiv ℝ F _) (Pi.single j (1 : ℂ)) + - Complex.I * (fderiv ℝ F _) (Pi.single j Complex.I)) / 2 exact (div_eq_mul_inv _ _).symm rw [hfunction] at hp exact hp @@ -6818,12 +6673,6 @@ private theorem hasCompactSupport_sourceTorusHolomorphicDerivative Complex.I * torusDirectionalDerivativeRepresentative F v₁ p) * ((2 : ℂ)⁻¹)) = sourceTorusHolomorphicDerivative F j := by funext p - change - ((fderiv ℝ F _) (Pi.single j (1 : ℂ)) - - Complex.I * (fderiv ℝ F _) (Pi.single j Complex.I)) * - ((2 : ℂ)⁻¹) = - ((fderiv ℝ F _) (Pi.single j (1 : ℂ)) - - Complex.I * (fderiv ℝ F _) (Pi.single j Complex.I)) / 2 exact (div_eq_mul_inv _ _).symm rw [hfunction] at hp exact hp @@ -6907,10 +6756,10 @@ private theorem sourceCoverRadialLinear_single_one funext i by_cases h : i = j · subst i - simp only [sourceCoverRadialLinear_apply, Pi.single_eq_same, Complex.one_re, mul_one, - Pi.smul_apply, smul_eq_mul] + simp only [sourceCoverRadialLinear_apply, Pi.single_eq_same, Complex.one_re, Pi.smul_apply, + smul_eq_mul] · simp only [sourceCoverRadialLinear_apply, ne_eq, h, not_false_eq_true, Pi.single_eq_of_ne, - Complex.zero_re, mul_zero, Pi.smul_apply, smul_eq_mul] + Complex.zero_re, Pi.smul_apply, smul_eq_mul] private theorem sourceCoverRadialLinear_single_I {n : ℕ} (j : Fin n) : @@ -6938,7 +6787,7 @@ private theorem fderiv_sourceCoverRadialComp_apply have hp := congrArg (fun A : TorusCharacters.LogSpace n →L[ℝ] ℝ => A v) hd.fderiv - simpa only [comp_def, ContinuousLinearMap.comp_apply] using hp + exact hp private theorem fderiv_matrixSourceCoverPotential_apply {n : ℕ} @@ -6987,7 +6836,7 @@ private theorem contDiff_sourceRealDirectional have hp : ContDiff ℝ 1 (fun q : Space n × Space n => (fderiv ℝ φ q.1) q.2) := - hφ.contDiff_fderiv_apply (by norm_num) + hφ.contDiff_fderiv_apply (by rfl) exact hp.comp (contDiff_id.prodMk contDiff_const) private theorem barPartialCoordinate_sourceCoverRadialComp @@ -7031,7 +6880,7 @@ private theorem complexHessian_matrixSourceCoverPotential_eq_real_transpose fun x => (fderiv ℝ φ x) (Pi.single i (1 : ℝ)) have hg : Differentiable ℝ g := (contDiff_sourceRealDirectional hφ i).differentiable - (by norm_num) + (by decide) have hhol : (fun w : TorusCharacters.LogSpace n => holomorphicCoordinate @@ -7040,7 +6889,7 @@ private theorem complexHessian_matrixSourceCoverPotential_eq_real_transpose (g (sourceCoverRadialLinear n w) : ℂ)) := by funext w exact holomorphicCoordinate_matrixSourceCoverPotential - (hφ.differentiable (by norm_num)) w i + (hφ.differentiable (by decide)) w i unfold complexHessian rw [hhol, barPartialCoordinate_sourceCoverRadialComp hg z j] change @@ -7071,11 +6920,6 @@ private theorem sourceMatrixHessian_entry_symm BergmanAsymptotics.actualHessianMatrix rw [LinearMap.toMatrix₂'_apply, LinearMap.toMatrix₂'_apply] - change - ((fderiv ℝ (fderiv ℝ φ) x) - (Pi.single i (1 : ℝ))) (Pi.single j (1 : ℝ)) = - ((fderiv ℝ (fderiv ℝ φ) x) - (Pi.single j (1 : ℝ))) (Pi.single i (1 : ℝ)) exact (hφ.contDiffAt.isSymmSndFDerivAt (by norm_num)).eq (Pi.single i (1 : ℝ)) (Pi.single j (1 : ℝ)) @@ -7191,8 +7035,6 @@ private def complexSourceCoverRadialCutoff {n : ℕ} (m : ℕ) private theorem contDiff_complexSourceCoverRadialCutoff {n : ℕ} (m : ℕ) : ContDiff ℝ 2 (complexSourceCoverRadialCutoff (n := n) m) := by - change ContDiff ℝ 2 - (Complex.ofRealCLM ∘ sourceCoverRadialCutoff (n := n) m) exact Complex.ofRealCLM.contDiff.comp (contDiff_sourceCoverRadialCutoff m) @@ -7310,10 +7152,6 @@ private theorem torusFormRepresentative_cutoffPhysicalField (sourceRadialCutoff m p : ℂ) • torusFormRepresentative W p := by ext i - change torusScalarRepresentative - (fun z => cutoffPhysicalField m W z i) p = - (sourceRadialCutoff m p : ℂ) * - torusScalarRepresentative (fun z => W z i) p exact torusScalarRepresentative_cutoffPhysicalField m W i p private theorem continuous_torusFormRepresentative_of_smooth_periodic @@ -7332,11 +7170,6 @@ private theorem continuous_torusFormRepresentative_of_smooth_periodic (contDiff_pi.mp hW i).continuous intro q z exact congrFun (hWp q z) i - change Continuous - (fun p : WeightedTorusHilbert.LogTorus n => - WithLp.toLp 2 - (fun i : Fin n => - torusScalarRepresentative (fun z => W z i) p)) exact (PiLp.continuous_toLp 2 (fun _ : Fin n => ℂ)).comp (continuous_pi hcoordinate) @@ -7394,7 +7227,7 @@ private theorem barPartialCoordinate_complexSourceCoverRadialCutoff (Pi.single j (1 : ℝ)) : ℂ) := by exact barPartialCoordinate_sourceCoverRadialComp (((growingBump (n := n) m).contDiff - (n := 1)).differentiable (by norm_num)) z j + (n := 1)).differentiable (by decide)) z j private theorem sourceTorusBarPartial_complexSourceCoverRadialCutoff {n : ℕ} (m : ℕ) @@ -7476,9 +7309,9 @@ private theorem sourceTorusBarPartial_cutoffPhysicalField funext z exact barPartialCoordinate_mul ((contDiff_complexSourceCoverRadialCutoff m).differentiable - (by norm_num)) + (by decide)) ((contDiff_pi.mp hW i).differentiable - (by norm_num)) z j + (by decide)) z j unfold sourceTorusBarPartial change torusScalarRepresentative @@ -7599,11 +7432,6 @@ private theorem sourceCutoffDerivativeCommutator_eq_outerProduct private theorem continuous_sourceCutoffBarGradient {n : ℕ} (m : ℕ) : Continuous (sourceCutoffBarGradient (n := n) m) := by - change Continuous - (fun p : WeightedTorusHilbert.LogTorus n => - WithLp.toLp 2 (fun j : Fin n => - sourceTorusBarPartial - (complexSourceCoverRadialCutoff m) j p)) apply (PiLp.continuous_toLp 2 (fun _ : Fin n => ℂ)).comp apply continuous_pi @@ -7621,12 +7449,6 @@ private theorem continuous_sourceCutoffDerivativeCommutator Function.Periodic W (TorusCharacters.imaginaryShift q)) : Continuous (sourceCutoffDerivativeCommutator m W) := by - change Continuous - (fun p : WeightedTorusHilbert.LogTorus n => - WithLp.toLp 2 (fun ij : Fin n × Fin n => - torusScalarRepresentative (fun z => W z ij.1) p * - sourceTorusBarPartial - (complexSourceCoverRadialCutoff m) ij.2 p)) apply (PiLp.continuous_toLp 2 (fun _ : Fin n × Fin n => ℂ)).comp apply continuous_pi @@ -7880,8 +7702,8 @@ private theorem zeroSourceWeightedTorusMeasure {n : ℕ} : weightedTorusMeasure 1 (fun _ : Space n => (0 : ℝ)) = sourceTorusBaseMeasure n := by rw [weightedTorusMeasure_eq_withDensity 1 continuous_const] - simp only [radialWeight, Nat.cast_one, mul_zero, Real.exp_zero, ENNReal.ofReal_one, - withDensity_const, one_smul, sourceTorusBaseMeasure] + simp only [radialWeight, mul_zero, Real.exp_zero, ENNReal.ofReal_one, withDensity_const, one_smul, + sourceTorusBaseMeasure] private def angularUnweightedTorusIntegrand {n : ℕ} (a : LogTorus n → ℝ) (f : LogTorus n → ℂ) @@ -7918,8 +7740,8 @@ private theorem integral_angularUnweightedTorusIntegrand_eq_weighted (Filter.Eventually.of_forall fun p => ENNReal.ofReal_lt_top)] apply integral_congr_ae filter_upwards [] with p - simp only [angularUnweightedTorusIntegrand, angularWeightedTorusDensity, Complex.ofReal_exp, - Complex.ofReal_neg, ENNReal.toReal_ofReal (Real.exp_pos _).le, Complex.real_smul] + simp only [angularUnweightedTorusIntegrand, angularWeightedTorusDensity, + ENNReal.toReal_ofReal (Real.exp_pos _).le, Complex.real_smul] private theorem angular_partitioned_coverWeighted_integral_eq_torus {n : ℕ} {a : LogTorus n → ℝ} (ha : Continuous a) @@ -8079,7 +7901,6 @@ private theorem angularComplexHessian_periodic {n : ℕ} (fun z : TorusCharacters.LogSpace n => complexHessian (angularCoverPotential a) z i j) (TorusCharacters.imaginaryShift q) := by - unfold complexHessian exact barPartialCoordinate_periodic (fun z : TorusCharacters.LogSpace n => holomorphicCoordinate @@ -8112,11 +7933,10 @@ private theorem continuous_angularTorusWeightedHolomorphicDerivative {n : ℕ} Function.Periodic F (TorusCharacters.imaginaryShift q)) (j : Fin n) : Continuous (angularTorusWeightedHolomorphicDerivative a F j) := by - unfold angularTorusWeightedHolomorphicDerivative exact continuous_torusScalarRepresentative_of_periodic (continuous_weightedHolomorphicDerivative - (ha.of_le (by norm_num)) - (hF.of_le (by norm_num)) j) + (ha.of_le (by decide)) + (hF.of_le (by decide)) j) (fun q => angularWeightedHolomorphicDerivative_periodic a F hperiod j q) @@ -8125,7 +7945,6 @@ private theorem continuous_angularTorusComplexHessian {n : ℕ} (ha : ContDiff ℝ 2 (angularCoverPotential a)) (i j : Fin n) : Continuous (angularTorusComplexHessian a i j) := by - unfold angularTorusComplexHessian exact continuous_torusScalarRepresentative_of_periodic (continuous_complexHessian ha i j) (fun q => angularComplexHessian_periodic a i j q) @@ -8658,7 +8477,7 @@ private theorem angularTorus_weighted_complex_bochner_coordinate_identity (n := n) (m := 1))).differentiable (by simp only [WithTop.coe_one, ne_eq, one_ne_zero, not_false_eq_true]) have hGdiff : Differentiable ℝ G := - hG.differentiable (by norm_num) + hG.differentiable (by decide) have hleftpoint (z : E) : weightedHolomorphicDerivative A F i z * conj (weightedHolomorphicDerivative A Gcut j z) = @@ -8666,8 +8485,7 @@ private theorem angularTorus_weighted_complex_bochner_coordinate_identity barPartialCoordinate (fun w => (coverAngularSmoothPartition w : ℂ)) z j * CL (complexTorusCoverProjection n z) := by - simpa only [A, Gcut, L, CL, g] using - angularTorus_weighted_complex_bochner_left_cutoff_point + exact angularTorus_weighted_complex_bochner_left_cutoff_point (a := a) hFp hGp hηreal hηcomplex hGdiff i j z have hrightpoint (z : E) : (barPartialCoordinate F z j * @@ -8677,12 +8495,8 @@ private theorem angularTorus_weighted_complex_bochner_coordinate_identity holomorphicCoordinate (fun w => (coverAngularSmoothPartition w : ℂ)) z i * CR (complexTorusCoverProjection n z) := by - simpa only [A, Gcut, B, C, CR, g] using - angularTorus_weighted_complex_bochner_right_cutoff_point + exact angularTorus_weighted_complex_bochner_right_cutoff_point (a := a) hFp hGp hηreal hηcomplex hGdiff i j z - change - (∫ p : T, L p ∂(angularWeightedTorusMeasure a)) = - ∫ p : T, (B p + C p) ∂(angularWeightedTorusMeasure a) exact angularTorus_weighted_complex_bochner_finish ha ha2 hF hGcut hGcutcompact i j L B C CL CR hLc hLcompact hBc hBcompact hCc hCcompact @@ -9026,7 +8840,6 @@ private theorem integrable_angularTorusFormMixedDerivativeDensity HasCompactSupport (torusScalarRepresentative (fun z => W z i))) : Integrable (sourceTorusFormMixedDerivativeDensity W) (angularWeightedTorusMeasure a) := by - unfold sourceTorusFormMixedDerivativeDensity exact MeasureTheory.integrable_finsetSum Finset.univ (fun i _ => MeasureTheory.integrable_finsetSum Finset.univ (fun j _ => integrable_angularTorusBarPartial_pair @@ -9046,7 +8859,6 @@ private theorem integrable_angularTorusFormCurvatureDensity HasCompactSupport (torusScalarRepresentative (fun z => W z i))) : Integrable (angularTorusFormCurvatureDensity a W) (angularWeightedTorusMeasure a) := by - unfold angularTorusFormCurvatureDensity exact MeasureTheory.integrable_finsetSum Finset.univ (fun i _ => MeasureTheory.integrable_finsetSum Finset.univ (fun j _ => integrable_angularTorusComplexHessian_pair @@ -9065,7 +8877,6 @@ private theorem integrable_angularTorusFormFullDerivativeDensity HasCompactSupport (torusScalarRepresentative (fun z => W z i))) : Integrable (sourceTorusFormFullDerivativeDensity W) (angularWeightedTorusMeasure a) := by - unfold sourceTorusFormFullDerivativeDensity exact MeasureTheory.integrable_finsetSum Finset.univ (fun i _ => MeasureTheory.integrable_finsetSum Finset.univ (fun j _ => integrable_angularTorusBarPartial_pair diff --git a/LeanPool/EhrhartVolumeInequality/Imports.lean b/LeanPool/EhrhartVolumeInequality/Imports.lean index faad6de189..d2f0566916 100644 --- a/LeanPool/EhrhartVolumeInequality/Imports.lean +++ b/LeanPool/EhrhartVolumeInequality/Imports.lean @@ -7,6 +7,7 @@ module -- shake: keep-all --deprecated_module: ignore -- Generated project imports; run `lake exe mk_all`. public import LeanPool.EhrhartVolumeInequality +public import LeanPool.EhrhartVolumeInequality.AnalysisSupport public import LeanPool.EhrhartVolumeInequality.Convergence public import LeanPool.EhrhartVolumeInequality.Convexity public import LeanPool.EhrhartVolumeInequality.Foundations diff --git a/LeanPool/EhrhartVolumeInequality/Regularization.lean b/LeanPool/EhrhartVolumeInequality/Regularization.lean index aff4a4aea6..1d80c0652c 100644 --- a/LeanPool/EhrhartVolumeInequality/Regularization.lean +++ b/LeanPool/EhrhartVolumeInequality/Regularization.lean @@ -16,6 +16,7 @@ import Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.Continuity import Mathlib.Analysis.Calculus.DerivativeTest import Mathlib.Analysis.Convex.Integral import Mathlib.Analysis.Matrix.Order +import Mathlib.Analysis.SpecialFunctions.Complex.LogDeriv /-! # Ehrhart volume inequality: Regularization @@ -48,7 +49,6 @@ private theorem angularFundamentalCell_set_measurable (n : ℕ) : ∀ i : Fin n, t i ∈ Set.Ioc (0 : ℝ) ((0 : ℝ) + 1)} := by have hbox : MeasurableSet (angularFundamentalBox (0 : Space n)) := by - unfold angularFundamentalBox exact MeasurableSet.univ_pi' (fun _ => measurableSet_Ioc) simpa only [zero_add, mem_Ioc, measurableSet_setOfPred, angularFundamentalBox, Pi.zero_apply] using hbox @@ -76,14 +76,6 @@ private theorem realFundamentalEmbedding_measurePreserving (n : ℕ) : ∀ i : Fin n, t i ∈ Set.Ioc (0 : ℝ) ((0 : ℝ) + 1)}) := by exact measurePreserving_subtype_coe (angularFundamentalCell_set_measurable n) - change MeasurePreserving - (Prod.map id (Subtype.val : angularFundamentalCell n → Space n)) - ((volume : Measure (Space n)).prod - (angularFundamentalMeasure n)) - ((volume : Measure (Space n)).prod - ((volume : Measure (Space n)).restrict - {t : Space n | - ∀ i : Fin n, t i ∈ Set.Ioc (0 : ℝ) ((0 : ℝ) + 1)})) exact (MeasurePreserving.id (volume : Measure (Space n))).prod hsub @@ -99,10 +91,6 @@ private theorem unweightedTorus_representative_ae_of_complexCover have hpush : F =ᵐ[logarithmicCoverPushforward n] complexTorusCoverLift f := by rw [logarithmicCoverPushforward_eq_smul_volume] - change F =ᵐ[ - ((logarithmicCoverJacobianFactor n : ℝ≥0∞) • - (volume : Measure (TorusCharacters.LogSpace n)))] - complexTorusCoverLift f exact (Measure.ae_ennreal_smul_measure_iff (ENNReal.coe_ne_zero.mpr (logarithmicCoverJacobianFactor_pos n).ne')).mpr hcover @@ -200,8 +188,7 @@ private theorem weightOne_integerExponent_eq_zero {n : ℕ} K (u : Space n)).mp u.property rw [hu] funext i - simp only [integerPoint, Pi.zero_apply, Int.cast_zero, Nat.cast_one, Pi.smul_apply, smul_eq_mul, - mul_zero] + simp only [integerPoint, Pi.zero_apply, Int.cast_zero, Pi.smul_apply, smul_eq_mul, mul_zero] private theorem torusMonomial_zero {n : ℕ} (p : WeightedTorusHilbert.LogTorus n) : @@ -249,7 +236,6 @@ private theorem radialZeroGraph_weightOne_eq_constantMonomial ∃ c : ℂ, f = c • indexedMonomialLp K (by decide) hφ hbounded (weightOneZeroIndex K) := by - classical let := (BergmanMonomials.monomialIndex_finite K (by decide : 0 < (1 : ℕ))).fintype obtain ⟨F, hF, hperiod, hcover⟩ := @@ -411,7 +397,7 @@ private theorem angularWeakScalarResolventCLM_fixed_iff_graph_zero angularDolbeaultGraphAmbient a)) (WithLp.snd (angularWeakDolbeaultResolvent a f : angularDolbeaultGraphAmbient a)) = 0 := by - linear_combination hvar + exact add_eq_left.mp hvar have hgradient : WithLp.snd (angularWeakDolbeaultResolvent a f : angularDolbeaultGraphAmbient a) = 0 := @@ -440,34 +426,8 @@ private theorem angularWeakScalarResolventCLM_defect_range_closure ((ContinuousLinearMap.id ℂ (angularWeightedScalarL2 a) - angularWeakScalarResolventCLM a).range).topologicalClosure = (angularWeakResolventFixedSpace a)ᗮ := by - let T : angularWeightedScalarL2 a →L[ℂ] - angularWeightedScalarL2 a := - ContinuousLinearMap.id ℂ (angularWeightedScalarL2 a) - - angularWeakScalarResolventCLM a - have hTadj : T.adjoint = T := by - symm - apply (ContinuousLinearMap.eq_adjoint_iff T T).2 - intro x y - change - @inner ℂ (angularWeightedScalarL2 a) _ - (x - angularWeakScalarResolventCLM a x) y = - @inner ℂ (angularWeightedScalarL2 a) _ x - (y - angularWeakScalarResolventCLM a y) - rw [inner_sub_left, inner_sub_right, - angularWeakScalarResolventCLM_selfAdjoint] - have hker : T.ker = angularWeakResolventFixedSpace a := by - ext x - change - x - angularWeakScalarResolventCLM a x = 0 ↔ - angularWeakScalarResolventCLM a x = x - rw [sub_eq_zero] - exact eq_comm - change T.range.topologicalClosure = - (angularWeakResolventFixedSpace a)ᗮ - calc - T.range.topologicalClosure = T.kerᗮ := by - simpa only [hTadj] using (T.orthogonal_ker).symm - _ = (angularWeakResolventFixedSpace a)ᗮ := by rw [hker] + exact continuousLinearMap_id_sub_range_closure_eq_fixedSpace_orthogonal + (angularWeakScalarResolventCLM a) (angularWeakScalarResolventCLM_selfAdjoint a) end WeightedTorusBrascampLieb @@ -519,8 +479,7 @@ private theorem radialWeightedTorusMeasure_le_angular_of_upper ENNReal.ofReal_ne_top] apply MeasureTheory.withDensity_mono filter_upwards [] with q - simpa only [Pi.smul_apply, smul_eq_mul] using - radialWeightedTorusDensity_le_angular_of_upper hupper q + exact radialWeightedTorusDensity_le_angular_of_upper hupper q private theorem memLp_radial_of_angular_upper {n : ℕ} {E : Type*} [NormedAddCommGroup E] @@ -696,21 +655,9 @@ private theorem angularToRadialGraphAmbientCLMOfUpper_graph_le (angularDolbeaultGraph a).map (angularToRadialGraphAmbientCLMOfUpper hφ hupper).toLinearMap ≤ functionDolbeaultGraph 1 φ := by - change - ((Submodule.span ℂ - (smoothAngularDolbeaultGraphSet a)).topologicalClosure).map - (angularToRadialGraphAmbientCLMOfUpper hφ hupper).toLinearMap ≤ - (Submodule.span ℂ - (smoothFunctionDolbeaultGraphSet 1 φ)).topologicalClosure - refine (Submodule.topologicalClosure_map + exact continuousLinearMap_map_topologicalClosure_span_le (angularToRadialGraphAmbientCLMOfUpper hφ hupper) - (Submodule.span ℂ (smoothAngularDolbeaultGraphSet a))).trans ?_ - apply Submodule.topologicalClosure_mono - rw [Submodule.map_span] - apply Submodule.span_mono - rintro _ ⟨v, hv, rfl⟩ - exact angularToRadialGraphAmbientCLMOfUpper_smooth_mem - hφ hupper hv + (fun _ hv => angularToRadialGraphAmbientCLMOfUpper_smooth_mem hφ hupper hv) private theorem angularZeroGraph_mem_radialZeroGraph_of_upper {n : ℕ} {a : LogTorus n → ℝ} @@ -764,7 +711,6 @@ private theorem radial_ae_iff_angular_of_continuous filter_upwards [hP] with q hq hne apply hq have hpos : 0 < radialWeight 1 φ q.1 := by - unfold radialWeight exact ENNReal.ofReal_pos.mpr (Real.exp_pos _) exact hpos.ne' · intro hP @@ -938,7 +884,6 @@ private theorem angularWeightedTorusMeasure_isFinite_of_integrable Integrable (angularWeightedTorusDensity a) (sourceTorusBaseMeasure n)) : IsFiniteMeasure (angularWeightedTorusMeasure a) := by - unfold angularWeightedTorusMeasure exact isFiniteMeasure_withDensity_ofReal hintegrable.hasFiniteIntegral @@ -1229,7 +1174,6 @@ private theorem momentSignedMonomialLowerConstant_le_coercivityConstant (σ : Fin n → Bool) : momentSignedMonomialLowerConstant K F htransport σ ≤ momentTorusEnvelopeCoercivityConstant K F htransport := by - unfold momentTorusEnvelopeCoercivityConstant calc momentSignedMonomialLowerConstant K F htransport σ ≤ |momentSignedMonomialLowerConstant @@ -1257,7 +1201,6 @@ private theorem pairing_momentSignedUnitVector_spatialSign (momentSignedUnitVector k (momentSpatialSign x)) x = (k : ℝ)⁻¹ * ∑ i, |x i| := by - classical unfold pairing momentSignedUnitVector momentSpatialSign rw [Finset.mul_sum] apply Finset.sum_congr rfl @@ -1403,7 +1346,7 @@ private theorem integrable_exp_neg_momentTorusEnvelopeTimeSlice apply hrad.congr filter_upwards [] with x simp only [monomialWeight, pairing, Pi.zero_apply, zero_mul, Finset.sum_const_zero, zero_sub, - mul_neg, one_mul] + one_mul] have hang : Integrable (fun _ : TorusCharacters.AngularTorus n => @@ -1495,8 +1438,6 @@ private theorem isOpenMap_sourceJointCoverExp (n : ℕ) : (fun z : TorusCharacters.LogSpace n => z) := by intro s hs simpa only [image_id'] using hs - change IsOpenMap (Prod.map - (fun z : TorusCharacters.LogSpace n => z) Complex.exp) exact hid.prodMap Complex.isOpenMap_exp private abbrev PositiveSourceJointComplexCover (n : ℕ) := @@ -1724,8 +1665,7 @@ private theorem exists_sourceJointCoverCircle_uniform_bounds have hzmem : z ∈ Metric.closedBall q S := by apply Metric.mem_closedBall.mpr dsimp [S] - nlinarith [abs_nonneg R, norm_nonneg v, - mul_nonneg (abs_nonneg R) (norm_nonneg v)] + linarith only [hz, abs_nonneg R, norm_nonneg v, mul_nonneg (abs_nonneg R) (norm_nonneg v)] refine ⟨⟨hL ⟨_, hzmem, rfl⟩, hC ⟨_, hzmem, rfl⟩⟩, ?_⟩ intro θ @@ -1744,7 +1684,7 @@ private theorem exists_sourceJointCoverCircle_uniform_bounds rw [norm_smul, norm_circleMap_zero] _ ≤ S := by dsimp [S] - linarith + linarith only [hz] exact ⟨hL ⟨_, hmem, rfl⟩, hC ⟨_, hmem, rfl⟩⟩ @@ -1827,13 +1767,13 @@ private theorem sourceJointCover_complex_line_submean_of_convergent_finite_appro have hmprod : (2 * Real.pi) * F (i m) (q m) ≤ ∫ θ in 0..2 * Real.pi, u (γ m θ) := by - nlinarith [(le_div_iff₀ Real.two_pi_pos).mp hmdiv] + linarith only [(le_div_iff₀ Real.two_pi_pos).mp hmdiv] rw [← intervalIntegral.integral_of_le Real.two_pi_pos.le, intervalIntegral.integral_sub (hangleint m) intervalIntegrable_const] simp only [intervalIntegral.integral_const, sub_zero, smul_eq_mul] - nlinarith + linarith only [hmprod] have hshiftint (m : ℕ) : Integrable (fun θ : ℝ => u (γ m θ) - L) @@ -1922,13 +1862,13 @@ private theorem sourceJointCover_complex_line_submean_of_convergent_finite_appro have hprod : (2 * Real.pi) * u q₀ ≤ ∫ θ in 0..2 * Real.pi, u (γ₀ θ) := by - nlinarith + linarith only [hmaininterval] have hdiv : u q₀ ≤ (∫ θ in 0..2 * Real.pi, u (γ₀ θ)) / (2 * Real.pi) := by apply (le_div_iff₀ Real.two_pi_pos).mpr - nlinarith + linarith only [hprod] simpa only [mul_comm, mul_inv_rev, ge_iff_le, div_eq_mul_inv] using hdiv private theorem sourceJointCover_upperRegularization_family_complex_line_submean_all_radius @@ -2080,7 +2020,6 @@ private theorem contDiff_sourceJointRadialNormSq (n : ℕ) : private theorem sourceJointRadialNormSq_coordinate_le {n : ℕ} (q : SourceJointComplexCover n) (i : Fin n) : Complex.normSq (q.1 i) ≤ sourceJointRadialNormSq q := by - unfold sourceJointRadialNormSq calc Complex.normSq (q.1 i) ≤ ∑ j : Fin n, Complex.normSq (q.1 j) := @@ -2094,7 +2033,6 @@ private theorem sourceJointRadialNormSq_coordinate_le {n : ℕ} private theorem sourceJointRadialNormSq_auxiliary_le {n : ℕ} (q : SourceJointComplexCover n) : Complex.normSq q.2 ≤ sourceJointRadialNormSq q := by - unfold sourceJointRadialNormSq exact le_add_of_nonneg_left (Finset.sum_nonneg fun _ _ => Complex.normSq_nonneg _) @@ -2105,7 +2043,6 @@ private def sourceJointTrueRadialBump (n k : ℕ) private theorem contDiff_sourceJointTrueRadialBump (n k : ℕ) : ContDiff ℝ ∞ (sourceJointTrueRadialBump n k) := by - unfold sourceJointTrueRadialBump exact Real.smoothTransition.contDiff.comp (contDiff_const.sub (contDiff_const.mul (contDiff_sourceJointRadialNormSq n))) @@ -2132,7 +2069,7 @@ private theorem support_sourceJointTrueRadialBump_subset_closedBall exact Real.smoothTransition.zero_iff_nonpos.mpr h have hrad : (((k + 1 : ℕ) : ℝ) ^ 2) * sourceJointRadialNormSq q < 1 := by - linarith + exact sub_pos.mp harg have hcoord (i : Fin n) : ‖q.1 i‖ ≤ 1 / ((k + 1 : ℕ) : ℝ) := by have hs := sourceJointRadialNormSq_coordinate_le q i @@ -2145,7 +2082,7 @@ private theorem support_sourceJointTrueRadialBump_subset_closedBall have hprod : 0 ≤ (((k + 1 : ℕ) : ℝ) * ‖q.1 i‖) := mul_nonneg hk.le (norm_nonneg _) apply (le_div_iff₀ hk).mpr - nlinarith + nlinarith only [hsq, hprod] have haux : ‖q.2‖ ≤ 1 / ((k + 1 : ℕ) : ℝ) := by have hs := sourceJointRadialNormSq_auxiliary_le q @@ -2158,7 +2095,7 @@ private theorem support_sourceJointTrueRadialBump_subset_closedBall have hprod : 0 ≤ (((k + 1 : ℕ) : ℝ) * ‖q.2‖) := mul_nonneg hk.le (norm_nonneg _) apply (le_div_iff₀ hk).mpr - nlinarith + nlinarith only [hsq, hprod] rw [Metric.mem_closedBall, dist_zero_right, Prod.norm_def, max_le_iff] exact ⟨(pi_norm_le_iff_of_nonneg (by positivity)).mpr hcoord, @@ -2177,7 +2114,6 @@ private def sourceJointTrueRadialBumpMass (n k : ℕ) : ℝ := private theorem sourceJointTrueRadialBumpMass_pos (n k : ℕ) : 0 < sourceJointTrueRadialBumpMass n k := by - unfold sourceJointTrueRadialBumpMass apply (contDiff_sourceJointTrueRadialBump n k).continuous.integral_pos_of_hasCompactSupport_nonneg_nonzero (hasCompactSupport_sourceJointTrueRadialBump n k) @@ -2193,7 +2129,6 @@ private def sourceJointTrueRadialMollifier (n k : ℕ) private theorem contDiff_sourceJointTrueRadialMollifier (n k : ℕ) : ContDiff ℝ ∞ (sourceJointTrueRadialMollifier n k) := by - unfold sourceJointTrueRadialMollifier exact (contDiff_sourceJointTrueRadialBump n k).div_const _ private theorem sourceJointTrueRadialMollifier_nonneg (n k : ℕ) @@ -2231,8 +2166,6 @@ private theorem integral_sourceJointTrueRadialMollifier (n k : ℕ) : sourceJointTrueRadialMollifier n k q) = 1 := by unfold sourceJointTrueRadialMollifier rw [integral_div] - change sourceJointTrueRadialBumpMass n k / - sourceJointTrueRadialBumpMass n k = 1 exact div_self (ne_of_gt (sourceJointTrueRadialBumpMass_pos n k)) private theorem tendsto_sourceJointTrueRadialRadius : @@ -2245,7 +2178,6 @@ private theorem sourceJointRadialNormSq_phase {n : ℕ} (u : ℂ) (hu : ‖u‖ = 1) (q : SourceJointComplexCover n) : sourceJointRadialNormSq (u • q) = sourceJointRadialNormSq q := by - unfold sourceJointRadialNormSq change (∑ i : Fin n, Complex.normSq (u * q.1 i)) + Complex.normSq (u * q.2) = @@ -2257,8 +2189,7 @@ private theorem sourceJointTrueRadialBump_phase {n : ℕ} (q : SourceJointComplexCover n) : sourceJointTrueRadialBump n k (u • q) = sourceJointTrueRadialBump n k q := by - simp only [sourceJointTrueRadialBump, Nat.cast_add, Nat.cast_one, - sourceJointRadialNormSq_phase u hu q] + simp only [sourceJointTrueRadialBump, sourceJointRadialNormSq_phase u hu q] private theorem sourceJointTrueRadialMollifier_phase {n : ℕ} (k : ℕ) (u : ℂ) (hu : ‖u‖ = 1) @@ -2281,8 +2212,6 @@ private theorem measurePreserving_sourceJointComplexPhase {n : ℕ} have hrotation : MeasurePreserving (rotation a) (volume : Measure ℂ) (volume : Measure ℂ) := (rotation a).measurePreserving - change MeasurePreserving (rotation a) - (volume : Measure ℂ) (volume : Measure ℂ) exact hrotation have hp : MeasurePreserving (fun z : Fin n → ℂ => fun i => u * z i) @@ -2415,7 +2344,7 @@ private theorem tendsto_sourceJointTrueRadialSmoothed_of_upperSemicontinuousAt_a filter_upwards [eventually_sourceJointTrueRadialSmoothed_le_of_upperSemicontinuousAt hf q hupper hε] with k hk - linarith + linarith only [hε, hk] private theorem contDiff_sourceJointTrueRadialSmoothed {n : ℕ} {f : SourceJointComplexCover n → ℝ} @@ -2469,10 +2398,10 @@ theorem hasDerivAt_intervalIntegral_of_joint_continuous (∫ θ in a..b, F' x₀ θ) x₀ := by have hFslice (x : ℝ) : Continuous (F x) := by change Continuous (fun θ : ℝ => (Function.uncurry F) (x, θ)) - fun_prop + exact Continuous.comp' hF (Continuous.prodMk continuous_const continuous_id') have hF'slice (x : ℝ) : Continuous (F' x) := by change Continuous (fun θ : ℝ => (Function.uncurry F') (x, θ)) - fun_prop + exact Continuous.comp' hF' (Continuous.prodMk continuous_const continuous_id') obtain ⟨C, hC⟩ := (((isCompact_closedBall x₀ (1 : ℝ)).prod (isCompact_uIcc : IsCompact (Set.uIcc a b))).image @@ -2481,7 +2410,7 @@ theorem hasDerivAt_intervalIntegral_of_joint_continuous (μ := (volume : Measure ℝ)) (s := Metric.closedBall x₀ (1 : ℝ)) (bound := fun _ : ℝ => C) - (Metric.closedBall_mem_nhds x₀ (by norm_num)) + (Metric.closedBall_mem_nhds x₀ (by exact zero_lt_one)) (Eventually.of_forall fun x => (hFslice x).measurable.aestronglyMeasurable) ((hFslice x₀).intervalIntegrable a b) @@ -2534,7 +2463,7 @@ private theorem hasDerivAt_sourceJointCircleLine {n : ℕ} (q d : SourceJointComplexCover n) (r : ℝ) : HasDerivAt (fun x : ℝ => f (q + x • d)) ((fderiv ℝ f (q + r • d)) d) r := by - exact ((hf.differentiable (by norm_num) (q + r • d)).hasFDerivAt).comp_hasDerivAt + exact ((hf.differentiable (by decide) (q + r • d)).hasFDerivAt).comp_hasDerivAt r (hasDerivAt_sourceJointRealAffine q d r) private theorem hasDerivAt_sourceJointCircleLineDerivative {n : ℕ} @@ -2544,7 +2473,7 @@ private theorem hasDerivAt_sourceJointCircleLineDerivative {n : ℕ} HasDerivAt (fun x : ℝ => (fderiv ℝ f (q + x • d)) d) (((fderiv ℝ (fderiv ℝ f) (q + r • d)) d) d) r := by have hfd : ContDiff ℝ 1 (fderiv ℝ f) := - hf.fderiv_right (by norm_num) + hf.fderiv_right (by rfl) have heval : HasFDerivAt (fun y : SourceJointComplexCover n => (fderiv ℝ f y) d) ((ContinuousLinearMap.apply ℝ ℝ d).comp @@ -2552,7 +2481,7 @@ private theorem hasDerivAt_sourceJointCircleLineDerivative {n : ℕ} (q + r • d) := by exact (ContinuousLinearMap.apply ℝ ℝ d).hasFDerivAt.comp (q + r • d) - (hfd.differentiable (by norm_num) (q + r • d)).hasFDerivAt + (hfd.differentiable (by decide) (q + r • d)).hasFDerivAt have hcomp : HasDerivAt ((fun y : SourceJointComplexCover n => (fderiv ℝ f y) d) ∘ (fun x : ℝ => q + x • d)) @@ -2560,8 +2489,7 @@ private theorem hasDerivAt_sourceJointCircleLineDerivative {n : ℕ} (fderiv ℝ (fderiv ℝ f) (q + r • d))) d) r := by exact heval.comp_hasDerivAt r (hasDerivAt_sourceJointRealAffine q d r) - refine (hcomp.congr_of_eventuallyEq - (Filter.Eventually.of_forall fun _ => rfl)).congr_deriv ?_ + refine hcomp.congr_deriv ?_ rfl private theorem local_min_second_derivative_nonnegative @@ -2580,7 +2508,7 @@ private theorem local_min_second_derivative_nonnegative have hsecond : deriv (deriv g) r = 0 := by have hd := heq.deriv.deriv_eq simpa only [deriv_const'] using hd - linarith + linarith only [hsecond, hneg] private def sourceJointCircleRadiusProfile {n : ℕ} (f : SourceJointComplexCover n → ℝ) @@ -2602,9 +2530,6 @@ private theorem continuous_sourceJointCircleRadiusProfile {n : ℕ} (μ := (volume : Measure ℝ)) hjoint 0 (2 * Real.pi) unfold sourceJointCircleRadiusProfile simp_rw [Real.circleAverage_def] - change Continuous - (fun r : ℝ => (2 * Real.pi)⁻¹ • - ∫ θ in 0..2 * Real.pi, F r θ) exact hint.fun_const_smul ((2 * Real.pi)⁻¹) private theorem sourceJointCircleRadiusProfile_zero {n : ℕ} @@ -2634,38 +2559,20 @@ private theorem sourceJointCircleRadiusProfile_second_eq_integral ((fderiv ℝ (fderiv ℝ f) (q + r • d θ)) (d θ)) (d θ) have hd : Continuous d := by dsimp [d] - fun_prop + exact Continuous.fun_smul (continuous_circleMap 0 1) continuous_const have hpoint : - Continuous (fun x : ℝ × ℝ => q + x.1 • d x.2) := by - have heq : - (fun x : ℝ × ℝ => q + x.1 • d x.2) = - (fun x : ℝ × ℝ => q + circleMap 0 x.1 x.2 • v) := by - funext x - change q + x.1 • (circleMap 0 1 x.2 • v) = - q + circleMap 0 x.1 x.2 • v - exact congrArg - (fun w : SourceJointComplexCover n => q + w) - (sourceJointCircleMap_radius_smul v x.1 x.2).symm - rw [heq] - fun_prop + Continuous (fun x : ℝ × ℝ => q + x.1 • d x.2) := + continuous_const.add (continuous_fst.smul (hd.comp continuous_snd)) have hdir : Continuous (fun x : ℝ × ℝ => d x.2) := hd.comp continuous_snd have hF : Continuous (Function.uncurry F) := by - change Continuous (fun x : ℝ × ℝ => f (q + x.1 • d x.2)) exact hf.continuous.comp hpoint have hF' : Continuous (Function.uncurry F') := by - change Continuous - (fun x : ℝ × ℝ => - (fderiv ℝ f (q + x.1 • d x.2)) (d x.2)) - exact ((hf.continuous_fderiv (by norm_num)).comp hpoint).clm_apply hdir + exact ((hf.continuous_fderiv (by decide)).comp hpoint).clm_apply hdir have hfd : ContDiff ℝ 1 (fderiv ℝ f) := - hf.fderiv_right (by norm_num) + hf.fderiv_right (by rfl) have hF'' : Continuous (Function.uncurry F'') := by - change Continuous - (fun x : ℝ × ℝ => - ((fderiv ℝ (fderiv ℝ f) (q + x.1 • d x.2)) - (d x.2)) (d x.2)) - exact (((hfd.continuous_fderiv (by norm_num)).comp hpoint).clm_apply + exact (((hfd.continuous_fderiv (by decide)).comp hpoint).clm_apply hdir).clm_apply hdir have hdiff (r θ : ℝ) : HasDerivAt (fun x : ℝ => F x θ) (F' r θ) r := by @@ -2720,7 +2627,6 @@ private theorem sourceJointCircleRadiusProfile_second_eq_integral ((fderiv ℝ (fderiv ℝ f) q) (d θ)) (d θ) have hz : (0 : ℝ) • d θ = (0 : SourceJointComplexCover n) := by - change (0 : ℂ) • d θ = 0 exact zero_smul ℂ (d θ) rw [hz, add_zero] @@ -2740,14 +2646,14 @@ private theorem sourceJointCircleQuadratic_expand {n : ℕ} private theorem sourceJointIntegral_cos_sq_two_pi : (∫ θ in 0..2 * Real.pi, Real.cos θ ^ 2) = Real.pi := by rw [integral_cos_sq] - simp only [Real.cos_two_pi, Real.sin_two_pi, mul_zero, Real.cos_zero, Real.sin_zero, sub_self, - zero_add, sub_zero, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, mul_div_cancel_left₀] + simp only [Real.sin_two_pi, mul_zero, Real.sin_zero, zero_add, sub_zero, ne_eq, + OfNat.ofNat_ne_zero, not_false_eq_true, mul_div_cancel_left₀] private theorem sourceJointIntegral_sin_sq_two_pi : (∫ θ in 0..2 * Real.pi, Real.sin θ ^ 2) = Real.pi := by rw [integral_sin_sq] - simp only [Real.sin_zero, Real.cos_zero, mul_one, Real.sin_two_pi, Real.cos_two_pi, sub_self, - zero_add, sub_zero, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, mul_div_cancel_left₀] + simp only [Real.sin_zero, Real.cos_zero, mul_one, Real.sin_two_pi, Real.cos_two_pi, zero_add, + sub_zero, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, mul_div_cancel_left₀] private theorem sourceJointIntegral_sin_mul_cos_two_pi : (∫ θ in 0..2 * Real.pi, @@ -2771,17 +2677,21 @@ private theorem sourceJointCircleQuadratic_average {n : ℕ} (fun θ : ℝ => Real.cos θ ^ 2 * A) (volume : Measure ℝ) 0 (2 * Real.pi) := by apply Continuous.intervalIntegrable - fun_prop + exact Continuous.comp' (continuous_mul_const A) + (Continuous.comp' (Continuous.fun_pow continuous_id' 2) Real.continuous_cos) have hC : IntervalIntegrable (fun θ : ℝ => (Real.sin θ * Real.cos θ) * C) (volume : Measure ℝ) 0 (2 * Real.pi) := by apply Continuous.intervalIntegrable - fun_prop + exact Continuous.comp' (continuous_mul_const C) + (Continuous.comp' continuous_mul + (Continuous.prodMk Real.continuous_sin Real.continuous_cos)) have hD : IntervalIntegrable (fun θ : ℝ => Real.sin θ ^ 2 * D) (volume : Measure ℝ) 0 (2 * Real.pi) := by apply Continuous.intervalIntegrable - fun_prop + exact Continuous.comp' (continuous_mul_const D) + (Continuous.comp' (Continuous.fun_pow continuous_id' 2) Real.continuous_sin) calc _ = (2 * Real.pi)⁻¹ * (∫ θ in 0..2 * Real.pi, @@ -2846,7 +2756,7 @@ private theorem contDiff_sourceSpatialRealDirectional {n : ℕ} ContDiff ℝ 1 (fun z : TorusCharacters.LogSpace n => (fderiv ℝ a z) u) := by - exact (ha.fderiv_right (by norm_num)).clm_apply contDiff_const + exact (ha.fderiv_right (by rfl)).clm_apply contDiff_const private theorem fderiv_sourceSpatialRealDirectional {n : ℕ} {a : TorusCharacters.LogSpace n → ℝ} @@ -2857,8 +2767,8 @@ private theorem fderiv_sourceSpatialRealDirectional {n : ℕ} (fderiv ℝ a ξ) u) z) w = ((fderiv ℝ (fderiv ℝ a) z) w) u := by have hd : DifferentiableAt ℝ (fderiv ℝ a) z := - (ha.fderiv_right (m := 1) (by norm_num)).differentiable - (by norm_num) z + (ha.fderiv_right (m := 1) (by rfl)).differentiable + (by decide) z have he := fderiv_clm_apply hd (differentiableAt_const (c := u)) have happly := congrArg @@ -2877,7 +2787,7 @@ private theorem fderiv_sourceSpatialComplexRealDirectional {n : ℕ} (((fderiv ℝ (fderiv ℝ a) z) w) u : ℂ) := by rw [fderiv_complexOfReal ((contDiff_sourceSpatialRealDirectional ha u).differentiable - (by norm_num))] + (by decide))] rw [fderiv_sourceSpatialRealDirectional ha z u w] private theorem fderiv_holomorphicCoordinate_sourceSpatialReal {n : ℕ} @@ -2904,15 +2814,15 @@ private theorem fderiv_holomorphicCoordinate_sourceSpatialReal {n : ℕ} let h : TorusCharacters.LogSpace n → ℂ := fun ξ => ((fderiv ℝ a ξ) ie : ℂ) have had : Differentiable ℝ a := - ha.differentiable (by norm_num) + ha.differentiable (by decide) have hg : Differentiable ℝ g := (Complex.ofRealCLM.contDiff.comp (contDiff_sourceSpatialRealDirectional ha e)).differentiable - (by norm_num) + (by decide) have hh : Differentiable ℝ h := (Complex.ofRealCLM.contDiff.comp (contDiff_sourceSpatialRealDirectional ha ie)).differentiable - (by norm_num) + (by decide) have hfun : (fun ξ : TorusCharacters.LogSpace n => holomorphicCoordinate @@ -2937,8 +2847,7 @@ private theorem fderiv_holomorphicCoordinate_sourceSpatialReal {n : ℕ} _ = ((2 : ℂ)⁻¹) * ((fderiv ℝ g z) w - Complex.I * (fderiv ℝ h z) w) := by - simpa only [Pi.sub_apply, _root_.smul_apply, _root_.sub_apply, smul_eq_mul] - using heval + exact heval _ = _ := by change ((2 : ℂ)⁻¹) * @@ -3053,8 +2962,7 @@ private theorem fderiv_sourceJointSpatialSlice_apply {n : ℕ} have heval := congrArg (fun L : TorusCharacters.LogSpace n →L[ℝ] F => L v) hcomp.fderiv - simpa only [id_eq, comp_def, ContinuousLinearMap.comp_apply, ContinuousLinearMap.prod_apply, - ContinuousLinearMap.id_apply, _root_.zero_apply] using heval + exact heval private theorem fderiv_sourceJointRealDirectional {n : ℕ} {f : SourceJointComplexCover n → ℝ} @@ -3064,8 +2972,8 @@ private theorem fderiv_sourceJointRealDirectional {n : ℕ} (fun ξ : SourceJointComplexCover n => (fderiv ℝ f ξ) u) q) w = ((fderiv ℝ (fderiv ℝ f) q) w) u := by have hd : DifferentiableAt ℝ (fderiv ℝ f) q := - (hf.fderiv_right (m := 1) (by norm_num)).differentiable - (by norm_num) q + (hf.fderiv_right (m := 1) (by rfl)).differentiable + (by decide) q have he := fderiv_clm_apply hd (differentiableAt_const (c := u)) have happly := congrArg @@ -3089,12 +2997,12 @@ private theorem sndFDeriv_sourceJointSpatialSlice {n : ℕ} (fderiv ℝ f (ξ, τ)) (v, 0)) := by funext ξ exact fderiv_sourceJointSpatialSlice_apply - (hf.differentiable (by norm_num)) τ ξ v + (hf.differentiable (by decide)) τ ξ v have hdirectional : Differentiable ℝ (fun q : SourceJointComplexCover n => (fderiv ℝ f q) (v, 0)) := - ((hf.fderiv_right (m := 1) (by norm_num)).clm_apply - contDiff_const).differentiable (by norm_num) + ((hf.fderiv_right (m := 1) (by rfl)).clm_apply + contDiff_const).differentiable (by decide) calc _ = (fderiv ℝ (fun ξ : TorusCharacters.LogSpace n => @@ -3123,7 +3031,6 @@ private theorem sourceJointSpatialComplexHessian_isHermitian {n : ℕ} (τ : ℂ) (z : TorusCharacters.LogSpace n) : (sourceJointSpatialComplexHessian f τ z).IsHermitian := by - unfold sourceJointSpatialComplexHessian exact sourceCoverComplexHessian_isHermitian (contDiff_sourceJointSpatialSlice hf τ) z @@ -3143,7 +3050,6 @@ private theorem sourceSpatialRealBasis_decomposition {n : ℕ} (Pi.single i (1 : ℂ) : TorusCharacters.LogSpace n) + (x i).im • (Pi.single i Complex.I : TorusCharacters.LogSpace n)) := by - classical calc x = ∑ i : Fin n, Pi.single i (x i) := (Finset.univ_sum_single x).symm @@ -3214,7 +3120,6 @@ private theorem sourceSpatialComplexHessianOfRealBilinear_quadratic {n : ℕ} (sourceSpatialComplexHessianOfRealBilinear B *ᵥ x) = (((B (star x) (star x) + B (Complex.I • star x) (Complex.I • star x)) / 4 : ℝ) : ℂ) := by - classical let Q : Fin n → Fin n → ℂ := fun i j => star (x i) * (sourceSpatialComplexHessianOfRealBilinear B i j) * x j have hswap : @@ -3325,8 +3230,7 @@ private theorem sourceJointSpatialComplexHessian_quadratic_eq_realLevi rw [sndFDeriv_sourceJointSpatialSlice hf τ z (star x) (star x), sndFDeriv_sourceJointSpatialSlice hf τ z (Complex.I • star x) (Complex.I • star x)] - simp only [Complex.ofReal_div, Complex.ofReal_add, Complex.ofReal_ofNat, Prod.smul_mk, - smul_eq_mul, mul_zero] + simp only [Prod.smul_mk, smul_eq_mul, mul_zero] end JetEnvelopeTrueRadialComplexHessianPositivity @@ -3350,9 +3254,9 @@ private theorem sndFDeriv_sourceSpatialRealAffine {n : ℕ} c * ((fderiv ℝ (fderiv ℝ a) z) u) v + d * ((fderiv ℝ (fderiv ℝ b) z) u) v := by have hda : Differentiable ℝ a := - ha.differentiable (by norm_num) + ha.differentiable (by decide) have hdb : Differentiable ℝ b := - hb.differentiable (by norm_num) + hb.differentiable (by decide) have hcomb : ContDiff ℝ 2 (fun ξ : TorusCharacters.LogSpace n => c * a ξ + d * b ξ) := @@ -3377,12 +3281,12 @@ private theorem sndFDeriv_sourceSpatialRealAffine {n : ℕ} (fun ξ : TorusCharacters.LogSpace n => (fderiv ℝ a ξ) v) := (contDiff_sourceSpatialRealDirectional ha v).differentiable - (by norm_num) + (by decide) have hgb : Differentiable ℝ (fun ξ : TorusCharacters.LogSpace n => (fderiv ℝ b ξ) v) := (contDiff_sourceSpatialRealDirectional hb v).differentiable - (by norm_num) + (by decide) calc _ = (fderiv ℝ (fun ξ : TorusCharacters.LogSpace n => @@ -3466,7 +3370,6 @@ private theorem hasDerivAt_sourceJointTimeEmbedding HasDerivAt (fun s : ℝ => sourceJointTimeEmbedding z s) (sourceJointTimeDirection n) t := by - unfold sourceJointTimeEmbedding sourceJointTimeDirection exact (hasDerivAt_const t z).prodMk (Complex.ofRealCLM.hasDerivAt.div_const (2 : ℂ)) @@ -3502,10 +3405,8 @@ private theorem continuous_jointSourceCoverTimeSlice {n : ℕ} {F : SourceJointComplexCover n → ℝ} (hF : Continuous F) (t : ℝ) : Continuous (jointSourceCoverTimeSlice F t) := by - unfold jointSourceCoverTimeSlice apply hF.comp - unfold sourceJointTimeEmbedding - fun_prop + exact Continuous.prodMk continuous_id' continuous_const private theorem jointSourceCoverTimeSlice_spatial_periodic {n : ℕ} {F : SourceJointComplexCover n → ℝ} @@ -3541,7 +3442,6 @@ private theorem continuous_jointSourceTorusWeight {n : ℕ} (TorusCharacters.imaginaryShift m, (0 : ℂ))) (t : ℝ) : Continuous (jointSourceTorusWeight F t) := by - unfold jointSourceTorusWeight apply Complex.continuous_re.comp apply continuous_torusScalarRepresentative_of_periodic · exact Complex.continuous_ofReal.comp @@ -3565,17 +3465,15 @@ private theorem contDiff_jointSourceCoverVelocity {n : ℕ} {F : SourceJointComplexCover n → ℝ} (hF : ContDiff ℝ 2 F) : ContDiff ℝ 1 (jointSourceCoverVelocity F) := by - unfold jointSourceCoverVelocity - exact (hF.fderiv_right (m := 1) (by norm_num)).clm_apply + exact (hF.fderiv_right (m := 1) (by rfl)).clm_apply contDiff_const private theorem continuous_jointSourceCoverAcceleration {n : ℕ} {F : SourceJointComplexCover n → ℝ} (hF : ContDiff ℝ 2 F) : Continuous (jointSourceCoverAcceleration F) := by - unfold jointSourceCoverAcceleration exact ((contDiff_jointSourceCoverVelocity hF).continuous_fderiv - (by norm_num)).clm_apply continuous_const + (by decide)).clm_apply continuous_const private theorem jointSourceCoverVelocity_spatial_periodic {n : ℕ} {F : SourceJointComplexCover n → ℝ} @@ -3586,7 +3484,6 @@ private theorem jointSourceCoverVelocity_spatial_periodic {n : ℕ} Function.Periodic (jointSourceCoverVelocity F) (TorusCharacters.imaginaryShift m, (0 : ℂ)) := by intro q - unfold jointSourceCoverVelocity exact congrArg (fun L => L (sourceJointTimeDirection n)) (sourceRealFderiv_periodic F (TorusCharacters.imaginaryShift m, (0 : ℂ)) @@ -3601,7 +3498,6 @@ private theorem jointSourceCoverAcceleration_spatial_periodic {n : ℕ} Function.Periodic (jointSourceCoverAcceleration F) (TorusCharacters.imaginaryShift m, (0 : ℂ)) := by intro q - unfold jointSourceCoverAcceleration exact congrArg (fun L => L (sourceJointTimeDirection n)) (sourceRealFderiv_periodic (jointSourceCoverVelocity F) (TorusCharacters.imaginaryShift m, (0 : ℂ)) @@ -3641,7 +3537,6 @@ private theorem continuous_jointSourceTorusVelocity {n : ℕ} (TorusCharacters.imaginaryShift m, (0 : ℂ))) (t : ℝ) : Continuous (jointSourceTorusVelocity F t) := by - unfold jointSourceTorusVelocity exact continuous_jointSourceTorusWeight (contDiff_jointSourceCoverVelocity hF).continuous (jointSourceCoverVelocity_spatial_periodic hperiod) t @@ -3654,7 +3549,6 @@ private theorem continuous_jointSourceTorusAcceleration {n : ℕ} (TorusCharacters.imaginaryShift m, (0 : ℂ))) (t : ℝ) : Continuous (jointSourceTorusAcceleration F t) := by - unfold jointSourceTorusAcceleration exact continuous_jointSourceTorusWeight (continuous_jointSourceCoverAcceleration hF) (jointSourceCoverAcceleration_spatial_periodic hperiod) t @@ -3672,7 +3566,7 @@ private theorem hasDerivAt_jointSourceTorusWeight {n : ℕ} funext s exact jointSourceTorusWeight_eq_cover F s q rw [heq, jointSourceTorusVelocity_eq_cover] - exact (hF.differentiable (by norm_num) + exact (hF.differentiable (by decide) (sourceJointTimeEmbedding (sourceTorusCoverPoint q) t)).hasFDerivAt |>.comp_hasDerivAt t (hasDerivAt_sourceJointTimeEmbedding @@ -3692,7 +3586,7 @@ private theorem hasDerivAt_jointSourceTorusVelocity {n : ℕ} exact jointSourceTorusVelocity_eq_cover F s q rw [heq, jointSourceTorusAcceleration_eq_cover] exact ((contDiff_jointSourceCoverVelocity hF).differentiable - (by norm_num) + (by decide) (sourceJointTimeEmbedding (sourceTorusCoverPoint q) t)).hasFDerivAt |>.comp_hasDerivAt t (hasDerivAt_sourceJointTimeEmbedding @@ -3861,7 +3755,6 @@ private theorem momentStrictRadialCoordinate_denominator_pos private theorem contDiff_momentStrictRadialCoordinate : ContDiff ℝ ∞ momentStrictRadialCoordinate := by - unfold momentStrictRadialCoordinate apply (Real.contDiff_exp.add (Real.contDiff_exp.comp contDiff_neg)).log intro y @@ -3881,8 +3774,7 @@ private theorem hasDerivAt_momentStrictRadialCoordinate (y : ℝ) : (Real.exp (-y) * (-1)) y := (Real.hasDerivAt_exp (-y)).comp y (hasDerivAt_id y).neg - refine (hcomp.congr_of_eventuallyEq - (Filter.Eventually.of_forall fun _ => rfl)).congr_deriv ?_ + refine hcomp.congr_deriv ?_ ring have hsum : HasDerivAt (fun x : ℝ => Real.exp x + Real.exp (-x)) @@ -3906,8 +3798,7 @@ private theorem hasDerivAt_momentStrictRadialCoordinateDerivative (Real.exp (-y) * (-1)) y := (Real.hasDerivAt_exp (-y)).comp y (hasDerivAt_id y).neg - refine (hcomp.congr_of_eventuallyEq - (Filter.Eventually.of_forall fun _ => rfl)).congr_deriv ?_ + refine hcomp.congr_deriv ?_ ring have hnum : HasDerivAt (fun x : ℝ => Real.exp x - Real.exp (-x)) @@ -3931,7 +3822,7 @@ private theorem hasDerivAt_momentStrictRadialCoordinateDerivative simp only [neg_add_cancel, Real.exp_zero] refine h.congr_deriv ?_ congr 1 - nlinarith [he] + linarith only [he] private theorem momentStrictRadialCoordinateSecond_pos (y : ℝ) : 0 < momentStrictRadialCoordinateSecond y := by @@ -3965,7 +3856,7 @@ private theorem momentStrictRadialCoordinate_le_abs_add_log_two have hneg : Real.exp (-y) ≤ Real.exp |y| := Real.exp_le_exp.mpr hnegarg have hsum : Real.exp y + Real.exp (-y) ≤ - 2 * Real.exp |y| := by linarith + 2 * Real.exp |y| := by linarith only [hneg, hpos] calc momentStrictRadialCoordinate y = Real.log (Real.exp y + Real.exp (-y)) := rfl @@ -3991,7 +3882,6 @@ private def momentBodyStrictRadialPotential private theorem contDiff_momentBodyStrictRadialPotential {n : ℕ} (K : CenteredBody n) : ContDiff ℝ ∞ (momentBodyStrictRadialPotential K) := by - unfold momentBodyStrictRadialPotential apply ContDiff.sum intro i _ exact contDiff_momentStrictRadialCoordinate.comp @@ -4090,7 +3980,6 @@ private theorem momentBodyStrictRadialHessianDiagonal_pos {n : ℕ} (K : CenteredBody n) (x : Space n) (i : Fin n) : 0 < momentBodyStrictRadialHessianDiagonal K x i := by - unfold momentBodyStrictRadialHessianDiagonal exact mul_pos (sq_pos_of_pos (momentBodyStrictScale_pos K)) (momentStrictRadialCoordinateSecond_pos _) @@ -4132,7 +4021,6 @@ private theorem fderiv_momentBodyStrictRadialGradient_apply (ContinuousLinearMap.proj i : Space n →L[ℝ] ℝ)).smulRight (ContinuousLinearMap.proj i : Space n →L[ℝ] ℝ)) x := by - unfold momentBodyStrictRadialGradient have hterm (i : Fin n) : HasFDerivAt (fun y : Space n => @@ -4151,7 +4039,7 @@ private theorem fderiv_momentBodyStrictRadialGradient_apply (u := Finset.univ) (fun i _ => hterm i) rw [h.fderiv] simp only [_root_.sum_apply, ContinuousLinearMap.smulRight_apply, _root_.smul_apply, - ContinuousLinearMap.proj_apply, smul_eq_mul, mul_assoc] + ContinuousLinearMap.proj_apply, smul_eq_mul] private theorem fderiv_fderiv_momentBodyStrictRadialPotential_apply {n : ℕ} (K : CenteredBody n) @@ -4175,7 +4063,6 @@ private theorem sourceMatrixHessian_momentBodyStrictRadialPotential_eq_diagonal sourceMatrixHessian (momentBodyStrictRadialPotential K) x = Matrix.diagonal (momentBodyStrictRadialHessianDiagonal K x) := by - classical ext i j unfold sourceMatrixHessian actualHessianMatrix rw [LinearMap.toMatrix₂'_apply] @@ -4217,7 +4104,6 @@ private theorem sourceCoverComplexHessian_momentBodyStrictRadialPotential_eq_dia (fun i : Fin n => (momentBodyStrictRadialHessianDiagonal K (sourceCoverRadialLinear n z) i : ℂ)) := by - classical ext i j change complexHessian @@ -4358,7 +4244,6 @@ private theorem momentBodyPartition_of_nonpositive (momentBodyOptimizer K) q.1) * (1 : ℝ) ∂((volume : Measure (Space n)).prod (angularMeasure n)) := by - unfold sourceTorusBaseMeasure apply MeasureTheory.integral_congr_ae filter_upwards [] with q rw [momentBodyTorusWeight_of_nonpositive K p ht q] @@ -4515,7 +4400,6 @@ private theorem continuous_momentNormalizedTorusMonomial (F : SourceFiniteEnergyPotential K) (u : monomialIndex K k) : Continuous (momentNormalizedTorusMonomial K hk F u) := by - unfold momentNormalizedTorusMonomial exact continuous_const.mul (continuous_torusMonomial (integerExponent K hk u)) @@ -4562,7 +4446,6 @@ private theorem continuous_momentTorusRepresentative normalizedTargetBodyMeasure K) (s : momentMonomialSpan K hk F htransport) : Continuous (momentTorusRepresentative K hk F htransport s) := by - classical unfold momentTorusRepresentative rw [LinearMap.comp_apply, Finsupp.linearCombination_apply] unfold Finsupp.sum @@ -4584,7 +4467,6 @@ private theorem momentTorusRepresentative_ae LogTorus n → ℂ) q) =ᵐ[weightedTorusMeasure k (momentNormalizedPotential F)] momentTorusRepresentative K hk F htransport s := by - classical let := (monomialIndex_finite K hk).fintype let b := momentLatticeMonomialBasis K hk F htransport let c : monomialIndex K k → ℂ := fun u => b.repr s u @@ -4747,7 +4629,6 @@ private theorem continuous_momentTorusJetBasisWeight (p : LogSpace n) (i : Fin (bergmanDimension K k)) : Continuous (fun q : LogTorus n => momentTorusJetBasisWeight K hk F htransport p q i) := by - unfold momentTorusJetBasisWeight exact Complex.continuous_normSq.comp (continuous_momentTorusRepresentative K hk F htransport (momentSimultaneousJetBasis K hk F htransport p i)) @@ -4771,7 +4652,6 @@ private theorem continuous_momentTorusTruncatedJetOrderDensity Continuous (momentTorusTruncatedJetOrderDensity K hk F htransport p N) := by - unfold momentTorusTruncatedJetOrderDensity exact continuous_finsetSum _ (fun i _ => continuous_const.mul (continuous_momentTorusJetBasisWeight @@ -4815,7 +4695,6 @@ private theorem momentTorusRepresentative_eq_holomorphicRepresentative_cover momentTorusRepresentative K hk F htransport s q = momentHolomorphicRepresentative K hk F htransport s (sourceTorusCoverPoint q) := by - classical unfold momentTorusRepresentative momentHolomorphicRepresentative rw [LinearMap.comp_apply, LinearMap.comp_apply, @@ -4937,7 +4816,6 @@ private theorem continuous_momentDiagonalKernel {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) (F : SourceFiniteEnergyPotential K) : Continuous (diagonalKernel K k (momentNormalizedPotential F)) := by - classical let := (monomialIndex_finite K hk).fintype unfold diagonalKernel simp_rw [tsum_fintype] @@ -5169,7 +5047,7 @@ private theorem sourceJointRealLeviQuadratic_nonnegative_of_local_circle_submean rw [sourceJointCircleRadiusProfile_second_eq_realHessian hf q v] at hsecond unfold sourceJointRealLeviQuadratic - linarith + linarith only [hsecond] private theorem sourceJointSpatialComplexHessian_posSemidef_of_local_circle_submean {n : ℕ} @@ -5190,8 +5068,7 @@ private theorem sourceJointSpatialComplexHessian_posSemidef_of_local_circle_subm hf τ z x] apply (Complex.nonneg_iff).2 constructor - · simpa only [Complex.ofReal_re] using - sourceJointRealLeviQuadratic_nonnegative_of_local_circle_submean + · exact sourceJointRealLeviQuadratic_nonnegative_of_local_circle_submean hf (z, τ) (star x, 0) (hmean (z, τ) (star x, 0)) · simp only [Complex.ofReal_im] @@ -5235,7 +5112,6 @@ private theorem sourceComplexRowSchurBlock_isHermitian {n : ℕ} (hA : A.IsHermitian) (b : Fin n → ℂ) (c : ℝ) : (sourceComplexRowSchurBlock A b c).IsHermitian := by - unfold sourceComplexRowSchurBlock apply Matrix.IsHermitian.fromBlocks hA rfl ext i j simp only [conjTranspose_apply, complexSchurScalar, RCLike.star_def, Complex.conj_ofReal] @@ -5277,7 +5153,7 @@ private theorem star_sourceJointCoverAntiholomorphicVelocityGradient jointSourceCoverVelocity F (w, τ)) := ((contDiff_jointSourceCoverVelocity hF).comp (contDiff_id.prodMk contDiff_const)).differentiable - (by norm_num) + (by decide) ext i exact conj_barPartialCoordinate_real hv z i @@ -5346,15 +5222,15 @@ private theorem sourceJointImaginaryTime_fderiv_eq_zero (r : ℂ) * Complex.I) := by apply Prod.ext · ext i - simp only [Prod.smul_mk, smul_zero, Complex.real_smul, Pi.zero_apply, v] - · simp only [Prod.smul_mk, smul_zero, Complex.real_smul, v] + simp only [Prod.smul_mk, smul_zero, v] + · simp only [Prod.smul_mk, Complex.real_smul, v] rw [hr] exact hperiod r q have hzero : q + (0 : ℝ) • v = q := by apply Prod.ext · ext i - simp only [zero_smul, add_zero, v] - · simp only [zero_smul, add_zero, v] + simp only [zero_smul, add_zero] + · simp only [zero_smul, add_zero] have hder := (hasDerivAt_sourceJointCircleLine hF q v 0).deriv rw [hline, hzero] at hder @@ -5402,7 +5278,7 @@ private theorem sourceJointCoverHolomorphicVelocityGradient_eq_sndFDeriv jointSourceCoverVelocity F (w, τ)) := ((contDiff_jointSourceCoverVelocity hF).comp (contDiff_id.prodMk contDiff_const)).differentiable - (by norm_num) + (by decide) unfold sourceJointCoverHolomorphicVelocityGradient holomorphicCoordinate rw [DolbeaultGraphDistributionBridge.fderiv_complexOfReal @@ -5411,10 +5287,10 @@ private theorem sourceJointCoverHolomorphicVelocityGradient_eq_sndFDeriv hv z (Pi.single i Complex.I)] rw [fderiv_sourceJointSpatialSlice_apply ((contDiff_jointSourceCoverVelocity hF).differentiable - (by norm_num)) τ z (Pi.single i (1 : ℂ)), + (by decide)) τ z (Pi.single i (1 : ℂ)), fderiv_sourceJointSpatialSlice_apply ((contDiff_jointSourceCoverVelocity hF).differentiable - (by norm_num)) τ z (Pi.single i Complex.I)] + (by decide)) τ z (Pi.single i Complex.I)] unfold jointSourceCoverVelocity rw [fderiv_sourceJointRealDirectional hF (z, τ) (sourceJointTimeDirection n) @@ -5443,75 +5319,17 @@ private theorem sourceJointRealBilinear_spatial_apply_eq_realBasis_sum ∑ i : Fin n, ((u i).re * (B (Pi.single i (1 : ℂ), 0)) t + (u i).im * (B (Pi.single i Complex.I, 0)) t) := by - classical - let U : Fin n → SourceJointComplexCover n := fun i => - ((u i).re • - (Pi.single i (1 : ℂ) : TorusCharacters.LogSpace n) + - (u i).im • - (Pi.single i Complex.I : TorusCharacters.LogSpace n), 0) - have hu : (u, (0 : ℂ)) = ∑ i, U i := by - apply Prod.ext - · change u = (∑ i, U i).1 - have hfst : - (∑ i, U i).1 = ∑ i, (U i).1 := by - change - (ContinuousLinearMap.fst ℝ - (TorusCharacters.LogSpace n) ℂ) (∑ i, U i) = - ∑ i, - (ContinuousLinearMap.fst ℝ - (TorusCharacters.LogSpace n) ℂ) (U i) - exact map_sum - (ContinuousLinearMap.fst ℝ - (TorusCharacters.LogSpace n) ℂ) - U Finset.univ - rw [hfst] - simpa only [U] using sourceSpatialRealBasis_decomposition u - · change (0 : ℂ) = (∑ i, U i).2 - have hsnd : - (∑ i, U i).2 = ∑ i, (U i).2 := by - change - (ContinuousLinearMap.snd ℝ - (TorusCharacters.LogSpace n) ℂ) (∑ i, U i) = - ∑ i, - (ContinuousLinearMap.snd ℝ - (TorusCharacters.LogSpace n) ℂ) (U i) - exact map_sum - (ContinuousLinearMap.snd ℝ - (TorusCharacters.LogSpace n) ℂ) - U Finset.univ - rw [hsnd] - simp only [Finset.sum_const_zero, U] + let L : TorusCharacters.LogSpace n →L[ℝ] ℝ := + (B.flip t).comp (ContinuousLinearMap.inl ℝ (TorusCharacters.LogSpace n) ℂ) + change L u = ∑ i : Fin n, + ((u i).re * L (Pi.single i (1 : ℂ)) + + (u i).im * L (Pi.single i Complex.I)) calc - (B (u, 0)) t = (B (∑ i, U i)) t := by rw [hu] - _ = ∑ i, (B (U i)) t := by - simpa only [ContinuousLinearMap.flip_apply] using - (map_sum (B.flip t) U Finset.univ) - _ = _ := by - apply Finset.sum_congr rfl - intro i _ - have hp : - U i = - (u i).re • - ((Pi.single i (1 : ℂ) : - TorusCharacters.LogSpace n), (0 : ℂ)) + - (u i).im • - ((Pi.single i Complex.I : - TorusCharacters.LogSpace n), (0 : ℂ)) := by - apply Prod.ext - · rfl - · simp only [Prod.smul_mk, smul_zero, Prod.mk_add_mk, add_zero, U] - calc - (B (U i)) t = - (B ((u i).re • - ((Pi.single i (1 : ℂ) : - TorusCharacters.LogSpace n), (0 : ℂ)) + - (u i).im • - ((Pi.single i Complex.I : - TorusCharacters.LogSpace n), (0 : ℂ)))) t := by - rw [hp] - _ = _ := by - rw [map_add, map_smul, map_smul] - simp only [_root_.add_apply, _root_.smul_apply, smul_eq_mul] + L u = L (∑ i : Fin n, + ((u i).re • (Pi.single i (1 : ℂ) : TorusCharacters.LogSpace n) + + (u i).im • (Pi.single i Complex.I : TorusCharacters.LogSpace n))) := + congrArg L (sourceSpatialRealBasis_decomposition u) + _ = _ := by simp only [map_sum, map_add, map_smul, smul_eq_mul] private theorem sourceJointCoverHolomorphicVelocityGradient_dot_eq_sndFDeriv {n : ℕ} @@ -5526,7 +5344,6 @@ private theorem sourceJointCoverHolomorphicVelocityGradient_dot_eq_sndFDeriv (↑(((fderiv ℝ (fderiv ℝ F) (z, τ)) (Complex.I • u, 0)) (sourceJointTimeDirection n)) : ℂ)) / 2 := by - classical simp only [dotProduct] simp_rw [sourceJointCoverHolomorphicVelocityGradient_eq_sndFDeriv hF τ z] rw [sourceJointRealBilinear_spatial_apply_eq_realBasis_sum @@ -5585,7 +5402,6 @@ private theorem jointSourceCoverAcceleration_eq_sndFDeriv ((fderiv ℝ (fderiv ℝ F) q) (sourceJointTimeDirection n)) (sourceJointTimeDirection n) := by - unfold jointSourceCoverAcceleration jointSourceCoverVelocity exact fderiv_sourceJointRealDirectional hF q (sourceJointTimeDirection n) (sourceJointTimeDirection n) @@ -5596,8 +5412,7 @@ private theorem sourceJointComplexTime_decomposition s.im • ((0 : TorusCharacters.LogSpace n), Complex.I) := by apply Prod.ext · ext i - simp only [Pi.zero_apply, sourceJointTimeDirection, one_div, Prod.smul_mk, smul_zero, - Complex.real_smul, Complex.ofReal_mul, Complex.ofReal_ofNat, Prod.mk_add_mk, add_zero] + simp only [sourceJointTimeDirection, Prod.smul_mk, smul_zero, Prod.mk_add_mk, add_zero] · simp only [sourceJointTimeDirection, one_div, Prod.smul_mk, smul_zero, Complex.real_smul, Complex.ofReal_mul, Complex.ofReal_ofNat, Prod.mk_add_mk, add_zero] simpa only [mul_comm, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, @@ -5683,7 +5498,6 @@ private theorem sourceJointRealLeviQuadratic_eq_spatial_mixed_time module have hIU : Complex.I • U = V := by ext <;> simp [U, V] - unfold sourceJointRealLeviQuadratic change ((B (u, s)) (u, s) + (B (Complex.I • (u, s))) (Complex.I • (u, s))) / 4 = @@ -6083,11 +5897,9 @@ private theorem momentWeakJointCoverFiniteGeodesic_complex_line_submean_all_radi K (Nat.zero_lt_succ k) F htransport p N (sourceJointCoverExp (q + w • v)))) by funext w - simp only [Nat.succ_eq_add_one, Nat.cast_add, Nat.cast_one, div_eq_mul_inv, mul_comm, - smul_eq_mul], + simp only [div_eq_mul_inv, mul_comm, smul_eq_mul], Real.circleAverage_fun_smul] - simp only [Nat.succ_eq_add_one, Nat.cast_add, Nat.cast_one, div_eq_mul_inv, mul_comm, - smul_eq_mul] + simp only [div_eq_mul_inv, mul_comm, smul_eq_mul] rw [momentWeakJointCoverFiniteGeodesic_eq_log_diagonal K F htransport p k q] change @@ -6135,7 +5947,6 @@ private theorem differentiable_momentWeakBodyScaleJetGeodesic (Nat.floor (BodyScale.canonicalScale K * ((k + 1 : ℕ) : ℝ))) z) := by intro t - unfold momentJetGeodesic exact (hasDerivAt_logarithmicPotential (momentHolomorphicBasisWeight K (Nat.zero_lt_succ k) F htransport @@ -6172,8 +5983,7 @@ private theorem momentWeakBodyScaleJetGeodesic_time_shift_le ((k + 1 : ℕ) : ℝ))) z s + BodyScale.canonicalScale K * (t - s) := by rcases hst.eq_or_lt with rfl | hst - · simp only [Nat.succ_eq_add_one, Nat.cast_add, Nat.cast_one, sub_self, mul_zero, add_zero, - Std.le_refl] + · simp only [sub_self, mul_zero, add_zero, Std.le_refl] · let g := momentJetGeodesic K (Nat.zero_lt_succ k) F htransport p (Nat.floor (BodyScale.canonicalScale K * @@ -6191,7 +6001,7 @@ private theorem momentWeakBodyScaleJetGeodesic_time_shift_le have hpositive : 0 < t - s := sub_pos.mpr hst have hmul := (div_le_iff₀ hpositive).mp hbound change g t ≤ g s + BodyScale.canonicalScale K * (t - s) - linarith + linarith only [hmul] private theorem momentJointGlobalLowerBound_le_coverFiniteGeodesic_zero {n : ℕ} (K : CenteredBody n) @@ -6233,7 +6043,6 @@ private theorem continuous_momentWeakJointCoverFiniteMinorant {n : ℕ} (K : CenteredBody n) (F : SourceFiniteEnergyPotential K) : Continuous (momentWeakJointCoverFiniteMinorant K F) := by - unfold momentWeakJointCoverFiniteMinorant exact continuous_const.add (continuous_const.mul ((continuous_sourceJointCoverTime n).min continuous_const)) @@ -6265,7 +6074,7 @@ private theorem momentWeakJointCoverFiniteMinorant_le_finiteGeodesic unfold momentWeakJointCoverFiniteMinorant momentWeakJointCoverFiniteGeodesic rw [min_eq_left hneg] - linarith + linarith only [hshift, hzero] private theorem momentWeakJointCoverFiniteGeodesic_zero_le_of_tail {n : ℕ} (K : CenteredBody n) @@ -6280,7 +6089,7 @@ private theorem momentWeakJointCoverFiniteGeodesic_zero_le_of_tail ((k + 1 : ℕ) : ℝ))) z 0 ≤ momentNormalizedPotential F (realLogCoordinate z) + BodyScale.canonicalScale K + 1 := by - let hunit : (0 : ℝ) < 1 := by norm_num + let hunit : (0 : ℝ) < 1 := by exact zero_lt_one let q₁ : PositiveJointLogSpace n := sourcePositiveJointTimePoint z 1 hunit have htail := momentPositiveJointGeodesic_le_majorant_add_one_of_tail @@ -6289,7 +6098,7 @@ private theorem momentWeakJointCoverFiniteGeodesic_zero_le_of_tail K (Nat.zero_lt_succ k) F htransport p z (Nat.floor (BodyScale.canonicalScale K * ((k + 1 : ℕ) : ℝ))) - (show (0 : ℝ) ≤ 1 by norm_num) + (show (0 : ℝ) ≤ 1 by exact zero_le_one) have htime : momentPositiveJointGeodesic K F htransport p k q₁ = momentJetGeodesic K (Nat.zero_lt_succ k) @@ -6328,7 +6137,6 @@ private theorem continuous_momentWeakJointCoverFiniteMajorant {n : ℕ} (K : CenteredBody n) (F : SourceFiniteEnergyPotential K) : Continuous (momentWeakJointCoverFiniteMajorant K F) := by - unfold momentWeakJointCoverFiniteMajorant exact (((((continuous_momentNormalizedPotential F).comp (continuous_momentWeakJointRealLogCoordinate n)).add continuous_const).add continuous_const)).add @@ -6353,7 +6161,7 @@ private theorem momentWeakJointCoverFiniteGeodesic_le_majorant_of_tail unfold momentWeakJointCoverFiniteGeodesic momentWeakJointCoverFiniteMajorant rw [max_eq_left ht] - linarith + linarith only [hshift, hzero] · have hneg : sourceJointCoverTime q ≤ 0 := le_of_not_ge ht have hmono := monotone_momentJetGeodesic K (Nat.zero_lt_succ k) F htransport p q.1 @@ -6482,7 +6290,6 @@ private theorem momentWeakJointCoverFiniteMinorant_le_tailSup K F htransport p (momentJointTailStart K F htransport p + r) q _ ≤ momentWeakJointCoverTailSup K F htransport p r q := by - unfold momentWeakJointCoverTailSup apply le_csSup (momentWeakJointCoverTailSup_range_bddAbove K F htransport p r q) @@ -6924,7 +6731,6 @@ private theorem continuous_momentWeakHolomorphicJointAbsoluteMajorant {n : ℕ} (K : CenteredBody n) (F : SourceFiniteEnergyPotential K) : Continuous (momentWeakHolomorphicJointAbsoluteMajorant K F) := by - unfold momentWeakHolomorphicJointAbsoluteMajorant exact (continuous_momentWeakJointCoverFiniteMinorant K F).abs.add (continuous_momentWeakJointCoverFiniteMajorant K F).abs @@ -6951,7 +6757,7 @@ private theorem norm_momentWeakJointCoverUpperEnvelope_le_majorant (momentWeakJointCoverFiniteMinorant K F q) have hM := abs_nonneg (momentWeakJointCoverFiniteMajorant K F q) - exact abs_le.mpr ⟨by linarith, by linarith⟩ + exact abs_le.mpr ⟨by linarith only [hM, hminor, hl], by linarith⟩ private theorem measurable_momentWeakJointCoverUpperEnvelope {n : ℕ} (K : CenteredBody n) @@ -7052,8 +6858,6 @@ private theorem integrable_momentWeakHolomorphicJointComplexLineIntegrand measurable_fst).mul ((measurable_momentWeakJointCoverUpperEnvelope K F htransport p).comp hmap.measurable) - change Integrable _ - ((volume : Measure (SourceJointComplexCover n)).prod ν) apply hdom.mono' hmeas.aestronglyMeasurable exact Eventually.of_forall fun z => by by_cases hz : sourceJointTrueRadialMollifier n k z.1 = 0 @@ -7075,8 +6879,7 @@ private theorem integrable_momentWeakHolomorphicJointComplexLineIntegrand have hmaj : momentWeakHolomorphicJointAbsoluteMajorant K F ((q - z.1) + circleMap 0 R z.2 • v) ≤ C := by - simpa only [sourceJointCoverCirclePoint] using - ((hbound (q - z.1) hdist).2 z.2).2 + exact ((hbound (q - z.1) hdist).2 z.2).2 rw [norm_mul, Real.norm_eq_abs, abs_of_nonneg (sourceJointTrueRadialMollifier_nonneg n k z.1)] exact mul_le_mul_of_nonneg_left @@ -7286,17 +7089,6 @@ private theorem momentWeakHolomorphicJointTrueRadialMollification_complex_line_s unfold momentWeakHolomorphicJointTrueRadialMollification sourceJointTrueRadialSmoothed rw [MeasureTheory.convolution_def] - change - (∫ y : SourceJointComplexCover n, - sourceJointTrueRadialMollifier n k y * - momentWeakJointCoverUpperEnvelope - K F htransport p (q - y)) ≤ - ∫ y : SourceJointComplexCover n, - sourceJointTrueRadialMollifier n k y * - Real.circleAverage - (fun w : ℂ => - momentWeakJointCoverUpperEnvelope - K F htransport p ((q - y) + w • v)) 0 R apply MeasureTheory.integral_mono (integrable_sourceJointTrueRadialMollifier_mul_translate (locallyIntegrable_momentWeakJointCoverUpperEnvelope @@ -7525,7 +7317,7 @@ private theorem sourceComplexHessian_radialMollification_posSemidef (contDiff_momentWeakHolomorphicJointTrueRadialMollification K F htransport p k)) 2) intro q v - refine ⟨1, by norm_num, ?_⟩ + refine ⟨1, by exact zero_lt_one, ?_⟩ intro r _ exact momentWeakHolomorphicJointTrueRadialMollification_complex_line_submean_all_radius @@ -7554,8 +7346,7 @@ private theorem contDiff_momentWeakHolomorphicStrictJointCoverWeight K F htransport p ε k) := by have hfst : ContDiff ℝ ∞ (fun q : SourceJointComplexCover n => q.1) := by - fun_prop - unfold momentWeakHolomorphicStrictJointCoverWeight + exact ContDiff.fst contDiff_id exact (contDiff_const.mul (contDiff_momentWeakHolomorphicJointTrueRadialMollification K F htransport p k)).add @@ -7615,21 +7406,6 @@ private theorem sourceJointSpatialComplexHessian_momentWeakHolomorphicStrictJoin ε • sourceCoverComplexHessian (matrixSourceCoverPotential (momentBodyStrictRadialPotential K)) z := by - change - sourceCoverComplexHessian - (fun ξ : LogSpace n => - (1 - ε) * - momentWeakHolomorphicJointTrueRadialMollification - K F htransport p k (ξ, τ) + - ε * matrixSourceCoverPotential - (momentBodyStrictRadialPotential K) ξ) z = - (1 - ε) • sourceCoverComplexHessian - (fun ξ : LogSpace n => - momentWeakHolomorphicJointTrueRadialMollification - K F htransport p k (ξ, τ)) z + - ε • sourceCoverComplexHessian - (matrixSourceCoverPotential - (momentBodyStrictRadialPotential K)) z exact sourceCoverComplexHessian_realAffine (contDiff_sourceJointSpatialSlice ((contDiff_infty.mp @@ -7803,7 +7579,6 @@ private theorem convexOn_momentStrictRadialCoordinate : private theorem convexOn_momentBodyStrictRadialPotential {n : ℕ} (K : CenteredBody n) : ConvexOn ℝ Set.univ (momentBodyStrictRadialPotential K) := by - classical have hcoord (i : Fin n) : ConvexOn ℝ (Set.univ : Set (Space n)) (fun x : Space n => @@ -7812,8 +7587,7 @@ private theorem convexOn_momentBodyStrictRadialPotential let L : Space n →ₗ[ℝ] ℝ := momentBodyStrictScale K • (LinearMap.proj i) have h := convexOn_momentStrictRadialCoordinate.comp_linearMap L - simpa only [L, LinearMap.coe_smul, LinearMap.coe_proj, preimage_univ, comp_def, Pi.smul_apply, - eval, smul_eq_mul] using h + exact h have hsum (s : Finset (Fin n)) : ConvexOn ℝ (Set.univ : Set (Space n)) (fun x : Space n => @@ -7822,8 +7596,7 @@ private theorem convexOn_momentBodyStrictRadialPotential (momentBodyStrictScale K * x i)) := by induction s using Finset.induction_on with | empty => - simpa only [Finset.sum_empty] using - (convexOn_const (0 : ℝ) + exact (convexOn_const (0 : ℝ) (convex_univ : Convex ℝ (Set.univ : Set (Space n)))) | @insert i s hi ih => @@ -7863,7 +7636,6 @@ private def momentBodyStrictJointCoverReference private theorem continuous_momentBodyStrictJointCoverReference {n : ℕ} (K : CenteredBody n) : Continuous (momentBodyStrictJointCoverReference K) := by - unfold momentBodyStrictJointCoverReference exact (continuous_matrixSourceCoverPotential (contDiff_momentBodyStrictRadialPotential K).continuous).comp continuous_fst @@ -7878,8 +7650,8 @@ private theorem momentBodyStrictJointCoverReference_complex_line_submean_all_rad let f : ℂ → Space n := fun w => sourceCoverRadialLinear n ((q + w • v).1) have hf : Continuous f := by - unfold f - fun_prop + exact Continuous.clm_apply continuous_const + (Continuous.const_add (Continuous.fun_smul continuous_id' continuous_const) q.1) have hangle : Continuous (fun θ : ℝ => f (circleMap 0 R θ)) := hf.comp (continuous_circleMap 0 R) @@ -7981,15 +7753,12 @@ private theorem momentWeakHolomorphicStrictJointCoverWeight_complex_line_submean (1 - ε) * momentWeakHolomorphicJointTrueRadialMollification K F htransport p k (q + w • v)) 0 R := by - simpa only [smul_eq_mul] using - (hm.const_fun_smul (a := 1 - ε)) + exact (hm.const_fun_smul (a := 1 - ε)) have hp' : CircleIntegrable (fun w : ℂ => ε * momentBodyStrictJointCoverReference K (q + w • v)) 0 R := by - simpa only [smul_eq_mul] using - (hp.const_fun_smul (a := ε)) - unfold momentWeakHolomorphicStrictJointCoverWeight + exact (hp.const_fun_smul (a := ε)) change (1 - ε) * momentWeakHolomorphicJointTrueRadialMollification @@ -8018,21 +7787,6 @@ private theorem momentWeakHolomorphicStrictJointCoverWeight_complex_line_submean K (q + w • v)) 0 R rw [Real.circleAverage_fun_smul, Real.circleAverage_fun_smul] - change - (1 - ε) * - momentWeakHolomorphicJointTrueRadialMollification - K F htransport p k q + - ε * momentBodyStrictJointCoverReference K q ≤ - (1 - ε) * - Real.circleAverage - (fun w : ℂ => - momentWeakHolomorphicJointTrueRadialMollification - K F htransport p k (q + w • v)) 0 R + - ε * - Real.circleAverage - (fun w : ℂ => - momentBodyStrictJointCoverReference - K (q + w • v)) 0 R exact add_le_add (mul_le_mul_of_nonneg_left (momentWeakHolomorphicJointTrueRadialMollification_complex_line_submean_all_radius @@ -8057,7 +7811,7 @@ private theorem sourceJointRealLeviQuadratic_momentWeakHolomorphicStrictJointCov ((contDiff_infty.mp (contDiff_momentWeakHolomorphicStrictJointCoverWeight K F htransport p ε k)) 2) - refine ⟨1, by norm_num, ?_⟩ + refine ⟨1, by exact zero_lt_one, ?_⟩ intro r _ exact momentWeakHolomorphicStrictJointCoverWeight_complex_line_submean_all_radius @@ -8091,7 +7845,6 @@ private theorem momentWeakHolomorphicStrictJointCoverSchurBlock_isHermitian (τ : ℂ) (z : LogSpace n) : (momentWeakHolomorphicStrictJointCoverSchurBlock K F htransport p ε k τ z).IsHermitian := by - unfold momentWeakHolomorphicStrictJointCoverSchurBlock apply sourceComplexRowSchurBlock_isHermitian exact sourceJointSpatialComplexHessian_isHermitian ((contDiff_infty.mp @@ -8113,7 +7866,6 @@ private theorem momentWeakHolomorphicStrictJointCoverSchurBlock_quadratic_eq_rea (momentWeakHolomorphicStrictJointCoverWeight K F htransport p ε k) (z, τ) (star (x ∘ Sum.inl), star (x (Sum.inr 0))) : ℂ) := by - unfold momentWeakHolomorphicStrictJointCoverSchurBlock exact sourceJointCoverRowSchurBlock_quadratic_eq_realLevi ((contDiff_infty.mp (contDiff_momentWeakHolomorphicStrictJointCoverWeight @@ -8144,7 +7896,7 @@ private theorem momentWeakHolomorphicStrictJointCoverSchurBlock_posSemidef sourceJointRealLeviQuadratic_momentWeakHolomorphicStrictJointCoverWeight_nonneg K F htransport p ε hε₀ hε₁ k (z, τ) (star (x ∘ Sum.inl), star (x (Sum.inr 0))) - · simp only [Fin.isValue, RCLike.star_def, Complex.ofReal_im] + · simp only [Complex.ofReal_im] private theorem momentWeakHolomorphicStrictJointCover_rowSchurEnergy_le_acceleration {n : ℕ} (K : CenteredBody n) @@ -8225,7 +7977,10 @@ private theorem integrable_momentWeakHolomorphicJointRadialEnvelopeCircleIntegra have hmap : Continuous (fun z : SourceJointComplexCover n × ℝ => q - circleMap 0 1 z.2 • z.1) := by - fun_prop + exact Continuous.fun_sub continuous_const + (Continuous.fun_smul + (Continuous.comp' (continuous_circleMap 0 1) (Continuous.snd continuous_id')) + (Continuous.fst continuous_id')) have hmeas : Measurable (fun z : SourceJointComplexCover n × ℝ => sourceJointTrueRadialMollifier n k z.1 * @@ -8235,8 +7990,6 @@ private theorem integrable_momentWeakHolomorphicJointRadialEnvelopeCircleIntegra measurable_fst).mul ((measurable_momentWeakJointCoverUpperEnvelope K F htransport p).comp hmap.measurable) - change Integrable _ ((volume : Measure - (SourceJointComplexCover n)).prod ν) apply hdom.mono' hmeas.aestronglyMeasurable exact Eventually.of_forall fun z => by by_cases hz : sourceJointTrueRadialMollifier n k z.1 = 0 @@ -8653,7 +8406,7 @@ private theorem angularSourceRadialCutoff_smul_squared_error_integrals_tendsto_z have hone := sourceRadialCutoff_le_one m q have hscalar : |sourceRadialCutoff m q - 1| ≤ 1 := by rw [abs_of_nonpos (sub_nonpos.mpr hone)] - linarith + linarith only [hzero] have hrewrite : (sourceRadialCutoff m q : ℂ) • F q - F q = ((sourceRadialCutoff m q - 1 : ℝ) : ℂ) • F q := by @@ -8749,9 +8502,9 @@ private theorem angularTorusWeightedHolomorphicDerivative_cutoffPhysicalField exact weightedHolomorphicDerivative_mul (angularCoverPotential a) ((contDiff_complexSourceCoverRadialCutoff m).differentiable - (by norm_num)) + (by decide)) ((contDiff_pi.mp hW i).differentiable - (by norm_num)) z i + (by decide)) z i unfold angularTorusWeightedHolomorphicDerivative change torusScalarRepresentative @@ -8771,16 +8524,9 @@ private theorem torusHolomorphicDerivative_complexSourceCoverRadialCutoff (complexSourceCoverRadialCutoff m) z i) q = conj (sourceTorusBarPartial (complexSourceCoverRadialCutoff m) i q) := by - change - holomorphicCoordinate - (fun z => (sourceCoverRadialCutoff m z : ℂ)) - (sourceTorusCoverPoint q) i = - conj (barPartialCoordinate - (fun z => (sourceCoverRadialCutoff m z : ℂ)) - (sourceTorusCoverPoint q) i) exact (conj_barPartialCoordinate_real ((contDiff_sourceCoverRadialCutoff m).differentiable - (by norm_num)) (sourceTorusCoverPoint q) i).symm + (by decide)) (sourceTorusCoverPoint q) i).symm private def angularSourceCutoffAdjointCommutator {n : ℕ} (m : ℕ) @@ -8860,7 +8606,6 @@ private theorem hasCompactSupport_sourceJointTrueRadialTimeKernel (n k : ℕ) : private theorem continuous_sourceJointTrueRadialTimeKernel (n k : ℕ) : Continuous (sourceJointTrueRadialTimeKernel n k) := by - unfold sourceJointTrueRadialTimeKernel exact ((contDiff_sourceJointTrueRadialMollifier n k).continuous_fderiv (by simp only [ne_eq, WithTop.coe_eq_zero, ENat.top_ne_zero, not_false_eq_true])).clm_apply continuous_const @@ -8916,8 +8661,7 @@ private theorem jointSourceCoverVelocity_sourceJointTrueRadialSmoothed MeasureTheory.convolution_def] apply integral_congr_ae filter_upwards [] with y - simp only [ContinuousLinearMap.precompL_apply, ContinuousLinearMap.lsmul_apply, smul_eq_mul, - sourceJointTrueRadialTimeKernel, L, κ, v] + simp only [ContinuousLinearMap.precompL_apply, sourceJointTrueRadialTimeKernel, κ, v] end RadialAccelerationBounds @@ -9081,9 +8825,6 @@ private theorem contDiff_normalizedCoverMollification (complexShrinkingBump (n := n) k).contDiff_normed have hκcompact : HasCompactSupport κ := (complexShrinkingBump (n := n) k).hasCompactSupport_normed - change ContDiff ℝ r - (κ ⋆[ContinuousLinearMap.lsmul ℝ ℝ, - (volume : Measure (TorusCharacters.LogSpace n))] g) exact hκcompact.contDiff_convolution_left (ContinuousLinearMap.lsmul ℝ ℝ) hκ hg diff --git a/LeanPool/EhrhartVolumeInequality/Resolvent.lean b/LeanPool/EhrhartVolumeInequality/Resolvent.lean index 3697127fea..951b47f026 100644 --- a/LeanPool/EhrhartVolumeInequality/Resolvent.lean +++ b/LeanPool/EhrhartVolumeInequality/Resolvent.lean @@ -8,7 +8,8 @@ module public import LeanPool.EhrhartVolumeInequality.Regularization import all LeanPool.EhrhartVolumeInequality.Regularization -import Mathlib.Analysis.CStarAlgebra.Module.Constructions +-- Preserve the scalar inner-product instances in the original elaborated types. +import Mathlib.Analysis.CStarAlgebra.Module.Constructions -- shake: keep import Mathlib.Analysis.Normed.Lp.SmoothApprox /-! @@ -57,13 +58,6 @@ private theorem normalizedCoverBump_convolution_sq_le_convolution_sq (complexShrinkingBump (n := n) k).hasCompactSupport_normed have hκint : Integrable κ (volume : Measure (LogSpace n)) := hκ.integrable_of_hasCompactSupport hκcompact - have hfirst : Integrable - (fun y : LogSpace n => κ y * h (x - y)) - (volume : Measure (LogSpace n)) := by - have hexists := hκcompact.convolutionExists_right L - (hh.locallyIntegrable (by norm_num)) hκ x - simpa only [L, mul_comm, ContinuousLinearMap.lsmul_apply, smul_eq_mul] - using hexists.integrable_swap have hsecond : Integrable (fun y : LogSpace n => κ y * h (x - y) ^ 2) (volume : Measure (LogSpace n)) := by @@ -71,78 +65,35 @@ private theorem normalizedCoverBump_convolution_sq_le_convolution_sq hh.integrable_sq.locallyIntegrable hκ x simpa only [L, mul_comm, ContinuousLinearMap.lsmul_apply, smul_eq_mul] using hexists.integrable_swap - let m : ℝ := - ∫ y : LogSpace n, κ y * h (x - y) - ∂(volume : Measure (LogSpace n)) - have hnonneg : - 0 ≤ ∫ y : LogSpace n, - κ y * (h (x - y) - m) ^ 2 - ∂(volume : Measure (LogSpace n)) := - integral_nonneg (fun y => - mul_nonneg - ((complexShrinkingBump (n := n) k).nonneg_normed y) - (sq_nonneg _)) - have hexpand : - (∫ y : LogSpace n, - κ y * (h (x - y) - m) ^ 2 - ∂(volume : Measure (LogSpace n))) = - (∫ y : LogSpace n, - κ y * h (x - y) ^ 2 - ∂(volume : Measure (LogSpace n))) - m ^ 2 := by - calc - (∫ y : LogSpace n, - κ y * (h (x - y) - m) ^ 2 - ∂(volume : Measure (LogSpace n))) = - ∫ y : LogSpace n, - ((κ y * h (x - y) ^ 2 - - (2 * m) * (κ y * h (x - y))) + m ^ 2 * κ y) - ∂(volume : Measure (LogSpace n)) := by - apply integral_congr_ae - filter_upwards with y - ring - _ = - ((∫ y : LogSpace n, - κ y * h (x - y) ^ 2 - ∂(volume : Measure (LogSpace n))) - - (2 * m) * - (∫ y : LogSpace n, - κ y * h (x - y) - ∂(volume : Measure (LogSpace n)))) + - m ^ 2 * - (∫ y : LogSpace n, κ y - ∂(volume : Measure (LogSpace n))) := by - calc - (∫ y : LogSpace n, - (κ y * h (x - y) ^ 2 - - (2 * m) * (κ y * h (x - y))) + m ^ 2 * κ y - ∂(volume : Measure (LogSpace n))) = - (∫ y : LogSpace n, - κ y * h (x - y) ^ 2 - - (2 * m) * (κ y * h (x - y)) - ∂(volume : Measure (LogSpace n))) + - ∫ y : LogSpace n, m ^ 2 * κ y - ∂(volume : Measure (LogSpace n)) := - MeasureTheory.integral_add - (hsecond.sub (hfirst.const_mul (2 * m))) - (hκint.const_mul (m ^ 2)) - _ = _ := by - rw [MeasureTheory.integral_sub hsecond - (hfirst.const_mul (2 * m)), - MeasureTheory.integral_const_mul, - MeasureTheory.integral_const_mul] - _ = _ := by - change - ((∫ y : LogSpace n, - κ y * h (x - y) ^ 2 - ∂(volume : Measure (LogSpace n))) - - 2 * m * m) + - m ^ 2 * - (∫ y : LogSpace n, κ y - ∂(volume : Measure (LogSpace n))) = _ - rw [(complexShrinkingBump (n := n) k).integral_normed] - ring - change m ^ 2 ≤ _ - linarith [hnonneg, hexpand] + have hκnonneg (y : LogSpace n) : 0 ≤ κ y := + (complexShrinkingBump (n := n) k).nonneg_normed y + let ν : Measure (LogSpace n) := + volume.withDensity (fun y => ENNReal.ofReal (κ y)) + have hmeas : Measurable (fun y => ENNReal.ofReal (κ y)) := + hκ.measurable.ennreal_ofReal + have hmass : ν Set.univ = 1 := by + dsimp only [ν] + rw [withDensity_apply _ MeasurableSet.univ, setLIntegral_univ, + ← ofReal_integral_eq_lintegral_ofReal hκint (Filter.Eventually.of_forall hκnonneg), + (complexShrinkingBump (n := n) k).integral_normed, ENNReal.ofReal_one] + let : IsProbabilityMeasure ν := ⟨hmass⟩ + have hsecondν : Integrable (fun y => h (x - y) ^ 2) ν := by + apply (integrable_withDensity_iff_integrable_smul' hmeas + (Filter.Eventually.of_forall (fun _ => ENNReal.ofReal_lt_top))).mpr + simpa only [ENNReal.toReal_ofReal (hκnonneg _), smul_eq_mul] using hsecond + have hfν : AEStronglyMeasurable (fun y => h (x - y)) ν := + (hh.aestronglyMeasurable.comp_measurePreserving + ((volume : Measure (LogSpace n)).measurePreserving_sub_left x)).mono_ac + (withDensity_absolutelyContinuous _ _) + have hfirstν : Integrable (fun y => h (x - y)) ν := + ((memLp_two_iff_integrable_sq hfν).mpr hsecondν).integrable (by norm_num) + have hjensen := (even_two.convexOn_pow : ConvexOn ℝ Set.univ (fun t : ℝ => t ^ 2)).map_integral_le + (continuous_id.pow 2).continuousOn isClosed_univ + (Filter.Eventually.of_forall (fun _ => Set.mem_univ _)) hfirstν hsecondν + simpa only [ν, integral_withDensity_eq_integral_toReal_smul hmeas + (Filter.Eventually.of_forall (fun _ => ENNReal.ofReal_lt_top)), + ENNReal.toReal_ofReal (hκnonneg _), smul_eq_mul] + using hjensen private theorem norm_normalizedCoverMollification_le {n : ℕ} {h : LogSpace n → ℂ} @@ -212,7 +163,6 @@ private theorem continuous_normalizedCoverComplexDriftCommutator (hh : LocallyIntegrable h (volume : Measure (LogSpace n))) (hb : Continuous b) (k : ℕ) : Continuous (normalizedCoverComplexDriftCommutator b h k) := by - unfold normalizedCoverComplexDriftCommutator exact (contDiff_normalizedCoverMollification (locallyIntegrable_cover_complex_mul_continuous hh hb) k 0).continuous.sub (hb.mul (contDiff_normalizedCoverMollification hh k 0).continuous) @@ -249,7 +199,6 @@ private theorem normalizedCoverComplexDriftCommutator_eq_integral DolbeaultRegularity.complexRealMultiplication hh hκ x simpa only [complexRealMultiplication_apply, mul_comm] using hi.integrable - unfold normalizedCoverComplexDriftCommutator change (κ ⋆[ContinuousLinearMap.lsmul ℝ ℝ, (volume : Measure (LogSpace n))] @@ -320,7 +269,7 @@ private theorem norm_normalizedCoverComplexDriftCommutator_le_driftOscillation (fun y : LogSpace n => ‖h y‖ * κ (x - y)) (volume : Measure (LogSpace n)) := by have hi := hκcompact.convolutionExists_right L hhnorm hκ x - simpa only [L, ContinuousLinearMap.lsmul_apply, smul_eq_mul] using hi.integrable + exact hi.integrable have hmajor : Integrable (fun y : LogSpace n => c * (‖h y‖ * κ (x - y))) (volume : Measure (LogSpace n)) := hbase.const_mul c @@ -399,7 +348,6 @@ private theorem setIntegral_norm_sq_normalizedCoverComplexDriftCommutator_le rw [MeasureTheory.convolution_def] apply integral_nonneg intro y - change 0 ≤ κ y * ‖t (x - y)‖ ^ 2 exact mul_nonneg ((complexShrinkingBump (n := n) k).nonneg_normed y) (sq_nonneg _) @@ -452,7 +400,7 @@ private theorem setIntegral_norm_sq_normalizedCoverComplexDriftCommutator_le by_cases hy : κ (x - y) = 0 · simp only [hy, ContinuousLinearMap.mul_apply', mul_zero, L] · have hyS : y ∈ S := hreach x hx y hy - simp only [ContinuousLinearMap.mul_apply', hyS, indicator_of_mem, L, t] + simp only [hyS, indicator_of_mem, t] _ = (κ ⋆[L, (volume : Measure (LogSpace n))] (fun y : LogSpace n => ‖t y‖)) x := by exact congrFun (coverReal_convolution_comm @@ -477,7 +425,7 @@ private theorem setIntegral_norm_sq_normalizedCoverComplexDriftCommutator_le have hJ' : (∫ z : LogSpace n, κ z * ‖t (x - z)‖ ∂(volume : Measure (LogSpace n))) ^ 2 ≤ q x := by - simpa only [L, q, κ, convolution_def, ContinuousLinearMap.mul_apply'] using hJ + exact hJ calc ‖normalizedCoverComplexDriftCommutator b h k x‖ ^ 2 ≤ (c * @@ -591,7 +539,6 @@ private theorem setIntegral_norm_sq_normalizedCoverComplexDriftCommutator_tendst (complexShrinkingBump (n := n) k).normed (volume : Measure (LogSpace n)) (x - y) ≠ 0 → y ∈ S := by intro x hx y hy - change y ∈ Metric.cthickening 1 K exact Metric.mem_cthickening_of_dist_le y x 1 K hx ((hkernelDist x y hy).le.trans hrone.le) have hosc : ∀ x ∈ K, ∀ y : LogSpace n, @@ -613,7 +560,7 @@ private theorem setIntegral_norm_sq_normalizedCoverComplexDriftCommutator_tendst have hfirst : η ^ 2 * M ≤ η * M := mul_le_mul_of_nonneg_right hηsq hM have hsecond : η * M ≤ η * (M + 1) := - mul_le_mul_of_nonneg_left (by linarith) hη.le + mul_le_mul_of_nonneg_left (by linarith only []) hη.le have hhalf : η * (M + 1) ≤ ε / 2 := by rw [le_div_iff₀ two_pos] linarith [hηscale] @@ -661,7 +608,6 @@ private theorem complexDeckPeriodization_periodic Function.Periodic (complexDeckPeriodization ψ) (TorusCharacters.imaginaryShift q) := by intro z - unfold complexDeckPeriodization calc (∑' d : Fin n → ℤ, ψ (z + TorusCharacters.imaginaryShift q + @@ -690,7 +636,6 @@ private theorem exists_finite_complexDeckPeriodization_support_near ∀ q : Fin n → ℤ, q ∉ s → ψ (y + TorusCharacters.imaginaryShift q) = 0 := by - classical obtain ⟨R, hRpos, hR⟩ := hψcompact.isBounded.exists_pos_norm_le obtain ⟨N, hN⟩ := exists_nat_gt @@ -700,7 +645,7 @@ private theorem exists_finite_complexDeckPeriodization_support_near (fun _ : Fin n => Finset.Icc (-(N : ℤ)) (N : ℤ)) refine ⟨s, ?_⟩ filter_upwards - [Metric.ball_mem_nhds x (show 0 < (1 : ℝ) by norm_num)] + [Metric.ball_mem_nhds x (show 0 < (1 : ℝ) by exact zero_lt_one)] with y hy intro q hq by_contra hnonzero @@ -716,7 +661,7 @@ private theorem exists_finite_complexDeckPeriodization_support_near calc ‖y‖ = ‖(y - x) + x‖ := by abel_nf _ ≤ ‖y - x‖ + ‖x‖ := norm_add_le _ _ - _ ≤ ‖x‖ + 1 := by linarith + _ ≤ ‖x‖ + 1 := by linarith only [hyx] have hdeck : ‖TorusCharacters.imaginaryShift q‖ ≤ R + (‖x‖ + 1) := by @@ -753,7 +698,6 @@ private theorem contDiff_complexDeckPeriodization (hψ : ContDiff ℝ r ψ) (hψcompact : HasCompactSupport ψ) : ContDiff ℝ r (complexDeckPeriodization ψ) := by - classical apply contDiff_iff_contDiffAt.mpr intro x obtain ⟨s, hs⟩ := @@ -768,10 +712,6 @@ private theorem contDiff_complexDeckPeriodization exact hψ.comp (contDiff_id.add contDiff_const) apply hF.contDiffAt.congr_of_eventuallyEq filter_upwards [hs] with y hy - change - (∑' q : Fin n → ℤ, - ψ (y + TorusCharacters.imaginaryShift q)) = - ∑ q ∈ s, ψ (y + TorusCharacters.imaginaryShift q) exact tsum_eq_sum (fun q hq => hy q hq) end TorusDeckPeriodization @@ -790,7 +730,6 @@ private theorem hasCompactSupport_torusScalarRepresentative_complexDeckPeriodiza (hψcompact : HasCompactSupport ψ) : HasCompactSupport (torusScalarRepresentative (complexDeckPeriodization ψ)) := by - classical let K : Set (WeightedTorusHilbert.LogTorus n) := complexTorusCoverProjection n '' tsupport ψ have hK : IsCompact K := @@ -844,10 +783,6 @@ private theorem continuous_torusFunctionBarPartialRepresentative_of_periodic Function.Periodic F (TorusCharacters.imaginaryShift q)) : Continuous (torusFunctionBarPartialRepresentative F) := by - change Continuous - (fun p : LogTorus n => - WithLp.toLp 2 - (fun j : Fin n => sourceTorusBarPartial F j p)) exact (PiLp.continuous_toLp 2 (fun _ : Fin n => ℂ)).comp (continuous_pi (fun j => @@ -861,7 +796,6 @@ private theorem hasCompactSupport_torusFunctionBarPartialRepresentative_of_perio (TorusCharacters.imaginaryShift q)) (hcompact : HasCompactSupport (torusScalarRepresentative F)) : HasCompactSupport (torusFunctionBarPartialRepresentative F) := by - classical let K : Set (LogTorus n) := ⋃ j : Fin n, tsupport (sourceTorusBarPartial F j) have hK : IsCompact K := @@ -915,7 +849,7 @@ private theorem complexDeckPeriodization_barPartial_memLp apply (continuous_torusFunctionBarPartialRepresentative_of_periodic ((contDiff_complexDeckPeriodization hψ hψcompact).of_le - (by norm_num)) + (by decide)) (fun q => complexDeckPeriodization_periodic ψ q)).memLp_of_hasCompactSupport exact hasCompactSupport_torusFunctionBarPartialRepresentative_of_periodic @@ -1076,7 +1010,7 @@ private theorem angularFundamentalBox_integer_shift_eq_zero exact_mod_cast hupp have hz : q i = 0 := by omega - simpa only [Pi.zero_apply] using hz + exact hz private theorem complexDeckPeriodization_eq_of_fundamentalCell {n : ℕ} @@ -1093,8 +1027,6 @@ private theorem complexDeckPeriodization_eq_of_fundamentalCell x t) = ψ (JointHolomorphicLaurentFourierCompatibility.logarithmicPoint x t) := by - classical - unfold complexDeckPeriodization refine (tsum_eq_single (0 : Fin n → ℤ) ?_).trans ?_ · intro q hq by_contra hnonzero @@ -1194,7 +1126,6 @@ private theorem angularMemLp_locallyIntegrable_base intro S hS have hweighted : IntegrableOn g S (angularWeightedTorusMeasure a) := (hg.locallyIntegrable (by norm_num)).integrableOn_isCompact hS - unfold angularWeightedTorusMeasure at hweighted change Integrable g (((sourceTorusBaseMeasure n).withDensity (fun q : LogTorus n => @@ -1224,7 +1155,7 @@ private theorem angularMemLp_locallyIntegrable_base apply hscaled.congr filter_upwards [] with q simp only [angularWeightedTorusDensity, (Real.exp_pos (-a q)).le, ENNReal.toReal_ofReal, - Complex.real_smul, Complex.ofReal_exp, Complex.ofReal_neg] + Complex.real_smul] have hreciprocal : Continuous (fun q : LogTorus n => (Real.exp (a q) : ℂ)) := @@ -1327,7 +1258,6 @@ private theorem angularMemLp_restrict_base_isCompact (MeasureTheory.memLp_two_iff_integrable_sq_norm hg.aestronglyMeasurable).mp hg have hweighted := hsq.integrableOn (s := S) - unfold angularWeightedTorusMeasure at hweighted change Integrable (fun q : LogTorus n => ‖g q‖ ^ 2) (((sourceTorusBaseMeasure n).withDensity @@ -1425,9 +1355,6 @@ private theorem angularWeightedScalarCoverLift_memLp_restrict_volume_isCompact have hsq := (hcover.integrableOn_isCompact hS).re apply hsq.congr filter_upwards [] with z - change - (((‖f (complexTorusCoverProjection n z)‖ ^ 2 : ℝ) : ℂ)).re = - ‖f (complexTorusCoverProjection n z)‖ ^ 2 exact Complex.ofReal_re _ private theorem angularWeightedFormCoordinateCoverLift_memLp_restrict_volume_isCompact @@ -1465,11 +1392,6 @@ private theorem angularWeightedFormCoordinateCoverLift_memLp_restrict_volume_isC have hsq := (hcover.integrableOn_isCompact hS).re apply hsq.congr filter_upwards [] with z - change - (((‖(W (complexTorusCoverProjection n z) : - EuclideanSpace ℂ (Fin n)) i‖ ^ 2 : ℝ) : ℂ)).re = - ‖(W (complexTorusCoverProjection n z) : - EuclideanSpace ℂ (Fin n)) i‖ ^ 2 exact Complex.ofReal_re _ end BergmanJetStrictMixedLocalCore @@ -1610,7 +1532,6 @@ private theorem exists_finite_complex_fundamental_test_partition coverFundamentalInterior (coverCenteredFundamentalBase i)) ∧ (∀ z : LogSpace n, ψ z = ∑ i ∈ s, (χ i z : ℂ) * ψ z) := by - classical let E := LogSpace n let U : E → Set E := fun z => coverFundamentalInterior (coverCenteredFundamentalBase z) @@ -1672,7 +1593,6 @@ private theorem complexDeckPeriodization_eventuallyEq_on_fundamentalCell complexDeckPeriodization ψ =ᶠ[ 𝓝 (JointHolomorphicLaurentFourierCompatibility.logarithmicPoint x t)] ψ := by - classical let z : TorusCharacters.LogSpace n := JointHolomorphicLaurentFourierCompatibility.logarithmicPoint x t have hnot : ∀ q : Fin n → ℤ, @@ -1712,7 +1632,7 @@ private theorem complexDeckPeriodization_eventuallyEq_on_fundamentalCell (𝓝 (z + TorusCharacters.imaginaryShift q)) := (continuous_id.add continuous_const).continuousAt filter_upwards [htranslate hzero] with w hw - simpa only [Pi.zero_apply, preimage_ofPred_eq, mem_ofPred_eq] using hw + exact hw obtain ⟨s, hs⟩ := exists_finite_complexDeckPeriodization_support_near hψcompact z have hall : @@ -1791,8 +1711,6 @@ private def realAngularWeightedFundamentalCellMeasure {n : ℕ} private theorem continuous_realTorusCoverProjection (n : ℕ) : Continuous (realTorusCoverProjection n) := by - change Continuous (fun p : Space n × Space n => - (p.1, angularCoverProjection n p.2)) exact (continuous_fst : Continuous (fun p : Space n × Space n => p.1)).prodMk ((continuous_angularCoverProjection n).comp @@ -1938,8 +1856,7 @@ private theorem compactSupport_angularWeightedCellAdjointScalarTest {n : ℕ} (fun p : Space n × Space n => coverAdjointScalarTest ψ j (logarithmicCoordinatesEquiv n p)) := by - simpa only [ContinuousLinearEquiv.coe_toHomeomorph, comp_def] using - (compactSupport_coverAdjointScalarTest hψcompact j).comp_homeomorph + exact (compactSupport_coverAdjointScalarTest hψcompact j).comp_homeomorph (logarithmicCoordinatesEquiv n).toHomeomorph exact hcomp.mul_left @@ -1950,8 +1867,7 @@ private theorem compactSupport_angularWeightedCellAdjointVectorTest {n : ℕ} have hcomp : HasCompactSupport (fun p : Space n × Space n => ψ (logarithmicCoordinatesEquiv n p)) := by - simpa only [ContinuousLinearEquiv.coe_toHomeomorph, comp_def] using - hψcompact.comp_homeomorph + exact hψcompact.comp_homeomorph (logarithmicCoordinatesEquiv n).toHomeomorph refine hcomp.mono ?_ intro p hp @@ -2243,7 +2159,7 @@ private theorem angularTorus_compact_form_curvature_le_adjoint_add_exterior conj (angularTorusFormAdjoint a W p) ∂μ).re + (∫ p : LogTorus n, sourceTorusFormExteriorDerivativeDensity W p ∂μ).re - linarith + linarith only [hre, hfull_nonneg] /-- A quadratic bound for the norm of a difference of complex numbers. -/ public @@ -2253,7 +2169,7 @@ theorem complex_norm_sub_sq_le_two_mul_add have hsub := norm_sub_le z w have hsq : ‖z - w‖ ^ 2 ≤ (‖z‖ + ‖w‖) ^ 2 := by exact (sq_le_sq₀ (norm_nonneg _) (add_nonneg (norm_nonneg _) (norm_nonneg _))).mpr hsub - nlinarith [sq_nonneg (‖z‖ - ‖w‖)] + linarith only [hsq, sq_nonneg (‖z‖ - ‖w‖)] private theorem complexEuclidean_antisymmetric_energy_le_two_norm_sq {n : ℕ} @@ -2284,7 +2200,7 @@ private theorem complexEuclidean_antisymmetric_energy_le_two_norm_sq rw [Finset.sum_comm] simp only [mul_add, Finset.sum_add_distrib, ← Finset.mul_sum] at hsum rw [hswap] at hsum - nlinarith + linarith only [hsum] private theorem sourceTorusBarPartial_cutoffPhysicalField_antisymmetric {n : ℕ} @@ -2713,23 +2629,13 @@ private theorem angularCellWeakAdjointFunctional_closedGraph_zero (j : Fin n) (v : angularDolbeaultGraphAmbient a) (hv : v ∈ angularDolbeaultGraph a) : angularCellWeakAdjointFunctional ha b hψ hψcompact j v = 0 := by - let L : angularDolbeaultGraphAmbient a →L[ℂ] ℂ := - angularCellWeakAdjointFunctional ha b hψ hψcompact j - have hspan : - Submodule.span ℂ (smoothAngularDolbeaultGraphSet a) ≤ L.ker := by - apply Submodule.span_le.mpr - intro v hv' - rcases hv' with - ⟨F, hF, hperiod, _hcompact, hFLp, hDLp, rfl⟩ - exact angularCellWeakAdjointFunctional_smoothGraph_zero - ha b hψ hψcompact hcell - (hF.of_le (by norm_num)) hperiod hFLp hDLp j - have hgraph : angularDolbeaultGraph a ≤ L.ker := by - unfold angularDolbeaultGraph - exact Submodule.topologicalClosure_minimal - (Submodule.span ℂ (smoothAngularDolbeaultGraphSet a)) - hspan L.isClosed_ker - exact hgraph hv + refine continuousLinearMap_eq_zero_of_mem_topologicalClosure_span + (angularCellWeakAdjointFunctional ha b hψ hψcompact j) ?_ hv + intro w hw + rcases hw with ⟨F, hF, hperiod, _hcompact, hFLp, hDLp, rfl⟩ + exact angularCellWeakAdjointFunctional_smoothGraph_zero + ha b hψ hψcompact hcell + (hF.of_le (by decide)) hperiod hFLp hDLp j private theorem angularDolbeaultGraph_compact_barPartial_green_of_fundamentalCell {n : ℕ} {a : LogTorus n → ℝ} (ha : Continuous a) @@ -2798,7 +2704,6 @@ private theorem angularDolbeaultGraph_compact_barPartial_green (fun q : LogTorus n => (W q : EuclideanSpace ℂ (Fin n)) j) z * (ψ z : ℂ) ∂(volume : Measure (LogSpace n))) := by - classical obtain ⟨s, χ, hχ, hχsupport, hpartition⟩ := exists_finite_fundamental_test_partition hψcompact let ξ : LogSpace n → LogSpace n → ℝ := @@ -2828,8 +2733,7 @@ private theorem angularDolbeaultGraph_compact_barPartial_green coverBarPartialTest (ξ i) j z) (volume : Measure (LogSpace n)) := by intro i _ - simpa only [smul_eq_mul] using - hfloc.integrable_smul_right_of_hasCompactSupport + exact hfloc.integrable_smul_right_of_hasCompactSupport (continuous_coverBarPartialTest (hξ i) j) (compactSupport_coverBarPartialTest (hξcompact i) j) have hintw : ∀ i ∈ s, Integrable @@ -2840,8 +2744,7 @@ private theorem angularDolbeaultGraph_compact_barPartial_green (ξ i z : ℂ)) (volume : Measure (LogSpace n)) := by intro i _ - simpa only [Function.comp_apply, smul_eq_mul] using - hwloc.integrable_smul_right_of_hasCompactSupport + exact hwloc.integrable_smul_right_of_hasCompactSupport (Complex.continuous_ofReal.comp (hξ i).continuous) (compactSupport_complexOfReal (hξcompact i)) calc @@ -2884,13 +2787,13 @@ private theorem angularDolbeaultGraph_compact_barPartial_green (ξ i z : ℂ) ∂(volume : Measure (LogSpace n))) := by rw [integral_finsetSum s hintw] - simp only [neg_mul, Finset.sum_neg_distrib, Finset.mul_sum] + simp only [Finset.mul_sum] _ = _ := by congr 1 apply integral_congr_ae filter_upwards [] with z rw [hpartition z] - simp only [Complex.ofReal_mul, Complex.ofReal_sum, Finset.mul_sum, ξ] + simp only [Complex.ofReal_sum, Finset.mul_sum, ξ] private theorem angularDolbeaultGraph_normalizedCoverMollification_barPartial {n : ℕ} {a : LogTorus n → ℝ} (ha : Continuous a) @@ -2999,8 +2902,7 @@ private theorem normalizedCoverMollification_memLp apply hq.mono' (hc.norm.pow 2).aestronglyMeasurable filter_upwards [] with x rw [Real.norm_eq_abs, abs_of_nonneg (sq_nonneg _)] - simpa only [L, κ, q, Pi.pow_apply, convolution_def, ContinuousLinearMap.mul_apply'] using - normalizedCoverMollification_norm_sq_le_convolution_norm_sq hh k x + exact normalizedCoverMollification_norm_sq_le_convolution_norm_sq hh k x private theorem integral_norm_sq_normalizedCoverMollification_le {n : ℕ} {h : LogSpace n → ℂ} @@ -3040,8 +2942,7 @@ private theorem integral_norm_sq_normalizedCoverMollification_le ∂(volume : Measure (LogSpace n)) := by apply integral_mono hsquare hq intro x - simpa only [convolution_def, ContinuousLinearMap.mul_apply', q, κ, L] using - normalizedCoverMollification_norm_sq_le_convolution_norm_sq + exact normalizedCoverMollification_norm_sq_le_convolution_norm_sq hh k x _ = (∫ x : LogSpace n, κ x @@ -3159,20 +3060,12 @@ private theorem angularWeightedScalarL2_periodized_cell_inner_eq_cover ψ (logarithmicCoordinatesEquiv n p) rw [periodic_torusScalarRepresentative_logarithmicPoint F hFperiod p.1 p.2] - change - complexDeckPeriodization ψ - (logarithmicPoint p.1 p.2) = - ψ (logarithmicPoint p.1 p.2) exact complexDeckPeriodization_eq_of_fundamentalCell hhalf p.1 p.2 hp have hproj : complexTorusCoverProjection n (logarithmicCoordinatesEquiv n p) = realTorusCoverProjection n p := by - change - complexTorusCoverProjection n - (logarithmicPoint p.1 p.2) = - realTorusCoverProjection n (p.1, p.2) exact complexTorusCoverProjection_logarithmicPoint p.1 p.2 change (angularWeightedTorusDensity a @@ -3258,7 +3151,7 @@ private theorem angularWeightedFormL2_periodized_cell_inner_eq_cover Continuous (torusFunctionBarPartialRepresentative F) := continuous_torusFunctionBarPartialRepresentative_of_periodic ((contDiff_complexDeckPeriodization hψ hψcompact).of_le - (by norm_num)) hFperiod + (by decide)) hFperiod have hhalf : tsupport ψ ⊆ {z : LogSpace n | ((logarithmicCoordinatesEquiv n).symm z).2 ∈ @@ -3305,21 +3198,12 @@ private theorem angularWeightedFormL2_periodized_cell_inner_eq_cover (fun z : LogSpace n => barPartialCoordinate F z j) (fun q => barPartialCoordinate_periodic F hFperiod j q) p.1 p.2] - change - barPartialCoordinate (complexDeckPeriodization ψ) - (logarithmicPoint p.1 p.2) j = - barPartialCoordinate ψ - (logarithmicPoint p.1 p.2) j exact barPartial_complexDeckPeriodization_eq_on_fundamentalCell hψcompact hcell p.1 p.2 hp j have hproj : complexTorusCoverProjection n (logarithmicCoordinatesEquiv n p) = realTorusCoverProjection n p := by - change - complexTorusCoverProjection n - (logarithmicPoint p.1 p.2) = - realTorusCoverProjection n (p.1, p.2) exact complexTorusCoverProjection_logarithmicPoint p.1 p.2 change (angularWeightedTorusDensity a @@ -3485,11 +3369,9 @@ private theorem locallyIntegrable_complex_inner_mul_integrable have hconjcontinuous : Continuous (fun z => conj (G z)) := Complex.continuous_conj.comp hG have hconjcompact : HasCompactSupport (fun z => conj (G z)) := by - simpa only [comp_def] using - hGcompact.comp_left (g := (starRingEnd ℂ)) (map_zero _) + exact hGcompact.comp_left (g := (starRingEnd ℂ)) (map_zero _) have hmul : Integrable (fun z => F z * conj (G z)) μ := by - simpa only [smul_eq_mul] using - hF.integrable_smul_right_of_hasCompactSupport + exact hF.integrable_smul_right_of_hasCompactSupport hconjcontinuous hconjcompact have hc := Complex.conjCLE.toContinuousLinearMap.integrable_comp hmul simpa only [RCLike.inner_apply, ContinuousLinearEquiv.coe_coe, ContinuousAlgEquiv.coeCLE_apply, @@ -3585,7 +3467,7 @@ private theorem complex_norm_add_sq_le_two_mul_add (u v : ℂ) : have hu : 0 ≤ ‖u‖ := norm_nonneg _ have hv : 0 ≤ ‖v‖ := norm_nonneg _ have hs : 0 ≤ ‖u + v‖ := norm_nonneg _ - nlinarith [sq_nonneg (‖u‖ - ‖v‖)] + nlinarith only [h, hu, hv, hs, sq_nonneg (‖u‖ - ‖v‖)] private theorem finite_complex_local_square_integral_sum_tendsto_zero {n : ℕ} {ι : Type*} @@ -4078,11 +3960,6 @@ private theorem normalizedCoverMollification_continuous_compact_L2_tendsto ((hc.memLp_of_hasCompactSupport hs).toLp h)) := by let hh : MemLp h 2 (volume : Measure (LogSpace n)) := hc.memLp_of_hasCompactSupport hs - change Tendsto - (fun k : ℕ => - (normalizedCoverMollification_memLp hh k).toLp - (normalizedCoverMollification h k)) - atTop (nhds (hh.toLp h)) apply tendsto_iff_norm_sub_tendsto_zero.mpr have hsq (k : ℕ) : ‖(normalizedCoverMollification_memLp hh k).toLp @@ -4143,7 +4020,6 @@ private theorem contDiff_translatedDensityCancelledCoverKernel (ha : ContDiff ℝ 1 (angularCoverPotential a)) (k : ℕ) (x : LogSpace n) : ContDiff ℝ 1 (translatedDensityCancelledCoverKernel a k x) := by - unfold translatedDensityCancelledCoverKernel exact ((complexShrinkingBump (n := n) k).contDiff_normed.comp (contDiff_const.sub contDiff_id)).div (contDiff_coverWeight ha) @@ -4303,7 +4179,7 @@ private theorem normalizedCoverMollification_sub ← MeasureTheory.integral_sub hgi hhi] apply integral_congr_ae filter_upwards [] with y - simp only [ContinuousLinearMap.map_sub, ContinuousLinearMap.lsmul_apply, Complex.real_smul] + simp only [ContinuousLinearMap.map_sub] private def normalizedCoverMollificationL2 {n : ℕ} (k : ℕ) @@ -4324,12 +4200,6 @@ private theorem normalizedCoverMollificationL2_sub let hmem : MemLp (fun x : LogSpace n => u x - v x) 2 (volume : Measure (LogSpace n)) := (MeasureTheory.Lp.memLp u).sub (MeasureTheory.Lp.memLp v) - change - normalizedCoverMollificationL2 k u - - normalizedCoverMollificationL2 k v = - (normalizedCoverMollification_memLp hmem k).toLp - (normalizedCoverMollification - (fun x : LogSpace n => u x - v x) k) apply MeasureTheory.Lp.ext filter_upwards [MeasureTheory.Lp.coeFn_sub @@ -4385,7 +4255,6 @@ private theorem normalizedCoverMollification_congr_ae (k : ℕ) : normalizedCoverMollification g k = normalizedCoverMollification h k := by - unfold normalizedCoverMollification exact MeasureTheory.convolution_congr (ContinuousLinearMap.lsmul ℝ ℝ) (Filter.Eventually.of_forall (fun _ => rfl)) hgh @@ -4453,23 +4322,15 @@ private theorem normalizedCoverMollificationL2_tendsto (normalizedCoverMollificationL2 k v) + dist (normalizedCoverMollificationL2 k v) v + dist v u := by - calc - dist (normalizedCoverMollificationL2 k u) u ≤ - dist (normalizedCoverMollificationL2 k u) - (normalizedCoverMollificationL2 k v) + - dist (normalizedCoverMollificationL2 k v) u := - dist_triangle _ _ _ - _ ≤ _ := by - linarith [dist_triangle - (normalizedCoverMollificationL2 k v) v u] + exact dist_triangle4 _ _ _ _ _ ≤ dist u v + dist (normalizedCoverMollificationL2 k v) v + dist v u := by - gcongr - exact normalizedCoverMollificationL2_dist_le k u v + exact _root_.add_le_add + (_root_.add_le_add (normalizedCoverMollificationL2_dist_le k u v) le_rfl) le_rfl _ < ε := by rw [dist_comm v u] - nlinarith [hN k hk] + linarith only [hε, huv, hN k hk] private theorem normalizedCoverMollification_global_L2_tendsto {n : ℕ} {h : LogSpace n → ℂ} @@ -4515,7 +4376,7 @@ private theorem tendsto_integral_norm_sq_normalizedCoverMollification_sub (normalizedCoverMollification h k)) x - (hh.toLp h) x‖ ^ 2 = _ rw [hm, hx] - simpa only [hsq, zero_pow (by norm_num : (2 : ℕ) ≠ 0)] using + simpa only [hsq, zero_pow (by decide : (2 : ℕ) ≠ 0)] using hnorm.pow 2 private theorem normalizedCoverMollification_indicator_cthickening_eq_on @@ -4551,7 +4412,7 @@ private theorem normalizedCoverMollification_indicator_cthickening_eq_on have heq : (x - y) - x = -y := by abel rw [heq, norm_neg] exact hnorm.le.trans (complexShrinkingBump_rOut_le_one k) - simp only [ContinuousLinearMap.lsmul_apply, Complex.real_smul, Set.indicator_of_mem hxy] + simp only [Set.indicator_of_mem hxy] private theorem normalizedCoverMollification_localL2_tendsto_zero {n : ℕ} {h : LogSpace n → ℂ} @@ -4626,7 +4487,6 @@ private def sourceCompactAngularCoverBox private theorem isCompact_sourceCompactAngularCoverBox {n : ℕ} {S : Set (LogTorus n)} (hS : IsCompact S) : IsCompact (sourceCompactAngularCoverBox S) := by - unfold sourceCompactAngularCoverBox exact ((hS.image continuous_fst).prod (isCompact_univ_pi fun _ : Fin n => isCompact_Icc)).image (logarithmicCoordinatesEquiv n).continuous @@ -4642,7 +4502,7 @@ private theorem logarithmicPoint_mem_sourceCompactAngularCoverBox · intro i _ have hi := hbox i exact ⟨hi.1.le, by simpa only [Pi.zero_apply, zero_add] using hi.2⟩ - · simpa only [Prod.mk.eta] using logarithmicCoordinatesEquiv_apply p.1 p.2 + · exact logarithmicCoordinatesEquiv_apply p.1 p.2 private theorem torusScalarRepresentative_realTorusCoverProjection {n : ℕ} (F : LogSpace n → ℂ) @@ -4722,8 +4582,7 @@ private theorem realFundamentalCell_integral_real_eq_coverJacobian simpa only [mem_prod, mem_univ, true_and] using hp _ = ∫ z : LogSpace n, g z ∂(logarithmicCoverPushforward n) := by - simpa only using - (logarithmicCoordinates_measurePreserving n).integral_comp + exact (logarithmicCoordinates_measurePreserving n).integral_comp (logarithmicCoordinatesEquiv n).toHomeomorph.measurableEmbedding g _ = _ := by rw [logarithmicCoverPushforward_eq_smul_volume, @@ -4778,7 +4637,6 @@ private theorem angularWeightedTorus_compact_scalarRepresentative_majorant logarithmicPoint_mem_sourceCompactAngularCoverBox p hpbox hproj have hpoint : logarithmicPoint p.1 p.2 = z := by - change (logarithmicCoordinatesEquiv n) p = z exact (logarithmicCoordinatesEquiv n).apply_symm_apply z rw [hpoint] at hmem exact hmem @@ -4848,7 +4706,6 @@ private theorem angularWeightedTorus_compact_scalarRepresentative_L2_tendsto_of_ ‖torusScalarRepresentative (F k) q - f q‖ ^ 2 ∂(angularWeightedTorusMeasure a)) atTop (nhds 0) := by - classical let K : Set (LogSpace n) := sourceCompactAngularCoverBox S have hK : IsCompact K := isCompact_sourceCompactAngularCoverBox hS @@ -5207,7 +5064,6 @@ private theorem angularMollifiedPhysicalAdjointDriftCommutator_tendsto_zero ‖angularMollifiedPhysicalAdjointDriftCommutator W k x‖ ^ 2 ∂(volume : Measure (LogSpace n))) atTop (nhds 0) := by - unfold angularMollifiedPhysicalAdjointDriftCommutator apply finite_complex_local_square_integral_sum_tendsto_zero Finset.univ _ hK · intro j _ k @@ -5374,7 +5230,7 @@ private theorem complexHilbert_norm_le_of_mem_closure_inner_bound exact hB · have hfpos : 0 < ‖f‖ := lt_of_le_of_ne (norm_nonneg _) (Ne.symm hfzero) - nlinarith + nlinarith only [hsq, hfpos] end RadialPhysicalResolventDefectReduction @@ -5388,7 +5244,6 @@ open scoped BigOperators ENNReal ComplexConjugate InnerProductSpace private theorem contDiff_complexSourceCoverRadialCutoff_all {n : ℕ} (m r : ℕ) : ContDiff ℝ r (complexSourceCoverRadialCutoff (n := n) m) := by - unfold complexSourceCoverRadialCutoff sourceCoverRadialCutoff exact Complex.ofRealCLM.contDiff.comp ((WeightedResolventConstantCore.growingBump (n := n) m).contDiff.comp @@ -5502,11 +5357,6 @@ private theorem continuous_complexEuclideanOuterProduct_uncurry (fun vw : EuclideanSpace ℂ (Fin n) × EuclideanSpace ℂ (Fin n) => complexEuclideanOuterProduct vw.1 vw.2) := by - change Continuous - (fun vw : EuclideanSpace ℂ (Fin n) × - EuclideanSpace ℂ (Fin n) => - WithLp.toLp 2 (fun ij : Fin n × Fin n => - vw.1 ij.1 * vw.2 ij.2)) apply (PiLp.continuous_toLp 2 (fun _ : Fin n × Fin n => ℂ)).comp apply continuous_pi @@ -5662,7 +5512,6 @@ private theorem angularWeakSourceCutoffAdjointCommutator_norm_le (m : ℕ) (q : LogTorus n) : ‖angularWeakSourceCutoffAdjointCommutator W m q‖ ≤ (((m : ℝ) + 1)⁻¹ * C) * ‖W q‖ := by - unfold angularWeakSourceCutoffAdjointCommutator exact (norm_inner_le_norm _ _).trans (mul_le_mul_of_nonneg_right (sourceCutoffBarGradient_norm_le hC m q) @@ -5748,7 +5597,6 @@ private theorem complexEuclideanAntisymmetricEnergy_im {n : ℕ} (M : EuclideanSpace ℂ (Fin n × Fin n)) : (complexEuclideanAntisymmetricEnergy M).im = 0 := by - unfold complexEuclideanAntisymmetricEnergy change ((∑ i : Fin n, ∑ j : Fin n, (M (i, j) - M (j, i)) * @@ -5762,7 +5610,6 @@ private theorem complexEuclideanAntisymmetricEnergy_re_nonneg {n : ℕ} (M : EuclideanSpace ℂ (Fin n × Fin n)) : 0 ≤ (complexEuclideanAntisymmetricEnergy M).re := by - unfold complexEuclideanAntisymmetricEnergy change 0 ≤ ((∑ i : Fin n, ∑ j : Fin n, (M (i, j) - M (j, i)) * @@ -5795,7 +5642,6 @@ private theorem norm_complexEuclideanAntisymmetricEnergy private theorem continuous_complexEuclideanAntisymmetricEnergy {n : ℕ} : Continuous (complexEuclideanAntisymmetricEnergy (n := n)) := by - unfold complexEuclideanAntisymmetricEnergy apply Continuous.div_const apply continuous_finsetSum intro i _ @@ -5947,7 +5793,6 @@ private theorem angularWeightedTorus_fixedRadialCutoff_smul_error_integral_tends (sourceRadialCutoff m q : ℂ) • f q‖ ^ 2 ∂(angularWeightedTorusMeasure a)) atTop (nhds 0) := by - classical let S : Set (LogTorus n) := tsupport (sourceRadialCutoff (n := n) m) have hS : IsCompact S := @@ -6064,7 +5909,6 @@ private theorem sourceRadialCutoff_eventually_one_on_compact obtain ⟨N, hN⟩ := exists_nat_gt R filter_upwards [eventually_ge_atTop N] with m hm intro q hq - change growingBump m q.1 = 1 apply (growingBump m).one_of_mem_closedBall rw [Metric.mem_closedBall, dist_zero_right] change ‖q.1‖ ≤ (m : ℝ) + 1 @@ -6072,7 +5916,7 @@ private theorem sourceRadialCutoff_eventually_one_on_compact exact_mod_cast hm have hqR := hR q.1 ⟨q, hq, rfl⟩ change ‖q.1‖ ≤ R at hqR - linarith + linarith only [hN, hm, hNm, hqR] end RadialPhysicalResolventRootCutoffUniformExtraction @@ -6089,7 +5933,6 @@ private theorem angularEuclideanConjugation_sub angularEuclideanConjugation v - angularEuclideanConjugation w := by ext i - change conj (v i - w i) = conj (v i) - conj (w i) exact map_sub (starRingEnd ℂ) (v i) (w i) private theorem angularEuclideanConjugation_real_smul @@ -6165,7 +6008,6 @@ private theorem mollifiedRadialMatrixCommutator_sub_weak (angularGraphMollifiedPhysicalField W ℓ) q - W q) (sourceCutoffBarGradient m q) := by rw [sourceCutoffDerivativeCommutator_eq_outerProduct] - unfold angularWeakSourceCutoffDerivativeCommutator ext ij change (torusFormRepresentative @@ -6251,7 +6093,6 @@ private theorem angularMollifiedPhysicalAdjointDriftCommutator_periodic (angularMollifiedPhysicalAdjointDriftCommutator W k) (imaginaryShift d) := by intro z - unfold angularMollifiedPhysicalAdjointDriftCommutator apply Finset.sum_congr rfl intro j _ let b : LogSpace n → ℂ := fun x => @@ -6323,7 +6164,6 @@ private theorem continuous_angularMollifiedPhysicalAdjointDriftCommutator (ha2 : ContDiff ℝ 2 (angularCoverPotential a)) (W : angularWeightedFormL2 a) (k : ℕ) : Continuous (angularMollifiedPhysicalAdjointDriftCommutator W k) := by - unfold angularMollifiedPhysicalAdjointDriftCommutator apply continuous_finsetSum intro j _ apply continuous_normalizedCoverComplexDriftCommutator @@ -6342,7 +6182,6 @@ private theorem graphField_mollification_L2_tendsto_zero (angularGraphMollifiedPhysicalField W k) q - W q‖ ^ 2 ∂(angularWeightedTorusMeasure a)) atTop (nhds 0) := by - classical let μ : Measure (LogTorus n) := angularWeightedTorusMeasure a let : IsLocallyFiniteMeasure μ := angularWeightedTorusMeasure_isLocallyFinite ha @@ -6457,8 +6296,6 @@ private theorem angularMollifiedPhysicalAdjointDriftCommutator_compact_weighted_ MemLp (complexTorusCoverLift (fun _ : LogTorus n => (0 : ℂ))) 2 ((volume : Measure (LogSpace n)).restrict K) := by intro K _ - change MemLp (fun _ : LogSpace n => (0 : ℂ)) 2 - ((volume : Measure (LogSpace n)).restrict K) exact MeasureTheory.MemLp.zero have h := angularWeightedTorus_compact_scalarRepresentative_L2_tendsto_of_cover @@ -6599,7 +6436,7 @@ private theorem angularClosedMollifiedDrift_fixedRadialCutoff_L2_tendsto_zero (angularWeightedTorusMeasure a)) (by simpa only [smul_eq_mul, Pi.zero_apply, sub_zero, Complex.norm_mul, Complex.norm_real, Real.norm_eq_abs, mul_zero] using hc) - simpa only [smul_eq_mul, MemLp.toLp_zero] using ht + exact ht private theorem angularWeightedScalar_fixedRadialCutoff_mollification_integral_tendsto_zero {n : ℕ} {a : LogTorus n → ℝ} @@ -6916,7 +6753,7 @@ private theorem angularClosedMollifiedRadialMatrixCommutatorL2_sub_norm_sq_le (torusFormRepresentative V q - W q) (0 : EuclideanSpace ℂ (Fin n)) = 0 := by ext ij - simp only [complexEuclideanOuterProduct, PiLp.sub_apply, PiLp.zero_apply, mul_zero] + simp only [complexEuclideanOuterProduct, PiLp.zero_apply, mul_zero] rw [houter] simp only [norm_zero, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, zero_pow, Std.le_refl] change ‖M - R‖ ^ 2 ≤ @@ -7078,7 +6915,6 @@ private theorem angularWeakDolbeaultResolvent_weighted_cover_green (complexTorusCoverProjection n z)) (ψ z) ∂(coverWeightedMeasure (angularCoverPotential a))) := by - classical obtain ⟨s, χ, hχ, hχsupport, hpartition⟩ := exists_finite_complex_fundamental_test_partition hψcompact let ξ : LogSpace n → LogSpace n → ℂ := @@ -7096,7 +6932,6 @@ private theorem angularWeakDolbeaultResolvent_weighted_cover_green tsupport (ξ i) ⊆ coverFundamentalInterior (coverCenteredFundamentalBase i) := by intro i - change tsupport (fun z => (χ i z : ℂ) * ψ z) ⊆ _ refine tsupport_mul_subset_left.trans ?_ refine (closure_mono ?_).trans (hχsupport i) intro z hz @@ -7124,7 +6959,7 @@ private theorem angularWeakDolbeaultResolvent_weighted_cover_green (volume : Measure (LogSpace n)) := by intro i _ exact angularWeightedFormCover_density_inner_integrable - ha W ((hξ i).of_le (by norm_num)) (hξcompact i) + ha W ((hξ i).of_le (by decide)) (hξcompact i) have hintr : ∀ i ∈ s, Integrable (fun z : LogSpace n => complexCoverWeight (angularCoverPotential a) z * @@ -7141,7 +6976,7 @@ private theorem angularWeakDolbeaultResolvent_weighted_cover_green ext j simpa only [hψsum, WithLp.ofLp_sum, Finset.sum_apply] using (barPartialCoordinate_finset_sum_complex s ξ - (fun i _ => (hξ i).of_le (by norm_num)) j z) + (fun i _ => (hξ i).of_le (by decide)) j z) change (∫ z : LogSpace n, @inner ℂ (EuclideanSpace ℂ (Fin n)) _ @@ -7249,7 +7084,6 @@ private theorem contDiff_translatedDensityCancelledCoverKernel_three (ha3 : ContDiff ℝ 3 (angularCoverPotential a)) (k : ℕ) (x : LogSpace n) : ContDiff ℝ 3 (translatedDensityCancelledCoverKernel a k x) := by - unfold translatedDensityCancelledCoverKernel exact ((complexShrinkingBump (n := n) k).contDiff_normed.comp (contDiff_const.sub contDiff_id)).div ha3.neg.exp @@ -7299,7 +7133,7 @@ private theorem angularWeakDolbeaultResolvent_unweighted_translated_bump_green let d : LogSpace n → ℂ := complexCoverWeight (angularCoverPotential a) have ha1 : ContDiff ℝ 1 (angularCoverPotential a) := - ha3.of_le (by norm_num) + ha3.of_le (by decide) have hχ : ContDiff ℝ 3 χ := contDiff_translatedDensityCancelledCoverKernel_three ha3 k x have hψ : ContDiff ℝ 3 ψ := @@ -7307,8 +7141,7 @@ private theorem angularWeakDolbeaultResolvent_unweighted_translated_bump_green have hψcompact : HasCompactSupport ψ := by have ht := hasCompactSupport_translatedDensityCancelledCoverKernel a k x - simpa only [comp_def] using - ht.comp_left (g := Complex.ofReal) (by simp only [Complex.ofReal_zero]) + exact ht.comp_left (g := Complex.ofReal) (by simp only [Complex.ofReal_zero]) have hg := TorusHomogeneousResolventGreen.angularWeakDolbeaultResolvent_weighted_cover_green ha f hψ hψcompact @@ -7492,7 +7325,7 @@ private theorem angularWeakDolbeaultResolvent_closed_mollified_divergence (fun z : LogSpace n => (angularCoverPotential a z : ℂ)) y j have ha1 : ContDiff ℝ 1 (angularCoverPotential a) := - ha3.of_le (by norm_num) + ha3.of_le (by decide) have hκ : ContDiff ℝ 1 κ := (complexShrinkingBump (n := n) k).contDiff_normed have hη : ContDiff ℝ 1 η := @@ -7502,8 +7335,7 @@ private theorem angularWeakDolbeaultResolvent_closed_mollified_divergence (complexShrinkingBump (n := n) k).hasCompactSupport_normed (μ := (volume : Measure (LogSpace n))) have hηcompact : HasCompactSupport η := by - simpa only [comp_def] using - (translatedRealKernel_hasCompactSupport hκcompact x).comp_left + exact (translatedRealKernel_hasCompactSupport hκcompact x).comp_left (g := Complex.ofReal) (by simp only [Complex.ofReal_zero]) have hw (j : Fin n) : LocallyIntegrable (w j) (volume : Measure (LogSpace n)) := by @@ -7523,24 +7355,21 @@ private theorem angularWeakDolbeaultResolvent_closed_mollified_divergence have hconjcompact (j : Fin n) : HasCompactSupport (fun y : LogSpace n => conj (barPartialCoordinate η y j)) := by - simpa only [comp_def] using - (compactSupport_barPartialCoordinate hηcompact j).comp_left + exact (compactSupport_barPartialCoordinate hηcompact j).comp_left (g := (starRingEnd ℂ)) (map_zero _) have hi (j : Fin n) : Integrable (fun y : LogSpace n => w j y * conj (barPartialCoordinate η y j)) (volume : Measure (LogSpace n)) := by - simpa only [smul_eq_mul] using - (hw j).integrable_smul_right_of_hasCompactSupport + exact (hw j).integrable_smul_right_of_hasCompactSupport (hconjcont j) (hconjcompact j) have hbint (j : Fin n) : Integrable (fun y : LogSpace n => (b j y * w j y) * η y) (volume : Measure (LogSpace n)) := by - simpa only [smul_eq_mul] using - (hbw j).integrable_smul_right_of_hasCompactSupport + exact (hbw j).integrable_smul_right_of_hasCompactSupport hη.continuous hηcompact have hsplit (j : Fin n) : (∫ y : LogSpace n, @@ -7835,7 +7664,7 @@ private theorem angularSmoothCompactHessianRootVector_L2_norm_sq angularTorusFormCurvatureDensity a (cutoffPhysicalField m V) q ∂(angularWeightedTorusMeasure a)).re := by - simpa only [RCLike.re_to_complex] using (integral_re hcurv) + exact (integral_re hcurv) private theorem angularSmoothCompactHessianRootVector_norm_sq_le_adjoint_add_exterior {n : ℕ} {a : LogTorus n → ℝ} @@ -8154,7 +7983,7 @@ private theorem angularClosedMollifiedRadialAdjointCommutatorL2_sub_norm_sq_le angularWeakSourceCutoffAdjointCommutator W m q‖ ^ 2 ≤ 0 rw [TorusStrongWeightedCutoffAdjoint.angularClosedMollifiedRadialAdjointCommutator_sub_weak, hz] - simp only [CStarModule.inner_sub_right, inner_zero_left, sub_self, norm_zero, ne_eq, + simp only [inner_zero_left, norm_zero, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, zero_pow, Std.le_refl] change ‖M - R‖ ^ 2 ≤ A ^ 2 * @@ -8293,14 +8122,6 @@ private theorem angularPhysicalResolventRootCutoffField_aestronglyMeasurable AEStronglyMeasurable (angularPhysicalResolventRootCutoffField a W m) (angularWeightedTorusMeasure a) := by - change AEStronglyMeasurable - (fun q : LogTorus n => - (sourceRadialCutoff m q : ℂ) • - Matrix.toEuclideanLin - (angularMatrixSquareRoot - (angularTorusComplexHessianMatrix a) q) - (angularEuclideanConjugation (W q))) - (angularWeightedTorusMeasure a) apply (Complex.continuous_ofReal.comp (continuous_sourceRadialCutoff m)).aestronglyMeasurable.smul apply aestronglyMeasurable_complexEuclideanConjugatedMatrixAction @@ -8614,7 +8435,6 @@ private theorem angularClosedMollifiedRadialAdjoint_memLp angularGraphMollifiedPhysicalField_periodic W ℓ have hc : Continuous (angularTorusFormAdjoint a (cutoffPhysicalField m V)) := by - unfold angularTorusFormAdjoint apply continuous_finsetSum intro i _ exact continuous_angularTorusWeightedHolomorphicDerivative ha2 @@ -8642,8 +8462,7 @@ private theorem angularClosedMollifiedRadialAdjoint_memLp ‖angularTorusFormAdjoint a (cutoffPhysicalField m V) q‖ ^ 2 rw [Complex.mul_conj] - simp only [Complex.normSq_eq_norm_sq, pow_two, Complex.ofReal_mul, Complex.mul_re, - Complex.ofReal_re, Complex.ofReal_im, mul_zero, sub_zero] + simp only [Complex.normSq_eq_norm_sq, Complex.ofReal_re] exact (MeasureTheory.memLp_two_iff_integrable_sq_norm hc.aestronglyMeasurable).mpr hsquare @@ -8726,7 +8545,7 @@ private theorem angularClosedMollifiedRadialAdjointL2_eq_defect_drift_commutator ha W ℓ m := by dsimp only let ha2 : ContDiff ℝ 2 (angularCoverPotential a) := - ha3.of_le (by norm_num) + ha3.of_le (by decide) let W : angularWeightedFormL2 a := WithLp.snd (angularWeakDolbeaultResolvent a g : @@ -8842,7 +8661,7 @@ private theorem angularClosedMollifiedRadialAdjointL2_tendsto d W hB m)) := by dsimp only let ha2 : ContDiff ℝ 2 (angularCoverPotential a) := - ha3.of_le (by norm_num) + ha3.of_le (by decide) let W : angularWeightedFormL2 a := WithLp.snd (angularWeakDolbeaultResolvent a g : @@ -8989,7 +8808,7 @@ private theorem angularPhysicalWeakResolventRootCutoff_sq_le_adjoint_matrix (angularWeakSourceCutoffDerivativeCommutator W m)‖ ^ 2 := by dsimp only let ha2 : ContDiff ℝ 2 (angularCoverPotential a) := - ha3.of_le (by norm_num) + ha3.of_le (by decide) let W : angularWeightedFormL2 a := WithLp.snd (angularWeakDolbeaultResolvent a g : @@ -9078,7 +8897,7 @@ private theorem angularPhysicalResolventRootCutoffL2_norm_le_of_one_on_support · have hmq : sourceRadialCutoff m q = 0 := image_eq_zero_of_notMem_tsupport hq simp only [angularPhysicalResolventRootCutoffField, hmq, Complex.ofReal_zero, zero_smul, - norm_zero, Complex.coe_smul, one_mul, norm_nonneg]) + norm_zero, one_mul, norm_nonneg]) simpa only [one_mul] using hcomp private theorem eventually_angularPhysicalResolventRootCutoffL2_norm_le diff --git a/LeanPool/EhrhartVolumeInequality/Variation.lean b/LeanPool/EhrhartVolumeInequality/Variation.lean index 0d0f664123..b72f50c185 100644 --- a/LeanPool/EhrhartVolumeInequality/Variation.lean +++ b/LeanPool/EhrhartVolumeInequality/Variation.lean @@ -10,6 +10,9 @@ public import LeanPool.EhrhartVolumeInequality.Foundations public import Mathlib.Analysis.Complex.Exponential import all LeanPool.EhrhartVolumeInequality.Foundations import Mathlib.Analysis.Calculus.LineDeriv.IntegrationByParts +import Mathlib.Analysis.Calculus.FDeriv.Symmetric +import Mathlib.Analysis.Complex.MeanValue +import Mathlib.Analysis.Complex.Conformal import Mathlib.Analysis.Matrix.PosDef import Mathlib.MeasureTheory.Measure.FiniteMeasure import Mathlib.MeasureTheory.Measure.RegularityCompacts @@ -49,7 +52,6 @@ private theorem finiteEnergySourceGradient_eq_of_phase_maximizer phase p F.potential z ≤ phase p F.potential x) : SpatialBergmanFatouScheffe.actualGradient F.potential x = p := by - classical ext i let w : Space n := Pi.single i (1 : ℝ) have hline : HasDerivAt @@ -70,18 +72,11 @@ private theorem finiteEnergySourceGradient_eq_of_phase_maximizer ((fderiv ℝ F.potential x) w) 0 := by have hzero : x = (fun t : ℝ => x + t • w) 0 := by simp only [zero_smul, add_zero] - simpa only [comp_def] using - hx.hasFDerivAt.comp_hasDerivAt_of_eq 0 hline hzero + exact hx.hasFDerivAt.comp_hasDerivAt_of_eq 0 hline hzero have hphase : HasDerivAt (fun t : ℝ => phase p F.potential (x + t • w)) (SupportFunction.pairing p w - (fderiv ℝ F.potential x) w) 0 := by - change HasDerivAt - (fun t : ℝ => - SupportFunction.pairing p (x + t • w) - - F.potential (x + t • w)) - (SupportFunction.pairing p w - - (fderiv ℝ F.potential x) w) 0 exact hpair.fun_sub hpot have hlocal : IsLocalMax (fun t : ℝ => phase p F.potential (x + t • w)) 0 := @@ -92,14 +87,14 @@ private theorem finiteEnergySourceGradient_eq_of_phase_maximizer (fderiv ℝ F.potential x) w = 0 := by have hd := hphase.deriv rw [hlocal.deriv_eq_zero] at hd - linarith + exact (hd).symm have hpairing : SupportFunction.pairing (SpatialBergmanFatouScheffe.actualGradient F.potential x) w = SupportFunction.pairing p w := by rw [SpatialBergmanFatouScheffe.pairing_actualGradient_eq_fderiv] - linarith + exact (sub_eq_zero.mp hzero).symm simpa only [w, SupportFunction.pairing, Pi.single_apply, mul_ite, mul_one, mul_zero, Finset.sum_ite_eq', Finset.mem_univ, ↓reduceIte] using hpairing @@ -146,7 +141,6 @@ private theorem finiteEnergyTargetQuadraticApproximateMaximizer_mem (t : ℝ) : finiteEnergyTargetQuadraticApproximateMaximizer F v x t ∈ finiteEnergyFiniteTargetSet F := by - classical unfold finiteEnergyTargetQuadraticApproximateMaximizer split_ifs with ht · exact zero_mem_finiteEnergyFiniteTargetSet F @@ -164,7 +158,6 @@ private theorem finiteEnergyTargetQuadraticApproximateMaximizer_phase finiteEnergyTargetDualPhase F v t (finiteEnergyTargetQuadraticApproximateMaximizer F v x t) x := by - classical unfold finiteEnergyTargetQuadraticApproximateMaximizer simp only [dite_eq_right ht] exact @@ -206,8 +199,6 @@ private theorem finiteEnergyTargetQuadraticApproximateMaximizer_phase_defect _ = |t| * |v p| := abs_mul _ _ _ ≤ |t| * finiteEnergyTargetTestBound K v := mul_le_mul_of_nonneg_left htest (abs_nonneg t) - unfold finiteEnergyTargetDualPhase at happrox - unfold phase change SupportFunction.pairing p z - F.potential z - (SupportFunction.pairing p x - F.potential x) ≤ _ @@ -220,7 +211,7 @@ private theorem finiteEnergyTargetQuadraticApproximateMaximizer_phase_defect SupportFunction.pairing p x - (sourceExtendedBodyLegendre F.potential p).toReal - t * v p at happrox - linarith + linarith only [happrox, hfenchel, htbound, hclose] private theorem tendsto_finiteEnergyTargetQuadraticApproximateMaximizer {n : ℕ} {K : CenteredBody n} @@ -249,7 +240,6 @@ private theorem tendsto_finiteEnergyTargetQuadraticApproximateMaximizer add_zero] using (hcont.tendsto (0 : ℝ)).mono_left nhdsWithin_le_nhds have hne : ∀ᶠ t : ℝ in (𝓝[≠] (0 : ℝ)), t ≠ 0 := by - change ({0}ᶜ : Set ℝ) ∈ 𝓝[({0}ᶜ : Set ℝ)] (0 : ℝ) exact self_mem_nhdsWithin refine K.compact.tendsto_nhds_of_unique_mapClusterPt ?_ ?_ · exact Filter.Eventually.of_forall fun t => @@ -296,12 +286,10 @@ private theorem tendsto_finiteEnergyTargetQuadraticApproximateMaximizer have : l.NeBot := hcluster have hphasez : Continuous (fun p : Space n => phase p F.potential z) := by - unfold phase exact (SupportFunction.continuous_pairing_left z).fun_sub continuous_const have hphasex : Continuous (fun p : Space n => phase p F.potential x) := by - unfold phase exact (SupportFunction.continuous_pairing_left x).fun_sub continuous_const have hlimit : @@ -314,7 +302,7 @@ private theorem tendsto_finiteEnergyTargetQuadraticApproximateMaximizer inf_le_left have hle := le_of_tendsto hlimit (hmap.filter_mono inf_le_right) - linarith + linarith only [hgap, hle] private theorem finiteEnergyTargetGeodesic_gradient_support {n : ℕ} {K : CenteredBody n} @@ -345,7 +333,7 @@ private theorem finiteEnergyTargetGeodesic_gradient_support change (sourceExtendedBodyLegendre F.potential p).toReal = SupportFunction.pairing p x - F.potential x at hleg - linarith + linarith only [h, hleg] private theorem finiteEnergyTargetGeodesic_le_quadraticApproximate {n : ℕ} {K : CenteredBody n} @@ -366,7 +354,6 @@ private theorem finiteEnergyTargetGeodesic_le_quadraticApproximate finiteEnergyTargetQuadraticApproximateMaximizer_phase F v x ht have hfenchel := finiteEnergyFiniteTarget_fenchel F hp x - unfold finiteEnergyTargetDualPhase at happrox change SupportFunction.pairing p x - (sourceExtendedBodyLegendre F.potential p).toReal ≤ @@ -376,7 +363,7 @@ private theorem finiteEnergyTargetGeodesic_le_quadraticApproximate SupportFunction.pairing p x - (sourceExtendedBodyLegendre F.potential p).toReal - t * v p at happrox - linarith + linarith only [hfenchel, happrox] private theorem finiteEnergyTargetGeodesic_differenceQuotient_error {n : ℕ} {K : CenteredBody n} @@ -405,7 +392,7 @@ private theorem finiteEnergyTargetGeodesic_differenceQuotient_error have hnum : 0 ≤ finiteEnergyTargetGeodesic F v t x - F.potential x + t * v q := by - linarith + linarith only [hlower] have hterm : t * (v q - v p) ≤ |t| * |v p - v q| := by calc @@ -417,7 +404,7 @@ private theorem finiteEnergyTargetGeodesic_differenceQuotient_error t * v q ≤ |t| * (|v p - v q| + |t|) := by have habssq : |t| ^ 2 = t ^ 2 := sq_abs t - nlinarith + linarith only [habssq, hterm, hupper] have hfrac : (finiteEnergyTargetGeodesic F v t x - F.potential x) / t + v q = @@ -468,7 +455,6 @@ private theorem hasDerivAt_finiteEnergyTargetGeodesic tendsto_const_nhds simpa only [sub_self, abs_zero, add_zero] using (htarget.sub hconst).abs.add htzero have hne : ∀ᶠ t : ℝ in (𝓝[≠] (0 : ℝ)), t ≠ 0 := by - change ({0}ᶜ : Set ℝ) ∈ 𝓝[({0}ᶜ : Set ℝ)] (0 : ℝ) exact self_mem_nhdsWithin have herr : Tendsto @@ -502,7 +488,7 @@ theorem abs_exp_sub_one_le_mul_exp_abs (z : ℝ) : simp only [neg_add_cancel, Real.exp_zero] rw [hinverse] at hmul rw [abs_of_nonneg hfirst, abs_of_nonneg hz] - nlinarith + linarith only [hmul] · have hz' : z ≤ 0 := le_of_not_ge hz have he : 0 < Real.exp (-z) := Real.exp_pos (-z) have hfirst : Real.exp z - 1 ≤ 0 := by @@ -515,7 +501,7 @@ theorem abs_exp_sub_one_le_mul_exp_abs (z : ℝ) : rw [abs_of_nonpos hfirst, abs_of_nonpos hz'] have hnonneg : 0 ≤ -z := neg_nonneg.mpr hz' have hscaled := mul_le_mul_of_nonneg_left hunit hnonneg - nlinarith + linarith only [hscaled, htan] private def finiteEnergyTargetDensityDifferenceQuotient {n : ℕ} {K : CenteredBody n} @@ -639,7 +625,6 @@ private theorem hasDerivAt_finiteEnergyTargetGeodesicPartition (volume : Measure (Space n)) := (F.densityIntegrable.const_mul (Real.exp M)).const_mul M have hne : ∀ᶠ t : ℝ in (𝓝[≠] (0 : ℝ)), t ≠ 0 := by - change ({0}ᶜ : Set ℝ) ∈ 𝓝[({0}ᶜ : Set ℝ)] (0 : ℝ) exact self_mem_nhdsWithin have htlim : Tendsto (fun t : ℝ => |t|) (𝓝[≠] (0 : ℝ)) (𝓝 (0 : ℝ)) := by @@ -649,7 +634,7 @@ private theorem hasDerivAt_finiteEnergyTargetGeodesicPartition have hsmall : ∀ᶠ t : ℝ in (𝓝[≠] (0 : ℝ)), |t| ≤ 1 := by exact (htlim.eventually - (Iio_mem_nhds (by norm_num : (0 : ℝ) < 1))).mono + (Iio_mem_nhds (by exact zero_lt_one : (0 : ℝ) < 1))).mono (fun _ ht => le_of_lt ht) have hmeas : ∀ᶠ t : ℝ in (𝓝[≠] (0 : ℝ)), @@ -672,8 +657,7 @@ private theorem hasDerivAt_finiteEnergyTargetGeodesicPartition M * (Real.exp M * Real.exp (-F.potential x)) := by filter_upwards [hne, hsmall] with t ht htsmall filter_upwards with x - simpa only [Real.norm_eq_abs] using - finiteEnergyTargetDensityDifferenceQuotient_le + exact finiteEnergyTargetDensityDifferenceQuotient_le F v ht htsmall x have hlim : ∀ᵐ x : Space n @@ -813,11 +797,11 @@ private theorem exists_exact_optimizer_gradientPushforward_integral_eq (fun t : ℝ => Real.log (finiteEnergyTargetGeodesicPartition F v t) - t * A) 0 = 0 := by - simpa only using hlocal.deriv_eq_zero + exact hlocal.deriv_eq_zero change (∫ p : Space n, v p ∂(finiteEnergySourceGradientPushforward F)) = A - linarith + linarith only [hderiv, hzero] private theorem exists_exact_optimizer_gradientPushforward_eq {n : ℕ} (K : CenteredBody n) : @@ -913,12 +897,6 @@ private theorem volume_absolutelyContinuous_finiteEnergySourceGibbs (F : SourceFiniteEnergyPotential K) : (volume : Measure (Space n)) ≪ finiteEnergySourceGibbsProbability F := by - change - (volume : Measure (Space n)) ≪ - (volume : Measure (Space n)).withDensity - (fun x => ENNReal.ofReal - (WeightedPoincare.normalizedDensity - F.potential x)) apply MeasureTheory.withDensity_absolutelyContinuous' · exact ((Real.continuous_exp.comp F.potential.continuous.neg).div_const @@ -946,7 +924,6 @@ private theorem ae_finiteEnergySourceGradient_mem_interior_gibbs p ∈ interior K.carrier := by rw [htransport] exact ae_normalizedTargetBodyMeasure_mem_interior K - unfold finiteEnergySourceGradientPushforward at htarget exact (MeasureTheory.ae_map_iff (measurable_finiteEnergySourceGradient F).aemeasurable @@ -1011,7 +988,6 @@ private theorem exp_neg_momentNormalizedPotential 0 < finiteEnergySourcePartition F / normalizedVolume K.carrier := div_pos (finiteEnergySourcePartition_pos F) K.volume_pos - unfold momentNormalizedPotential calc Real.exp (-(F.potential x + @@ -1194,12 +1170,12 @@ private theorem convex_finiteEnergyFiniteTargetSet phase p F.potential x ≤ (sourceExtendedBodyLegendre F.potential p).toReal := by unfold phase - linarith + linarith only [hpfen] have hqbound : phase q F.potential x ≤ (sourceExtendedBodyLegendre F.potential q).toReal := by unfold phase - linarith + linarith only [hqfen] exact add_le_add (mul_le_mul_of_nonneg_left hpbound ha) (mul_le_mul_of_nonneg_left hqbound hb) @@ -1307,7 +1283,7 @@ private theorem finiteEnergySourcePhase_bddAbove_of_mem_interior rintro _ ⟨x, rfl⟩ have hfen := finiteEnergyFiniteTarget_fenchel F hfinite x unfold phase - linarith + linarith only [hfen] private theorem convexOn_finiteEnergySourceLegendre_interior {n : ℕ} {K : CenteredBody n} @@ -1467,7 +1443,7 @@ private theorem exists_finiteEnergySource_interior_phase_linear_coercivity pairing_signVector] at hphase have hnorm := SupportFunction.norm_le_sum_abs x have hscaled := mul_le_mul_of_nonneg_left hnorm hδ.le - linarith + linarith only [hscaled, hphase, hbound] private theorem integrable_monomialWeight_finiteEnergySource_of_mem_interior {n : ℕ} {K : CenteredBody n} @@ -1496,7 +1472,7 @@ private theorem integrable_monomialWeight_finiteEnergySource_of_mem_interior ← Real.exp_add] apply Real.exp_le_exp.mpr have h := hcoerc x - nlinarith + nlinarith only [hk, hδ, h] private theorem monomialWeight_momentNormalizedPotential_eq {n : ℕ} {K : CenteredBody n} @@ -1542,7 +1518,6 @@ private theorem monomialIntegral_momentNormalized_pos {u : Space n} (hu : u ∈ interior K.carrier) {k : ℝ} (hk : 0 < k) : 0 < monomialIntegral k u (momentNormalizedPotential F) := by - unfold monomialIntegral monomialWeight exact MeasureTheory.integral_exp_pos (integrable_monomialWeight_momentNormalized_of_mem_interior F htransport hu hk) @@ -1564,15 +1539,13 @@ private theorem radial_exp_integrable_momentNormalized have hfinite : ∀ᵐ x ∂(volume : Measure (Space n)), radialWeight k (momentNormalizedPotential F) x < ⊤ := Filter.Eventually.of_forall fun _ => ENNReal.ofReal_lt_top - unfold radialMeasure apply (MeasureTheory.integrable_withDensity_iff_integrable_smul' (radialWeight_measurable k hφ) hfinite).2 have hmono := integrable_monomialWeight_momentNormalized_of_mem_interior F htransport hu hkreal refine hmono.congr (Filter.Eventually.of_forall fun x => ?_) - simpa only [smul_eq_mul] using - (radialWeight_mul_exp_pairing k + exact (radialWeight_mul_exp_pairing k (momentNormalizedPotential F) m u hm x).symm private theorem torusMonomial_sq_integrable_momentNormalized @@ -1644,7 +1617,6 @@ private theorem momentIndexedMonomialLp_ae LogTorus n → ℂ) =ᵐ[ weightedTorusMeasure k (momentNormalizedPotential F)] torusMonomial (integerExponent K hk u) := by - unfold momentIndexedMonomialLp exact MeasureTheory.MemLp.coeFn_toLp _ private theorem momentMonomialNormSquared_pos @@ -1749,7 +1721,6 @@ private theorem momentNormalizedMonomialLp_orthonormal normalizedTargetBodyMeasure K) : Orthonormal ℂ (momentNormalizedMonomialLp K hk F htransport) := by - classical rw [orthonormal_iff_ite] intro u v unfold momentNormalizedMonomialLp @@ -1773,7 +1744,7 @@ private theorem momentNormalizedMonomialLp_orthonormal simp only [map_inv₀, Complex.conj_ofReal] field_simp exact_mod_cast hsquare.symm - · simp only [map_inv₀, Complex.conj_ofReal, huv, ↓reduceIte, mul_zero] + · simp only [huv, ↓reduceIte, mul_zero] private def momentMonomialSpan {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -1794,7 +1765,6 @@ private theorem finrank_momentMonomialSpan (momentMonomialSpan K hk F htransport) = bergmanDimension K k := by let := (monomialIndex_finite K hk).fintype - unfold momentMonomialSpan calc Module.finrank ℂ (Submodule.span ℂ @@ -1805,7 +1775,7 @@ private theorem finrank_momentMonomialSpan (momentNormalizedMonomialLp_orthonormal K hk F htransport).linearIndependent _ = bergmanDimension K k := by - simp only [fintypeCard_eq_ncard, bergmanDimension, Nat.card_eq_fintype_card] + simp only [bergmanDimension, Nat.card_eq_fintype_card] private def momentLatticeMonomialBasis {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -1882,7 +1852,6 @@ private theorem momentMonomialOrthonormalBasis_apply momentMonomialSpan K hk F htransport) : weightedHilbert k (momentNormalizedPotential F)) = momentNormalizedMonomialLp K hk F htransport u := by - classical let := (monomialIndex_finite K hk).fintype simpa only [momentMonomialOrthonormalBasis, OrthonormalBasis.reindex_apply, Equiv.symm_apply_apply, Basis.coe_toOrthonormalBasis] using @@ -1923,7 +1892,6 @@ private theorem momentHolomorphicRepresentative_latticeMonomialBasis (momentLatticeMonomialBasis K hk F htransport u) = normalizedHolomorphicMonomial K hk (momentNormalizedPotential F) u := by - classical simp only [momentHolomorphicRepresentative, LinearMap.coe_comp, LinearEquiv.coe_coe, comp_apply, Basis.repr_self, Finsupp.linearCombination_single, one_smul] @@ -1935,7 +1903,6 @@ private theorem differentiable_momentHolomorphicRepresentative (s : momentMonomialSpan K hk F htransport) : Differentiable ℂ (momentHolomorphicRepresentative K hk F htransport s) := by - classical unfold momentHolomorphicRepresentative rw [LinearMap.comp_apply, Finsupp.linearCombination_apply] unfold Finsupp.sum @@ -2088,7 +2055,6 @@ private theorem monomialNormSquared_momentNormalized_global_lower_bound apply setIntegral_mono_on hconst hweight.integrableOn Metric.isOpen_ball.measurableSet intro v hv - unfold monomialWeight apply Real.exp_le_exp.mpr have hphase := phase_lower_on_inv_nat_ball K hk hφ u x v hv @@ -2107,7 +2073,6 @@ private theorem monomialNormSquared_momentNormalized_global_lower_bound exact hscaled _ ≤ monomialNormSquared k (u : Space n) (momentNormalizedPotential F) := by - unfold monomialNormSquared monomialIntegral apply setIntegral_le_integral hweight exact Filter.Eventually.of_forall (fun _ => (Real.exp_pos _).le) @@ -2128,12 +2093,6 @@ private theorem normalizedMonomialDensity_momentNormalized_global_upper_bound have hlower := monomialNormSquared_momentNormalized_global_lower_bound K hk F htransport u x - change - Real.exp ((k : ℝ) * phase (u : Space n) - (momentNormalizedPotential F) x) / - monomialNormSquared k (u : Space n) - (momentNormalizedPotential F) ≤ - Real.exp (bodyPhaseSlopeBound K) * ((k : ℝ) / 2) ^ n apply (div_le_iff₀ hnormpos).mpr have hcancel : (Real.exp (bodyPhaseSlopeBound K) * ((k : ℝ) / 2) ^ n) * @@ -2204,8 +2163,8 @@ private theorem weightedDiagonalKernel_momentNormalized_global_upper_bound K hk F htransport u x _ = (bergmanDimension K k : ℝ) * (Real.exp (bodyPhaseSlopeBound K) * ((k : ℝ) / 2) ^ n) := by - simp only [Finset.sum_const, Finset.card_univ, fintypeCard_eq_ncard, nsmul_eq_mul, - bergmanDimension, Nat.card_eq_fintype_card] + simp only [Finset.sum_const, Finset.card_univ, nsmul_eq_mul, bergmanDimension, + Nat.card_eq_fintype_card] private theorem weightedDiagonalKernel_momentNormalized_pos {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -2332,7 +2291,6 @@ private theorem eventually_log_momentNormalized_diagonalKernel_div_le push_cast ring rw [hexpand] at hlog - unfold globalKernelLogError apply (div_le_iff₀ hkreal).mpr calc Real.log (diagonalKernel K k φ x) ≤ @@ -2394,7 +2352,6 @@ private theorem momentJetFiltration_antitone {j l : ℕ} (hjl : j ≤ l) : momentJetFiltration K hk F htransport p l ≤ momentJetFiltration K hk F htransport p j := by - classical intro s hs change momentHolomorphicJetMap K hk F htransport p l s = 0 at hs change momentHolomorphicJetMap K hk F htransport p j s = 0 @@ -2418,7 +2375,6 @@ private theorem exists_momentSimultaneousJetBasis ∀ (j : ℕ) (i : Fin (bergmanDimension K k)), b i ∈ momentJetFiltration K hk F htransport p j ∨ b i ∈ (momentJetFiltration K hk F htransport p j)ᗮ := by - classical let := finiteDimensional_momentMonomialSpan K hk F htransport obtain ⟨b, hb⟩ := exists_orthonormalBasis_simultaneously_adapted (momentJetFiltration K hk F htransport p) @@ -2544,18 +2500,6 @@ private theorem sum_momentTruncatedJetOrder_eq_sum_upper_card K hk F htransport p (j + 1)).card := by apply Finset.sum_congr rfl intro j _ - change - (∑ i : Fin (bergmanDimension K k), - if momentSimultaneousJetBasis - K hk F htransport p i ∈ - momentJetFiltration K hk F htransport p (j + 1) - then 1 else 0) = - (Finset.univ.filter - (fun i : Fin (bergmanDimension K k) => - momentSimultaneousJetBasis - K hk F htransport p i ∈ - momentJetFiltration - K hk F htransport p (j + 1))).card exact (Finset.card_filter (fun i : Fin (bergmanDimension K k) => momentSimultaneousJetBasis K hk F htransport p i ∈ @@ -2665,7 +2609,6 @@ private theorem exists_positive_momentHolomorphicBasisWeight (z : TorusCharacters.LogSpace n) : ∃ i, 0 < momentHolomorphicBasisWeight K hk F htransport b z i := by - classical by_contra! hzero have hvanish : ∀ i, momentHolomorphicRepresentative @@ -2686,7 +2629,6 @@ private theorem exists_positive_momentHolomorphicBasisWeight Finset.sum_const_zero] rw [momentHolomorphicRepresentative_latticeMonomialBasis] at hrep - unfold normalizedHolomorphicMonomial at hrep have hnorm := momentMonomialNormSquared_pos K hk F htransport u have hsqrt : @@ -2719,7 +2661,6 @@ private theorem differentiable_momentJointJetSection (i : Fin (bergmanDimension K k)) : Differentiable ℂ (momentJointJetSection K hk F htransport p N i) := by - unfold momentJointJetSection exact ((differentiable_momentHolomorphicRepresentative K hk F htransport @@ -2775,12 +2716,6 @@ private theorem momentJointJetSectionVector_norm_sq K hk F htransport p N q‖ ^ 2 = momentJointJetDiagonal K hk F htransport p N q := by rw [EuclideanSpace.norm_sq_eq] - change - (∑ i, ‖momentJointJetSection - K hk F htransport p N i q‖ ^ 2) = - ∑ i, Complex.normSq - (momentJointJetSection - K hk F htransport p N i q) exact Finset.sum_congr rfl (fun i _ => (Complex.normSq_eq_norm_sq _).symm) @@ -2794,7 +2729,6 @@ private theorem momentJointJetDiagonal_pos {τ : ℂ} (hτ : τ ≠ 0) : 0 < momentJointJetDiagonal K hk F htransport p N (z, τ) := by - classical obtain ⟨i, hi⟩ := exists_positive_momentHolomorphicBasisWeight K hk F htransport @@ -2809,7 +2743,6 @@ private theorem momentJointJetDiagonal_pos momentJointJetSection K hk F htransport p N i (z, τ) ≠ 0 := by exact mul_ne_zero hvalue (pow_ne_zero _ hτ) - unfold momentJointJetDiagonal apply lt_of_lt_of_le (Complex.normSq_pos.mpr hsection) have hnonneg : ∀ j ∈ (Finset.univ : Finset (Fin (bergmanDimension K k))), @@ -2950,7 +2883,6 @@ private theorem momentHolomorphicEvaluationRepresenter_inner K hk F htransport b z) s = momentHolomorphicRepresentative K hk F htransport s z := by - classical have hrepr := congrArg (fun v : momentMonomialSpan K hk F htransport => momentHolomorphicRepresentative @@ -2966,9 +2898,7 @@ private theorem momentHolomorphicEvaluationRepresenter_inner rw [momentHolomorphicEvaluationRepresenter, sum_inner] apply Finset.sum_congr rfl intro i _ - simp only [Submodule.coe_inner, inner_smul_left, - RingHomCompTriple.comp_apply, - RingHom.id_apply] + simp only [inner_smul_left, RingHomCompTriple.comp_apply, RingHom.id_apply] _ = ∑ i, (@inner ℂ _ _ (b i) s) * (momentHolomorphicRepresentative K hk F htransport (b i) z) := by @@ -2994,7 +2924,6 @@ private theorem sum_normSq_momentHolomorphicRepresentative_eq_representer_norm_s K hk F htransport (b i) z)) = ‖momentHolomorphicEvaluationRepresenter K hk F htransport b₀ z‖ ^ 2 := by - classical calc (∑ i, Complex.normSq (momentHolomorphicRepresentative @@ -3022,7 +2951,6 @@ private theorem sum_momentHolomorphicBasisWeight_eq_of_orthonormalBases K hk F htransport b z i) = ∑ i, momentHolomorphicBasisWeight K hk F htransport b' z i := by - unfold momentHolomorphicBasisWeight calc (∑ i, Complex.normSq (momentHolomorphicRepresentative @@ -3049,7 +2977,6 @@ private theorem sum_momentMonomialHolomorphicBasisWeight_eq_diagonalKernel z i) = diagonalKernel K k (momentNormalizedPotential F) (realLogCoordinate z) := by - classical let := (monomialIndex_finite K hk).fintype unfold momentHolomorphicBasisWeight calc @@ -3185,7 +3112,7 @@ private theorem eventually_normalizedMomentTruncatedJetOrderProfile_ge t - t ^ (n + 1) / (((n + 1).factorial : ℝ) * normalizedVolume K.carrier) := by - linarith + linarith only [hε] filter_upwards [eventually_ge_atTop (1 : ℕ), (tendsto_order.mp hlimit).1 _ hstrict] with k hk hlower exact le_trans (le_of_lt hlower) @@ -3249,7 +3176,6 @@ private theorem momentJointJetDiagonal_realTime K hk F htransport (momentSimultaneousJetBasis K hk F htransport p) z) (momentTruncatedJetOrder K hk F htransport p N) t := by - classical unfold momentJointJetDiagonal exponentialPartition exponentialMoment simp only [pow_zero, mul_one] @@ -3298,7 +3224,6 @@ private theorem convexOn_momentJetGeodesic (z : TorusCharacters.LogSpace n) : ConvexOn ℝ Set.univ (momentJetGeodesic K hk F htransport p N z) := by - unfold momentJetGeodesic apply convexOn_logarithmicPotential · exact momentHolomorphicBasisWeight_nonneg K hk F htransport @@ -3317,7 +3242,6 @@ private theorem momentJetGeodesic_deriv_nonneg (z : TorusCharacters.LogSpace n) (t : ℝ) : 0 ≤ deriv (momentJetGeodesic K hk F htransport p N z) t := by - unfold momentJetGeodesic apply logarithmicPotential_deriv_nonneg · exact momentHolomorphicBasisWeight_nonneg K hk F htransport @@ -3337,7 +3261,6 @@ private theorem momentJetGeodesic_deriv_le_cutoff deriv (momentJetGeodesic K hk F htransport p N z) t ≤ (N : ℝ) / (k : ℝ) := by - unfold momentJetGeodesic apply logarithmicPotential_deriv_le · exact momentHolomorphicBasisWeight_nonneg K hk F htransport @@ -3511,7 +3434,7 @@ private theorem exists_mem_ball_sub_lt_upperRegularization Filter.mem_of_superset (Metric.ball_mem_nhds x hε) h have hle := upperRegularization_le_of_eventually f x hev - linarith + linarith only [hδ, hle] private theorem exists_mem_ball_family_sub_lt_upperRegularization {X : Type*} [PseudoMetricSpace X] @@ -3789,8 +3712,7 @@ private theorem limsup_integral_sub_const_le_of_upperSemicontinuous have hshift : UpperSemicontinuous (fun z : X => u z - L) := by have hconst : UpperSemicontinuous (fun _ : X => -L) := (continuous_const : Continuous (fun _ : X => -L)).upperSemicontinuous - simpa only [sub_eq_add_neg] using - hu.add hconst + exact hu.add hconst have hmeas (m : ℕ) : Measurable (fun a : α => u (γ m a) - L) := by exact (hshift.comp (hγ m)).measurable @@ -3866,7 +3788,6 @@ private theorem momentJointJetDiagonal_eq_radial Real.log (Complex.normSq τ) / 2 = Real.log (Complex.normSq τ) by ring, Real.exp_log hsq] - unfold momentJointJetDiagonal apply Finset.sum_congr rfl intro i _ simp only [momentJointJetSection, @@ -3902,7 +3823,7 @@ private theorem momentPositiveJointGeodesic_eq_momentJetGeodesic (jointLogTime q) := by have hτ : q.val.2 ≠ 0 := Complex.normSq_pos.mp - (lt_trans (by norm_num : (0 : ℝ) < 1) q.property) + (lt_trans (by exact zero_lt_one : (0 : ℝ) < 1) q.property) unfold momentPositiveJointGeodesic jointLogTime rw [momentJointJetDiagonal_eq_radial K (Nat.zero_lt_succ k) F htransport p q.val.1 @@ -3926,7 +3847,6 @@ private theorem continuous_momentJointMajorant {n : ℕ} (K : CenteredBody n) (F : SourceFiniteEnergyPotential K) : Continuous (momentJointMajorant K F) := by - unfold momentJointMajorant exact (continuous_momentNormalizedPotential F).comp (continuous_jointRealCoordinate n) |>.add (continuous_const.mul (continuous_jointLogTime n)) @@ -3976,7 +3896,7 @@ private theorem momentPositiveJointGeodesic_le_majorant_add_one_of_tail momentJointMajorant K F q + 1 := by exact (Classical.choose_spec (Filter.eventually_atTop.mp (eventually_momentPositiveJointGeodesic_le_majorant_add - K F htransport p (by norm_num : (0 : ℝ) < 1)))) k hk q + K F htransport p (by exact zero_lt_one : (0 : ℝ) < 1)))) k hk q private def momentJointTailSup {n : ℕ} (K : CenteredBody n) @@ -4197,7 +4117,7 @@ private theorem momentZeroMonomialNorm_le_partition unfold monomialWeight pairing simp only [Pi.zero_apply, zero_mul, Finset.sum_const_zero, zero_sub] apply Real.exp_le_exp.mpr - nlinarith [F.nonnegative x] + nlinarith only [hkone, F.nonnegative x] have hshift : monomialNormSquared k (0 : Space n) (momentNormalizedPotential F) = @@ -4250,8 +4170,7 @@ private theorem momentJointGlobalLowerBound_le_zeroMonomial have hZ := finiteEnergySourcePartition_pos F have hnorm : 0 < monomialNormSquared k (0 : Space n) (momentNormalizedPotential F) := by - simpa only using - (momentMonomialNormSquared_pos K hk F htransport u₀) + exact (momentMonomialNormSquared_pos K hk F htransport u₀) have hbound := momentZeroMonomialNorm_le_partition K hk F htransport have hlog := Real.log_le_log hnorm hbound @@ -4264,11 +4183,11 @@ private theorem momentJointGlobalLowerBound_le_zeroMonomial Real.log (finiteEnergySourcePartition F) ≤ |Real.log (finiteEnergySourcePartition F)| := le_abs_self _ _ ≤ (k : ℝ) * |Real.log (finiteEnergySourcePartition F)| := by - nlinarith [abs_nonneg - (Real.log (finiteEnergySourcePartition F))] + nlinarith only [hkone, hZ, hnorm, hbound, hlog, abs_nonneg (Real.log + (finiteEnergySourcePartition F))] unfold momentJointGlobalLowerBound apply (le_div_iff₀ hkreal).mpr - nlinarith + linarith only [hlog, habs] private theorem inv_momentZeroMonomialNorm_le_diagonalKernel {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -4279,7 +4198,6 @@ private theorem inv_momentZeroMonomialNorm_le_diagonalKernel (monomialNormSquared k (0 : Space n) (momentNormalizedPotential F))⁻¹ ≤ diagonalKernel K k (momentNormalizedPotential F) x := by - classical let := (monomialIndex_finite K hk).fintype let u₀ : monomialIndex K k := ⟨0, zero_mem_monomialIndex K hk⟩ @@ -4316,8 +4234,7 @@ private theorem momentJointGlobalLowerBound_le_log_diagonalKernel ⟨0, zero_mem_monomialIndex K hk⟩ have hnorm : 0 < monomialNormSquared k (0 : Space n) (momentNormalizedPotential F) := by - simpa only using - (momentMonomialNormSquared_pos K hk F htransport u₀) + exact (momentMonomialNormSquared_pos K hk F htransport u₀) have hbound := inv_momentZeroMonomialNorm_le_diagonalKernel K hk F htransport x have hlog := Real.log_le_log (inv_pos.mpr hnorm) hbound @@ -4344,7 +4261,6 @@ private theorem monotone_momentJetGeodesic K hk F htransport p N z) := by apply monotone_of_deriv_nonneg · intro t - unfold momentJetGeodesic exact (hasDerivAt_logarithmicPotential (momentHolomorphicBasisWeight K hk F htransport @@ -4412,7 +4328,6 @@ private theorem momentJointGlobalLowerBound_le_tailSup K F htransport p (momentJointTailStart K F htransport p + r) q _ ≤ momentJointTailSup K F htransport p r q := by - unfold momentJointTailSup apply le_csSup (momentJointTailSup_range_bddAbove K F htransport p r q) @@ -4633,7 +4548,6 @@ private def euclideanGradient {n : ℕ} private theorem continuous_euclideanGradient {n : ℕ} {f : Space n → ℝ} (hf : ContDiff ℝ 1 f) : Continuous (euclideanGradient f) := by - unfold euclideanGradient apply (PiLp.continuous_toLp 2 (fun _ : Fin n => ℝ)).comp exact continuous_pi (fun i => (hf.continuous_fderiv (by simp only [ne_eq, one_ne_zero, not_false_eq_true])).clm_apply @@ -4674,7 +4588,7 @@ private theorem growingBump_eventually_one {n : ℕ} (x : Space n) : rw [Metric.mem_closedBall, dist_zero_right] change ‖x‖ ≤ (k : ℝ) + 1 have hNk : (N : ℝ) ≤ (k : ℝ) := by exact_mod_cast hk - linarith + linarith only [hN, hk, hNk] private theorem growingBump_fderiv {n : ℕ} (k : ℕ) (x : Space n) : fderiv ℝ (fun y : Space n => growingBump k y) x = @@ -4839,7 +4753,6 @@ private theorem angularSlice_sq_integrable_ae {n k : ℕ} (WeightedTorusHilbert.weightedTorusMeasure k φ) := (MeasureTheory.memLp_two_iff_integrable_sq_norm (MeasureTheory.Lp.aestronglyMeasurable f)).mp (MeasureTheory.Lp.memLp f) - unfold WeightedTorusHilbert.weightedTorusMeasure at hsquare exact hsquare.prod_right_ae private theorem angularSlice_memLp_ae {n k : ℕ} @@ -4857,7 +4770,6 @@ private theorem angularSlice_memLp_ae {n k : ℕ} f (x, θ)) (WeightedTorusHilbert.angularMeasure n) := by have hf := (MeasureTheory.Lp.aestronglyMeasurable f) - unfold WeightedTorusHilbert.weightedTorusMeasure at hf exact hf.prodMk_left filter_upwards [hmeas, angularSlice_sq_integrable_ae φ f] with x hx hsquare @@ -4882,7 +4794,6 @@ private theorem angularFourierCoefficient_aestronglyMeasurable {n k : ℕ} ((WeightedTorusHilbert.radialMeasure k φ).prod (WeightedTorusHilbert.angularMeasure n)) := by have hf := (MeasureTheory.Lp.aestronglyMeasurable f) - unfold WeightedTorusHilbert.weightedTorusMeasure at hf exact hchar.comp_snd.mul hf have hcoeff := hprod.integral_prod_right' refine hcoeff.congr (Filter.Eventually.of_forall fun x => ?_) @@ -4912,10 +4823,9 @@ private theorem angularFourierCoefficient_sq_le_slice_energy_ae {n k : ℕ} UnitAddTorus.mFourierCoeff (fun θ : TorusCharacters.AngularTorus n => fx θ) m = angularFourierCoefficient φ f m x := by - unfold angularFourierCoefficient UnitAddTorus.mFourierCoeff apply MeasureTheory.integral_congr_ae filter_upwards [hfx] with θ hθ - simp only [hθ, smul_eq_mul] + simp only [hθ] have henergy : (∫ θ : TorusCharacters.AngularTorus n, ‖fx θ‖ ^ 2 ∂(WeightedTorusHilbert.angularMeasure n)) = @@ -4945,7 +4855,6 @@ private theorem angularFourierCoefficient_sq_integrable {n k : ℕ} (WeightedTorusHilbert.weightedTorusMeasure k φ) := (MeasureTheory.memLp_two_iff_integrable_sq_norm (MeasureTheory.Lp.aestronglyMeasurable f)).mp (MeasureTheory.Lp.memLp f) - unfold WeightedTorusHilbert.weightedTorusMeasure at hsquare have hmajor := hsquare.integral_prod_left refine hmajor.mono' ((angularFourierCoefficient_aestronglyMeasurable φ f m).norm.pow 2) ?_ @@ -4965,9 +4874,6 @@ private theorem differentiable_coordinateHolomorphicSlice {n : ℕ} (ζ : TorusCharacters.LogSpace n) (i : Fin n) : Differentiable ℂ (coordinateHolomorphicSlice F ζ i) := by - unfold coordinateHolomorphicSlice - change Differentiable ℂ - (F ∘ fun w : ℂ => fun j => if j = i then w else ζ j) apply hF.comp apply differentiable_pi.mpr intro j @@ -5038,8 +4944,7 @@ private theorem mFourierCoefficient_torusMonomial {n : ℕ} conj (UnitAddTorus.mFourier m θ) * UnitAddTorus.mFourier q θ) = if m = q then (1 : ℂ) else 0 := by - simpa only [WeightedTorusHilbert.angularMeasure] using - WeightedTorusHilbert.angularCharacter_inner m q + exact WeightedTorusHilbert.angularCharacter_inner m q rw [hinner] split_ifs <;> simp @@ -5119,7 +5024,7 @@ private theorem forbidden_angularFourierCoefficient_constant_eq_zero φ x ≤ SupportFunction.supportFunction K.carrier x + C := by intro x have h := (abs_le.mp (hbounded x)).2 - linarith + linarith only [h] have hkreal : 0 < (k : ℝ) := by exact_mod_cast hk exact MonomialDivergence.not_integrable_monomialWeight_of_centeredBody_not_mem_interior K hu hupper hkreal hmono @@ -5161,10 +5066,9 @@ private theorem weightedHilbert_eq_zero_of_fourier UnitAddTorus.mFourierCoeff (fun θ : TorusCharacters.AngularTorus n => fx θ) m = angularFourierCoefficient φ f m x := by - unfold angularFourierCoefficient UnitAddTorus.mFourierCoeff apply MeasureTheory.integral_congr_ae filter_upwards [hfx] with θ hθ - simp only [hθ, smul_eq_mul] + simp only [hθ] _ = 0 := hx m have hparse := UnitAddTorus.hasSum_sq_mFourierCoeff fx have hsumzero : @@ -5478,7 +5382,7 @@ private theorem angularBoxIntegral_eq_of_coordinate_slice ∫ t : ℝ in Set.Ioc (0 : ℝ) 1, h (i.insertNth t y) simpa only [← intervalIntegral.integral_of_le - (by norm_num : (0 : ℝ) ≤ 1)] using hslice y + (by exact zero_le_one : (0 : ℝ) ≤ 1)] using hslice y _ = ∫ z : ℝ × (Fin n → ℝ), h (i.insertNth z.1 z.2) ∂((μ i).prod ν) := (MeasureTheory.integral_prod_symm _ hhi).symm @@ -5558,7 +5462,6 @@ private theorem twistedAngularIntegral_coordinate_update {n : ℕ} else logarithmicPoint x (i.insertNth 0 y) j) := by apply intervalIntegral.integral_congr intro t ht - unfold twistedAngularIntegrand apply congrArg (globalLaurentTwist F m) simpa only [Complex.ofReal_div, Complex.ofReal_ofNat] using @@ -5574,7 +5477,6 @@ private theorem twistedAngularIntegral_coordinate_update {n : ℕ} (Function.update x i a) (i.insertNth t y) := by apply intervalIntegral.integral_congr intro t ht - unfold twistedAngularIntegrand apply congrArg (globalLaurentTwist F m) symm simpa only [Complex.ofReal_div, @@ -5607,7 +5509,6 @@ private theorem twistedAngularAverage_eq_zero {n : ℕ} (m : Fin n → ℤ) (x : Space n) : twistedAngularAverage F m x = twistedAngularAverage F m 0 := by - classical have hreset : ∀ s : Finset (Fin n), twistedAngularAverage F m x = twistedAngularAverage F m @@ -5703,7 +5604,6 @@ private theorem fourier_times_cover_eq_radial_twist {n : ℕ} private theorem measurableSet_angularBox (n : ℕ) : MeasurableSet (angularBox n) := by - unfold angularBox exact MeasurableSet.univ_pi fun _ => measurableSet_Ioc private theorem angularBox_eq_setOf (n : ℕ) : @@ -5824,7 +5724,7 @@ private theorem angularFourierCoefficient_of_holomorphic_representative_ae UnitAddTorus.mFourierCoeff apply MeasureTheory.integral_congr_ae filter_upwards [hx] with θ hθ - simp only [hθ, smul_eq_mul] + simp only [hθ] _ = UnitAddTorus.mFourierCoeff (coverRepresentative F 0) m * WeightedTorusHilbert.radialCharacter m x := @@ -5884,7 +5784,6 @@ private theorem angularFourierCoefficient_sub_ae HolomorphicLaurentFourierCompletenessBridge.angularFourierCoefficient φ g m x := by have hsub := MeasureTheory.Lp.coeFn_sub f g - unfold WeightedTorusHilbert.weightedTorusMeasure at hsub have hslices : ∀ᵐ x ∂(WeightedTorusHilbert.radialMeasure k φ), (fun θ : TorusCharacters.AngularTorus n => @@ -5933,13 +5832,12 @@ private theorem indexedMonomial_finite_sum_ae ∑ u ∈ s, c u * WeightedTorusHilbert.torusMonomial (WeightedTorusHilbert.integerExponent K hk u) z) := by - classical induction s using Finset.induction_on with | empty => filter_upwards [MeasureTheory.Lp.coeFn_zero ℂ 2 (WeightedTorusHilbert.weightedTorusMeasure k φ)] with z hz - simpa only [Finset.sum_empty, Pi.zero_apply] using hz + exact hz | @insert u s hu ih => have hadd := MeasureTheory.Lp.coeFn_add @@ -6068,8 +5966,7 @@ private theorem angularFourierCoefficient_indexed_finite_sum_ae (volume : Measure (TorusCharacters.AngularTorus n)) := by intro u hu - simpa only [WeightedTorusHilbert.angularMeasure] using - angularCharacter_mul_slice_integrable + exact angularCharacter_mul_slice_integrable ((torusMonomial_angular_memLp (WeightedTorusHilbert.integerExponent K hk u) x).const_mul (c u)) m @@ -6193,7 +6090,6 @@ private theorem finiteLaurentCoefficient_sum_eq else 0)) = laurentCoefficient F m * WeightedTorusHilbert.radialCharacter m x := by - classical by_cases hinside : scaledExponent k m ∈ interior K.carrier · let u : LatticeAsymptotics.monomialIndex K k := ⟨scaledExponent k m, @@ -6333,7 +6229,6 @@ private theorem holomorphic_representative_eq_finite_laurent_sum rw [finiteLaurentCoefficient_sum_eq K hk hφ hbounded f hF hperiod hrepresentative m x] exact sub_self _ - change f = g exact sub_eq_zero.mp hzero end JointHolomorphicLaurentFourierCompatibility @@ -6423,7 +6318,6 @@ private theorem differentiableAt_complex_of_barPartialCoordinate_eq_zero Complex.I • D (Pi.single j (1 : ℂ)) := by intro j have hz := hbar j - unfold barPartialCoordinate at hz have hnum : (fderiv ℝ F z) (Pi.single j (1 : ℂ)) + Complex.I * (fderiv ℝ F z) @@ -6456,8 +6350,6 @@ private theorem translatedRealKernel_contDiff {n : ℕ} (x : TorusCharacters.LogSpace n) : ContDiff ℝ 1 (fun t : TorusCharacters.LogSpace n => κ (x - t)) := by - change ContDiff ℝ 1 - (κ ∘ (fun t : TorusCharacters.LogSpace n => x - t)) exact hκ.comp (contDiff_const.sub contDiff_id) private theorem translatedRealKernel_hasCompactSupport {n : ℕ} @@ -7026,8 +6918,7 @@ private theorem complexReal_convolution_periodic {n : ℕ} abel _ = ∫ t : TorusCharacters.LogSpace n, H t ∂(volume : Measure (TorusCharacters.LogSpace n)) := by - simpa only [sub_eq_add_neg] using - (integral_add_right_eq_self H (-d)) + exact (integral_add_right_eq_self H (-d)) _ = _ := rfl private theorem normalizedShrinkingConvolution_periodic {n : ℕ} @@ -7062,7 +6953,6 @@ private theorem continuous_coverBarPartialTest {n : ℕ} {ψ : TorusCharacters.LogSpace n → ℝ} (hψ : ContDiff ℝ 1 ψ) (j : Fin n) : Continuous (coverBarPartialTest ψ j) := by - unfold coverBarPartialTest exact (Complex.continuous_ofReal.comp ((hψ.continuous_fderiv (by simp only [ne_eq, one_ne_zero, not_false_eq_true])).clm_apply @@ -7076,7 +6966,6 @@ private theorem compactSupport_coverBarPartialTest {n : ℕ} {ψ : TorusCharacters.LogSpace n → ℝ} (hψ : HasCompactSupport ψ) (j : Fin n) : HasCompactSupport (coverBarPartialTest ψ j) := by - unfold coverBarPartialTest exact (compactSupport_complexOfReal (hψ.fderiv_apply ℝ (Pi.single j (1 : ℂ)))).add @@ -7087,8 +6976,6 @@ private theorem continuous_coverAdjointScalarTest {n : ℕ} {ψ : TorusCharacters.LogSpace n → ℝ} (hψ : ContDiff ℝ 1 ψ) (j : Fin n) : Continuous (coverAdjointScalarTest ψ j) := by - change Continuous - (fun z => (starRingEnd ℂ) (coverBarPartialTest ψ j z)) exact Complex.continuous_conj.comp (continuous_coverBarPartialTest hψ j) @@ -7104,7 +6991,6 @@ private theorem continuous_coverAdjointVectorTest {n : ℕ} {ψ : TorusCharacters.LogSpace n → ℝ} (hψ : Continuous ψ) (j : Fin n) : Continuous (coverAdjointVectorTest ψ j) := by - classical have hs : Continuous (fun z : TorusCharacters.LogSpace n => (2 : ℂ) * (ψ z : ℂ)) := @@ -7121,10 +7007,6 @@ private theorem continuous_coverAdjointVectorTest {n : ℕ} (continuous_const : Continuous (fun _ : TorusCharacters.LogSpace n => (0 : ℂ))) - change Continuous - (fun z : TorusCharacters.LogSpace n => - WithLp.toLp 2 - (Pi.single j ((2 : ℂ) * (ψ z : ℂ)) : Fin n → ℂ)) exact (PiLp.continuous_toLp 2 (fun _ : Fin n => ℂ)).comp hpi end DolbeaultGraphDistributionBridge @@ -7155,7 +7037,6 @@ private theorem coverWeightedMeasure_isLocallyFinite {n : ℕ} {a : TorusCharacters.LogSpace n → ℝ} (ha : Continuous a) : IsLocallyFiniteMeasure (coverWeightedMeasure a) := by - unfold coverWeightedMeasure exact IsLocallyFiniteMeasure.withDensity_ofReal (continuous_coverWeight ha) @@ -7302,7 +7183,6 @@ private theorem weighted_complex_coordinate_integration_by_parts_volume contDiff_complexCoverWeight ha have hW : ContDiff ℝ 1 W := hG.mul hweight have hWcompact : HasCompactSupport W := by - change HasCompactSupport (G * complexCoverWeight a) exact hGcompact.mul_right have hFd : Continuous (fun z : E => (fderiv ℝ F z) v) := (hF.continuous_fderiv (by simp only [ne_eq, one_ne_zero, not_false_eq_true])).clm_apply @@ -7334,8 +7214,7 @@ private theorem weighted_complex_coordinate_integration_by_parts_volume (fderiv ℝ (G * complexCoverWeight a) z) v = G z * (fderiv ℝ (complexCoverWeight a) z) v + complexCoverWeight a z * (fderiv ℝ G z) v := by - simpa only [_root_.add_apply, - _root_.smul_apply, smul_eq_mul] using hp + exact hp change (fderiv ℝ (fun y => G y * complexCoverWeight a y) z) v = _ change @@ -7453,7 +7332,6 @@ private theorem continuous_weightedRealDerivative {n : ℕ} (hF : ContDiff ℝ 1 F) (v : TorusCharacters.LogSpace n) : Continuous (weightedRealDerivative a F v) := by - unfold weightedRealDerivative exact ((hF.continuous_fderiv (by simp only [ne_eq, one_ne_zero, not_false_eq_true])).clm_apply continuous_const).sub (hF.continuous.mul @@ -7467,7 +7345,6 @@ private theorem compactSupport_weightedRealDerivative {n : ℕ} (hF : HasCompactSupport F) (v : TorusCharacters.LogSpace n) : HasCompactSupport (weightedRealDerivative a F v) := by - unfold weightedRealDerivative exact (hF.fderiv_apply ℝ v).sub hF.mul_right private theorem integrable_fderiv_mul_coverWeightedMeasure {n : ℕ} @@ -7557,7 +7434,6 @@ private theorem weighted_barPartial_integration_by_parts Complex.I * ((fderiv ℝ F z) v₁ * G z)) / 2 ∂μ := by apply MeasureTheory.integral_congr_ae filter_upwards [] with z - unfold barPartialCoordinate change (((fderiv ℝ F z) v₀ + Complex.I * (fderiv ℝ F z) v₁) / 2) * G z = _ @@ -7624,7 +7500,7 @@ private theorem fderiv_conj {n : ℕ} calc (fderiv ℝ (Complex.conjCLE ∘ F) z) v = (Complex.conjCLE : ℂ →L[ℝ] ℂ) ((fderiv ℝ F z) v) := by - simpa only [ContinuousLinearMap.comp_apply] using hp + exact hp _ = conj ((fderiv ℝ F z) v) := rfl private theorem barPartial_conj_eq_conj_holomorphic {n : ℕ} @@ -7723,7 +7599,7 @@ private theorem contDiff_directional {n : ℕ} (fun p : TorusCharacters.LogSpace n × TorusCharacters.LogSpace n => (fderiv ℝ F p.1) p.2) := - hF.contDiff_fderiv_apply (by norm_num) + hF.contDiff_fderiv_apply (by rfl) have hp : ContDiff ℝ 1 (fun z : TorusCharacters.LogSpace n => (z, v)) := contDiff_id.prodMk contDiff_const @@ -7738,7 +7614,7 @@ private theorem fderiv_directional {n : ℕ} (fderiv ℝ F ζ) v) z) w = ((fderiv ℝ (fderiv ℝ F) z) w) v := by have hd : DifferentiableAt ℝ (fderiv ℝ F) z := - (hF.fderiv_right (m := 1) (by norm_num)).differentiable + (hF.fderiv_right (m := 1) (by rfl)).differentiable (by simp only [ne_eq, one_ne_zero, not_false_eq_true]) |>.differentiableAt have he := fderiv_clm_apply hd (differentiableAt_const (c := v)) @@ -7767,7 +7643,6 @@ private theorem contDiff_holomorphicCoordinate {n : ℕ} (hF : ContDiff ℝ 2 F) (j : Fin n) : ContDiff ℝ 1 (fun z => holomorphicCoordinate F z j) := by - unfold holomorphicCoordinate exact ((contDiff_directional hF (Pi.single j (1 : ℂ))).sub (contDiff_const.mul (contDiff_directional hF (Pi.single j Complex.I)))).div_const 2 @@ -7777,7 +7652,6 @@ private theorem contDiff_barPartialCoordinate {n : ℕ} (hF : ContDiff ℝ 2 F) (j : Fin n) : ContDiff ℝ 1 (fun z => barPartialCoordinate F z j) := by - unfold barPartialCoordinate exact ((contDiff_directional hF (Pi.single j (1 : ℂ))).add (contDiff_const.mul (contDiff_directional hF (Pi.single j Complex.I)))).div_const 2 @@ -7791,9 +7665,8 @@ private theorem contDiff_weightedHolomorphicDerivative {n : ℕ} ContDiff ℝ 1 (weightedHolomorphicDerivative a F j) := by have hac : ContDiff ℝ 2 (fun z => (a z : ℂ)) := Complex.ofRealCLM.contDiff.comp ha - unfold weightedHolomorphicDerivative exact (contDiff_holomorphicCoordinate hF j).sub - ((hF.of_le (by norm_num)).mul + ((hF.of_le (by decide)).mul (contDiff_holomorphicCoordinate hac j)) private theorem compactSupport_barPartialCoordinate {n : ℕ} @@ -7813,11 +7686,6 @@ private theorem compactSupport_barPartialCoordinate {n : ℕ} have hp := hs.mul_right (f' := fun _ : TorusCharacters.LogSpace n => ((2 : ℂ)⁻¹)) - unfold barPartialCoordinate - change HasCompactSupport - ((fun z : TorusCharacters.LogSpace n => - (fderiv ℝ F z) v₀ + Complex.I * (fderiv ℝ F z) v₁) * - fun _ : TorusCharacters.LogSpace n => (2 : ℂ)⁻¹) exact hp private theorem fderiv_holomorphicCoordinate {n : ℕ} @@ -7975,8 +7843,8 @@ private theorem barPartial_weightedHolomorphicDerivative_commutator weightedHolomorphicDerivative a (fun w => barPartialCoordinate F w j) i z - F z * complexHessian a z i j := by - have haone : ContDiff ℝ 1 a := ha.of_le (by norm_num) - have hfone : ContDiff ℝ 1 F := hF.of_le (by norm_num) + have haone : ContDiff ℝ 1 a := ha.of_le (by decide) + have hfone : ContDiff ℝ 1 F := hF.of_le (by decide) have hac : ContDiff ℝ 2 (fun w => (a w : ℂ)) := Complex.ofRealCLM.contDiff.comp ha have hholF := contDiff_holomorphicCoordinate hF i @@ -7997,7 +7865,6 @@ private theorem continuous_barPartialCoordinate {n : ℕ} (hF : ContDiff ℝ 1 F) (j : Fin n) : Continuous (fun z => barPartialCoordinate F z j) := by - unfold barPartialCoordinate exact (((hF.continuous_fderiv (by simp only [ne_eq, one_ne_zero, not_false_eq_true])).clm_apply continuous_const).add (continuous_const.mul @@ -8009,7 +7876,6 @@ private theorem continuous_holomorphicCoordinate {n : ℕ} (hF : ContDiff ℝ 1 F) (j : Fin n) : Continuous (fun z => holomorphicCoordinate F z j) := by - unfold holomorphicCoordinate exact (((hF.continuous_fderiv (by simp only [ne_eq, one_ne_zero, not_false_eq_true])).clm_apply continuous_const).sub (continuous_const.mul @@ -8025,7 +7891,6 @@ private theorem continuous_weightedHolomorphicDerivative {n : ℕ} Continuous (weightedHolomorphicDerivative a F j) := by have hac : ContDiff ℝ 1 (fun z => (a z : ℂ)) := Complex.ofRealCLM.contDiff.comp ha - unfold weightedHolomorphicDerivative exact (continuous_holomorphicCoordinate hF j).sub (hF.continuous.mul (continuous_holomorphicCoordinate hac j)) @@ -8169,7 +8034,7 @@ private theorem complex_schur_energy_le {n : ℕ} (0 : Fin 1) (0 : Fin 1)).re at hreal rw [complexSchurColumn_mul_apply] at hreal change 0 ≤ c - complexSchurEnergyDensity A b at hreal - linarith + exact sub_nonneg.mp hreal private def sourceCoverComplexHessian {n : ℕ} (a : TorusCharacters.LogSpace n → ℝ) @@ -8395,10 +8260,9 @@ private def sourceLocalPolynomialConstant {n : ℕ} private theorem sourceLocalPolynomialConstant_pos {n : ℕ} (K : CenteredBody n) : 0 < sourceLocalPolynomialConstant K := by - unfold sourceLocalPolynomialConstant exact mul_pos (GlobalBergmanKernelBound.globalKernelPolynomialConstant_pos K) - (by have hv := K.volume_pos; linarith) + (by have hv := K.volume_pos; linarith only [hv]) private def sourceLocalKernelLogError {n : ℕ} (K : CenteredBody n) (k : ℕ) : ℝ := @@ -8443,7 +8307,6 @@ private def sourceLocalJointRegion {n : ℕ} private theorem isOpen_sourceLocalJointRegion {n : ℕ} (p : TorusCharacters.LogSpace n) (R : ℝ) : IsOpen (sourceLocalJointRegion p R) := by - unfold sourceLocalJointRegion have htime : Continuous (jointLogTime (n := n)) := continuous_jointLogTime n exact isOpen_lt (by fun_prop) (by fun_prop) @@ -8564,26 +8427,23 @@ private def sourceLocalBoxRadius (R t : ℝ) : ℝ := private theorem sourceLocalBoxScale_pos {R : ℝ} (hR : 0 < R) : 0 < sourceLocalBoxScale R := by - unfold sourceLocalBoxScale - exact lt_min (by norm_num) + exact lt_min (by exact zero_lt_one) (div_pos hR (by positivity)) private theorem sourceLocalBoxRadius_pos {R : ℝ} (hR : 0 < R) (t : ℝ) : 0 < sourceLocalBoxRadius R t := by - unfold sourceLocalBoxRadius exact mul_pos (sourceLocalBoxScale_pos hR) (Real.exp_pos _) private theorem sourceLocalBoxRadius_le_one {R t : ℝ} (hR : 0 < R) (ht : 0 ≤ t) : sourceLocalBoxRadius R t ≤ 1 := by - unfold sourceLocalBoxRadius calc sourceLocalBoxScale R * Real.exp (-t / 2) ≤ sourceLocalBoxScale R * 1 := by gcongr · exact (sourceLocalBoxScale_pos hR).le - · exact Real.exp_le_one_iff.mpr (by linarith) + · exact Real.exp_le_one_iff.mpr (by linarith only [ht]) _ ≤ 1 := by simp only [sourceLocalBoxScale, mul_one, inf_le_left] @@ -8685,7 +8545,6 @@ private def sourceLocalBallVolumeConstant (n : ℕ) (R : ℝ) : ℝ := private theorem sourceLocalBallVolumeConstant_pos (n : ℕ) {R : ℝ} (hR : 0 < R) : 0 < sourceLocalBallVolumeConstant n R := by - unfold sourceLocalBallVolumeConstant exact mul_pos (pow_pos (by norm_num) n) (pow_pos (sourceLocalBoxScale_pos hR) (2 * n)) @@ -8741,8 +8600,8 @@ private def sourceJointCoverTime {n : ℕ} private theorem continuous_sourceJointCoverTime (n : ℕ) : Continuous (sourceJointCoverTime (n := n)) := by - unfold sourceJointCoverTime - fun_prop + exact Continuous.const_mul (Continuous.comp' Complex.continuous_re (Continuous.snd + continuous_id')) 2 private theorem normSq_mul_of_norm_one (u : ℂ) (hu : ‖u‖ = 1) (z : ℂ) : @@ -8813,13 +8672,12 @@ private theorem normSq_sourceJointCoverExp {n : ℕ} (q : SourceJointComplexCover n) : Complex.normSq (sourceJointCoverExp q).2 = Real.exp (sourceJointCoverTime q) := by - unfold sourceJointCoverExp sourceJointCoverTime calc Complex.normSq (Complex.exp q.2) = Real.exp q.2.re ^ 2 := by rw [Complex.normSq_eq_norm_sq, Complex.norm_exp] _ = Real.exp (2 * q.2.re) := by - simpa only [Nat.cast_ofNat] using (Real.exp_nat_mul q.2.re 2).symm + exact (Real.exp_nat_mul q.2.re 2).symm private def sourceJointExpPositiveLift {n : ℕ} (q : SourceJointComplexCover n) @@ -8842,8 +8700,8 @@ private theorem sourceJointAuxiliaryPhase_norm (η : ℂ) : ‖Complex.exp ((η.im : ℂ) * Complex.I)‖ = 1 := by rw [Complex.norm_exp] - simp only [Complex.mul_re, Complex.ofReal_re, Complex.I_re, mul_zero, Complex.ofReal_im, - Complex.I_im, mul_one, sub_self, Real.exp_zero] + simp only [Complex.mul_re, Complex.I_re, mul_zero, Complex.ofReal_im, Complex.I_im, mul_one, + sub_self, Real.exp_zero] private theorem sourceJointExpPositiveLift_eq_phase_radialLift {n : ℕ} @@ -8876,8 +8734,7 @@ private theorem sourceJointCircleAverage_eq_setAverage rw [MeasureTheory.setAverage_eq, Real.circleAverage_def, intervalIntegral.integral_of_le Real.two_pi_pos.le] simp only [measureReal_def, Real.volume_Ioc, sub_zero, Nat.ofNat_nonneg, ENNReal.ofReal_mul, - ENNReal.ofReal_ofNat, ENNReal.toReal_mul, ENNReal.toReal_ofNat, Real.pi_pos.le, - ENNReal.toReal_ofReal, mul_inv_rev] + ENNReal.toReal_mul, Real.pi_pos.le, ENNReal.toReal_ofReal] private theorem sourceJointSpatialLine_circleAverage {n : ℕ} (q v : SourceJointComplexCover n) (R : ℝ) : @@ -8984,11 +8841,10 @@ private theorem momentHolomorphicRepresentative_spatial_periodic Function.Periodic (momentHolomorphicRepresentative K hk F htransport s) (imaginaryShift m) := by - classical intro z - simp only [momentHolomorphicRepresentative, LinearMap.coe_comp, LinearEquiv.coe_coe, comp_apply, + simp only [momentHolomorphicRepresentative, LinearMap.coe_comp, comp_apply, Finsupp.linearCombination_apply, Finsupp.sum, Finset.sum_apply, Pi.smul_apply, - normalizedHolomorphicMonomial, torusCharacter_imaginaryShift, smul_eq_mul] + normalizedHolomorphicMonomial, torusCharacter_imaginaryShift] private theorem momentJointJetSection_spatial_periodic {n k : ℕ} (K : CenteredBody n) (hk : 0 < k) @@ -9027,7 +8883,6 @@ private theorem momentJointJetDiagonal_spatial_periodic momentJointJetDiagonal K hk F htransport p N (z, τ)) (imaginaryShift m) := by intro z - unfold momentJointJetDiagonal apply Finset.sum_congr rfl intro i _ congr 1