doomed frame
nanofil also doomed, doom
In Fil-C builds on check_ahead
A frame is doomed after a check_ahead whose early bytes failed: the check yields its pointer anyway and the frame records the failure, because the validator promised that the frame will reach an access that fails on those bytes before anything observable happens.
interp.pl:
interp:doomed_result/5. The doomed run endstrapearlyWhyat the failing access, oruncheckedaheadWhyif it first reaches a poll edge, a return or an instruction that is not ahead-transparent. A renew of another object or a wrong limit staysuncheckedaliasoruncheckedlimit.Rocq: the
fr_doomedfield offrame,doomed_result,edge_step,jump_step. Doomed.v proves a doomed frame never steps tounchecked(run_doomed_checked) with the invariantdinv/doomed_ok: the scope holds weakly (scope_weak: a doomed proof holds its pointer, not a passed check), memory keeps the doom (doom_mem), and the validator's need at the point covers it (need_at).
The subtlety: a doomed frame claims nothing for the evidence invariant or the single-definition invariant; both exclude it, and Doomed.v treats it apart. A doomed frame never calls or returns, so every waiting caller is undoomed.
See rocq.md, The doomed frame and schedule.md, Interpreter rule.
Linked from
- Ahead.v: exit_in
- Chain.v: run_access_checked
- Doomed.v: ahead_holds
- Doomed.v: doomed_ok
- Doomed.v: doomed_step_checked
- Doomed.v: run_doomed_checked
- Doomed.v: scope_weak
- Evidence.v: lookup_put_same
- ExternalMachine.v: call_site
- ExternalMachine.v: doomed_config
- ExternalMachine.v: external_site
- ExternalMachine.v: unchecked_is_core
- Guard.v: run_guard_checked
- How Fil-C works: What makes it fast enough
- Invariant.v: frame_ok
- Machine.v: doomed_result_other
- Memory.v: res
- Renew.v: Plain
- Renew.v: run_point
- Renew.v: run_reuse_checked
- Semantics.v: doomed_result
- Semantics.v: edge_step
- Semantics.v: frame
- Soundness.v: step_unchecked_inst
- Soundness.v: undoomed_result
- StepRules.v: general_op
- Steps.v: doomed_result_doomed
- Steps.v: doomed_result_fresh
- Steps.v: find_direct_in
- ahead-transparent
- check_ahead
- evidence invariant
- external call
- frame
- live fact
- parked
- scope
- single definition