OAI/NumberTheory/TwoPoint/Circuits/CircuitEncoding.lean
19 declarations, 0 contain sorry, 0 declared as axioms
Truth-table encoding and substitution for residue circuits
Any decoded residue equality is a Boolean function of its block of bits.
Its explicit disjunctive normal form has depth at most two and size at most
1 + 2^B (1+B). Substituting such forms into the actual circuit syntax
increases depth by at most two and multiplies size by this bound.
- def
OAI.TwoPointCorrelations.AC0Circuit.substituteline 20Source documentation
Replace each positive or negative input literal by a circuit.
def substitute {n m : ℕ} (σ : Fin n → Bool → AC0Circuit m) : AC0Circuit n → AC0Circuit m | .literal i positive => σ i positive | .andGate children => .andGate (fun i => substitute σ (children i)) | .orGate children => .orGate (fun i => substitute σ (children i))Mentions: OAI.TwoPointCorrelations.AC0Circuit
- lemma
OAI.TwoPointCorrelations.AC0Circuit.substitute_evalline 25 - lemma
OAI.TwoPointCorrelations.AC0Circuit.substitute_depthline 34 - lemma
OAI.TwoPointCorrelations.AC0Circuit.substitute_sizeline 56 - def
OAI.TwoPointCorrelations.AC0Circuit.assignmentTermline 75Source documentation
Conjunction specifying one assignment on a selected block of bits.
def assignmentTerm {n B : ℕ} (v : Fin B → Fin n) (z : BooleanCube B) : AC0Circuit n := …Mentions: OAI.TwoPointCorrelations.BooleanCube, OAI.TwoPointCorrelations.AC0Circuit
- def
OAI.TwoPointCorrelations.AC0Circuit.falseCircuitline 79Source documentation
The constant false circuit, used for rejected rows of a truth table.
def falseCircuit (n : ℕ) : AC0Circuit n := .orGate (fun i : Fin 0 => Fin.elim0 i)
Mentions: OAI.TwoPointCorrelations.AC0Circuit
- lemma
OAI.TwoPointCorrelations.AC0Circuit.literal_eval_trueline 81 - lemma
OAI.TwoPointCorrelations.AC0Circuit.assignmentTerm_eval_trueline 85 - lemma
OAI.TwoPointCorrelations.AC0Circuit.falseCircuit_evalline 98 - def
OAI.TwoPointCorrelations.AC0Circuit.truthTableline 102Source documentation
Explicit DNF with one possible conjunction for each of the
2^Brows.noncomputable def truthTable {n B : ℕ} (v : Fin B → Fin n) (F : BooleanCube B → Bool) : AC0Circuit n := …Mentions: OAI.TwoPointCorrelations.BooleanCube, OAI.TwoPointCorrelations.AC0Circuit
- lemma
OAI.TwoPointCorrelations.AC0Circuit.truthTable_evalline 108 - lemma
OAI.TwoPointCorrelations.AC0Circuit.assignmentTerm_depthline 123 - lemma
OAI.TwoPointCorrelations.AC0Circuit.assignmentTerm_sizeline 126 - lemma
OAI.TwoPointCorrelations.AC0Circuit.truthTable_depthline 129 - lemma
OAI.TwoPointCorrelations.AC0Circuit.truthTable_sizeline 142 - def
OAI.TwoPointCorrelations.AC0Circuit.encodeInputsline 156Source documentation
Encode each residue input using a truth table on its own selected bits.
noncomputable def encodeInputs {n m B : ℕ} (v : Fin n → Fin B → Fin m) (F : Fin n → BooleanCube B → Bool) (c : AC0Circuit n) : AC0Circuit m := …Mentions: OAI.TwoPointCorrelations.BooleanCube, OAI.TwoPointCorrelations.AC0Circuit
- lemma
OAI.TwoPointCorrelations.AC0Circuit.encodeInputs_evalline 161 - lemma
OAI.TwoPointCorrelations.AC0Circuit.encodeInputs_depthline 168 - lemma
OAI.TwoPointCorrelations.AC0Circuit.encodeInputs_sizeline 173