Succinct MCSP -- proof internals #
This module proves exactness of the nested sampled-instance codec and the
basic semantic facts used by the public SuccinctMCSP interface.
theorem
Complexity.SuccinctMCSP.Sample.matchesFunction_ofFunction_internal
{arity : ℕ}
(f : BitString arity → Bool)
(input : BitString arity)
:
(ofFunction f input).MatchesFunction f
theorem
Complexity.SuccinctMCSP.decodeSamples?_encodeSamples_internal
{arity : ℕ}
(samples : List (Sample arity))
:
theorem
Complexity.SuccinctMCSP.Instance.samplesFunction_ofInputs_internal
{arity threshold : ℕ}
(f : BitString arity → Bool)
(inputs : List (BitString arity))
:
(ofInputs threshold f inputs).SamplesFunction f
theorem
Complexity.SuccinctMCSP.Instance.hasCircuitAtMost_of_arity_eq_zero_iff_internal
(inst : Instance)
(harity : inst.arity = 0)
:
inst.HasCircuitAtMost ↔ ∃ (output : Bool), inst.SamplesFunction fun (x : BitString inst.arity) => output
theorem
Complexity.SuccinctMCSP.Instance.hasCircuitAtMost_iff_exists_circuit_internal
(inst : Instance)
[NeZero inst.arity]
:
inst.HasCircuitAtMost ↔ ∃ (internalGates : ℕ) (circuit : Circuit Basis.andOr2 inst.arity 1 internalGates),
circuit.size ≤ inst.threshold ∧ inst.SamplesFunction fun (input : BitString inst.arity) => circuit.eval input 0
theorem
Complexity.SuccinctMCSP.Instance.hasCircuitAtMost_threshold_mono_internal
(inst : Instance)
{first second : ℕ}
(hthreshold : first ≤ second)
(hsmall : { arity := inst.arity, samples := inst.samples, threshold := first }.HasCircuitAtMost)
:
{ arity := inst.arity, samples := inst.samples, threshold := second }.HasCircuitAtMost