Documentation

Complexitylib.Classes.Randomized.ApproximateCounting.Relative.OracleProgram.Internal

Oracle programs for relative approximate counting -- proof internals #

theorem Complexity.ApproximateCounting.Relative.inlineCircuitImplements_internal {inputWidth outputWidth domainWidth rounds precision failureBits : } [NeZero inputWidth] [NeZero outputWidth] {setOfInput : BitString inputWidthFinset (BitString domainWidth)} {program : AdaptiveOracleProgram (seedWidth domainWidth precision failureBits + inputWidth) outputWidth rounds} {oracle : BooleanOracle} (implementation : program.OracleCircuitImplementation) (himplementation : implementation.Implements oracle) (hprogram : OracleProgramImplements precision failureBits setOfInput program oracle) :
CircuitImplements precision failureBits setOfInput (program.inline implementation).snd
theorem Complexity.ApproximateCounting.Relative.exists_hardwired_accurate_of_mem_PPoly_internal {language : Language} {inputWidth outputWidth domainWidth rounds precision : } [NeZero inputWidth] [NeZero outputWidth] {setOfInput : BitString inputWidthFinset (BitString domainWidth)} (program : AdaptiveOracleProgram (seedWidth domainWidth precision (inputWidth + 1) + inputWidth) outputWidth rounds) (hprecision : 0 < precision) (hlanguage : language PPoly) (hprogram : ∀ (oracle : BooleanOracle), oracle.Decides languageOracleProgramImplements precision (inputWidth + 1) setOfInput program oracle) :
∃ (circuitOracle : PolynomialCircuitOracle language) (fixed : Circuit Basis.andOr2 inputWidth outputWidth (program.inlineCircuitOracle circuitOracle).fst), (∀ (input : BitString inputWidth), OutputIsAccurate precision setOfInput input (fixed.eval input)) fixed.size = (program.inlineCircuitOracle circuitOracle).snd.size