Documentation

Complexitylib.Metacomplexity.ListDecoding.Internal

Finite Boolean list decoding -- proof internals #

theorem Complexity.BooleanListCode.decodeAtIndexBits?_encodeDecoderIndex_internal {messageLength listSize : } {coordinate : Type u} (code : BooleanListCode messageLength listSize coordinate) (received : coordinateBool) (index : Fin listSize) :
code.decodeAtIndexBits? received (encodeDecoderIndex index) = some (code.decode received index)
theorem Complexity.BooleanListCode.relativeDistance_eq_one_sub_agreementProbability_internal {coordinate : Type u} [Fintype coordinate] [DecidableEq coordinate] [Nonempty coordinate] (left right : coordinateBool) :
relativeDistance left right = 1 - agreementProbability left right
theorem Complexity.BooleanListCode.agreementProbability_add_relativeDistance_internal {coordinate : Type u} [Fintype coordinate] [DecidableEq coordinate] [Nonempty coordinate] (left right : coordinateBool) :
agreementProbability left right + relativeDistance left right = 1
theorem Complexity.BooleanListCode.relativeDistance_le_of_agreementProbability_ge_internal {coordinate : Type u} [Fintype coordinate] [DecidableEq coordinate] [Nonempty coordinate] {left right : coordinateBool} {radius : } (hagreement : 1 - radius agreementProbability left right) :
relativeDistance left right radius
theorem Complexity.BooleanListCode.exists_decoder_index_of_agreementProbability_ge_internal {messageLength listSize : } {coordinate : Type u} [Fintype coordinate] [DecidableEq coordinate] [Nonempty coordinate] {code : BooleanListCode messageLength listSize coordinate} {radius : } (hcode : code.IsListDecodableAt radius) (message : Fin messageLengthBool) (received : coordinateBool) (hagreement : 1 - radius agreementProbability (code.encode message) received) :
∃ (index : Fin listSize), code.decode received index = message
theorem Complexity.BooleanListCode.exists_indexBits_of_agreementProbability_ge_internal {messageLength listSize : } {coordinate : Type u} [Fintype coordinate] [DecidableEq coordinate] [Nonempty coordinate] {code : BooleanListCode messageLength listSize coordinate} {radius : } (hcode : code.IsListDecodableAt radius) (message : Fin messageLengthBool) (received : coordinateBool) (hagreement : 1 - radius agreementProbability (code.encode message) received) :
∃ (bits : List Bool), bits.length = decoderIndexBitWidth listSize code.decodeAtIndexBits? received bits = some message
theorem Complexity.BooleanListCode.mem_candidates_of_agreementProbability_ge_internal {messageLength listSize : } {coordinate : Type u} [Fintype coordinate] [DecidableEq coordinate] [Nonempty coordinate] {code : BooleanListCode messageLength listSize coordinate} {radius : } (hcode : code.IsListDecodableAt radius) (message : Fin messageLengthBool) (received : coordinateBool) (hagreement : 1 - radius agreementProbability (code.encode message) received) :
message code.candidates received
theorem Complexity.BooleanListCode.card_candidates_le_internal {messageLength listSize : } {coordinate : Type u} (code : BooleanListCode messageLength listSize coordinate) (received : coordinateBool) :
(code.candidates received).card listSize
theorem Complexity.BooleanListCode.mem_candidates_of_half_add_margin_internal {messageLength listSize : } {coordinate : Type u} [Fintype coordinate] [DecidableEq coordinate] [Nonempty coordinate] {code : BooleanListCode messageLength listSize coordinate} {margin : } (hcode : code.IsListDecodableAt (1 / 2 - margin)) (message : Fin messageLengthBool) (received : coordinateBool) (hagreement : 1 / 2 + margin agreementProbability (code.encode message) received) :
message code.candidates received
theorem Complexity.BooleanListCode.exists_indexBits_of_half_add_margin_internal {messageLength listSize : } {coordinate : Type u} [Fintype coordinate] [DecidableEq coordinate] [Nonempty coordinate] {code : BooleanListCode messageLength listSize coordinate} {margin : } (hcode : code.IsListDecodableAt (1 / 2 - margin)) (message : Fin messageLengthBool) (received : coordinateBool) (hagreement : 1 / 2 + margin agreementProbability (code.encode message) received) :
∃ (bits : List Bool), bits.length = decoderIndexBitWidth listSize code.decodeAtIndexBits? received bits = some message
theorem Complexity.BooleanListCode.mem_candidates_and_card_le_of_half_add_margin_internal {messageLength listSize : } {coordinate : Type u} [Fintype coordinate] [DecidableEq coordinate] [Nonempty coordinate] {code : BooleanListCode messageLength listSize coordinate} {margin : } (hcode : code.IsListDecodableAt (1 / 2 - margin)) (message : Fin messageLengthBool) (received : coordinateBool) (hagreement : 1 / 2 + margin agreementProbability (code.encode message) received) :
message code.candidates received (code.candidates received).card listSize