While this submission is a draft, it cannot be used by other submissions.

Proof of `Characterisation of bounded-depth matrix-symmetric circuits`

groundedproofs/Lax461425Proofs/BoundedDepthCharacterisation.lean · lax-461425

What this proof establishes

Assuming the claims on the left, the claim on the right holds — checked by the archive's pipeline. Proof code is not displayed here.

Read the Lean proof on GitHub

Description

The characterisation of bounded-depth matrix-symmetric circuits.

The forward direction (1 → 2) is the concept PatternsFromCircuits.memspanhomPatternsFromCircuits.mem_span_hom directly.

For the backward direction (2 → 1), Submodule.memspanset′Submodule.mem_span_set' writes p=∑i,fi•homK(Fi)np = ∑ i, f i • hom K (F i) n for finitely many patterns FiF i with ForestwidthLEΔ(k−1)(Fi)ForestwidthLE Δ (k - 1) (F i). For each ii, a circuit DiD i computing homK(Fi)nhom K (F i) n is obtained from the concept CircuitsForPatterns.existscircuitCircuitsForPatterns.exists_circuit; it is reduced, matrix-symmetric, with support size ≤k≤ k and support depth ≤Δ≤ Δ. These are glued (BoundedDepthGlueCircuit.glueCircuitBoundedDepthGlueCircuit.glueCircuit) by scaling each block's output by fif i (via a new mulmul-gate and a new const(fi)const (f i) input gate) and summing all of these via a new output addadd-gate; the glue circuit computes ∑i,fi•homK(Fi)n=p∑ i, f i • hom K (F i) n = p (BoundedDepthGlueComputes.glueCircuitcomputesBoundedDepthGlueComputes.glueCircuit_computes) and is matrix-symmetric (BoundedDepthGlueSymmetric.glueCircuitisMatrixSymmetricBoundedDepthGlueSymmetric.glueCircuit_isMatrixSymmetric), since every block is. Rigidifying it (RigidConstruction.reducedRigidConstruction.reduced) yields a reduced, matrix-symmetric circuit computing pp (RigidReduced.isReducedreducedRigidReduced.isReduced_reduced, RigidSymmetric.isMatrixSymmetricreducedRigidSymmetric.isMatrixSymmetric_reduced, RigidComputes.computestransferRigidComputes.computes_transfer) with support size ≤k≤ k (BoundedDepthGlueSize.glueCircuitreducedsupportSizeleBoundedDepthGlueSize.glueCircuit_reduced_supportSize_le) and support depth ≤Δ≤ Δ (BoundedDepthGlueSc.glueCircuitreducedsupportDepthleBoundedDepthGlueSc.glueCircuit_reduced_supportDepth_le), the latter via a potential built from each block's own scsc, since every glue gate has empty minimal support and every block's own minimal support is unaffected by rigidifying the glue circuit as a whole (BoundedDepthEmbed.embedequiveqBoundedDepthEmbed.embed_equiv_eq, BoundedDepthReducedFormula.reducedσOfeqBoundedDepthReducedFormula.reduced_σOf_eq).

The concept Rigidification.existsreducedRigidification.exists_reduced is deliberately not used: it does not preserve support size or support depth, so the proof rigidifies with RigidConstruction.reducedRigidConstruction.reduced and tracks the supports of the block gates through it directly.