In type theory, a polynomial functor (or container functor) is a kind of endofunctor of a category of types that is intimately related to the concept of inductive and coinductive types. Specifically, all W-types (resp. M-types) are (isomorphic to) initial algebras (resp. final coalgebras) of such functors.
Polynomial functors have been studied in the more general setting of a pretopos with Σ-types;[1] this article deals only with the applications of this concept inside the category of types of a Martin-Löf style type theory.
Let U be a universe of types, let A : U, and let B : A → U be a family of types indexed by A. The pair (A, B) is sometimes called a signature[2] or a container.[3] The polynomial functor associated to the container (A, B) is defined as follows:[4][5][6]
Any functor naturally isomorphic to P is called a container functor.[7] The action of P on functions is defined by
Note that this assignment is only truly functorial in extensional type theories (see #Properties).
In intensional type theories, such functions are not truly functors, because the universe type is not strictly a category (the field of homotopy type theory is dedicated to exploring how the universe type behaves more like a higher category). However, it is functorial up to propositional equalities, that is, the following identity types are inhabited:
for any functions f and g and any type X, where i d X {\displaystyle {\mathsf {id}}_{X}} is the identity function on the type X.[8]