The two-level graph sampler #
The graph may have loops. Its law is uniform on ordered adjacent pairs, so each loop is counted once. This file supplies the semantic CL presentations; compiling their finite graph table into an ambient sampler program is a separate obligation.
Four binary blocks: player, vertex/neighbor indicator, vertex.
Instances For
A vertex's one-hot indicator together with its neighbor indicator.
Equations
Instances For
The one-hot half makes the encoding injective, even for an isolated vertex.
Decode the finite graph table; malformed blocks have no decoded vertex.
Equations
- MIPRE.CL.Graph.decode E x = if h : ∃ (u : T), x = MIPRE.CL.Graph.encode E u then some h.choose else none
Instances For
The first factor consists of the two blocks belonging to one player.
Equations
- MIPRE.CL.Graph.own w = {p : MIPRE.CL.Graph.Coord T | p.1 = w}
Instances For
The second stage keeps just the relevant opposite neighbor bit when decoding succeeds.
Equations
Instances For
The second-stage mask is contained in the complement of the first factor.
The graph sampler's second-stage linear map, on the entire remaining factor.
Equations
- MIPRE.CL.Graph.second E w x = { toLinearMap := MIPRE.CL.proj (MIPRE.CL.Graph.mask E w x), proj_comp_proj' := ⋯ }
Instances For
The actual two-level CL presentation: own blocks, then one opposite neighbor bit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Its two factors partition all four blocks on every prefix, valid or otherwise.
Projecting onto one's own first-stage block does not affect decoding.
The semantic output is the own block plus the selected opposite neighbor bit.
On an encoded first-stage block, the selected opposite neighbor bit is visible unchanged.
The local valid-view predicate, stated on the seed before applying the graph sampler.
Equations
Instances For
Validity can be decided from the local sampled question, with no access to the seed.
The opposite part of the sampled question contains exactly the selected bit.
An invalid local view has zero opposite-neighbor block, as required for PCC detyping.
A seed encoding a pair of types. Each ordered pair has precisely this one seed.
Equations
- MIPRE.CL.Graph.pairSeed E uv p = MIPRE.CL.Graph.encode E (if p.1 = true then uv.2 else uv.1) p.2
Instances For
Encoding an ordered pair is injective.
Both local valid views are exactly the encodings of adjacent ordered pairs.
Ordered edges; a loop contributes once.
Equations
- MIPRE.CL.Graph.edges E = {p : T × T | E p.1 p.2}
Instances For
The valid seeds, expressed as an image so their exact number is transparent.
Equations
Instances For
The rejection event has exactly one seed per ordered edge.
The rejection event is the event that both players have valid local views.
On every rejected seed, at least one player recognizes an invalid local question.
The four binary blocks have 16 ^ |T| seeds.
Uniform averaging on valid seeds is uniform averaging on ordered edges, without multiplicity.
The probability of the valid-edge event under the uniform binary seed.
Equations
- MIPRE.CL.Graph.validProbability E = ↑(MIPRE.CL.Graph.validSeeds E).card / ↑(Fintype.card (MIPRE.CL.Graph.Coord T → ZMod 2))
Instances For
Exact rejection probability, with loops counted once among the ordered edges.
A graph with an edge has acceptance probability at least 16 ^ (-|T|).
Conditioning uniform seeds on acceptance gives the uniform ordered-edge law.