OAI/LinearAlgebra/CirculantHadamard/BinaryBlocks.lean
30 declarations, 0 contain sorry, 0 declared as axioms
The actual four-block decomposition and partial evaluations
The Chinese remainder equivalence transports the actual cyclic group ring, not just a coefficient count. Coefficients of its four slices are the original signs. Partial evaluation is a ring homomorphism defined on the product group algebra and intertwines coefficient conjugation with index reversal.
- abbrev
OAI.CirculantHadamard.BinaryBlocks.ProductElemline 30 - theorem
OAI.CirculantHadamard.BinaryBlocks.four_coprime_sqline 33 - def
OAI.CirculantHadamard.BinaryBlocks.crtIndexline 37Source documentation
The concrete CRT map on the exponent group.
def crtIndex (u : ℕ) (hu : Odd u) : ZMod (4 * u ^ 2) ≃+ ZMod 4 × ZMod (u ^ 2) := … - def
OAI.CirculantHadamard.BinaryBlocks.crtline 42Source documentation
The resulting algebra equivalence preserves the actual convolution.
def crt (R : Type uR) [CommRing R] (u : ℕ) (hu : Odd u) : Elem R (4 * u ^ 2) ≃ₐ[R] ProductElem R (u ^ 2) := … - theorem
OAI.CirculantHadamard.BinaryBlocks.crt_applyline 46 - theorem
OAI.CirculantHadamard.BinaryBlocks.crt_ringStarline 51 - theorem
OAI.CirculantHadamard.BinaryBlocks.crt_normline 57 - def
OAI.CirculantHadamard.BinaryBlocks.blockline 63 - theorem
OAI.CirculantHadamard.BinaryBlocks.block_applyline 67 - def
OAI.CirculantHadamard.BinaryBlocks.blocksline 71Source documentation
Fin-four indexing agrees with the coefficient arithmetic used by the halves.
def blocks {R : Type uR} [Semiring R] {m : ℕ} [NeZero m] (f : ProductElem R m) : Fin 4 → Elem R m := fun j => block f jMentions: OAI.CirculantHadamard.BinaryBlocks.ProductElem, OAI.CirculantHadamard.BinaryBlocks.block
- theorem
OAI.CirculantHadamard.BinaryBlocks.blocks_applyline 74 - theorem
OAI.CirculantHadamard.BinaryBlocks.blocks_signsline 77 - theorem
OAI.CirculantHadamard.BinaryBlocks.crt_blocks_signsline 81 - def
OAI.CirculantHadamard.BinaryBlocks.partialCharacterline 93Source documentation
A fourth-root character on the first factor, retaining the second factor.
def partialCharacter (z : S) (hz : z ^ 4 = 1) : Multiplicative (ZMod 4 × ZMod m) →* Elem S m where … - def
OAI.CirculantHadamard.BinaryBlocks.partialEvalline 113Source documentation
Actual partial evaluation, allowing the integer-to-complex coefficient map.
def partialEval (φ : R →+* S) (z : S) (hz : z ^ 4 = 1) : ProductElem R m →+* Elem S m := … - theorem
OAI.CirculantHadamard.BinaryBlocks.partialEval_singleline 119 - theorem
OAI.CirculantHadamard.BinaryBlocks.partialEval_applyline 130Source documentation
The four coefficients are summed, with no loss of the second coordinate.
theorem partialEval_apply (φ : R →+* S) (z : S) (hz : z ^ 4 = 1) (f : ProductElem R m) (b : ZMod m) : (partialEval m φ z hz f).coeff b = ∑ j : ZMod 4, φ (f.coeff (j, b)) * z ^ j.val := by …Mentions: OAI.CirculantHadamard.BinaryBlocks.ProductElem, OAI.CirculantHadamard.BinaryBlocks.partialEval
- def
OAI.CirculantHadamard.BinaryBlocks.mappedBlockline 152 - theorem
OAI.CirculantHadamard.BinaryBlocks.mappedBlock_applyline 155 - theorem
OAI.CirculantHadamard.BinaryBlocks.partialEval_fourline 158 - theorem
OAI.CirculantHadamard.BinaryBlocks.partialEval_oneline 172 - theorem
OAI.CirculantHadamard.BinaryBlocks.partialEval_neg_oneline 177 - theorem
OAI.CirculantHadamard.BinaryBlocks.fourthRoot_pow_fourline 185 - theorem
OAI.CirculantHadamard.BinaryBlocks.partialEval_fourthRootline 191Source documentation
The Gaussian coefficient ring can use its actual imaginary unit directly.
theorem partialEval_fourthRoot (φ : R →+* S) (i : S) (hi : i ^ 2 = -1) (f : ProductElem R m) : partialEval m φ i (fourthRoot_pow_four i hi) f = mappedBlock m φ f 0 + i • mappedBlock m φ f 1 - mappedBlock m φ f 2 - i • mappedBlock m φ f 3 := by …Mentions: OAI.CirculantHadamard.BinaryBlocks.ProductElem, OAI.CirculantHadamard.BinaryBlocks.partialEval, OAI.CirculantHadamard.BinaryBlocks.fourthRoot_pow_four, OAI.CirculantHadamard.BinaryBlocks.mappedBlock
- theorem
OAI.CirculantHadamard.BinaryBlocks.partialEval_Iline 204 - theorem
OAI.CirculantHadamard.BinaryBlocks.partialEval_groupStarline 217Source documentation
Intertwining is proved on the actual ring maps, with both parts of the star.
theorem partialEval_groupStar (φ : R →+* S) (z : S) (hz : z ^ 4 = 1) (hφ : ∀ r, φ (star r) = star (φ r)) (hchar : ∀ a : ZMod 4, z ^ (-a).val = star (z ^ a.val)) (f : ProductElem R m) : partialEval m φ z hz (groupStar f) = ringStar (partialEval m φ z hz f) := by …Mentions: OAI.CirculantHadamard.BinaryBlocks.ProductElem, OAI.CirculantHadamard.BinaryBlocks.partialEval
- theorem
OAI.CirculantHadamard.BinaryBlocks.one_character_starline 238 - theorem
OAI.CirculantHadamard.BinaryBlocks.neg_one_character_starline 242 - theorem
OAI.CirculantHadamard.BinaryBlocks.fourthRoot_character_starline 255 - theorem
OAI.CirculantHadamard.BinaryBlocks.I_character_starline 274