AnalyticBridge

A Data Science Central Community

Curious Mathematical Object: Hyperlogarithms

Logarithms turn a product of numbers into a sum of numbers: log(xy) = log(x) + log(y). Hyperlogarithms generalize the concept as follows: Hlog(XY) = Hlog(X) + Hlog(Y), where X and Y are any kind of objects, and the product and sum are replaced by operators in some arbitrary space.

Here we focus exclusively on operations on sets: XY becomes the intersection of the sets X and Y, and X + Y the union of X and Y. The question is: which functions satisfy Hlog(XY) = Hlog(X) + Hlog(y). We assume here that the argument for Hlog is a set X, and the returned value Hlog(X) = Y is another set Y from the same set of sets. Let E = {X, Y, ... } be the sets of all potential arguments for Hlog. E must satisfy the following conditions

• The intersection of two sets of E is also a set of E
• The union of two sets of E is also a set of E

• E does not contain the empty set (thus any intersection of a finite number of sets in E, is non empty)

Let's denote as U the union of all sets of E. It is easy to prove that Hlog(U) is the empty set, denoted as O. Also Hlog(O) does not exist, just like log(0) does not exist. It is also easy to prove that Hlog(XYZ) = Hlog(X) + Hlog(Y) + Hlog(Z), and this generalizes to any (finite) number of sets in E.

Two functions Hlog satisfy Hlog(XY) = Hlog(X) + Hlog(Y) :

• Hlog(X) is equal to a constant set if X is different from U, and Hlog(U) = O is the empty set.
• Hlog(X) = U - X is the complimentary set of X (that is, U - X consists of all the elements that are in U but not in X)

The question is: Besides  these two functions (the first one is a degenerate solution), are there any other functions Hlog satisfying the same property? How do you proceed to solve such as weird functional equation in an unusual space? One could try  to investigate this problem by first analyzing the case where E contains only 3 or 4 sets: In this case, look at all potential functions defined on E (there is only a finite number of them), and see which ones satisfy the equation Hlog(XY) = Hlog(X) + Hlog(Y).

Also, using object orientated programming, how would you implement a generic function Hlog that works both for real numbers, for sets, or in any other context?

DSC Resources

Popular Articles

Views: 3716

Comment

Join AnalyticBridge

Comment by Vincent Granville on August 16, 2017 at 4:08pm

An interesting answer was provided here (on Reddit) by Sarcon5673.. It is reproduced below:

Well, if Z = XY, then Hlog(Z) has to be independent of our choice of X and Y. So it must only depend on whether the elements are in Z or not.

I'm not sure how to formalize my thoughts, but we want to look at functions of 1 boolean variable. We want f(a and b) = f(a) or f(b)

Since f is a function of a single variable, we can just look at all possible boolean functions of a single variable:

f1(x) = True, f2(x) = False, f3(x) = x, f4(x) = Not x

Both f1 and f2 work fine, since you get True = True or True, and False = False or False.

For f3, it doesn't work, because if a = True and b = False, we have False = f(False) = f(True and False) = f(True) or f(False) = True or False = True, a contradiction.

f4, on the other hand, surprisingly works.

Now, the way Hlog works is that it's supposed to take in elements of U, and each element could have a fixed function of {f1, f2, f4}, and the input is whether it's in Z or not.

For the two examples the author gave, the first corresponds with some of the elements of U having the function f1, while the others having f2. For the second, every element has the function f4 applied. There's an edge case that the other avoided, which is where all functions are f2, which means Hlog is identically {}.

So, I could have U = {a,b,c}, and each element corresponds with f1, f2, and f4, respectively. So, Hlog({a,b}) = {a,c}, Hlog({a,c}) = {a}, Hlog({b,c}) = {a}, Hlog(U) = {a}. And you can confirm that it works by generating the other possibilities from this one.

Notice this one: Hlog(U) = {a}; this contradicts the author. This is because he assumed something incorrect: That Hlog(Z) = Hlog(UZ) = Hlog(Z) + Hlog(U) implies that Hlog(U) = {} by "cancellation". In reality, you cannot cancel a set that is unioned with another. And this shows Hlog(U) could be nonempty. Hlog(U) equals a subset of the biggest subset of all possible outputs.

Also, however, Hlog({}) = {a,c} by our construction, so again, it contradicts the author, and it actually equals the union of all possible outputs. (think of it informally like log(0) = infinity, "the biggest thing")

And we're done.

: