Harmonic analysis for spherical codes #
Harmonic polynomial, Gegenbauer, Perron, and adjacent-channel constructions.
The sphere used in the metric-code argument.
Equations
- MetricCodes.Sphere n = { x : MetricCodes.Ambient n // ‖x‖ = 1 }
Instances For
The spherical inner used in the metric-code argument.
Equations
- MetricCodes.sphericalInner x y = inner ℝ ↑x ↑y
Instances For
The predicate asserting spherical code.
Equations
- MetricCodes.IsSphericalCode s C = ∀ ⦃x : MetricCodes.Sphere n⦄, x ∈ C → ∀ ⦃y : MetricCodes.Sphere n⦄, y ∈ C → x ≠ y → MetricCodes.sphericalInner x y ≤ s
Instances For
Data encoding the spherical code construction.
The points component.
- inner_le : IsSphericalCode s self.points
Instances For
The spherical code number used in the metric-code argument.
Equations
- MetricCodes.sphericalCodeNumber n s = ⨆ (C : MetricCodes.SphericalCode n s), ↑C.points.card
Instances For
Data encoding the spherical code construction.
The points component.
Instances For
The polynomial laplacian used in the spherical-code argument.
Equations
- SpherePacking.polynomialLaplacian n = ∑ i : Fin n, ↑(MvPolynomial.pderiv i) ∘ₗ ↑(MvPolynomial.pderiv i)
Instances For
The harmonic homogeneous submodule used in the spherical-code argument.
Equations
Instances For
The normalized used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
- SpherePacking.Gegenbauer.normalized n 0 = 1
- SpherePacking.Gegenbauer.normalized n 1 = Polynomial.X
Instances For
The harmonic dimension used in the spherical-code argument.
Equations
Instances For
The fibre dimension used in the spherical-code argument.
Equations
Instances For
The channel dimension used in the spherical-code argument.
Equations
Instances For
The jacobi coefficient used in the spherical-code argument.
Equations
Instances For
The directional derivative used in the spherical-code argument.
Equations
- SpherePacking.directionalDerivative n x = ∑ i : Fin n, x.ofLp i • ↑(MvPolynomial.pderiv i)
Instances For
The axis polynomial used in the spherical-code argument.
Equations
- SpherePacking.axisPolynomial n x = ∑ i : Fin n, MvPolynomial.C (x.ofLp i) * MvPolynomial.X i
Instances For
The harmonic directional derivative used in the spherical-code argument.
Equations
Instances For
The tangent harmonic submodule used in the spherical-code argument.
Equations
Instances For
The multi index used in the spherical-code argument.
Equations
- SpherePacking.Fischer.MultiIndex n = (Fin n →₀ ℕ)
Instances For
The degree indices used in the spherical-code argument.
Equations
Instances For
The degree index used in the spherical-code argument.
Equations
Instances For
The homogeneous used in the spherical-code argument.
Equations
Instances For
The coefficient space used in the spherical-code argument.
Equations
Instances For
The multi factorial used in the spherical-code argument.
Equations
- SpherePacking.Fischer.multiFactorial a = ∏ i : Fin n, ↑(a i).factorial
Instances For
The polynomial inner used in the spherical-code argument.
Equations
- SpherePacking.Fischer.polynomialInner n p q = p.coeff.sum fun (a : Fin n →₀ ℕ) (c : ℝ) => SpherePacking.Fischer.multiFactorial a * c * MvPolynomial.coeff a q
Instances For
The coefficient embedding used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The homogeneous inner used in the spherical-code argument.
Equations
- SpherePacking.Fischer.homogeneousInner n m p q = inner ℝ ((SpherePacking.Fischer.coefficientEmbedding n m) p) ((SpherePacking.Fischer.coefficientEmbedding n m) q)
Instances For
The homogeneous inner core used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The harmonic inner used in the spherical-code argument.
Equations
Instances For
The embedding inner core used in the spherical-code argument.
Equations
Instances For
Equations
- SpherePacking.Fischer.instHarmonicFischerInner n m = { inner := SpherePacking.Fischer.harmonicInner n m }
Equations
- SpherePacking.Fischer.instTangentFischerInner n m x = { inner := SpherePacking.Fischer.tangentInner✝ n m x }
The radial polynomial used in the spherical-code argument.
Equations
- SpherePacking.radialPolynomial n = ∑ i : Fin n, MvPolynomial.X i ^ 2
Instances For
The harmonic axis parameter used in the spherical-code argument.
Equations
- SpherePacking.harmonicAxisParameter n k = ↑n + 2 * ↑k
Instances For
The solid harmonic axis lift used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
- SpherePacking.solidHarmonicAxisLift n k x 0 = LinearMap.id
- SpherePacking.solidHarmonicAxisLift n k x 1 = LinearMap.mulLeft ℝ (MvPolynomial.C (SpherePacking.harmonicAxisParameter n k - 2) * SpherePacking.axisPolynomial n x)
Instances For
The harmonic axis projection operator used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The harmonic axis lift used in the spherical-code argument.
Equations
Instances For
The boundary degree used in the spherical-code argument.
Equations
- MetricCodes.Spherical.boundaryDegree s a = (√(1 + 4 * MetricCodes.Spherical.boundaryQuadratic s a) - 1) / 2
Instances For
The harmonic dimension quotient used in the spherical-code argument.
Equations
- SpherePacking.harmonicDimensionQuotient a b n = ↑(SpherePacking.Gegenbauer.harmonicDimension (n + 1) ⌊a * ↑n⌋₊) / ↑(SpherePacking.Gegenbauer.harmonicDimension (n - 1) ⌊b * ↑n⌋₊)
Instances For
The truncated harmonic dimension used in the spherical-code argument.
Equations
- SpherePacking.truncatedHarmonicDimension n k L = ∑ i ∈ Finset.Icc k L, SpherePacking.Gegenbauer.harmonicDimension n i
Instances For
The truncated dimension quotient used in the spherical-code argument.
Equations
- SpherePacking.truncatedDimensionQuotient a b n = ↑(SpherePacking.truncatedHarmonicDimension n ⌊b * ↑n⌋₊ ⌊a * ↑n⌋₊) / ↑(SpherePacking.Gegenbauer.fibreDimension n ⌊b * ↑n⌋₊)
Instances For
The index used in the spherical-code argument.
Equations
- SpherePacking.Jacobi.Index k L = Fin (L - k + 1)
Instances For
The space used in the spherical-code argument.
Equations
Instances For
The matrix used in the spherical-code argument.
Equations
Instances For
The operator used in the spherical-code argument.
Equations
Instances For
The continuous operator used in the spherical-code argument.
Equations
Instances For
The rayleigh used in the spherical-code argument.
Equations
Instances For
The top eigenvalue used in the spherical-code argument.
Equations
- SpherePacking.Jacobi.topEigenvalue n k L = ⨆ (x : { x : SpherePacking.Jacobi.Space k L // x ≠ 0 }), SpherePacking.Jacobi.rayleigh n k L ↑x
Instances For
The coordinate abs used in the spherical-code argument.
Equations
Instances For
The normalized coefficient used in the spherical-code argument.
Equations
Instances For
The terminal vector used in the spherical-code argument.
Equations
- SpherePacking.SpectralAsymptotics.terminalVector k L m = WithLp.toLp 2 fun (p : Fin (L - k + 1)) => SpherePacking.SpectralAsymptotics.terminalIndicator (L - k) m ↑p
Instances For
Data encoding the finite gram certificate construction.
- weights : Jacobi.Space k L
The weights component.
- weights_eigenvector : (Jacobi.operator n k L) self.weights = Jacobi.topEigenvalue n k L • self.weights
- fibreAmplitudes : Jacobi.Space k L
The fibre amplitudes component.
- fibreAmplitudes_eq (i : Jacobi.Index k L) : self.fibreAmplitudes.ofLp i = SpherePacking.finiteGramFibreAmplitude✝ n k L self.weights i
- degreeFibre (i : Jacobi.Index k L) : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗᵢ[ℝ] SpherePacking.CertificateDegreeAmbient✝ n k L i
The degree fibre component.
- degreeInjection (i : Jacobi.Index k L) : SpherePacking.CertificateDegreeAmbient✝ n k L i →ₗᵢ[ℝ] SpherePacking.CertificateAmbient✝ n k L
The degree injection component.
- degree_orthogonal (i j : Jacobi.Index k L) : i ≠ j → ∀ (u : SpherePacking.CertificateDegreeAmbient✝ n k L i) (v : SpherePacking.CertificateDegreeAmbient✝ n k L j), inner ℝ ((self.degreeInjection i) u) ((self.degreeInjection j) v) = 0
- fibre : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗᵢ[ℝ] SpherePacking.CertificateAmbient✝ n k L
The fibre component.
- fibre_eq_weighted_degree (x : Euclidean n) (v : SpherePacking.CertificateFibre✝ n k) : (self.fibre x) v = ∑ i : Jacobi.Index k L, self.fibreAmplitudes.ofLp i • (self.degreeInjection i) ((self.degreeFibre i x) v)
- coordinateDimension : ℕ
The coordinate dimension component.
- lift : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean self.coordinateDimension
The lift component.
- bulk : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean self.coordinateDimension
The bulk component.
- boundary : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean self.coordinateDimension
The boundary component.
- remainder : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean self.coordinateDimension
The remainder component.
- spectralCoefficient : ℝ
The spectral coefficient component.
- lift_kernel (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, SpherePacking.finiteHilbertSchmidtKernel✝ (SpherePacking.certificateFibreBasis✝ n k) self.lift x y = inner ℝ x y * SpherePacking.isometricPackingKernel✝ self.fibre x y
- bulk_kernel (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, SpherePacking.finiteHilbertSchmidtKernel✝ (SpherePacking.certificateFibreBasis✝ n k) self.bulk x y = SpherePacking.isometricPackingKernel✝ self.fibre x y
- bulk_boundary_orthogonal (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, ∀ (i : Fin (Gegenbauer.fibreDimension n k)), inner ℝ ((self.bulk x) ((SpherePacking.certificateFibreBasis✝ n k) i)) ((self.boundary y) ((SpherePacking.certificateFibreBasis✝ n k) i)) = 0
- bulk_remainder_orthogonal (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, ∀ (i : Fin (Gegenbauer.fibreDimension n k)), inner ℝ ((self.bulk x) ((SpherePacking.certificateFibreBasis✝ n k) i)) ((self.remainder y) ((SpherePacking.certificateFibreBasis✝ n k) i)) = 0
- boundary_remainder_orthogonal (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, ∀ (i : Fin (Gegenbauer.fibreDimension n k)), inner ℝ ((self.boundary x) ((SpherePacking.certificateFibreBasis✝ n k) i)) ((self.remainder y) ((SpherePacking.certificateFibreBasis✝ n k) i)) = 0
Instances For
Data encoding the harmonic coordinate construction.
- coordinateDimension : ℕ
The coordinate dimension component.
- lift : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean self.coordinateDimension
The lift component.
- bulk : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean self.coordinateDimension
The bulk component.
- boundary : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean self.coordinateDimension
The boundary component.
- remainder : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean self.coordinateDimension
The remainder component.
- spectralCoefficient : ℝ
The spectral coefficient component.
- lift_kernel (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, SpherePacking.finiteHilbertSchmidtKernel✝ (SpherePacking.certificateFibreBasis✝ n k) self.lift x y = inner ℝ x y * SpherePacking.isometricPackingKernel✝ fibre x y
- bulk_kernel (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, SpherePacking.finiteHilbertSchmidtKernel✝ (SpherePacking.certificateFibreBasis✝ n k) self.bulk x y = SpherePacking.isometricPackingKernel✝ fibre x y
- bulk_boundary_orthogonal (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, ∀ (i : Fin (Gegenbauer.fibreDimension n k)), inner ℝ ((self.bulk x) ((SpherePacking.certificateFibreBasis✝ n k) i)) ((self.boundary y) ((SpherePacking.certificateFibreBasis✝ n k) i)) = 0
- bulk_remainder_orthogonal (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, ∀ (i : Fin (Gegenbauer.fibreDimension n k)), inner ℝ ((self.bulk x) ((SpherePacking.certificateFibreBasis✝ n k) i)) ((self.remainder y) ((SpherePacking.certificateFibreBasis✝ n k) i)) = 0
- boundary_remainder_orthogonal (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, ∀ (i : Fin (Gegenbauer.fibreDimension n k)), inner ℝ ((self.boundary x) ((SpherePacking.certificateFibreBasis✝ n k) i)) ((self.remainder y) ((SpherePacking.certificateFibreBasis✝ n k) i)) = 0
Instances For
The solid harmonic axis fischer scale used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The harmonic degree fibre used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Data encoding the source adjacent channel construction.
- channel (target source : Jacobi.Index k L) : SpherePacking.CertificateDegreeAmbient✝ n k L source →ₗ[ℝ] SpherePacking.HarmonicCoordinateChannels.HarmonicDegreeRowChannelSpace✝ n k L target
The channel component.
- channel_inner (target source : Jacobi.Index k L) : SpherePacking.SourceJacobiWeights.sourceChannelCoefficient✝ n k L source target ≠ 0 → ∀ (u v : SpherePacking.CertificateDegreeAmbient✝ n k L source), inner ℝ ((self.channel target source) u) ((self.channel target source) v) = inner ℝ u v
- channel_zero (target source : Jacobi.Index k L) : SpherePacking.SourceJacobiWeights.sourceChannelCoefficient✝ n k L source target = 0 → self.channel target source = 0
- channel_orthogonal (target source₁ source₂ : Jacobi.Index k L) : source₁ ≠ source₂ → ∀ (u : SpherePacking.CertificateDegreeAmbient✝ n k L source₁) (v : SpherePacking.CertificateDegreeAmbient✝ n k L source₂), inner ℝ ((self.channel target source₁) u) ((self.channel target source₂) v) = 0
- axis_projection (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ (target source : Jacobi.Index k L) (u : SpherePacking.CertificateFibre✝ n k), (LinearMap.adjoint (self.channel target source)) ((SpherePacking.HarmonicCoordinateChannels.harmonicDegreeAxisTensor✝ n k L target x) ((degreeFibre target x) u)) = √(SpherePacking.SourceJacobiWeights.sourceChannelCoefficient✝ n k L source target) • (degreeFibre source x) u
Instances For
The harmonic axis tensor used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Data encoding the source spectral row construction.
- row : SpherePacking.CertificateAmbient✝ n k L →ₗᵢ[ℝ] SpherePacking.HarmonicCoordinateChannels.HarmonicRowChannelSpace✝ n k L
The row component.
- spectralCoefficient : ℝ
The spectral coefficient component.
- adjoint_axis_fibre (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ (u : SpherePacking.CertificateFibre✝ n k), (LinearMap.adjoint self.row.toLinearMap) ((harmonicAxisTensor n k L x) ((fibre x) u)) = self.spectralCoefficient • (fibre x) u
Instances For
The source spectral row data of adjacent used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Data encoding the spectral channel remainder construction.
- spectralCoefficient : ℝ
The spectral coefficient component.
- boundary : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean (SpherePacking.HarmonicCoordinateChannels.projectionChannelDimension✝ n k L)
The boundary component.
- remainder : Euclidean n → SpherePacking.CertificateFibre✝ n k →ₗ[ℝ] Euclidean (SpherePacking.HarmonicCoordinateChannels.projectionChannelDimension✝ n k L)
The remainder component.
- decomposition (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → SpherePacking.HarmonicCoordinateChannels.liftCoordinateMap✝ hn fibre x = self.spectralCoefficient • SpherePacking.HarmonicCoordinateChannels.bulkCoordinateMap✝ hn embedding fibre x + 1 • self.boundary x + self.remainder x
- bulk_boundary_orthogonal (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, ∀ (i : Fin (Gegenbauer.fibreDimension n k)), inner ℝ ((SpherePacking.HarmonicCoordinateChannels.bulkCoordinateMap✝ hn embedding fibre x) ((SpherePacking.certificateFibreBasis✝ n k) i)) ((self.boundary y) ((SpherePacking.certificateFibreBasis✝ n k) i)) = 0
- bulk_remainder_orthogonal (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, ∀ (i : Fin (Gegenbauer.fibreDimension n k)), inner ℝ ((SpherePacking.HarmonicCoordinateChannels.bulkCoordinateMap✝ hn embedding fibre x) ((SpherePacking.certificateFibreBasis✝ n k) i)) ((self.remainder y) ((SpherePacking.certificateFibreBasis✝ n k) i)) = 0
- boundary_remainder_orthogonal (x : Euclidean n) : x ∈ SpherePacking.unitSphere✝ n → ∀ y ∈ SpherePacking.unitSphere✝ n, ∀ (i : Fin (Gegenbauer.fibreDimension n k)), inner ℝ ((self.boundary x) ((SpherePacking.certificateFibreBasis✝ n k) i)) ((self.remainder y) ((SpherePacking.certificateFibreBasis✝ n k) i)) = 0
Instances For
The normalized channel isometry used in the spherical-code argument.
Equations
- SpherePacking.HarmonicCoordinateOperators.normalizedChannelIsometry A c hc h = ((√c)⁻¹ • A).isometryOfInner ⋯
Instances For
The harmonic axis tensor used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The actual source adjacent channel data used in the spherical-code argument.
Equations
- One or more equations did not get rendered due to their size.