# 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?