Documentation

LeanPool.PhaseRetrieval.Constant.Internal.BlockDecomposition

BlockDecomposition #

Def 5.1: Frequency blocks #

I_ℓ = { n : ℕ | ℓ² ≤ n ∧ n < (ℓ+1)² } for ℓ ≥ 1. Note: |I_ℓ| = 2ℓ + 1.

The frequency block I_ℓ = [ℓ², (ℓ+1)² − 1].

Equations
Instances For

    Def 5.2: Block polynomials #

    U_ℓ(z) = ∑_{n ∈ I_ℓ, n ≤ D} a_n z^n.

    def FockSPR.blockPoly {D : } (a : Fin D) ( : ) (z : ) :

    The block polynomial: restriction of U to frequencies in I_ℓ.

    Equations
    Instances For

      Def 5.3: Maximum block index #

      Λ = ⌊√D⌋.

      Λ = Nat.sqrt D — the index of the last complete block.

      Equations
      Instances For

        Def 5.4: Local and remainder pieces #

        For fixed M ≥ 1 and j : ℕ: V_j = ∑_{ℓ : max(1,j−M) ≤ ℓ ≤ min(Λ,j+M)} U_ℓ R_j = U − V_j

        def FockSPR.localPoly {D : } (a : Fin D) (M j : ) (z : ) :

        The local polynomial around annulus j, collecting blocks within distance M.

        Equations
        Instances For
          def FockSPR.remainderPoly {D : } (a : Fin D) (M j : ) (z : ) :

          The remainder polynomial: R_j = U − V_j.

          Equations
          Instances For

            Helper lemmas #

            theorem FockSPR.freqBlock_card ( : ) :
            (freqBlock ).card = 2 * + 1

            The cardinality of freqBlock is 2ℓ + 1.

            Fourier analysis helpers #

            Theorem 5.1: Blocks are frequency-disjoint #

            For ℓ₁ ≠ ℓ₂ with ℓ₁, ℓ₂ ≥ 1: I_{ℓ₁} ∩ I_{ℓ₂} = ∅.

            theorem FockSPR.blocks_disjoint {ℓ₁ ℓ₂ : } (h₁ : 1 ℓ₁) (h₂ : 1 ℓ₂) (hne : ℓ₁ ℓ₂) :
            Disjoint (freqBlock ℓ₁) (freqBlock ℓ₂)

            Theorem 5.2: Blocks partition {1, …, D} #

            Every n ∈ {1, …, D} belongs to exactly one block I_ℓ.

            theorem FockSPR.blocks_cover (D n : ) (hn : 1 n) (_hnD : n D) :
            ∃ ( : ), 1 n freqBlock

            Theorem 5.3: Fock norm decomposes #

            fockNormSq(U) = ∑_{ℓ=1}^Λ fockNormSq(U_ℓ) (up to tail).

            Proof: The blocks are frequency-disjoint, and fockNormSq is a sum over frequencies.

            theorem FockSPR.fockNorm_decomposes {D : } (a : Fin D) :
            fockNormSq a = Finset.Icc 1 (maxBlockIndex D), k : Fin D, if k + 1 freqBlock then a k ^ 2 * (k + 1).factorial else 0

            Theorem 5.4: Orthogonality on circles #

            For ℓ₁ ≠ ℓ₂, r ≥ 0: ∫ U_{ℓ₁}(r e^{it}) * conj(U_{ℓ₂}(r e^{it})) d(haar)(t) = 0

            Proof: Disjoint frequency supports ⟹ orthogonality of exponentials.

            theorem FockSPR.blocks_orthogonal_circle {D : } (a : Fin D) {ℓ₁ ℓ₂ : } (_h₁ : 1 ℓ₁) (_h₂ : 1 ℓ₂) (hne : ℓ₁ ℓ₂) (r : ) (_hr : 0 r) :
            (t : AddCircle T), blockPoly a ℓ₁ (r * (fourier 1) t) * (starRingEnd ) (blockPoly a ℓ₂ (r * (fourier 1) t)) AddCircle.haarAddCircle = 0

            Theorem 5.5: Frequency support of V_j #

            For j ≥ M + 1:

            For 0 ≤ j ≤ M:

            theorem FockSPR.freq_support_localPoly_lower {M j : } (_hM : 1 M) (hj : M + 1 j) (n : ) :
            n freqBlock Finset.Icc (max 1 (j - M)) (j + M) → (j - M) ^ 2 n

            Frequencies of V_j are all ≥ (j−M)² when j ≥ M + 1.

            theorem FockSPR.freq_count_localPoly {M j : } (hM : 1 M) (hj : M + 1 j) :
            Finset.Icc (max 1 (j - M)) (j + M), (freqBlock ).card = (2 * M + 1) * (2 * j + 1)

            The number of frequencies in V_j for j ≥ M + 1 is (2M+1)(2j+1).

            Theorem 5.6: Monomial peak localization #

            For n ∈ I_ℓ with ℓ ≥ 1: ℓ < √(n + 1/2) < ℓ + 1 i.e., r_n = √(n + 1/2) ∈ (ℓ, ℓ+1).

            Proof: n ≥ ℓ² gives n + 1/2 > ℓ², so √(n+1/2) > ℓ. n < (ℓ+1)² gives n + 1/2 < (ℓ+1)², so √(n+1/2) < ℓ+1.

            theorem FockSPR.monomial_peak_localization {n : } (hℓ : 1 ) (hn : n freqBlock ) :
            < (n + 1 / 2) (n + 1 / 2) < + 1