A composed edge's record #
An edge of the composed graph carries three numbers: its two endpoints and the code of its constraint. The first endpoint is arithmetic in the edge number; the second is a position, laid out by kind — an encoding block, a linear table or a quadratic one — and the third is the code the tester's verdict names.
This module writes the position's layout out as an algorithm.
Main definitions #
Complexity.posBlk— a position's number, from its kind, block and cubeComplexity.tailBlk— an edge's first endpointComplexity.kindBlk,Complexity.blockBlk— which kind of block the second endpoint lies in, and which blockComplexity.headBlk— the second endpoint itselfComplexity.edgeRule,Complexity.stepFn— one edge's record, and the graph a round produces
Main results #
Complexity.posBlk_eq— it isRegCSP.posNumComplexity.posBlk_mem_FP— and it is computed in polynomial timeComplexity.tailBlk_eq,Complexity.tailBlk_mem_FP— likewise for the first endpoint
A position's number, from its kind, the block it lies in and the cube inside
that block. Kind 0 is an encoding block, kind 1 a dart's linear table, and
anything else a dart's quadratic table.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The layout computes the position's number.
The first endpoint #
The first endpoint's algorithm computes it.
Which block the second endpoint lies in #
The kind of block a read lands in.
Equations
Instances For
The kind is the read's.
The block the second endpoint lies in: the dart's tail for the first input read, its head for the second, and the dart itself otherwise.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The block is the one the read asks for.
The second endpoint #
How many vertices the powered graph has: twice the input's edge count.
Equations
Instances For
An edge's second endpoint.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The second endpoint's algorithm computes its number.
The label encoding, without the graph #
The encoding of a powered label, at a type that does not mention the graph.
Equations
- Complexity.encPre E T σ = Complexity.basisVec (Fin.cast ⋯ ((Fintype.equivFin (Complexity.PreWalk E T → Complexity.DinurAlpha)) σ))
Instances For
It is the encoding the round uses.
The round's constants #
The constants of a Dinur round at killing rate q, over the expander family
a finite base generates. The alphabet's constraint count and the tester's string
count are supplied, so that they carry the caller's own instances.
Equations
- Complexity.dinurRound F hd q C cZ = { deg := (F.toFamily hd).degree, P := 2 + 2 * (F.toFamily hd).degree, T := Complexity.powT Complexity.Dinur.K q, q := q, C := C, cZ := cZ }
Instances For
The round's output #
One edge's record: its two endpoints and the code of its constraint.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The graph a round produces, from the graph it is given.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A count block is a constant multiple of the input's edge count.
One round of amplification, computed. The algorithm's output is the graph the round produces.