User blog comment:Upquark11111/An Explanation of Loader's Number/@comment-11227630-20171210002438/@comment-26454151-20171210091708

1. I'm not quite sure, but I believe that the 3-rule version is equivalent to the 7-rule version. The 3-rule version you provided appears to completely do away with sorts and kinds. In λ→ the only thing that is of type $$\square$$ is $$\ast$$. Every other type is going to be of type $$\ast$$. There's a lot of redundancy there, so completely removing $$\square$$ and $$\ast$$ would get rid of all the clutter. Also, λ→ isn't actually supposed to have pi types. λ→ has a degenerative form of pi types, where the body is constant and the variable in the head does nothing. It just reduces to $$A\rightarrow B$$. The conversion rule also does nothing in λ→, as types are unchanging and static. The only things you can do to a type are judgement and putting them together to form function types. There is no β-reduction of types.

2. Basically, the main magic that happens in Iter is when we perform the application $$(n\ f)$$. However, with the absence of polymorphic types, we have to settle with $$\mathrm{nat} =(A\rightarrow A)\rightarrow (A\rightarrow A)$$. We can't have $$\mathrm{nat} = \Pi A:\ast .(A\rightarrow A)\rightarrow (A\rightarrow A)$$ because the type in the head of the pi-type, which is $$\ast$$, must have a type $$\ast$$, but it instead has type $$\square$$.

We can perform function iteration on function types of $$A\rightarrow A$$, but that's about it. We can't perform iteration on $$\mathrm{nat}\rightarrow \mathrm{nat}$$ because $$\mathrm{nat}$$ is not $$A$$. With polymorphic types, however, we can make the definition $$\mathrm{nat} = \Pi A:\ast .(A\rightarrow A)\rightarrow (A\rightarrow A)$$. Using this, we can perform function iteration, as we can pass $$\mathrm{nat}$$ into the number to turn that $$A$$ into $$\mathrm{nat}$$.