ready
nanofil
A runtime is ready in a memory when its own state and that memory agree well enough that its next allocation is fresh. Readiness is the runtime's invariant: the axioms about allocation and the address space are stated only for ready states.
readyis a parameter ofRuntime;ready_statein Machine.v pairs it with the machine's memory.InterpRuntime's says every object lies between 0 and Next, empty if freed, Next is at most 2^48, and nothing at or above Next has been written.Every step keeps it (
mreachable_ready), fromready_kept,safepoint_readyandfresh_allocation. Where it holds,address_spacegivesobjects_fitandfreed_boundsgivesfreed_empty.
The subtlety: "the run starts ready" is a hypothesis of soundness (valid_no_unchecked), not a lemma. A valid module's data has no size limit, and interp:initial_memory/4 lays it out from 65536 whatever its size, so the initial memory need not be ready. The planned fix starts the heap above the module's data.
See runtime-axioms.md, Readiness and rocq.md, An object past 2^64.
Linked from
- Chain.v: run_access_checked
- Coverage.v: check_passes
- Doomed.v: mstep_dinv
- Doomed.v: run_doomed_checked
- ExternalCalls.v: effects_preserve
- ExternalCalls.v: hello_ready
- ExternalCalls.v: invoke_preserve
- ExternalCalls.v: local_effect_kept
- ExternalCalls.v: prefix_preserve
- ExternalCalls.v: span
- ExternalMachine.v: run_preserve
- ExternalMachine.v: state_ready
- ExternalMachine.v: step_ready
- Guard.v: run_guard_checked
- HiLogic.v: hi_memory_ready
- HiLogic.v: lit_reg
- How Iris works: Resources keyed by identity
- Identity.v: Identity
- Identity.v: ids
- Language.v: wp_labelled_safe
- Libio.v: allocate_buffer
- Logic.v: effects_agrees
- Logic.v: heap_labelled_safe
- Machine.v: Machine
- Machine.v: cases
- Machine.v: ready_state
- Panics.v: never_panics
- Panics.v: never_panics_by_invariant
- Persistence.v: mstep_inv
- Renew.v: Reuse
- Renew.v: run_point
- Renew.v: run_reuse_checked
- Runtime.v: ready
- Runtime.v: ready
- Runtime.v: safepoint_ready
- Single.v: mstep_sinv
- Soundness.v: unchecked_op
- Soundness.v: valid_no_unchecked
- address space
- fresh base
- identity
- machine
- region
- run
- runtime
- soundness of checking
- state interpretation
- the formal campaign: Campaign 3: the soundness theorem
- the formal campaign: The campaigns at a glance