Documentation

Complexitylib.Metacomplexity.NisanWigderson.Reconstruction.Program.ListDecoding.Internal

List decoding explicit NW reconstruction programs -- proof internals #

theorem Complexity.NWDesign.IndexedReconstructionProgram.length_encodeBooleanPayload_internal {listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} (program : design.IndexedReconstructionProgram listSize) :
theorem Complexity.NWDesign.IndexedReconstructionProgram.length_encode_internal {listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} (program : design.IndexedReconstructionProgram listSize) :
theorem Complexity.NWDesign.decodeIndexedReconstructionBooleanPayload?_encode_internal {listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} (program : design.IndexedReconstructionProgram listSize) :
theorem Complexity.NWDesign.decodeIndexedReconstructionProgram?_encode_internal {listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} (program : design.IndexedReconstructionProgram listSize) :
design.decodeIndexedReconstructionProgram? listSize program.encode = some program
theorem Complexity.NWDesign.decodeIndexedMessage?_encode_internal {messageLength listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} (program : design.IndexedReconstructionProgram listSize) (code : BooleanListCode messageLength listSize (Fin inputLengthBool)) (test : Finset (Fin outputLengthBool)) :
design.decodeIndexedMessage? code test program.encode = some (program.decodedMessage code test)
theorem Complexity.NWDesign.HasEncodedMessageCertificateWithin.timeBoundedKolmogorovComplexity_le_internal {messageLength listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} {test : Finset (Fin outputLengthBool)} {message : Fin messageLengthBool} {bound : } (realization : design.EncodedMessageDecoderRealization code test) (hcertificate : design.HasEncodedMessageCertificateWithin code test message bound) :
realization.machine.timeBoundedKolmogorovComplexity (List.ofFn message) (realization.time bound) bound
theorem Complexity.NWDesign.HasEncodedMessageCertificateWithin.oracleTimeBoundedKolmogorovComplexity_le_internal {messageLength listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} {test : Finset (Fin outputLengthBool)} {message : Fin messageLengthBool} {bound : } (realization : design.OracleEncodedMessageDecoderRealization code) (hcertificate : design.HasEncodedMessageCertificateWithin code test message bound) :
realization.machine.timeBoundedKolmogorovComplexity (finiteTestOracle test) (List.ofFn message) (realization.time bound) bound
theorem Complexity.NWDesign.OracleEncodedMessageDecoderRealization.efficientlyUniversal_transfer_internal {messageLength listSize outputLength inputLength seedLength universalTapes : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} (realization : design.OracleEncodedMessageDecoderRealization code) (universal : OracleTM universalTapes) (huniversal : universal.IsEfficientlyUniversal) :
∃ (constant : ) (coefficient : ) (exponent : ), ∀ (test : Finset (Fin outputLengthBool)) (message : Fin messageLengthBool) (bound : ), design.HasEncodedMessageCertificateWithin code test message bounduniversal.timeBoundedKolmogorovComplexity (finiteTestOracle test) (List.ofFn message) (coefficient * (bound + realization.time bound + 1) ^ exponent) ↑(bound + constant)
theorem Complexity.NWDesign.EncodedMessageDecoderRealization.efficientlyUniversal_transfer_internal {messageLength listSize outputLength inputLength seedLength universalTapes : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} {test : Finset (Fin outputLengthBool)} (realization : design.EncodedMessageDecoderRealization code test) (universal : TM universalTapes) (huniversal : universal.IsEfficientlyUniversal) :
∃ (constant : ) (coefficient : ) (exponent : ), ∀ (message : Fin messageLengthBool) (bound : ), design.HasEncodedMessageCertificateWithin code test message bounduniversal.timeBoundedKolmogorovComplexity (List.ofFn message) (coefficient * (bound + realization.time bound + 1) ^ exponent) ↑(bound + constant)
theorem Complexity.NWDesign.ReconstructionProgram.agreementProbability_eq_listCode_internal {messageLength listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} (program : design.ReconstructionProgram) (code : BooleanListCode messageLength listSize (Fin inputLengthBool)) (message : Fin messageLengthBool) (test : Finset (Fin outputLengthBool)) :
program.agreementProbability (code.encode message) test = BooleanListCode.agreementProbability (code.encode message) (program.predictor test)
theorem Complexity.NWDesign.ReconstructionProgram.mem_listDecoderCandidates_and_card_le_internal {messageLength listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} (program : design.ReconstructionProgram) (code : BooleanListCode messageLength listSize (Fin inputLengthBool)) (message : Fin messageLengthBool) (test : Finset (Fin outputLengthBool)) (margin : ) (hcode : code.IsListDecodableAt (1 / 2 - margin)) (hagreement : 1 / 2 + margin program.agreementProbability (code.encode message) test) :
message program.listDecoderCandidates code test (program.listDecoderCandidates code test).card listSize
theorem Complexity.NWDesign.ReconstructionProgram.exists_indexedProgram_of_half_add_margin_internal {messageLength listSize outputLength inputLength seedLength : } {design : NWDesign outputLength inputLength seedLength} (program : design.ReconstructionProgram) (code : BooleanListCode messageLength listSize (Fin inputLengthBool)) (message : Fin messageLengthBool) (test : Finset (Fin outputLengthBool)) (margin : ) (hcode : code.IsListDecodableAt (1 / 2 - margin)) (hagreement : 1 / 2 + margin program.agreementProbability (code.encode message) test) :
∃ (indexed : design.IndexedReconstructionProgram listSize), indexed.reconstruction = program indexed.decodedMessage code test = message indexed.encodeBooleanPayload.length = program.encodeBooleanPayload.length + BooleanListCode.decoderIndexBitWidth listSize
theorem Complexity.NWDesign.findGoodReconstructionCertificate_indexedProgram_sound_internal {messageLength listSize outputLength inputLength seedLength trials budget : } (design : NWDesign outputLength inputLength seedLength) (code : BooleanListCode messageLength listSize (Fin inputLengthBool)) (message : Fin messageLengthBool) (test : Finset (Fin outputLengthBool)) (margin : ) (hcode : code.IsListDecodableAt (1 / 2 - margin)) (hbudget : design.HasOverlapBudget budget) (batch : Fin trialsReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength) (hfind : design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + margin) batch = some certificate) :
∃ (indexed : design.IndexedReconstructionProgram listSize), indexed.reconstruction = certificate.toProgram design (code.encode message) indexed.decodedMessage code test = message indexed.encodeBooleanPayload.length budget + (seedLength - inputLength) + 1 + BooleanListCode.decoderIndexBitWidth listSize
theorem Complexity.NWDesign.findGoodReconstructionCertificate_fullyEncodedIndexedProgram_sound_internal {messageLength listSize outputLength inputLength seedLength trials budget : } (design : NWDesign outputLength inputLength seedLength) (code : BooleanListCode messageLength listSize (Fin inputLengthBool)) (message : Fin messageLengthBool) (test : Finset (Fin outputLengthBool)) (margin : ) (hcode : code.IsListDecodableAt (1 / 2 - margin)) (hbudget : design.HasOverlapBudget budget) (batch : Fin trialsReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength) (hfind : design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + margin) batch = some certificate) :
∃ (indexed : design.IndexedReconstructionProgram listSize), indexed.reconstruction = certificate.toProgram design (code.encode message) indexed.decodedMessage code test = message indexed.encode.length 1 + Fin.bitWidth outputLength + (budget + (seedLength - inputLength) + 1) + BooleanListCode.decoderIndexBitWidth listSize
theorem Complexity.NWDesign.findGoodReconstructionCertificate_encodedMessage_sound_internal {messageLength listSize outputLength inputLength seedLength trials budget : } (design : NWDesign outputLength inputLength seedLength) (code : BooleanListCode messageLength listSize (Fin inputLengthBool)) (message : Fin messageLengthBool) (test : Finset (Fin outputLengthBool)) (margin : ) (hcode : code.IsListDecodableAt (1 / 2 - margin)) (hbudget : design.HasOverlapBudget budget) (batch : Fin trialsReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength) (hfind : design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + margin) batch = some certificate) :
∃ (description : List Bool), design.decodeIndexedMessage? code test description = some message description.length 1 + Fin.bitWidth outputLength + (budget + (seedLength - inputLength) + 1) + BooleanListCode.decoderIndexBitWidth listSize
theorem Complexity.NWDesign.findGoodReconstructionCertificate_listDecoding_sound_internal {messageLength listSize outputLength inputLength seedLength trials budget : } (design : NWDesign outputLength inputLength seedLength) (code : BooleanListCode messageLength listSize (Fin inputLengthBool)) (message : Fin messageLengthBool) (test : Finset (Fin outputLengthBool)) (margin : ) (hcode : code.IsListDecodableAt (1 / 2 - margin)) (hbudget : design.HasOverlapBudget budget) (batch : Fin trialsReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength) (hfind : design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + margin) batch = some certificate) :
message (certificate.toProgram design (code.encode message)).listDecoderCandidates code test ((certificate.toProgram design (code.encode message)).listDecoderCandidates code test).card listSize (certificate.toProgram design (code.encode message)).encodeBooleanPayload.length budget + (seedLength - inputLength) + 1
theorem Complexity.NWDesign.half_le_listDecodedReconstructionProgram_of_randomTest_internal {messageLength listSize outputLength inputLength seedLength tapes time threshold budget : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} {message : Fin messageLengthBool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hdensity : 0 < density) (hcode : code.IsListDecodableAt (1 / 2 - density / outputLength / 2)) (hlow : (design.generator (code.encode message)).HasLowTimeBoundedComplexity machine time threshold) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) (hbudget : design.HasOverlapBudget budget) :
1 / 2 design.checkedReconstructionBatchSuccessProbability (code.encode message) test (1 / 2 + density / outputLength / 2) (reconstructionAdviceTrialCount outputLength density) ∀ (batch : Fin (reconstructionAdviceTrialCount outputLength density)ReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength), design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + density / outputLength / 2) batch = some certificatemessage (certificate.toProgram design (code.encode message)).listDecoderCandidates code test ((certificate.toProgram design (code.encode message)).listDecoderCandidates code test).card listSize (certificate.toProgram design (code.encode message)).encodeBooleanPayload.length budget + (seedLength - inputLength) + 1
theorem Complexity.NWDesign.half_le_indexedReconstructionProgram_of_randomTest_internal {messageLength listSize outputLength inputLength seedLength tapes time threshold budget : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} {message : Fin messageLengthBool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hdensity : 0 < density) (hcode : code.IsListDecodableAt (1 / 2 - density / outputLength / 2)) (hlow : (design.generator (code.encode message)).HasLowTimeBoundedComplexity machine time threshold) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) (hbudget : design.HasOverlapBudget budget) :
1 / 2 design.checkedReconstructionBatchSuccessProbability (code.encode message) test (1 / 2 + density / outputLength / 2) (reconstructionAdviceTrialCount outputLength density) ∀ (batch : Fin (reconstructionAdviceTrialCount outputLength density)ReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength), design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + density / outputLength / 2) batch = some certificate∃ (indexed : design.IndexedReconstructionProgram listSize), indexed.reconstruction = certificate.toProgram design (code.encode message) indexed.decodedMessage code test = message indexed.encodeBooleanPayload.length budget + (seedLength - inputLength) + 1 + BooleanListCode.decoderIndexBitWidth listSize
theorem Complexity.NWDesign.half_le_fullyEncodedIndexedReconstructionProgram_of_randomTest_internal {messageLength listSize outputLength inputLength seedLength tapes time threshold budget : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} {message : Fin messageLengthBool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hdensity : 0 < density) (hcode : code.IsListDecodableAt (1 / 2 - density / outputLength / 2)) (hlow : (design.generator (code.encode message)).HasLowTimeBoundedComplexity machine time threshold) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) (hbudget : design.HasOverlapBudget budget) :
1 / 2 design.checkedReconstructionBatchSuccessProbability (code.encode message) test (1 / 2 + density / outputLength / 2) (reconstructionAdviceTrialCount outputLength density) ∀ (batch : Fin (reconstructionAdviceTrialCount outputLength density)ReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength), design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + density / outputLength / 2) batch = some certificate∃ (indexed : design.IndexedReconstructionProgram listSize), indexed.reconstruction = certificate.toProgram design (code.encode message) indexed.decodedMessage code test = message indexed.encode.length 1 + Fin.bitWidth outputLength + (budget + (seedLength - inputLength) + 1) + BooleanListCode.decoderIndexBitWidth listSize
theorem Complexity.NWDesign.half_le_listDecodedReconstructionProgram_of_seedDescriptions_internal {messageLength listSize outputLength inputLength seedLength tapes time threshold budget : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} {message : Fin messageLengthBool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hdensity : 0 < density) (hcode : code.IsListDecodableAt (1 / 2 - density / outputLength / 2)) (hseedLength : seedLength < threshold) (hproduces : ∀ (seed : Fin seedLengthBool), machine.ProducesInTime (List.ofFn seed) (List.ofFn (design.generator (code.encode message) seed)) time) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) (hbudget : design.HasOverlapBudget budget) :
1 / 2 design.checkedReconstructionBatchSuccessProbability (code.encode message) test (1 / 2 + density / outputLength / 2) (reconstructionAdviceTrialCount outputLength density) ∀ (batch : Fin (reconstructionAdviceTrialCount outputLength density)ReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength), design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + density / outputLength / 2) batch = some certificatemessage (certificate.toProgram design (code.encode message)).listDecoderCandidates code test ((certificate.toProgram design (code.encode message)).listDecoderCandidates code test).card listSize (certificate.toProgram design (code.encode message)).encodeBooleanPayload.length budget + (seedLength - inputLength) + 1
theorem Complexity.NWDesign.half_le_indexedReconstructionProgram_of_seedDescriptions_internal {messageLength listSize outputLength inputLength seedLength tapes time threshold budget : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} {message : Fin messageLengthBool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hdensity : 0 < density) (hcode : code.IsListDecodableAt (1 / 2 - density / outputLength / 2)) (hseedLength : seedLength < threshold) (hproduces : ∀ (seed : Fin seedLengthBool), machine.ProducesInTime (List.ofFn seed) (List.ofFn (design.generator (code.encode message) seed)) time) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) (hbudget : design.HasOverlapBudget budget) :
1 / 2 design.checkedReconstructionBatchSuccessProbability (code.encode message) test (1 / 2 + density / outputLength / 2) (reconstructionAdviceTrialCount outputLength density) ∀ (batch : Fin (reconstructionAdviceTrialCount outputLength density)ReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength), design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + density / outputLength / 2) batch = some certificate∃ (indexed : design.IndexedReconstructionProgram listSize), indexed.reconstruction = certificate.toProgram design (code.encode message) indexed.decodedMessage code test = message indexed.encodeBooleanPayload.length budget + (seedLength - inputLength) + 1 + BooleanListCode.decoderIndexBitWidth listSize
theorem Complexity.NWDesign.half_le_fullyEncodedIndexedReconstructionProgram_of_seedDescriptions_internal {messageLength listSize outputLength inputLength seedLength tapes time threshold budget : } {design : NWDesign outputLength inputLength seedLength} {code : BooleanListCode messageLength listSize (Fin inputLengthBool)} {message : Fin messageLengthBool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hdensity : 0 < density) (hcode : code.IsListDecodableAt (1 / 2 - density / outputLength / 2)) (hseedLength : seedLength < threshold) (hproduces : ∀ (seed : Fin seedLengthBool), machine.ProducesInTime (List.ofFn seed) (List.ofFn (design.generator (code.encode message) seed)) time) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) (hbudget : design.HasOverlapBudget budget) :
1 / 2 design.checkedReconstructionBatchSuccessProbability (code.encode message) test (1 / 2 + density / outputLength / 2) (reconstructionAdviceTrialCount outputLength density) ∀ (batch : Fin (reconstructionAdviceTrialCount outputLength density)ReconstructionTrial outputLength seedLength) (certificate : ReconstructionCertificate outputLength seedLength), design.findGoodReconstructionCertificate? (code.encode message) test (1 / 2 + density / outputLength / 2) batch = some certificate∃ (indexed : design.IndexedReconstructionProgram listSize), indexed.reconstruction = certificate.toProgram design (code.encode message) indexed.decodedMessage code test = message indexed.encode.length 1 + Fin.bitWidth outputLength + (budget + (seedLength - inputLength) + 1) + BooleanListCode.decoderIndexBitWidth listSize