Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.LanguageBitConvolutionUpdates

Unrestricted depth-three lower bound: language bit convolution updates #

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

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

XOR a bit into a selected list position.

Equations
Instances For
    theorem Complexity.DepthThreeLowerBound.xorListAt_getD (c : List Bool) (j : ℕ) (v : Bool) (hj : j < c.length) (k : ℕ) :
    (xorListAt c j v).getD k false = (c.getD k false ^^ if j = k then v else false)
    theorem Complexity.DepthThreeLowerBound.xorListAt_split («prefix» suffix : List Bool) (old v : Bool) :
    xorListAt («prefix» ++ old :: suffix) «prefix».length v = «prefix» ++ (old ^^ v) :: suffix

    Accumulate one row of bitwise convolution updates.

    Equations
    Instances For
      theorem Complexity.DepthThreeLowerBound.convolutionUpdateRow_getD (a b : List Bool) (i : ℕ) (js : List ℕ) (c : List Bool) (k : ℕ) (hbound : ∀ j ∈ js, i + j < c.length) :
      (convolutionUpdateRow a b i js c).getD k false = (c.getD k false ^^ xorBits (List.map (fun (j : ℕ) => if i + j = k then a.getD i false && b.getD j false else false) js))

      Accumulate all rows of bitwise convolution updates.

      Equations
      Instances For
        theorem Complexity.DepthThreeLowerBound.convolutionUpdateRows_getD (a b : List Bool) (is : List ℕ) (c : List Bool) (k : ℕ) (hbound : ∀ i ∈ is, ∀ j < b.length, i + j < c.length) :
        (convolutionUpdateRows a b is c).getD k false = (c.getD k false ^^ xorBits (List.map (fun (i : ℕ) => xorBits (convolutionRow a b i k)) is))