Documentation

LeanPool.BooleanMultiplication.N4.UsefulWitness

Target witnesses for useful gates #

The structural part of the n = 4 argument repeatedly replaces a useful gate output by the unique target-ambient direction in its one-dimensional extension. This file packages that linear-algebra step once. It is entirely independent of the later homogeneous-coordinate calculations.

theorem UnrestrictedBooleanMul.N4.exists_targetWitness_of_useful {m r : ℕ} (C : Circuit m r) (T : Submodule F₂ (ANF m)) (j : Fin r) (huse : UsefulAt C T j) :
∃ t ∈ targetAmbient m T, t ∉ circuitFlag C ↑j ∧ t ∈ circuitFlag C (↑j + 1)

A useful one-vector extension contains a target-ambient vector which was not present in the preceding state.

theorem UnrestrictedBooleanMul.N4.exists_targetWitness_eq_state_add_gate_of_useful {m r : ℕ} (C : Circuit m r) (T : Submodule F₂ (ANF m)) (j : Fin r) (huse : UsefulAt C T j) :
∃ (t : ANF m) (v : ANF m), t ∈ targetAmbient m T ∧ t ∉ circuitFlag C ↑j ∧ t ∈ circuitFlag C (↑j + 1) ∧ v ∈ circuitFlag C ↑j ∧ t = v + C.gate j

A useful gate output differs from a new target-ambient direction by a wire already present before the gate. Over F₂ the coefficient of the new gate is forced to be one.

theorem UnrestrictedBooleanMul.N4.circuitFlag_succ_eq_targetWitness {m r : ℕ} (C : Circuit m r) (T : Submodule F₂ (ANF m)) (j : Fin r) (huse : UsefulAt C T j) :
∃ t ∈ targetAmbient m T, t ∉ circuitFlag C ↑j ∧ circuitFlag C (↑j + 1) = circuitFlag C ↑j ⊔ F₂ ∙ t

The target witness generates exactly the same next state as the original gate output.