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.

  1. If does not mention , then is strictly positive in .
  2. The sort itself is strictly positive in .
  3. If is strictly positive in , and is strictly positive in in context , then

is strictly positive in .

  1. 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 .

  1. 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