OAI/Computability/FourierCircuit/CircuitExtensions.lean
75 declarations, 0 contain sorry, 0 declared as axioms
Finite-index wrappers for the exact charged DAG model. These are used for the state-clearing tensor-axis maps in the cascade and coefficient boundary cost.
- theorem
OAI.ExactFourier.Program.eval_originalline 8 - def
OAI.ExactFourier.LinearDAG.fanoutline 18 - theorem
OAI.ExactFourier.LinearDAG.size_fanoutline 25 - theorem
OAI.ExactFourier.LinearDAG.eval_fanoutline 28 - def
OAI.ExactFourier.LinearDAG.withInputsline 39Source documentation
Select or duplicate arbitrary existing inputs; these are wire names, not gates.
noncomputable def LinearDAG.withInputs {m n a : ℕ} (C : LinearDAG n a) (f : Fin n → Fin m) : LinearDAG m a := C.comp (.wires (fun i => (f i).castSucc))Mentions: OAI.ExactFourier.LinearDAG, OAI.ExactFourier.LinearDAG.wires
- theorem
OAI.ExactFourier.LinearDAG.size_withInputsline 42 - theorem
OAI.ExactFourier.LinearDAG.eval_withInputsline 46 - def
OAI.ExactFourier.LinearDAG.withOutputsline 54Source documentation
Change the ordered output list without performing an arithmetic operation.
def LinearDAG.withOutputs {n a b : ℕ} (C : LinearDAG n a) (f : Fin b → Fin a) : LinearDAG n b := ⟨C.size, C.program, C.outputs ∘ f⟩Mentions: OAI.ExactFourier.LinearDAG
- theorem
OAI.ExactFourier.LinearDAG.eval_withOutputsline 57 - def
OAI.ExactFourier.LinearDAG.butterfliesline 62Source documentation
One butterfly for each of m pairs: charge m scalar multiplications, m additions, and m subtractions, retaining the scaled terms for both output signs.
def LinearDAG.butterflies {n m : ℕ} (C : LinearDAG n (m+m)) (c : Fin m → ℂ) : LinearDAG n (m+m) where …Mentions: OAI.ExactFourier.LinearDAG
- theorem
OAI.ExactFourier.LinearDAG.eval_butterfliesline 72 - structure
OAI.ExactFourier.TypedDAGline 103 - abbrev
OAI.ExactFourier.TypedDAG.sizeline 109 - def
OAI.ExactFourier.TypedDAG.evalline 110 - def
OAI.ExactFourier.TypedDAG.compline 113 - theorem
OAI.ExactFourier.TypedDAG.size_compline 115 - theorem
OAI.ExactFourier.TypedDAG.eval_compline 117 - def
OAI.ExactFourier.TypedDAG.inputsline 122 - theorem
OAI.ExactFourier.TypedDAG.size_inputsline 124 - theorem
OAI.ExactFourier.TypedDAG.eval_inputsline 126 - def
OAI.ExactFourier.TypedDAG.outputsline 131 - theorem
OAI.ExactFourier.TypedDAG.size_outputsline 133 - theorem
OAI.ExactFourier.TypedDAG.eval_outputsline 135 - def
OAI.ExactFourier.TypedDAG.fanoutline 140 - theorem
OAI.ExactFourier.TypedDAG.size_fanoutline 144 - theorem
OAI.ExactFourier.TypedDAG.eval_fanoutline 146 - def
OAI.ExactFourier.TypedDAG.wiresline 151 - theorem
OAI.ExactFourier.TypedDAG.size_wiresline 154 - theorem
OAI.ExactFourier.TypedDAG.eval_wiresline 155 - def
OAI.ExactFourier.TypedDAG.matrixline 161 - theorem
OAI.ExactFourier.TypedDAG.size_matrixline 163 - theorem
OAI.ExactFourier.TypedDAG.eval_matrixline 165 - def
OAI.ExactFourier.TypedDAG.scaleline 172 - theorem
OAI.ExactFourier.TypedDAG.size_scaleline 174 - theorem
OAI.ExactFourier.TypedDAG.eval_scaleline 175 - def
OAI.ExactFourier.TypedDAG.addPairline 180 - theorem
OAI.ExactFourier.TypedDAG.size_addPairline 184 - theorem
OAI.ExactFourier.TypedDAG.eval_addPairline 185 - def
OAI.ExactFourier.TypedDAG.stackFinline 190 - theorem
OAI.ExactFourier.TypedDAG.size_stackFinline 195 - theorem
OAI.ExactFourier.TypedDAG.eval_stackFinline 201 - def
OAI.ExactFourier.TypedDAG.stackline 209 - theorem
OAI.ExactFourier.TypedDAG.size_stackline 212 - theorem
OAI.ExactFourier.TypedDAG.eval_stackline 216 - def
OAI.ExactFourier.TypedDAG.parallelline 220 - theorem
OAI.ExactFourier.TypedDAG.size_parallelline 222 - theorem
OAI.ExactFourier.TypedDAG.eval_parallelline 224 - def
OAI.ExactFourier.TypedDAG.tensorline 228 - theorem
OAI.ExactFourier.TypedDAG.size_tensorline 231 - theorem
OAI.ExactFourier.TypedDAG.eval_tensorline 235 - def
OAI.ExactFourier.TypedDAG.blockColsline 256 - theorem
OAI.ExactFourier.TypedDAG.size_blockColsline 258 - theorem
OAI.ExactFourier.TypedDAG.eval_blockColsline 260 - def
OAI.ExactFourier.TypedDAG.scalarline 267 - theorem
OAI.ExactFourier.TypedDAG.size_scalarline 269 - theorem
OAI.ExactFourier.TypedDAG.eval_scalarline 271 - def
OAI.ExactFourier.TypedDAG.identityline 277 - theorem
OAI.ExactFourier.TypedDAG.size_identityline 278 - theorem
OAI.ExactFourier.TypedDAG.eval_identityline 279 - def
OAI.ExactFourier.TypedDAG.tensorPowerline 282 - theorem
OAI.ExactFourier.TypedDAG.eval_tensorPowerline 286 - theorem
OAI.ExactFourier.TypedDAG.size_tensorPowerline 294 - def
OAI.ExactFourier.PolynomialDAG.nodesline 316 - def
OAI.ExactFourier.PolynomialDAG.weightsline 317 - theorem
OAI.ExactFourier.PolynomialDAG.nodes_injectiveline 320 - theorem
OAI.ExactFourier.PolynomialDAG.coeff_interpolateline 326 - def
OAI.ExactFourier.PolynomialDAG.coefficientsline 335 - def
OAI.ExactFourier.PolynomialDAG.evalMatrixline 337 - def
OAI.ExactFourier.PolynomialDAG.reconstructline 340 - theorem
OAI.ExactFourier.PolynomialDAG.size_reconstructline 344 - theorem
OAI.ExactFourier.PolynomialDAG.eval_reconstructline 349 - def
OAI.ExactFourier.PolynomialDAG.padline 367 - theorem
OAI.ExactFourier.PolynomialDAG.size_padline 369 - theorem
OAI.ExactFourier.PolynomialDAG.eval_padline 371 - theorem
OAI.ExactFourier.PolynomialDAG.exists_coefficientsline 385