Idea
A telescope is strictly positive in the distinguished sort variable when every occurrence of appears only as an output or result type of data supplied to a constructor, never to the left of an unrestricted function arrow.
Definition
Fix a type-theoretic context containing a distinguished sort symbol
A telescope over is a finite dependent context
We say that is strictly positive in if each type is strictly positive in in the previous context
So the main definition is the corresponding definition for types.
Strictly positive types
Relative to a context , define the class of types strictly positive in inductively as follows.
- If does not mention , then is strictly positive in .
- The sort itself is strictly positive in .
- If is strictly positive in , and is strictly positive in in context , then
is strictly positive in .
- If does not mention , and is strictly positive in in context , then
is strictly positive in .
Equivalently, function spaces
are allowed when occurs strictly positively in and does not occur in .
- If is strictly positive in , and are terms whose occurrences of are strictly positive, then
is strictly positive in .
Depending on how syntactic the definition is meant to be, clause 5 can be omitted from the definition of point-constructor telescopes and included only for path-constructor telescopes. For QIT signatures, it is often useful to allow identity types in the path-constructor telescope.
Intuition
Allowed examples:
provided and do not themselves mention .
Not allowed:
because appears to the left of an arrow.
Also not allowed:
because the argument type contains a negative occurrence of .
Summary formulation
Let be a distinguished sort symbol. A telescope
is strictly positive in if each type is generated by the grammar of strictly positive types in . This grammar allows itself, types not mentioning , dependent sums, identity types, and dependent products only when the domain does not mention and the codomain is strictly positive in . Equivalently, may occur as data produced or indexed by the constructor, but never as an argument to an unrestricted function space.
Signature notation
For a path constructor telescope, it is clearer to bind the telescope variable explicitly:
Equivalently,
After interpreting as the generated type , the constructor types become
and