cas
nanofil
In Fil-C an atomic pointer lives in an atomic box (InvisiCaps)
Compare-and-exchange, the one atomic read-modify-write term in the IR: casT reads the T at an address and, if it equals Expected, writes New there, as one sequentially consistent step. Every other atomic operation is a loop of it (c_lower:rmw//7).
Its checked form raw_casT, Off always keeps its own check, and every cas ends every live fact. For p it compares addresses only, so a New may replace a pointer of another capability, as Fil-C's filc_strong_cas_ptr does. Atomics are outside the core subset: the Rocq model has no cas.
Linked from
- NFB guide (Argon): Bridging `Term.v` and `Syntax.v`: `IrTerm.v`, `Transport.v`, and `Nfb.v`
- NFB guide (Wonder): 11.2 Function bodies and instruction words
- NFB guide (Wonder): 12. The Prolog and Gallina sides
- NFB guide (Wonder): 7.1 What changes
- NFB guide (Wonder): 7.2 The evidence rule
- NFB guide (Wonderful): 19. One table, written twice
- NFB guide (Wonderful): 4. The instruction set
- NFB guide (Wonderful): 8. The checked vocabulary
- Pizlonate.v: cas_bytes
- Pizlonate.v: size_align
- Syntax.v: class
- Transport.v: dz
- core subset
- the formal campaign: Inquiries and investigations
- the formal campaign: The claims, kept apart