# "Impredicative" in type theory

I am confused. I think I've read two usages of the word "impredicative" in type theory:

1. When people talk about the "impredicative" version of Martin-Löf's type theory, which they say it is inconsistent. Apparently they call it impredicative because of Type : Type.
2. When people talk about the "impredicative" Prop in CoC. Apparently they call it impredicative because you can quantify over Prop and get Prop stuff.

Is it the case? One notion of impredicativity implies the other? Is there no problem (i.e. inconsistency) by assuming "Prop impredicative"?

The definition of an object $X$ is impredicative, if the definition uses a collection $C$ in the construction of $X$, such that $X$ is a member of $C$. So impredicativity is a form of circularity.

We are wary of circular definitions because they are often paradoxical. Fortunately it turns out that not all forms of circularity are (or appear to be) problematic. The most famous example of an impredicative definition that is circular, but (as far as we know) not contradictory is the definition of natural numbers in set theory:

$$\mathbb{N}\ \stackrel{\text{def}}{=}\ \bigcap \{X\ |\ X\ \text{is an inductive set}\}$$

where a set is inductive if it contains $\emptyset$ and is closed under the set-theoretic successor operation. Clearly, $\mathbb{N}$ is itself inductive, hence what you define on the left already occurs in some sense on the right.

By the "impredicative version of Martin-Löf's type theory" I guess you mean the type theory in his 1971 manuscript "An intuitionistic theory of types". This system has an impredicative axiom that stipulates a type of all types. For this reason the system is often simply called "type:type". This axiom is too strong as J.-Y. Girard showed, as it makes the type-theory inconsistent.

In contrast, the impredicativity in the CoC is not (known to be) inconsistent.

In some sense there are two forms of impredicativity: those that are known to be paradoxical, and those that are not.

• I don't think the definition of N is impredicative in set theory. The infinity axiom simply states that there is an inductive set. N is defined as the smallest inductive subset of that inductive set IIRC, not defined as the intersection of all inductive sets. Jun 26, 2016 at 6:20
• @Kaveh How do you define "smallest inductive subset" in a predicative way in ZF? Jun 26, 2016 at 10:58
• We don't need to define $\omega$ as the smallest inductive set, it is proven to have that property. We can define $\omega$ to be the smallest inductive subset of the inductive set that the infinity axioms states its existence. Jun 26, 2016 at 11:11
• Yes. Your definition is impredicative as the set you are defining ($N$) already occurs on the something you use on the right hand side of the definition. Jun 26, 2016 at 12:04
• Let me give you a different example. If $S$ is a set of vectors in a vector space $V$ then $span(S)$ = $\bigcap \{W\ |\ S \subseteq W, W \ \text{subspace of}\ V\}$. This is the usual impredicative definition of the vector space generated by $S$. We can make it predicative by setting $span(S)$ = $\{\alpha_1v_1 + ... + \alpha_nv_n\ |\ 0 \leq n, \alpha_i \in \mathbb{R}, v_i \in S\}$. I'm not sure how to carry out a similar 'predicativation' for $\mathbb{N}$ in ZF. Jun 26, 2016 at 12:13

In a system where Type:Type, the typing rule for the product would be trivial:

$$\frac{\Gamma \vdash A:Type\hspace{1cm} \Gamma, x:A \vdash B:Type} {\Gamma \vdash \forall x\!:\!A.B : Type}$$

Unfortunately, Type:Type is known to be inconsistent, and Type must inhabit some different sort, say Type:BigType. Then, the following case of the product becomes problematic:

$$\Gamma \vdash A:BigType\hspace{1cm} \Gamma, x:A \vdash B:Type$$

You may either conclude that

$$(*)\;\;\Gamma \vdash \forall x:A.B : BigType$$

or

$$(**)\;\; \Gamma \vdash \forall x:A.B : Type$$

The first approach, where you take the maximum among the type of A and B is the so called predicative approach, giving rise to a strictly stratified type theory. This is indeed consistent with our intuition of types as data structures.

The second approach is "impredicative": since Type:BigType, if B:Type, we get

$$\forall X\!:\!Type.B: Type$$

but this expression is quantifying over a collection of items (Type) comprising the product type we are defining as one of its elements.

Note however that is not so unreasonable in case you are interpreting Types as propositions: if $B:Prop$, then $\forall X\!:\!Prop.B$ looks like a legitimate, higher order proposition, hence it looks quite "natural" (for everybody who is not a constructivist) to conclude that $\forall X\!:\!Prop.B : Prop$

In fact, (**) is not inconsistent (system F adopts this rule). The only price you have to pay is that you must renounce to have strong elimination rules. In Coq terms, you cannot extract from a proposition anything but a proof of some other proposition. As a corollary, you have no way in Coq to prove that two proofs of a same proposition are different from each other.
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 1, "mathjax_display_tex": 1, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.9526993632316589, "perplexity": 455.10898826171893}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2022-33/segments/1659882572898.29/warc/CC-MAIN-20220817092402-20220817122402-00118.warc.gz"}