Sparse register lookup — proof internals #
theorem
Complexity.RAM.RegisterStore.Machine.entryLookupTM_hoareTime_frame_internal
{n : ℕ}
(tapes : EntryScanTapes n)
(store : Store)
(address : ℕ)
(initialWork : Fin n → Tape)
(inp₀ out₀ : Tape)
(hready : EntryScanReady tapes.entry (List.flatMap Entry.encode store) address.bits initialWork initialWork)
(hcount : (initialWork tapes.count).HasBinaryNat (List.length store))
(hinput : TM.Parked inp₀)
(houtput : TM.Parked out₀)
:
(entryLookupTM tapes).HoareTime
(fun (inp : Tape) (work : Fin n → Tape) (out : Tape) => inp = inp₀ ∧ work = initialWork ∧ out = out₀)
(fun (inp : Tape) (work : Fin n → Tape) (out : Tape) =>
inp = inp₀ ∧ EntryLookupResult tapes store address initialWork work ∧ out = out₀)
(entryLookupTime tapes address store)