'∧' usually denotes the logical AND operator, which does not operate on integer values, (i.e. writing 22 ∧ 78 = 6 is weird). So it's not a bad idea to give this function a different name.
He could have made that explicit though.
* assume WLOG `a = min(a, b)`
* `a & b` takes the set bits of `a` and produces a subset of them
* the value of an integer is `SUM 2^j` where the j-th bit is set
* removing positive elements from a sum can only make it smaller
* therefore & can only produce a value smaller than `a` (the minimum)
I'm going to go out on a limb and guess that it is of some habitual relevance to a mathematician, since he mentions the identity function (not really relevant here either), but that the material he actually explains here doesn't do anything to justify its appearance.
However, I cannot present to you the crucial difference between the maximum of two numbers and the minimum of two numbers that explains what he was thinking. This must exist for my hypothesized explanation to make sense.
It's worse than that; he mentions the identity function only to make a gross error about it. The identity function on (a, a) is (a, a), not a.
If you want extra precision, a -> f(a, a) is Id.
Knowing that helped me understand one property of the chart, never said that was the most stunning of properties, and the best articulated one :-)
The law x AND x = x is called the idempotence law.
Nothing to do with the identity function.
What does this mean?
The post doesn't specify. Programming languages do define it over the negatives, however. I just didn't want anyone going into python and asserting that a & b >= min(a,b).
> there's no indication of how to encode negatives
Just do the standard thing: use 2s complement arithmetic [1]. More concretely: set b to infinity and take the limit under the 2-adic metric [2]. For example, -2 & -1 has partial sums 0, 10, 110, 1110, 11110, etc. It's limiting to ...1111110, which is the 2's complement representation of -2.
sum_n^b 2^n (floor(0/2^n) mod 2) (floor(-1/2^n) mod 2)
sum_n^b 2^n * 0 * 1
sum_n^b 0
0 f(-1, -1)
= sum_{n=0}^b 2^n (floor(-1/2^n) mod 2) (floor(-1/2^n) mod 2)
= sum_{n=0}^b 2^n * 1 * 1
= 1 + 10 + 100 + 1000 + ... [in binary]
= ...11111 [in the 2-adics]
= -1
(In the quote below, he names the AND function "f", which in itself is a bit strange. What's wrong with "and" or ∧?)
As far as I can tell, the result can never be greater than the smaller of a and b. I can't come up with a counterexample. Is there one?