A composed position's number #
A read of the assembled tester lands in one of three kinds of block: the encoding block of a vertex, a dart's linear table, or a dart's quadratic table. Which kind, and which cube inside the block, depends only on the read and the random string — with two exceptions, where the cube is shifted by the arithmetization of the dart's satisfying set. Which block, on the other hand, is a vertex or a dart of the outer graph, so it is the only part that grows with the input.
This module splits a position's number along that seam.
Main definitions #
Complexity.RegCSP.readKind— which kind of block a read lands inComplexity.RegCSP.blockNum,Complexity.RegCSP.cubeNum— the block and the cube inside itComplexity.RegCSP.posNum— the number the two make
Main results #
Complexity.RegCSP.enc_pos_compose— that number is the position'sComplexity.RegCSP.val_head_toGraph_compose— hence the second endpoint of a composed edgeComplexity.RegCSP.satSet_congr,cubeNum_congr,check_congr— all of it depends on the outer system only through the dart's constraintComplexity.satSet_eq_of_data,Complexity.cubeNum_eq_of_data,Complexity.check_eq_of_data— and for a killed power, only through the walk's parities and codes, whatever graph it came from
Which kind of block a read's position lies in: an encoding block (0), a
dart's linear table (1), or a dart's quadratic table (2).
Equations
- Complexity.RegCSP.readKind Complexity.ReadIdx.i5r = 0
- Complexity.RegCSP.readKind Complexity.ReadIdx.i6r = 0
- Complexity.RegCSP.readKind Complexity.ReadIdx.g2x = 2
- Complexity.RegCSP.readKind Complexity.ReadIdx.g2y = 2
- Complexity.RegCSP.readKind Complexity.ReadIdx.g2s = 2
- Complexity.RegCSP.readKind Complexity.ReadIdx.c3cQ = 2
- Complexity.RegCSP.readKind Complexity.ReadIdx.c3tQ = 2
- Complexity.RegCSP.readKind Complexity.ReadIdx.k4qG = 2
- Complexity.RegCSP.readKind Complexity.ReadIdx.k4tG = 2
- Complexity.RegCSP.readKind x✝ = 1
Instances For
The number of the vertex or dart whose block a read's position lies in.
Equations
- R.blockNum p Complexity.ReadIdx.i5r = Complexity.NumEnc.enc p.1
- R.blockNum p Complexity.ReadIdx.i6r = Complexity.NumEnc.enc (R.graph.nbr p.1 p.2)
- R.blockNum p Complexity.ReadIdx.f1x = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.f1y = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.f1s = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.g2x = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.g2y = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.g2s = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.c3cQ = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.c3tQ = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.c3cX = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.c3xX = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.c3cY = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.c3yY = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.k4qG = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.k4tG = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.k4cF = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.k4lF = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.i5c = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.i5b = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.i6c = Complexity.NumEnc.enc p
- R.blockNum p Complexity.ReadIdx.i6b = Complexity.NumEnc.enc p
Instances For
The cube a read names, from the satisfying set alone.
Equations
- One or more equations did not get rendered due to their size.
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.f1x = Complexity.NumEnc.enc (Complexity.leftBlock (Complexity.Tester.blk1 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.f1y = Complexity.NumEnc.enc (Complexity.rightBlock (Complexity.Tester.blk1 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.f1s = Complexity.NumEnc.enc (Complexity.leftBlock (Complexity.Tester.blk1 z) + Complexity.rightBlock (Complexity.Tester.blk1 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.g2x = Complexity.NumEnc.enc (Complexity.leftBlock (Complexity.Tester.blk2 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.g2y = Complexity.NumEnc.enc (Complexity.rightBlock (Complexity.Tester.blk2 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.g2s = Complexity.NumEnc.enc (Complexity.leftBlock (Complexity.Tester.blk2 z) + Complexity.rightBlock (Complexity.Tester.blk2 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.c3cQ = Complexity.NumEnc.enc (Complexity.cQ (Complexity.Tester.blk3 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.c3cX = Complexity.NumEnc.enc (Complexity.cX (Complexity.Tester.blk3 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.c3xX = Complexity.NumEnc.enc (Complexity.qX (Complexity.Tester.blk3 z) + Complexity.cX (Complexity.Tester.blk3 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.c3cY = Complexity.NumEnc.enc (Complexity.cY (Complexity.Tester.blk3 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.c3yY = Complexity.NumEnc.enc (Complexity.qY (Complexity.Tester.blk3 z) + Complexity.cY (Complexity.Tester.blk3 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.k4qG = Complexity.NumEnc.enc (Complexity.rightBlock (Complexity.rightBlock (Complexity.Tester.blk4 z)))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.k4cF = Complexity.NumEnc.enc (Complexity.leftBlock (Complexity.rightBlock (Complexity.Tester.blk4 z)))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.i5r = Complexity.NumEnc.enc (Complexity.leftBlock (Complexity.Tester.blk5 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.i5c = Complexity.NumEnc.enc (Complexity.rightBlock (Complexity.Tester.blk5 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.i6r = Complexity.NumEnc.enc (Complexity.leftBlock (Complexity.Tester.blk6 z))
- Complexity.RegCSP.cubeOfSet S z Complexity.ReadIdx.i6c = Complexity.NumEnc.enc (Complexity.rightBlock (Complexity.Tester.blk6 z))
Instances For
The number of the cube a read's position names inside its block.
Equations
- R.cubeNum enc p z = Complexity.RegCSP.cubeOfSet (Complexity.RegCSP.satSet enc R p) z
Instances For
The number a kind, a block and a cube make: encoding blocks first, then the linear tables, then the quadratic ones.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A composed position's number.
The second endpoint of a composed edge.
The test's verdict, from the satisfying set alone.
Equations
- Complexity.RegCSP.checkOfSet S z rd = decide (Complexity.Tester.bitFormula S z rd)
Instances For
The cube depends on the satisfying set alone.
And so does the verdict.
An edge's data and all three of its numbers, in one package: a caller never has to spell the composed system out, nor match anything against it.
Everything depends on the dart's constraint alone #
So does the cube a read names, even across two different systems.
And so does the test's verdict.
Across two graphs #
Two graphs whose walks show the same data have the same satisfying set.
Both sides live in Finset (Cube (kOf B)), a type that does not mention either
graph.
The cube a read names is the same across two such graphs.
And so is the test's verdict.