I would like to understand theirs semantics based on combinatorial countability and computability.

Because it is not clear how to represent in machine codes and compilations the signs and notation of logic, models for type systems and algorithmical transformations of categories. With respect, sir. ]]>

Ah okay. I thought you were advocating enforcing type checking, which I would agree with, since most students I’ve taught make not only logical errors but errors that do not even make type sense. For example, often students write things like “If n is true, …” when ‘using’ induction. So for me personally I go all the way and remove ambiguity completely in my written proofs. What I say or draw in diagrams can be informal and sloppy on the other hand, because they are just there to guide the intuition, and they complement the strict formal proof.

]]>Yes, I should say that is a group. But I object strongly to the claim that I can’t complain about type errors if I’ve ever made a type error myself. I’m not describing a social rule and condemning people for not following it: I’m pointing out what I think is a real feature of mathematics that I think should be pointed at more explicitly. Types are a tool to think with, not a tool to criticize with.

]]>And about overloading, type checking is nowhere near enough. One frequent example is: What is $(-1)^{1/3}$? You can’t tell right? Similarly in logic, where almost all textbooks carelessly use “$\neg φ$” to mean the formula obtained by adding the logical negation symbol in front of the formula $φ$, resulting in ambiguity all over. For example, what is $\{ φ : \neg φ \in S \}$?

I would say that we cannot complain about people making type errors if we do not ourselves stick strictly to an unambiguous type system. =)

]]>For example 3 ∈ 17 clearly works combinatorically as well as in Finsler’s “generalised numbers”. It’s amusing (at least for me) to try to think of a way to think of a way to do something “backwards” — perhaps in the sense that one looks for a field with one element.

The notion of a prime rectangle could be related to some ambient context perhaps, or some relationship between side-lengths and areas.

Anyway I do agree with you; type errors are a good tool for teachers to identify when a student totally missed the boat.

]]>Yes, Nat = 1 + 1 × Nat would have made me happier indeed. This generates all the elements 1, (1,1), (1,(1,1)) etc., which make a perfect model of natural numbers. Thanks for the clarification.

]]>You’re not missing anything. I just omitted the analogue of “Succ” here. Note that if you’re comfortable with lists, then Nat is precisely the list type [1]. Would Nat = 1 + 1 x Nat have made you happier? (The point of the definition is that a natural number is specified either by specifying 1 or by specifying another natural number, namely its predecessor. The notion of predecessor is built into this definition so I don’t have to give it a name.)

]]>