GapCVP proof, part 10 #
GapCVP reduction support.
Equations
- GapCVP.SourceFactor400BinaryConstructionABounds.gapFactor400 dimension = ↑dimension ^ (1 / 400)
Instances For
theorem
GapCVP.Factor400BinaryConstructiveSourcePlaces.sourceFormula_gapFactor400_eighty_mul_size_lt_fourth_power
(encodingLength : ℕ)
(F : Core.Formula)
:
80 * SourceFactor400BinaryConstructionABounds.gapFactor400 (sourceFormulaDimension encodingLength F) ^ 2 * ↑(Core.sourceSizeParameter encodingLength F) < ↑(Core.sourceSizeParameter encodingLength F) ^ 4
theorem
GapCVP.Factor400BinaryConstructiveSourcePlaces.sourceFormula_satisfiable_of_short_signed_solution
(encodingLength : ℕ)
(F : Core.Formula)
(z : Fin (sourceFormulaDimension encodingLength F) → ℤ)
(hz : (sourceFormulaBinarySystem encodingLength F).Solves z = true)
(hshort :
10 * Core.integerSquaredNorm z ≤ Fintype.card (sourceFormulaField encodingLength F) * Core.sourceSizeParameter encodingLength F ^ 4)
:
theorem
GapCVP.BinaryExplicitSourceSoundness.sourceFormulaExplicitBinarySystem_signedSolution_of_satisfiable
(encodingLength : ℕ)
(formula : Core.Formula)
(hsatisfiable : formula.Satisfiable = true)
:
∃ (vector : Fin (Factor400BinaryConstructiveSourcePlaces.sourceFormulaDimension encodingLength formula) → ℤ),
(BinaryExplicitAffineSystem.sourceFormulaExplicitBinarySystem encodingLength formula).Solves vector = true ∧ ↑(Core.integerSquaredNorm vector) ≤ ↑(Core.sourceOneHotCompletenessRadius formula
(Factor400BinaryConstructiveSourcePlaces.sourceFormulaGrid encodingLength formula)) ^ 2
theorem
GapCVP.BinaryExplicitSourceSoundness.sourceFormulaExplicitBinarySystem_squaredNorm_gt_factor400_of_unsatisfiable
(encodingLength : ℕ)
(formula : Core.Formula)
(vector : Fin (Factor400BinaryConstructiveSourcePlaces.sourceFormulaDimension encodingLength formula) → ℤ)
(hsolve : (BinaryExplicitAffineSystem.sourceFormulaExplicitBinarySystem encodingLength formula).Solves vector = true)
(hunsatisfiable : ¬formula.Satisfiable = true)
:
(SourceFactor400BinaryConstructionABounds.gapFactor400
(Factor400BinaryConstructiveSourcePlaces.sourceFormulaDimension encodingLength formula) * ↑(Core.sourceOneHotCompletenessRadius formula
(Factor400BinaryConstructiveSourcePlaces.sourceFormulaGrid encodingLength formula))) ^ 2 < ↑(Core.integerSquaredNorm vector)
@[reducible, inline]
GapCVP reduction support.
Equations
Instances For
def
GapCVP.Factor400BinaryInstanceBridge.effectiveGapCVPInstance
(H : Core.BinaryAffineSystem)
(hdimension : 0 < H.dimension)
(radius : ℚ)
(hradius : 0 < radius)
:
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
GapCVP.Factor400BinaryInstanceBridge.effectiveGapCVPInstance_wellFormed
(H : Core.BinaryAffineSystem)
(hdimension : 0 < H.dimension)
(radius : ℚ)
(hradius : 0 < radius)
:
noncomputable def
GapCVP.Factor400BinaryEffectiveBasisSerializerTM.effectiveBasisPackedAtomComputable :
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
GapCVP.Factor400BinaryEffectiveBasisSerializerTM.effectiveBasisPackedAtom_zero
(suffix : List Bool)
:
@[simp]
theorem
GapCVP.Factor400BinaryEffectiveBasisSerializerTM.effectiveBasisPackedAtom_one
(suffix : List Bool)
:
@[simp]
theorem
GapCVP.Factor400BinaryEffectiveBasisSerializerTM.effectiveBasisPackedAtom_two
(suffix : List Bool)
:
noncomputable def
GapCVP.Factor400BinaryEffectiveBasisSerializerTM.effectiveTargetPackedAtomComputable :
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
GapCVP.Factor400BinaryEffectiveBasisSerializerTM.effectiveTargetPackedAtom_false
(suffix : List Bool)
:
@[simp]
theorem
GapCVP.Factor400BinaryEffectiveBasisSerializerTM.effectiveTargetPackedAtom_true
(suffix : List Bool)
:
theorem
GapCVP.Factor400BinaryEffectiveBasisSerializerTM.effectiveSourceSerializerOutput_eq_flatten
(counter descriptors : List Bool → List Bool)
(records : List Bool → List (List Bool))
(input : List Bool)
(hcounter : counter input = List.replicate (records input).length true)
(hdescriptors :
descriptors input = SourceWholeOutputValidBranchRecordTM.sourceFlatAtomicDescriptorStream (records input))
:
def
GapCVP.SourceMixedRadixMaskSelectedFlatPreparationTM.sourceQaryMaskDynamicGridBaseSource
(width : SourceQaryMaskDynamicGridWidth)
(input : List Bool)
:
GapCVP reduction support.
Equations
- GapCVP.SourceMixedRadixMaskSelectedFlatPreparationTM.sourceQaryMaskDynamicGridBaseSource width input = GapCVP.BinaryEncoding.lengthPrefixedWord (width.output input) ++ input
Instances For
noncomputable def
GapCVP.SourceMixedRadixMaskSelectedFlatPreparationTM.maskDynamicGridBaseSourceComputable
(width : SourceQaryMaskDynamicGridWidth)
:
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
GapCVP.SourceMixedRadixMaskSelectedFlatPreparationTM.maskDynamicGridCandidateCatalogueOutput
(width : SourceQaryMaskDynamicGridWidth)
{candidate : List Bool → List Bool}
(computer : BitTM candidate)
(input : List Bool)
:
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
GapCVP.SourceMixedRadixMaskSelectedFlatPreparationTM.maskDynamicGridCandidateCatalogueComputable
(width : SourceQaryMaskDynamicGridWidth)
{candidate : List Bool → List Bool}
(computer : BitTM candidate)
:
BitTM (maskDynamicGridCandidateCatalogueOutput width computer)
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
GapCVP.SourceMixedRadixMaskSelectedFlatPreparationTM.maskDynamicGridCandidateCatalogueOutput_valid
(width : SourceQaryMaskDynamicGridWidth)
{candidate : List Bool → List Bool}
(computer : BitTM candidate)
(input : List Bool)
(count : ℕ)
(hwidth : width.output input = List.replicate count true)
:
maskDynamicGridCandidateCatalogueOutput width computer input = List.flatMap
(fun (rank : ℕ) =>
BinaryEncoding.lengthPrefixedWord
(candidate
(BinaryEncoding.lengthPrefixedWord (List.replicate rank true) ++ sourceQaryMaskDynamicGridBaseSource width input)))
(List.range count)
noncomputable def
GapCVP.SourceMixedRadixMaskSelectedFlatPreparationTM.maskDynamicGridRecordCatalogueOutput
(width : SourceQaryMaskDynamicGridWidth)
{record : List Bool → List Bool}
(computer : BitTM record)
:
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
GapCVP.SourceMixedRadixMaskSelectedFlatPreparationTM.maskDynamicGridRecordCatalogueComputable
(width : SourceQaryMaskDynamicGridWidth)
{record : List Bool → List Bool}
(computer : BitTM record)
:
BitTM (maskDynamicGridRecordCatalogueOutput width computer)
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
GapCVP.SourceMixedRadixMaskSelectedFlatPreparationTM.maskDynamicGridRecordCatalogueOutput_valid
(width : SourceQaryMaskDynamicGridWidth)
{record : List Bool → List Bool}
(computer : BitTM record)
(input : List Bool)
(count : ℕ)
(hwidth : width.output input = List.replicate count true)
:
maskDynamicGridRecordCatalogueOutput width computer input = List.flatMap
(fun (rank : ℕ) =>
record
(BinaryEncoding.lengthPrefixedWord (List.replicate rank true) ++ sourceQaryMaskDynamicGridBaseSource width input))
(List.range count)
noncomputable def
GapCVP.BinaryStructuralRecordTM.constructiveStructuralRecordCountOutput
(dimension : SourceMixedRadixMaskSelectedFlatPreparationTM.SourceQaryMaskDynamicGridWidth)
(input : List Bool)
:
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
GapCVP.BinaryStructuralRecordTM.constructiveStructuralRecordCountOutput_valid
(dimension : SourceMixedRadixMaskSelectedFlatPreparationTM.SourceQaryMaskDynamicGridWidth)
(input : List Bool)
(n : ℕ)
(hdimension : dimension.output input = List.replicate n true)
:
noncomputable def
GapCVP.BinaryStructuralRecordTM.constructiveStructuralRecordWidth
(dimension : SourceMixedRadixMaskSelectedFlatPreparationTM.SourceQaryMaskDynamicGridWidth)
:
Internal support shared across GapCVP continuation modules.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
GapCVP.BinaryStructuralRecordTM.constructiveStructuralRankQuery
(dimension : SourceMixedRadixMaskSelectedFlatPreparationTM.SourceQaryMaskDynamicGridWidth)
(input : List Bool)
(rank : ℕ)
:
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
GapCVP.BinaryStructuralRecordTM.constructiveStructuralDescriptorOutput
(dimension : SourceMixedRadixMaskSelectedFlatPreparationTM.SourceQaryMaskDynamicGridWidth)
(atom : ConstructiveStructuralAtomComputer)
:
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
GapCVP.BinaryStructuralRecordTM.constructiveStructuralDescriptorOutput_eq_records
(dimension : SourceMixedRadixMaskSelectedFlatPreparationTM.SourceQaryMaskDynamicGridWidth)
(atom : ConstructiveStructuralAtomComputer)
(input : List Bool)
(n : ℕ)
(records : List (List Bool))
(hdimension : dimension.output input = List.replicate n true)
(hcount : records.length = 2 + n + n * n)
(hatoms :
∀ rank < records.length, atom.output (constructiveStructuralRankQuery dimension input rank) = records.getD rank [])
:
constructiveStructuralDescriptorOutput dimension atom input = SourceWholeOutputValidBranchRecordTM.sourceFlatAtomicDescriptorStream records
noncomputable def
GapCVP.BinaryStructuralRecordTM.constructiveStructuralSourceWord
(dimension : SourceMixedRadixMaskSelectedFlatPreparationTM.SourceQaryMaskDynamicGridWidth)
(atom : ConstructiveStructuralAtomComputer)
:
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
GapCVP.BinaryStructuralRecordTM.constructiveStructuralSourceWordComputable
(dimension : SourceMixedRadixMaskSelectedFlatPreparationTM.SourceQaryMaskDynamicGridWidth)
(atom : ConstructiveStructuralAtomComputer)
:
BitTM (constructiveStructuralSourceWord dimension atom)
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
GapCVP.BinaryStructuralRecordTM.constructiveStructuralSourceWord_eq_encodeGapCVPInstance
(dimension : SourceMixedRadixMaskSelectedFlatPreparationTM.SourceQaryMaskDynamicGridWidth)
(atom : ConstructiveStructuralAtomComputer)
(input : List Bool)
(lattice : GapCVPInstance)
(hdimension : dimension.output input = List.replicate lattice.dimension true)
(hatoms :
∀ rank < (SourceWholeOutputAssemblyTM.sourceLatticeStructuralRecords lattice).length,
atom.output (constructiveStructuralRankQuery dimension input rank) = (SourceWholeOutputAssemblyTM.sourceLatticeStructuralRecords lattice).getD rank [])
:
theorem
GapCVP.Core.BinaryAffineSystem.effectiveGaussian_kernel_iff
(H : BinaryAffineSystem)
(assignment : Fin H.dimension → ZMod 2)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectiveGaussian_signedKernel_iff
(H : BinaryAffineSystem)
(z : Fin H.dimension → ℤ)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectivePivotRow_some_mem
(H : BinaryAffineSystem)
(column : Fin H.dimension)
(row : Fin H.rowCount)
(hrow : H.effectivePivotRowOption column = some row)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectivePivotRow_eq_some_of_mem
(H : BinaryAffineSystem)
(hnormal : EffectiveBinaryGaussian.PrefixNormal (List.finRange H.dimension).reverse H.effectiveGaussianState = true)
(column : Fin H.dimension)
(row : Fin H.rowCount)
(hmember : (row, column) ∈ H.effectiveGaussianState.pivots)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectiveReducedRow_mulVec
(H : BinaryAffineSystem)
(hnormal : EffectiveBinaryGaussian.PrefixNormal (List.finRange H.dimension).reverse H.effectiveGaussianState = true)
(hunique :
∀ (first second : Fin H.rowCount × Fin H.dimension),
first ∈ H.effectiveGaussianState.pivots →
second ∈ H.effectiveGaussianState.pivots → first.1 = second.1 → first.2 = second.2)
(bits : Fin H.dimension → ZMod 2)
(pivotColumn : Fin H.dimension)
(pivotRow : Fin H.rowCount)
(hpivot : H.effectivePivotRowOption pivotColumn = some pivotRow)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectiveSquareBasisMatrix_mulVec_pivot_full
(H : BinaryAffineSystem)
(coefficients : Fin H.dimension → ℤ)
(row : Fin H.dimension)
(pivot : Fin H.rowCount)
(hrow : H.effectivePivotRowOption row = some pivot)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectiveGaussian_kernel_iff_graph_of_normal
(H : BinaryAffineSystem)
(hnormal : EffectiveBinaryGaussian.PrefixNormal (List.finRange H.dimension).reverse H.effectiveGaussianState = true)
(hunique :
∀ (first second : Fin H.rowCount × Fin H.dimension),
first ∈ H.effectiveGaussianState.pivots →
second ∈ H.effectiveGaussianState.pivots → first.1 = second.1 → first.2 = second.2)
(bits : Fin H.dimension → ZMod 2)
:
H.effectiveGaussianState.system.check.mulVec bits = 0 ↔ ∀ (pivotColumn : Fin H.dimension) (pivotRow : Fin H.rowCount),
H.effectivePivotRowOption pivotColumn = some pivotRow →
bits pivotColumn = ∑ column : Fin H.dimension,
if H.effectivePivotRowOption column = none then
H.effectiveGaussianState.system.check pivotRow column * bits column
else 0
def
GapCVP.Core.BinaryAffineSystem.effectiveFreeLiftSum
(H : BinaryAffineSystem)
(row : Fin H.rowCount)
(z : Fin H.dimension → ℤ)
:
GapCVP reduction support.
Equations
- H.effectiveFreeLiftSum row z = ∑ column : Fin H.dimension, if H.effectivePivotRowOption column = none then ↑(H.effectiveGaussianState.system.check row column).val * z column else 0
Instances For
theorem
GapCVP.Core.BinaryAffineSystem.effectiveFreeLiftSum_cast
(H : BinaryAffineSystem)
(row : Fin H.rowCount)
(z : Fin H.dimension → ℤ)
:
↑(H.effectiveFreeLiftSum row z) = ∑ column : Fin H.dimension,
if H.effectivePivotRowOption column = none then H.effectiveGaussianState.system.check row column * ↑(z column)
else 0
def
GapCVP.Core.BinaryAffineSystem.effectiveBasisCoefficients
(H : BinaryAffineSystem)
(z : Fin H.dimension → ℤ)
:
GapCVP reduction support.
Equations
- H.effectiveBasisCoefficients z column = match H.effectivePivotRowOption column with | none => z column | some row => (z column - H.effectiveFreeLiftSum row z) / 2
Instances For
theorem
GapCVP.Core.BinaryAffineSystem.effectiveBasis_two_dvd_of_normal
(H : BinaryAffineSystem)
(hnormal : EffectiveBinaryGaussian.PrefixNormal (List.finRange H.dimension).reverse H.effectiveGaussianState = true)
(hunique :
∀ (first second : Fin H.rowCount × Fin H.dimension),
first ∈ H.effectiveGaussianState.pivots →
second ∈ H.effectiveGaussianState.pivots → first.1 = second.1 → first.2 = second.2)
(z : Fin H.dimension → ℤ)
(hz : H.InLattice z = true)
(column : Fin H.dimension)
(row : Fin H.rowCount)
(hpivot : H.effectivePivotRowOption column = some row)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectiveBasis_mulVec_coefficients_of_normal
(H : BinaryAffineSystem)
(hnormal : EffectiveBinaryGaussian.PrefixNormal (List.finRange H.dimension).reverse H.effectiveGaussianState = true)
(hunique :
∀ (first second : Fin H.rowCount × Fin H.dimension),
first ∈ H.effectiveGaussianState.pivots →
second ∈ H.effectiveGaussianState.pivots → first.1 = second.1 → first.2 = second.2)
(z : Fin H.dimension → ℤ)
(hz : H.InLattice z = true)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectiveBasis_mulVec_mem_lattice_of_normal
(H : BinaryAffineSystem)
(hnormal : EffectiveBinaryGaussian.PrefixNormal (List.finRange H.dimension).reverse H.effectiveGaussianState = true)
(hunique :
∀ (first second : Fin H.rowCount × Fin H.dimension),
first ∈ H.effectiveGaussianState.pivots →
second ∈ H.effectiveGaussianState.pivots → first.1 = second.1 → first.2 = second.2)
(coefficients : Fin H.dimension → ℤ)
:
theorem
GapCVP.Core.BinaryAffineSystem.inLattice_iff_exists_effectiveBasis_of_normal
(H : BinaryAffineSystem)
(hnormal : EffectiveBinaryGaussian.PrefixNormal (List.finRange H.dimension).reverse H.effectiveGaussianState = true)
(hunique :
∀ (first second : Fin H.rowCount × Fin H.dimension),
first ∈ H.effectiveGaussianState.pivots →
second ∈ H.effectiveGaussianState.pivots → first.1 = second.1 → first.2 = second.2)
(z : Fin H.dimension → ℤ)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectivePivotRows_unique
(H : BinaryAffineSystem)
(first second : Fin H.rowCount × Fin H.dimension)
(hfirst : first ∈ H.effectiveGaussianState.pivots)
(hsecond : second ∈ H.effectiveGaussianState.pivots)
(hrow : first.1 = second.1)
:
GapCVP reduction support.
Equations
- H.effectiveReducedConsistent = decide (∀ (row : Fin H.rowCount), H.effectiveGaussianState.nextPivot ≤ ↑row → H.effectiveGaussianState.system.rhs row = 0)
Instances For
@[simp]
theorem
GapCVP.Core.BinaryAffineSystem.effectiveReducedConsistent_iff
(H : BinaryAffineSystem)
:
H.effectiveReducedConsistent = true ↔ ∀ (row : Fin H.rowCount), H.effectiveGaussianState.nextPivot ≤ ↑row → H.effectiveGaussianState.system.rhs row = 0
theorem
GapCVP.Core.BinaryAffineSystem.effectiveAffineBits_satisfies
(H : BinaryAffineSystem)
(hconsistent : H.effectiveReducedConsistent = true)
:
theorem
GapCVP.Core.BinaryAffineSystem.effectiveAffineRepresentative_solves
(H : BinaryAffineSystem)
(hconsistent : H.effectiveReducedConsistent = true)
:
theorem
GapCVP.Core.effectiveConstructionAInstance_solution_coset
(H : BinaryAffineSystem)
(hconsistent : H.effectiveReducedConsistent = true)
(z : Fin H.dimension → ℤ)
:
theorem
GapCVP.Core.effectiveConstructionAInstance_yes_iff_signedSolution
(H : BinaryAffineSystem)
(hdimension : 0 < H.dimension)
(hconsistent : H.effectiveReducedConsistent = true)
(radius : ℚ)
(hradius : 0 < radius)
:
theorem
GapCVP.Core.effectiveConstructionAInstance_no_iff_signedSolutionNorm
(H : BinaryAffineSystem)
(hdimension : 0 < H.dimension)
(hconsistent : H.effectiveReducedConsistent = true)
(radius : ℚ)
(hradius : 0 < radius)
(exponent : ℝ)
:
GapCVP reduction support.
Equations
Instances For
GapCVP reduction support.
Equations
Instances For
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
GapCVP.BinaryDimensionTM.sourceClauseCountUnary_valid
(formula : ThreeCNF)
:
sourceClauseCountUnary (BinaryEncoding.encodeThreeCNF formula) = List.replicate (List.length formula) true
GapCVP reduction support.
Equations
Instances For
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
GapCVP.BinaryDimensionTM.nextPowerUnaryComputable
{target : List Bool → List Bool}
(computer : BitTM target)
:
BitTM (nextPowerUnaryOutput target)
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
GapCVP.BinaryDimensionTM.unarySubtractionComputable
{base subtract : List Bool → List Bool}
(hbase : BitTM base)
(hsubtract : BitTM subtract)
:
BitTM (unarySubtractionOutput base subtract)
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
GapCVP.BinaryDimensionTM.unarySubtractionOutput_valid
(base subtract : List Bool → List Bool)
(input : List Bool)
(first second : ℕ)
(hbase : base input = List.replicate first true)
(hsubtract : subtract input = List.replicate second true)
:
noncomputable def
GapCVP.SourceMixedRadixMaskSelectedRankTaggedSquareBasisPairTM.maskComputedWordEqualityComputable
{first second : List Bool → List Bool}
(hfirst : BitTM first)
(hsecond : BitTM second)
:
BitTM (maskComputedWordEquality first second)
GapCVP reduction support.
Equations
- One or more equations did not get rendered due to their size.