Conventions when talking about a generic language (= an instance of the
language
or mlanguage
interface), or when defining a specific language (is
in ml_lang/lang.v
or c_lang/lang.v
).
v
,vs
: value, list of valuese
: expressionσ
: state/heapK
,C
: evaluation context / continuationp
: program (has typelang_prog
ormlang_prog
)Λ
: language (has typelanguage ?val
ormlanguage ?val
)X
: set of "next states" after a step in the semantics (has typeexpr * ?state → Prop
)fn
: function name (has typestring
)
Conventions followed in interop/
and files importing interop/
(i.e anything
multi-language), starting from interop/basics.v
.
prm
: FFI primitive name (has typeprim
)
v
,vs
: ML value, list of values (have typeval
)ℓ
: ML location (has typeloc
)σ
: ML state/heap (has typestore
)
w
,ws
: C value, list of values (have typeword
)a
: C address (has typeaddr
)mem
: C state/heap (has typememory
)
lv
,lvs
: block-level value, list of values (have typelval
)γ
: block-level location (has typelloc
)blk
, (sometimesb
): block (has typeblock
)ρ
: entire state of the FFI semanticsρml
,ρc
: private state of the FFI semantics, on the ML/C side respectivelyζ
: block heap (has typelstore
)χ
: map of block-level locations to ML locations (has typelloc_map
)θ
: map of block-level locations to C addresses (has typeaddr_map
)
(TODO: in some places v/V
is used instead of lv/v
; these should be
updated...)
Ψ
: "protocol" (i.e spec for external calls) (has typeprotocol ?val ?Σ
)
(see also the Iris naming conventions)
P
,Q
: Iris assertions (of typeiProp ?Σ
)Φ
: post-condition or general Iris predicate (of type?A → iProp ?Σ
)E
: mask of fancy update or WPΣ
: global camera functor management (of typegFunctors
)