Documentation

Complexitylib.Models.RandomAccessMachine.Structured.UnaryDecode.Internal

Structured RAM terminated-unary decoder — proof internals #

theorem Complexity.RAM.Structured.UnaryDecode.mainLoop_measured_internal {remaining : List Bool} {inputLength offset value : } {store : Store} (hready : CursorReady inputLength remaining offset value store) (hbound : Internal.StoreEnvelope (inputLength + inputBase) (inputLength + inputBase) store) :
∃ (final : Store) (cost : ) (space : ), Exec mainLoop store final (loopStepCount remaining) cost space cost timeBound inputLength space spaceBound inputLength (match CircuitCode.NatCode.decodePrefix? remaining with | none => final verdictReg = 0 final valueReg = value + remaining.length final pointerReg = inputBase + inputLength final remainingReg = 0 | some (decoded, rest) => final verdictReg = 1 final valueReg = value + decoded final pointerReg = inputBase + offset + decoded + 1 final remainingReg = rest.length) final activeReg = 0 final oneReg = 1 (∀ (index : ), inputBase indexfinal index = store index) Internal.StoreEnvelope (inputLength + inputBase) (inputLength + inputBase) final
theorem Complexity.RAM.Structured.UnaryDecode.program_measured_internal (bits : List Bool) :
∃ (final : Store) (cost : ) (space : ), Exec program (inputStore bits) final (stepCount bits) cost space cost timeBound bits.length space spaceBound bits.length match CircuitCode.NatCode.decodePrefix? bits with | none => final verdictReg = 0 final valueReg = bits.length final pointerReg = inputBase + bits.length final remainingReg = 0 | some (value, rest) => final verdictReg = 1 final valueReg = value final pointerReg = inputBase + value + 1 final remainingReg = rest.length