Documentation

MIPRE.Foundations.LowDegree.BinaryCirculantProg

Executable circulant matrices and their inverse square roots #

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem MIPRE.LowDegree.BinaryLinear.rotate_vectorBits {k : ℕ} [NeZero k] (v : Fin k → ZMod 2) (j : Fin k) :
    List.rotate (vectorBits v) ↑j = vectorBits fun (i : Fin k) => v (i + j)

    Right rotation is translation by the negative column index.

    Print a circulant from its first column. The size and all iteration counts come from the input.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem MIPRE.LowDegree.BinaryLinear.rootBitsProg_vectorBits {k : ℕ} [NeZero k] (hk : Odd k) (v : Fin k → ZMod 2) :
      rootBitsProg.toFun (vectorBits v) = vectorBits fun (i : Fin k) => v (i + i)

      The coefficient square-root program uses doubled indices also for Fin k coordinates.

      Compute the inverse matrix, read its first column, permute doubled indices, then print the circulant square root.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For