fresh base
nanofil also fresh
In Fil-C a new capability overlaps no reachable one and its payload starts zeroed (GIMSO)
A fresh base is an address where a new object may be placed: positive, aligned, no object's identity (live or freed), overlapping no object's bounds, ending at or below 2^64, and reading as zero with no stored capability, as Fil-C's allocations do.
freshin Memory.v, for an allocation requestalloc_req. Semantics.v'sstepanswersFreshat an allocation, andstep_reltakes any fresh base, so the semantics never depends on where objects go.Every runtime's
allocmust choose one (fresh_allocation); the address space (address_space) then bounds the end by 2^48.interp.pl's allocator,
interp:alloc_base/6, takes the next aligned address from 2^32 (interp:stack_base/1) and only adds. That is one fresh choice; nothing may rely on it.
The subtlety: fresh is stated over objects as object_region finds them, not over every region in the list, so ready and fresh follow from each other without a lemma about the list's shape.
Linked from
- A program logic: The list-sum spikes
- A program logic: What it costs, measured
- How Fil-C works: Free, and the collector
- Identity.v: allocated_persists
- Identity.v: mstep_persists
- Memory.v: fresh
- Memory.v: reason
- Ops.v: fmt_of
- Persistence.v: alloc_inv
- Semantics.v: snapshot_values
- adequacy
- alloc
- ready
- step
- the formal campaign: Campaign 1: the core model in Rocq
- the formal campaign: The quest, in steps
- update modality