Documentation

Complexitylib.Metacomplexity.MCSP.Raw.Internal

Raw truth-table MCSP -- proof internals #

theorem Complexity.MCSP.rawArity_eq_of_length_eq_pow_internal (bits : List Bool) {arity : } (hlength : bits.length = 2 ^ arity) :
rawArity bits = arity
theorem Complexity.MCSP.rawDecode?_tableBits_internal (threshold : ) (inst : Instance) :
rawDecode? threshold inst.tableBits = some (inst.withThreshold (threshold inst.arity))
theorem Complexity.MCSP.rawDecode?_eq_some_iff_internal (threshold : ) (bits : List Bool) (inst : Instance) :
rawDecode? threshold bits = some inst bits = inst.tableBits inst.threshold = threshold inst.arity
theorem Complexity.MCSP.rawToCanonical_tableBits_internal (threshold : ) (inst : Instance) :
rawToCanonical threshold inst.tableBits = (inst.withThreshold (threshold inst.arity)).encode
theorem Complexity.MCSP.canonicalToRaw_rawToCanonical_internal (threshold : ) {bits : List Bool} (hraw : IsRawTruthTable bits) :
canonicalToRaw (rawToCanonical threshold bits) = bits
theorem Complexity.MCSP.mem_rawAtThreshold_iff_exists_internal (threshold : ) (bits : List Bool) :
bits rawAtThreshold threshold ∃ (inst : Instance), bits = inst.tableBits inst.minimumSize threshold inst.arity
theorem Complexity.GapMCSP.rawSliceProblem_mapReducesVia_rawToCanonical_internal (parameters : SliceParameters) (hgap : parameters.IsGap) :
{ yesInstances := rawSliceYesLanguage parameters, noInstances := rawSliceNoLanguage parameters, disjoint := }.MapReducesVia { yesInstances := sliceYesLanguage parameters, noInstances := sliceNoLanguage parameters, disjoint := } (MCSP.rawToCanonical parameters.yesThreshold)
theorem Complexity.GapMCSP.sliceProblem_mapReducesVia_canonicalToRaw_internal (parameters : SliceParameters) (hgap : parameters.IsGap) :
{ yesInstances := sliceYesLanguage parameters, noInstances := sliceNoLanguage parameters, disjoint := }.MapReducesVia { yesInstances := rawSliceYesLanguage parameters, noInstances := rawSliceNoLanguage parameters, disjoint := } MCSP.canonicalToRaw