Cardinal arithmetic with types
Theorem
Sum, product and function type
If $X$ has two terms $a,b:X$ and $Y$ has three terms $u,v,w:Y$, then $X+Y$ has five terms
- $\nu_{\mathcal l}(a),\ \nu_{\mathcal l}(b),\ \nu_{\mathcal r}(u),\ \nu_{\mathcal r}(v),\ \nu_{\mathcal r}(w):X+Y$
Similarly, $X\times Y$ has six terms
- $\langle a,u\rangle,\ \langle a,v\rangle,\ \langle a,w\rangle,\ \langle b,u\rangle,\ \langle b,v\rangle,\ \langle b,w\rangle:X\times Y$
and $X\to Y$ has eight terms
- $a\mapsto u\text{ and }b\mapsto u,\ a\mapsto u\text{ and }b\mapsto v,\dots :X\to Y$
and these have no terms else. So clearly, at least for types where a cardinal assignment $|\cdot|$ into the natural numbers makes sense, we have
$\left|X+Y\right|=\left|X\right|+\left|Y\right|$ |
---|
$\left|X\times Y\right|=\left|X\right|\times \left|Y\right|$ |
$\left|X\to Y\right|=\left|Y\right|^{\left|X\right|}$ |
where $+,\times, \to$ on the left hand side are type constructors and the ones on the left hand side are the basic arithmetic operations.
Depended types
We haven't defined the constructor rules for depended sum and product, $\sum$ and $\prod$, but let's just remark that the above can be viewed as special cases for depended types:
If $x:A$ and $B(x)$ is a family of types varying over $A$ (the $B$'s are fibers over $A$), then the sum type $\sum(x:A).\,B(x)$ (disjoint union of fibers) and the product type $\prod(x:A).\,B(x)$ (space of sections) fulfill
$\left|\sum(x:A).\,B(x)\right|=\sum_{x:A}\left|B(x)\right|$ |
---|
$\left|\prod(x:A).\,B(x)\right|=\prod_{x:A}\left|B(x)\right|$ |
This doesn't just hold for the arithmetic side, but we can also define the type constructors in terms of $\sum$ and $\prod$:
For $A$ is a type of only two terms $\mathcal{l},\mathcal{r}:A$ and $B(\mathcal{l}):=X, B(\mathcal{r}):=Y$, we get
- $\sum(x:A).\,B(x)=B(\mathcal{l})+B(\mathcal{r})=X+Y$
For $B$ being constant (think of how the fibration looks like), we get
- $\sum(x:A).\,B(x)=\sum(x:A).\,B=A\times B$
- $\prod(x:A).\,B(x)=\prod(x:A).\,B=A\to B$