Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.AlgebraQuotient

Unrestricted depth-three lower bound: algebra quotient #

Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a. Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/AlgebraQuotient.lean

Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.

@[reducible, inline]

The quotient by the monic polynomial specified by the input coefficients.

Equations
Instances For
    @[reducible, inline]

    The input quotient ring with coefficients specified by bits.

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

      Map coefficient bits into the polynomial quotient ring.

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

        Read the coefficients of the canonical quotient representative.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[instance_reducible]
          Equations
          • One or more equations did not get rendered due to their size.
          @[simp]
          @[simp]
          theorem Complexity.DepthThreeLowerBound.BinaryAlgebra.encode_smul {r : ℕ} (p : Fin r → F2) (c : F2) (a : Fin r → F2) :
          encode p (c • a) = c • encode p a
          theorem Complexity.DepthThreeLowerBound.BinaryAlgebra.encode_mul {r : ℕ} (p a b : Fin r → F2) :
          (encode p fun (i : Fin r) => (pack a * pack b %ₘ inputPolynomial p).coeff ↑i) = encode p a * encode p b
          theorem Complexity.DepthThreeLowerBound.BinaryAlgebra.coordinates_one {r : ℕ} (p : Fin r → F2) (hr : 0 < r) (i : Fin r) :
          (coordinates p) 1 i = if ↑i = 0 then 1 else 0

          Read the constant coefficient of the quotient representative.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem Complexity.DepthThreeLowerBound.BinaryAlgebra.degreeZero_encode {r : ℕ} (p : Fin r → F2) (hr : 0 < r) (a : Fin r → F2) :
            (degreeZero ⋯) (encode p a) = a ⟨0, hr⟩
            theorem Complexity.DepthThreeLowerBound.BinaryAlgebra.degreeZero_sum_encode_pow {r t : ℕ} (p a : Fin r → F2) (beta : Fin t → Fin r → F2) :
            (degreeZero ⋯) (∑ j : Fin t, encode p (beta j) * encode p a ^ ↑j) = ((∑ j : Fin t, pack (beta j) * pack a ^ ↑j) %ₘ inputPolynomial p).coeff 0