Canonical encodings of Nisan--Wigderson designs -- proof internals #
theorem
Complexity.NWDesign.length_encode_internal
{outputLength inputLength seedLength : ℕ}
(design : NWDesign outputLength inputLength seedLength)
:
theorem
Complexity.NWDesign.decodeCoordinate?_encode_internal
{outputLength inputLength seedLength : ℕ}
(design : NWDesign outputLength inputLength seedLength)
(output : Fin outputLength)
(input : Fin inputLength)
:
decodeCoordinate? outputLength inputLength seedLength design.encode output input = some ((design.coordinates output) input)
theorem
Complexity.NWDesign.decodedCoordinates_encode_internal
{outputLength inputLength seedLength : ℕ}
(design : NWDesign outputLength inputLength seedLength)
(hvalid :
∀ (output : Fin outputLength) (input : Fin inputLength),
(decodeCoordinate? outputLength inputLength seedLength design.encode output input).isSome = true)
(output : Fin outputLength)
(input : Fin inputLength)
:
decodedCoordinates outputLength inputLength seedLength design.encode hvalid output input = (design.coordinates output) input
theorem
Complexity.NWDesign.DecoderInstance.length_encode_internal
(data : DecoderInstance)
:
data.encode.length = 2 * (data.messageLength.size + data.inverseAccuracy.size + data.outputLength.size + data.inputLength.size + data.seedLength.size) + 10 + data.outputLength * data.inputLength * Fin.bitWidth data.seedLength