Circular reasoning when explaining positional notation

74 Views Asked by At

I am trying to explain from scratch the foundation of mathematics and couldn't start anywhere but from Peano's axioms.

After that I introduced the set of digits = {1, 2, 3, 4, 5, 6, 7, 8, 9} where each of those can be assigned to a successor:

$$S(0) = 1$$ $$S(S(0)) = 2$$ $$S(S(S(0))) = 3$$ $$...$$

But what comes after $S(9)$? To explain that, we need to introduce the positional notation in base 10, but "we don't know" what 10 is (yet). At most we can talk about $S(9)$, but doing so would make explaining the positional system impossible. Another way I tried is defining $S(9) = 10$, but it does not seem good, because for example

$$abc = a * 10^2 + b * 10^1 + c * 10^0$$ does not make sense because we can not know what $10^2$ is if we don't know yet about positional notation since it's what we're proving.

What am I missing?

1

There are 1 best solutions below

0
On BEST ANSWER

Let's assume you have implemented a way to codify strings, and a function $divmod : \mathbb N \rightarrow \mathbb N\times \mathbb N$ for division of a natural number by ten.

What we want is a mapping from the natural numbers to strings of the alphabet $\{0,\dots,9\}$.

We may write these strings with $`\ \ `$ as in $`10`$ to distinguish them from the actual numbers.

There's an empty string $`\ \ `$, and a concatenation " $,$ " so e.g. $`23`,`01` = `2301`$.

The numbers $0$ through $S^9(0)$ are given the strings $`0`$ to $`9`$ as you did.


Now for the good part. We'll have actually two mappings not just one.

Let's use the letter $\delta$ for decimal.

Let's say $\delta'$ is defined only on numbers $0$ through $9$, and with the obvious mapping that you gave. And let's define $\delta : \mathbb N\rightarrow String$ recursively.

We start setting $\delta(0):=`\ \ `$.

Now pick any $n>0$. Let $(d,m)$ be the divisor and modulo of $n$ when dividing by $10$. i.e: $(d,m):=divmod(n)$. Then:

$$\delta(n) := \delta(d),\delta'(m)$$

Notice that $m<10$ so this is well defined.


Computing an example:

Let's say we want to write $120=S^{120}(0)$ in decimal.

We compute $divmod(120)=(12,0)$.

Recursively we need to calculate $divmod(12)=(1,2)$ and $divmod(1) = (0,1)$. Then

$\phantom{=\ }\delta(120)\ =\ \delta(12),\delta'(0)\ =\ \delta(1),\delta'(2),`0`\\ =\ \delta(0),\delta'(1),`2`,`0`\ =\ `\ \ `,`1`,`20`\ =\ `120`$


Finally, you may notice that you'd actually need another function, that behaves like $\delta$ for all $n$ except $0$, where it should be mapped to $`0`$ instead of $`\ \ `$.

I hope you can see the general trick of it. It's actually quite simple.

This is by the way what (at least functional) programming languages do to display numbers in decimal.

Also this same technique can be used to display numbers in any (whole) base.