core subset
nanofil also IOutside
The core subset is the part of checked filc-mode IR that the Rocq model runs and validates: the integer, pointer and proof classes, floats, check and every reuse form, the raw accesses, flight, poll edges, direct calls, check_function with raw_call, free, named locals, touch, variadics and setjmp, which is validated as ir.pl does while its step is stuck, as the interpreter refuses it. A function that uses anything else decodes to IOutside.
Left out: vectors,
store,casand atomics,asm_fixed, and plain mode.Transport.v's decoder makes such a function
IOutsidein Syntax.v, and Semantics.v'sfn_defOutside. It keeps its address, itsfncapability and its term, so the validator can read its signature and calls to it and pointers to it behave as the interpreter's do; running it isStuck, and the gates report the runoutside.validanswersNonefor a module with such a function.
The subtlety: formal.md's "In scope" paragraph still lists floats and va_arg as deferred; both are now in the subset, as rocq.md's "Covered" paragraph says.
See rocq.md, What exists.
Linked from
- Buffer.v: buffer_find
- Compile.v: checked_lines
- Cycle.v: cycle_find
- ExternalMachine.v: core_stuck_outside
- ExternalMachine.v: external_site
- ExternalMachine.v: outside_ge
- HelloModule.v: hello_valid
- How Iris works: What comes next
- ListSum.v: ls_find_sum
- NFB guide (Wonderful): 9. How the validator makes this mean "safe"
- Panics.v: fails
- Panics.v: never_panics
- Semantics.v: fn_def
- Semantics.v: inst_out
- Semantics.v: inst_step
- Semantics.v: outcome
- StepRules.v: general_op
- Sum.v: sum_find
- Syntax.v: class
- Transport.v: dfunc
- Transport.v: dinst
- Transport.v: ditem
- Transport.v: dop
- Transport.v: dz
- Transport.v: is_outside
- Transport.v: unjudged_callers
- Validate.v: calls_global
- Validate.v: checked_inst_term
- Validate.v: checked_jump_term
- Validate.v: checked_op_term
- Validate.v: eclass
- Validate.v: first_func_linkage
- Validate.v: func_named
- Validate.v: item_name
- Validate.v: mem
- Validate.v: term_sig
- Validate.v: valid
- Validate.v: valid_func
- Validate.v: valid_op
- access
- asm_fixed
- cas
- mode
- mutant
- outcome
- step
- touch
- transport