Fil-C on Nix

Filnix wiki

mbrock/filnix/nanofil

outcome

nanofil

In Fil-C a program ends by exiting, by a signal, or in a Fil-C panic

An outcome is how a run ends: a return, unreachable, undefined behaviour, a trap, unchecked, or running out of fuel. interp.pl and the model give the same outcomes term for term, which is what the outcome gate compares.

interp.plSemantics.v
retV, retsX1, X2, retRet, Rets, RetVoid
unreachableUnreachable
ubReasonUB
trapReasonTrap
uncheckedReasonUnchecked
out_of_fuelOutOfFuel

outcome is defined in Semantics.v; Transport.v's eoutcome encodes it back as interp.pl's term. interp.pl also has unknownasmM, Xs for asm_fixed, outside the core subset.

unchecked is the one a valid module never reaches (soundness, valid_no_unchecked). Campaign 7 sorts the others into panics and not: formal.md, What counts as a panic.

The subtlety: in the model UB comes only from an invalid float-to-integer conversion; plain mode's ubout_of_boundsA, Size is outside the subset.