Finite Boolean list decoding -- proof internals #
theorem
Complexity.BooleanListCode.length_encodeDecoderIndex_internal
{listSize : ℕ}
(index : Fin listSize)
:
theorem
Complexity.BooleanListCode.decodeDecoderIndex?_encodeDecoderIndex_internal
{listSize : ℕ}
(index : Fin listSize)
:
theorem
Complexity.BooleanListCode.decodeAtIndexBits?_encodeDecoderIndex_internal
{messageLength listSize : ℕ}
{coordinate : Type u}
(code : BooleanListCode messageLength listSize coordinate)
(received : coordinate → Bool)
(index : Fin listSize)
:
theorem
Complexity.BooleanListCode.relativeDistance_eq_one_sub_agreementProbability_internal
{coordinate : Type u}
[Fintype coordinate]
[DecidableEq coordinate]
[Nonempty coordinate]
(left right : coordinate → Bool)
:
theorem
Complexity.BooleanListCode.agreementProbability_add_relativeDistance_internal
{coordinate : Type u}
[Fintype coordinate]
[DecidableEq coordinate]
[Nonempty coordinate]
(left right : coordinate → Bool)
:
theorem
Complexity.BooleanListCode.relativeDistance_le_of_agreementProbability_ge_internal
{coordinate : Type u}
[Fintype coordinate]
[DecidableEq coordinate]
[Nonempty coordinate]
{left right : coordinate → Bool}
{radius : ℚ}
(hagreement : 1 - radius ≤ agreementProbability left right)
:
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 messageLength → Bool)
(received : coordinate → Bool)
(hagreement : 1 - radius ≤ agreementProbability (code.encode message) received)
:
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 messageLength → Bool)
(received : coordinate → Bool)
(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 messageLength → Bool)
(received : coordinate → Bool)
(hagreement : 1 - radius ≤ agreementProbability (code.encode message) received)
:
theorem
Complexity.BooleanListCode.card_candidates_le_internal
{messageLength listSize : ℕ}
{coordinate : Type u}
(code : BooleanListCode messageLength listSize coordinate)
(received : coordinate → Bool)
:
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 messageLength → Bool)
(received : coordinate → Bool)
(hagreement : 1 / 2 + margin ≤ agreementProbability (code.encode message) 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 messageLength → Bool)
(received : coordinate → Bool)
(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 messageLength → Bool)
(received : coordinate → Bool)
(hagreement : 1 / 2 + margin ≤ agreementProbability (code.encode message) received)
: