Documentation

Complexitylib.Classes.PCP.Internal.AlgCompose

The composed graph, in numbers #

The binary graph a family of tests produces has one vertex per position and per (test, random string), and one edge per (test, random string, read). Both are numbered by NumEnc, so an edge index splits by division and remainder into the test, the string and the read, and the two endpoints are read off from there.

Main results #

theorem Complexity.MultiTest.enc_edgeOf {Pos E Q : Type} (M : MultiTest Pos E Q) [Fintype E] [Fintype Q] [NumEnc E] [NumEnc Q] (k : Fin (Fintype.card M.Edge)) :
NumEnc.enc (M.edgeOf k) = k
theorem Complexity.MultiTest.val_vertIdx {Pos E Q : Type} (M : MultiTest Pos E Q) [Fintype Pos] [Fintype E] [NumEnc Pos] [NumEnc E] (v : M.Vert) :
(M.vertIdx v) = NumEnc.enc v

How an edge's number splits: the test, then the random string, then the read.

theorem Complexity.MultiTest.val_tail_toGraph {Pos E Q : Type} (M : MultiTest Pos E Q) [Fintype Pos] [Fintype E] [Fintype Q] [NumEnc Pos] [NumEnc E] [NumEnc Q] (k : Fin (Fintype.card M.Edge)) :

The first endpoint: the test vertex, numbered after all the positions.

theorem Complexity.MultiTest.val_head_toGraph {Pos E Q : Type} (M : MultiTest Pos E Q) [Fintype Pos] [Fintype E] [Fintype Q] [NumEnc Pos] [NumEnc E] [NumEnc Q] (k : Fin (Fintype.card M.Edge)) :
(M.toGraph.head k) = NumEnc.enc (M.pos (M.edgeOf k).1 (M.edgeOf k).2.1 (M.edgeOf k).2.2)

The second endpoint: the position the read asks for.

The composed proof's positions #

A position in a vertex's encoding block.

A position in a dart's linear table, after all the encoding blocks.

A dart's number splits into its vertex and its label.