The transcript encoding inside the polynomial-time algebra #
⚠️ Unreviewed by Bolton
An interactive verifier reads Complexity.Protocol.view, which carries the transcript through
DataEncode.bitstringEncode. A machine walking the game tree therefore has to build that
encoding as it extends the transcript, one message at a time.
The encoding is a parenthesized serialization, so it is a plain concatenation once the outer
brackets are stripped: Complexity.encBody is the concatenation of the per-message encodings, and
extending the transcript appends to it (Complexity.encBody_append). That is what makes the walk
possible — nothing has to be re-encoded when a message is added or removed.
Main definitions #
Complexity.encBit,Complexity.encMsg,Complexity.encBody— the three layersComplexity.encStep— the scan computing a message's encoding
Main results #
Complexity.bitstringEncode_transcript— the encoding, spelled outComplexity.encBody_append— a new message is appendedComplexity.encMsgFn_mem_FP— a message can be encoded in polynomial time
The three layers #
The concatenation of the messages' encodings — the body of a transcript's encoding.
Equations
Instances For
Encoding a message is polynomial-time #
The packed scan #
The flattened per-bit encodings, computed by the scan.
Equations
Instances For
Transcripts given as rounds #
A transcript, read off a list of rounds. This is the shape a stack holds: one frame per round, carrying the verifier's message and the prover's reply.
Equations
- Complexity.flatRounds [] = []
- Complexity.flatRounds (p :: ps) = p.1 :: p.2 :: Complexity.flatRounds ps
Instances For
The body of the encoding of a transcript given as rounds.