You did not say that every natural number must have a unique representation. So here is another option. (I did not invent it, but I don’t remember what it is called, so I had to reconstruct how it works.)
Represent numbers as strings of numbers in base 2 as in binary format, except that instead of being limited to the numbers 0 and 1, we are additionally allowed to use the number 2. So, for example, number 2 has two representations, 10 and 2.
To add the two numbers represented in this way, simply add them to the digital form without hyphenation. It is clear that we can do this effectively in parallel (with a linear dimension, a constant depth pattern). Well, now we have a problem: the resulting number has the correct base-2 value, but its numbers will not necessarily be 0, 1, or 2, but they can be 4.
So, let's fix this with the following transfer carry: Write each digit of the result as a binary number with two digits, where the second digit is 0 or 1, and the first digit can be 0, 1 or 2. (So 0 → 00, 1 → 01, 2 → 10, 3 → 11, 4 → 20.) Now "transfer" the first digit of each of these two-digit numbers to the left, leaving the second digit, but without performing any other results. For example, if we started with a number
314102 (perhaps from the original problem of computing 212001 + 102101)
we carry out the amount
11 = 3 01 = 1 20 = 4 01 = 1 00 = 0 10 = 2 ------- 1130110
The new number has the same base-2 value, and its digits are now in the range from 0 to 3, since they are formed from the sum of the digits 0, 1 or 2 and a digit that is 0 or 1. In addition, each digit of the result depends only from the corresponding digit and the digit from its right number from the step, so this can be realized using another linear constant depth circuit.
This is not entirely good, so let the same propagation transfer go through again. Now 4 is no longer a possible input digit, so the digit we carry can never be 2, only 0 or 1. Therefore, this time the procedure will lead to a base 2 representation that uses only the digits 0, 1 and 2, this is what we wanted. In the example above, the result will be 1210110 . (Of course, any other representation with the same base-2 value would also be correct.)
(For other combinations of the base and maximum digits, you may need only one distribution transfer. For example, if you represent numbers in base 3 using the digits 0, 1, 2, 3, and 4, the largest digit appears in the sum is 8, so both digits, participating in the transfer will be in the range 0, 1, 2, and their sum will be no more than 4.)
Now, if you want to perform other operations on this representation, for example, comparing two numbers for equality, one option is to convert to binary, either serially in linear time, or in parallel, using a quick adder, as described in Lior Kogan's answer . In fact, converting this representation into a binary file is essentially equivalent to the task of adding numbers in binary form, since we can consider a representation of type 212001 as a “formal complement” of 101000 + 111001 . However, you probably cannot verify equality in this representation at a constant depth, as you can for binary. I believe that "hardness" in this sense of either adding or checking equality is important given your other limitations, although I don’t know for sure.