Allan C. Wechsler writes:
I was trying to say that I knew an actual monotonic implementation of an n-bit counter using 2n bits. It works as follows: the n-bit counter is made of n "metabits", each two bits long. Each such metabit is always in state 10 or 01, never 00 or 11. We use 10 to represent "meta 0" and 01 to represent "meta 1". Now there is a bit that can be depended upon to be on when a given metabit is off. A 3-metabit counter begins to count like this:
10 10 10 10 10 01 10 01 10 10 01 01
This is a very common strategy in current generation (hardware) logic design, where certain logic styles such as domino logic allow only monotonic logic functions. Using so-called "dual rail" logic, representing each bit in both possible polarities, and generating, at each stage, both possible polarities, allows this to be a general logic family (with speed advantages). There is no need for negation, of course, since one can choose the polarity of any signal arbitrarily. There are other important reasons to use dual rail logic -- one which the group might appreciate is to reduce the data-dependent noise in cryptographic processors. When the same number of bits go up as down, it is much more difficult to look at e.g. power supply current to determine what the processor is doing. More mundanely, dual rail logic is very good in reducing electromagnetic interference, and, with differential receivers, very resistant to noise.