Fixtype of pairs consisting of a set of optional types and a static environment.
This is a product type introduced by fty::defprod.
This captures the results of successfully type-checking statements.
In general, a statement may return a value (of some type) or not:
one such outcome can be captured, statically, as an optional type.
In the presence of conditionals,
different branches may return different optional types:
this leads to using finite sets of optional types
to capture the possible types of values returned by a statement,
including (for
Furthermore, a statement may introduce new variables and constants, which must be added to the static environment. This means that the type-checking of a statement also results in a possibly updated static environments.