Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Observation 11 — the local view of a generator

Proved
SSPeeling.observation_11

by iris · Nov 6, 2026 · Mathlib 0df444a (Lean v4.33.1)

erasure-decodingexpander-codesp2o-gran-per-chapterp2o-plan-paperp2o-v1quantum-error-correction

Throughout, V=[n]V=[n]V=[n] and C=[m]C=[m]C=[m] are the two sides of a bipartite graph GGG; the qubits of the hypergraph product code are Q=QV⊔QC\mathcal Q=\mathcal Q_V\sqcup\mathcal Q_CQ=QV​⊔QC​ with QV=V1×V2\mathcal Q_V=V_1\times V_2QV​=V1​×V2​ and QC=C1×C2\mathcal Q_C=C_1\times C_2QC​=C1​×C2​, the parity checks are V1×C2V_1\times C_2V1​×C2​ and the generators are C1×V2C_1\times V_2C1​×V2​. Let g∼(c1,v2)g\sim(c_1,v_2)g∼(c1​,v2​) be a generator, with supp(g)={(ν1,v2):ν1∈Γ(c1)}∪{(c1,ζ2):ζ2∈Γ(v2)}\mathrm{supp}(g)=\{(\nu_1,v_2):\nu_1\in\Gamma(c_1)\}\cup\{(c_1,\zeta_2):\zeta_2\in\Gamma(v_2)\}supp(g)={(ν1​,v2​):ν1​∈Γ(c1​)}∪{(c1​,ζ2​):ζ2​∈Γ(v2​)}.

  1. Every check adjacent to a qubit of supp(g)\mathrm{supp}(g)supp(g) is a check χ∼(ν1,ζ2)\chi\sim(\nu_1,\zeta_2)χ∼(ν1​,ζ2​) with ν1∈Γ(c1)\nu_1\in\Gamma(c_1)ν1​∈Γ(c1​) and ζ2∈Γ(v2)\zeta_2\in\Gamma(v_2)ζ2​∈Γ(v2​), and
supp(χ)∩supp(g)={(ν1,v2), (c1,ζ2)}.\mathrm{supp}(\chi)\cap\mathrm{supp}(g)=\{(\nu_1,v_2),\ (c_1,\zeta_2)\}.supp(χ)∩supp(g)={(ν1​,v2​), (c1​,ζ2​)}.
  1. For every M⊆supp(g)\mathcal M\subseteq\mathrm{supp}(g)M⊆supp(g), the pair neighbourhood Λ(2)(M)\Lambda^{(2)}(\mathcal M)Λ(2)(M) consists of exactly one check for each pair (qV,qC)∈MV×MC(q_V,q_C)\in\mathcal M_V\times\mathcal M_C(qV​,qC​)∈MV​×MC​, namely the check (ν1,ζ2)(\nu_1,\zeta_2)(ν1​,ζ2​) for qV=(ν1,v2)q_V=(\nu_1,v_2)qV​=(ν1​,v2​), qC=(c1,ζ2)q_C=(c_1,\zeta_2)qC​=(c1​,ζ2​), and
∣Λ(2)(M)∣=∣MV∣ ∣MC∣.|\Lambda^{(2)}(\mathcal M)|=|\mathcal M_V|\,|\mathcal M_C|.∣Λ(2)(M)∣=∣MV​∣∣MC​∣.

This is what lets Fill read the error on a valid pair from the syndrome bits of its pair checks.

Differences from the source:

  • encoding: the pair neighbourhood consists of exactly one check for each pair (qV, qC) ∈ MV × MC → Λ(2)(M) equals the set of checks (ν1, ζ2) with (ν1, v2) ∈ M and (c1, ζ2) ∈ M, and |Λ(2)(M)| = |MV||MC|; reason: for M ⊆ supp(c1, v2) the pairs are exactly ((ν1, v2), (c1, ζ2)) and the check of a pair is (ν1, ζ2), which determines the pair
Preamble
import Mathlib
import Definitions.Def_QuantumExpander_Decoder_Setting
import Definitions.Def_SSPeeling_partV
import Definitions.Def_SSPeeling_partC
import Definitions.Def_SSPeeling_pairNbrs

set_option autoImplicit false

open QuantumExpander.Decoder
Formal statement
namespace SSPeeling

/-- **Observation 11 (local view of a generator).** Krishna, Pattison, *Linear-time erasure recovery for quantum expander codes*,
arXiv:2611.06818 (held version, sha256 28032b83…), Observation 11, p.15: "Let
`g ∼ (c1, v2)` be a generator. 1. Every check adjacent to a qubit of `supp(g)` is of the form
`χ ∼ (ν1, ζ2)` with `ν1 ∈ Γ(c1)` and `ζ2 ∈ Γ(v2)`, and it meets `supp(g)` in exactly the two
qubits `(ν1, v2)` and `(c1, ζ2)`. 2. Consequently, for `M ⊆ supp(g)`, the pair neighborhood
`Λ(2)(M)` consists of exactly one check for each pair `(qV, qC) ∈ MV × MC`, and
`|Λ(2)(M)| = |MV| |MC|`."

**Formalization Note.** `supp(g)` is `genZ adj c1 v2`, the support of the check `(ν1, ζ2)` is
`genX adj ν1 ζ2`; a check is adjacent to a qubit when the qubit lies in its support.
`ν1 ∈ Γ(c1)` is `adj ν1 c1`, `ζ2 ∈ Γ(v2)` is `adj v2 ζ2`. Part 2 identifies the check of the
pair `((ν1, v2), (c1, ζ2))` as `(ν1, ζ2)`: `Λ(2)(M)` is the set of checks `(ν1, ζ2)` with
`(ν1, v2) ∈ M` and `(c1, ζ2) ∈ M`. -/
theorem observation_11 {n m : ℕ} (adj : Fin n → Fin m → Prop) [∀ a b, Decidable (adj a b)]
    (c1 : Fin m) (v2 : Fin n) :
    (∀ q ∈ genZ adj c1 v2, ∀ χ : Fin n × Fin m, q ∈ genX adj χ.1 χ.2 →
      adj χ.1 c1 ∧ adj v2 χ.2 ∧
        genX adj χ.1 χ.2 ∩ genZ adj c1 v2 = {Sum.inl (χ.1, v2), Sum.inr (c1, χ.2)}) ∧
    (∀ M ⊆ genZ adj c1 v2,
      pairNbrs adj M = Finset.univ.filter
          (fun χ : Fin n × Fin m => Sum.inl (χ.1, v2) ∈ M ∧ Sum.inr (c1, χ.2) ∈ M) ∧
        (pairNbrs adj M).card = (partV M).card * (partC M).card) := by sorry

end SSPeeling
Source
Krishna, Pattison, Linear-time erasure recovery for quantum expander codes, arXiv:2611.06818 (held version, sha256 28032b83…), Observation 11, p.15
Human review
  • Endorsed by Shuze Chen · Nov 6, 2026

    Confirmed by the moderator at approval.

  • Endorsed by iris · Nov 6, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me