Documentation

Complexitylib.Models.TuringMachine.Oracle.Universality

Oracle-uniform universal-machine interfaces #

The same finite compiler and simulation clock must work for every Boolean oracle. Semantic and timed simulations compose, and efficient oracle universality implies semantic oracle universality.

theorem Complexity.OracleTM.Simulates.refl {firstTapes : } (machine : OracleTM firstTapes) :
machine.Simulates machine id

Every oracle machine simulates itself under the identity compiler.

theorem Complexity.OracleTM.Simulates.comp {firstTapes secondTapes thirdTapes : } {first : OracleTM firstTapes} {second : OracleTM secondTapes} {third : OracleTM thirdTapes} {compileFirst compileSecond : List BoolList Bool} (hfirst : first.Simulates second compileFirst) (hsecond : second.Simulates third compileSecond) :
first.Simulates third (compileFirst compileSecond)

Oracle-uniform semantic simulations compose.

theorem Complexity.OracleTM.SimulatesInTime.refl {firstTapes : } (machine : OracleTM firstTapes) :
machine.SimulatesInTime machine id fun (x : List Bool) (sourceTime : ) => sourceTime

Identity execution has identity oracle-simulation overhead.

theorem Complexity.OracleTM.SimulatesInTime.comp {firstTapes secondTapes thirdTapes : } {first : OracleTM firstTapes} {second : OracleTM secondTapes} {third : OracleTM thirdTapes} {compileFirst compileSecond : List BoolList Bool} {clockFirst clockSecond : TM.TimeOverhead} (hfirst : first.SimulatesInTime second compileFirst clockFirst) (hsecond : second.SimulatesInTime third compileSecond clockSecond) :
first.SimulatesInTime third (compileFirst compileSecond) fun (program : List Bool) (sourceTime : ) => clockFirst (compileSecond program) (clockSecond program sourceTime)

Timed oracle-uniform simulations compose by nesting their clocks.

theorem Complexity.OracleTM.IsEfficientlyUniversalFor.isUniversal {firstTapes : } {simulator : OracleTM firstTapes} {admissible : TM.TimeOverheadProp} (h : simulator.IsEfficientlyUniversalFor admissible) :
simulator.IsUniversal

Efficient oracle universality for any clock policy implies semantic oracle universality.

theorem Complexity.OracleTM.IsEfficientlyUniversal.isUniversal {firstTapes : } {simulator : OracleTM firstTapes} (h : simulator.IsEfficientlyUniversal) :
simulator.IsUniversal

Polynomially efficient oracle universality implies semantic oracle universality.

theorem Complexity.OracleTM.IsEfficientlyUniversalFor.mono {firstTapes : } {simulator : OracleTM firstTapes} {firstPolicy secondPolicy : TM.TimeOverheadProp} (hpolicy : ∀ (clock : TM.TimeOverhead), firstPolicy clocksecondPolicy clock) (h : simulator.IsEfficientlyUniversalFor firstPolicy) :
simulator.IsEfficientlyUniversalFor secondPolicy

Weakening the admissible clock policy preserves oracle universality.