Documentation

Complexitylib.Metacomplexity.NisanWigderson.Hardwiring.Internal

Nisan--Wigderson overlap hardwiring -- proof internals #

theorem Complexity.NWDesign.map_challengeOverlap_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current previous : Fin outputLength) :
Finset.map (design.coordinates current) (design.challengeOverlap current previous) = design.support current design.support previous
theorem Complexity.NWDesign.card_challengeOverlap_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current previous : Fin outputLength) :
(design.challengeOverlap current previous).card = design.overlap current previous
theorem Complexity.NWDesign.seedWithChallenge_apply_coordinates_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current : Fin outputLength) (outside : Fin seedLengthBool) (challenge : Fin inputLengthBool) (input : Fin inputLength) :
design.seedWithChallenge current outside challenge ((design.coordinates current) input) = challenge input
theorem Complexity.NWDesign.seedWithChallenge_apply_of_not_mem_support_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current : Fin outputLength) (outside : Fin seedLengthBool) (challenge : Fin inputLengthBool) (coordinate : Fin seedLength) (hcoordinate : coordinatedesign.support current) :
design.seedWithChallenge current outside challenge coordinate = outside coordinate
theorem Complexity.NWDesign.challengedBlock_current_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current : Fin outputLength) (outside : Fin seedLengthBool) (challenge : Fin inputLengthBool) :
design.challengedBlock current current outside challenge = challenge
theorem Complexity.NWDesign.challengedBlock_dependsOn_overlap_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current previous : Fin outputLength) (outside : Fin seedLengthBool) :
DependsOn (design.challengedBlock current previous outside) (design.challengeOverlap current previous)
theorem Complexity.NWDesign.challengedValue_dependsOn_overlap_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current previous : Fin outputLength) (outside : Fin seedLengthBool) (observe : (Fin inputLengthBool)Bool) :
DependsOn (fun (challenge : Fin inputLengthBool) => observe (design.challengedBlock current previous outside challenge)) (design.challengeOverlap current previous)
theorem Complexity.NWDesign.predecessorTable_restrict_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current previous : Fin outputLength) (outside : Fin seedLengthBool) (observe : (Fin inputLengthBool)Bool) (challenge : Fin inputLengthBool) :
design.predecessorTable current previous outside observe (BooleanDependency.restrict (design.challengeOverlap current previous) challenge) = observe (design.challengedBlock current previous outside challenge)
theorem Complexity.NWDesign.card_predecessorAssignments_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current previous : Fin outputLength) :
Fintype.card ((design.challengeOverlap current previous)Bool) = 2 ^ design.overlap current previous
theorem Complexity.NWDesign.predecessorTableEntriesAt_eq_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current : Fin outputLength) :
design.predecessorTableEntriesAt current = previous < current, 2 ^ design.overlap current previous
theorem Complexity.NWDesign.overlapCostAt_eq_predecessorTableEntriesAt_add_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current : Fin outputLength) :
design.overlapCostAt current = design.predecessorTableEntriesAt current + (outputLength - (current + 1))
theorem Complexity.NWDesign.predecessorTableEntriesAt_le_overlapCostAt_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (current : Fin outputLength) :
design.predecessorTableEntriesAt current design.overlapCostAt current
theorem Complexity.NWDesign.predecessorTableEntriesAt_le_of_hasOverlapBudget_internal {outputLength inputLength seedLength budget : } {design : NWDesign outputLength inputLength seedLength} (hbudget : design.HasOverlapBudget budget) (current : Fin outputLength) :
design.predecessorTableEntriesAt current budget