Documentation

Complexity.Computability.Complexity.Classes.Oracle.Monotone

Monotonicity of the oracle classes under reductions #

If the oracle language A reduces to B by a polynomial-time map g, a computation relative to A becomes one relative to B: every request w is replaced by the request g w, of which one reply bit is kept (Cslib.Complexity.ComputableInPolyTimeWithOracle.of_polyTimeReducible). The certificate is open oracle substitution (Cslib.Probability.IsOraclePPTOn.run_interpret_preprocess_open): the handler answering requests to A is itself an oracle program querying B, charged for computing g w and for reading one bit of the reply. Hence P^A ⊆ P^B and NP^A ⊆ NP^B (Cslib.Complexity.PolyTimeReducible.PWithOracle_subset, Cslib.Complexity.PolyTimeReducible.NPWithOracle_subset), and polynomial-time equivalent oracles give the same classes.

Main results #

References #

Oracle monotonicity. If A reduces to B in polynomial time, then polynomial time relative to A is polynomial time relative to B: every request w is replaced by the request g w, keeping one bit of the reply.

P relative to an oracle is monotone under polynomial-time reductions of the oracle.

NP relative to an oracle is monotone under polynomial-time reductions of the oracle.