identity
nanofil also object identity, persists
In Fil-C the lower names the object
An object's identity is its base, the number its capabilities name; it outlives the object's bounds, so a freed object keeps its identity. One memory persists from another when every object of the first is in the second as it was, or freed: no identity is lost, moved or given to a new object.
Identity.v:
ids(every object is still an object) andpersists(as it was, or freed).persists_access: a check that passed in m passes again in a memory that persists from m, or traps out of bounds. That is what lets a reuse form trust an earlier check.mreachable_persists: every run that starts ready persists, from the runtime axiomsfree_keeps_ids(free reclaims nothing) andfreshallocation, androoting(a safepoint reclaims nothing the program can name, a lemma fromcollector_live).interp.pl gets it by construction: Next never reuses an address, and free keeps the region.
The subtlety: natively a freed object's address may be a new object's after a collection. Model and native agree on whether each access through a capability the program holds traps, not on its address bits.
See rocq.md, Identities persist and runtime-axioms.md, How the model uses them.
Linked from
- ExternalCalls.v: effects_preserve
- ExternalCalls.v: invoke_preserve
- ExternalCalls.v: prefix_preserve
- ExternalCalls.v: span
- ExternalMachine.v: resume_sinv
- ExternalMachine.v: run_preserve
- ExternalMachine.v: step_persists
- How Fil-C works: Pointers carry capabilities
- How Iris works
- How Iris works: Resources keyed by identity
- Identity.v: free_ids
- Identity.v: ids
- Identity.v: invalidate_locals_ids
- Identity.v: persists
- Memory.v: mem
- Pieces.v: piece
- Renew.v: renew_source_def
- Runtime.v: free_keeps_ids
- Runtime.v: free_res_keeps_ids
- Runtime.v: fresh_allocation
- Runtime.v: lifetime_step
- Runtime.v: region_step
- Runtime.v: rooting
- Semantics.v: flight_cap
- Semantics.v: invalidate_locals
- Sep.v: fp
- Single.v: replayable
- camera
- capability
- flight pointer
- fresh base
- ghost state
- live
- lower
- meta
- region
- replay
- root
- separation logic
- the formal campaign: Campaign 4, milestone 1: a standalone contract boundary