Open In Colab

A recent MO post has prompted us to express something about our views regarding $\Gamma$ actions and $\Gamma$-invariant Borel measures and proper discontinuous actions, $E\Gamma$ spaces, etc.. The conjecture is rather famous, especially in three dimensions. But since our PhD thesis (2019) we have some nonstandard approaches to the problem, which we will elaborate below.

It's not easy to describe the current state of the conjecture, depending on several implications and reductions to other conjectures, especially in three-dimensions. A good reference is here.

The above MO question is interesting in that it's asking about the corresponding conjecture in higher dimensions. I sent Alex Kolpakov a message asking him about the question because he's the person who I know knows the most about four-dimensional manifolds.

The setting for Ahlfor's problem begins with a discrete finitely generated group $\Gamma < Isom(\bf{H}^{n+1})$ of some hyperbolic space. The discreteness of the group representation implies that $\Gamma$ acts proper discontinuously on the hyperbolic space. The hyperbolic space also has a canonical volume measure. We say the representation has finite covolume if the quotient $\bf{H} /\Gamma$ has finite volume. In otherwords $\Gamma$ represents the fundamental group of a hyperbolic orbifold $X:=\bf{H}^{n+1} / \Gamma$, and the action $$\Gamma \times \bf{H}^{n+1} \to \bf{H}^{n+1}$$ is the universal covering action $$\pi_1 \times \tilde{X} \to \tilde{X} $$ where $\tilde{X}\approx \bf{H}^{n+1}$.

Now given an action of $\Gamma$ on $\bf{H}$ we next need to define the topology of the "boundary at-infinity".

To review: geodesics in hyperbolic space $\bf{H}^{n+1}$ diverge exponentially in every direction. The hyperbolic space is expansive at-infinity. And even though the Poincare disk might naively appear to be a small bounded disk, this disk in fact contains an infinitely large expansive world.

We need carefully define the topology to properly define the limit points $L_\Gamma$ of a $\Gamma$-orbit $\Gamma.pt$. In fact some confusion arises because the topology on the visual sphere at-infinity is not always made explicit by authors. Naively the majority definition of the topology on the visual sphere consists of open subsets which are presumed to contain ideal points $\xi$ at infinity. This perspective implicitly assumes that the boundary disk is the natural compactification of the hyperbolic space $\bf{H}$.

But actually the correct definition of these ideal points is via horoballs and the horofunctions. A point at-infinity $\xi$ really corresponds to a $1$-Lipschitz function $b_\xi: \bf{H} \to \bf{R}$, and specifically the pole at negative infinity $-\infty$ of $b_\xi$. The level sets of the horofunction $b_\xi$ are horospheres centred at $\xi$.

So we have two definitions of the points at-infinity, and two different topologies. For example:

  1. Horofunction definition of limit points at-infinity: the point $\xi$ is a limit point of the orbit $\Gamma .pt$ with respect to the horoball topology if the values of the orbit $b_\xi(\gamma.pt)$, $\gamma \in \Gamma$, accumulate near the negative infinity pole. I.e. iff there exists an infinite subsequence such that $b_\xi(\gamma.pt)$ diverges to $-\infty$.

  2. "Open" topology definition of limit points: the visual point $\xi' \in \partial_\infty \bf{H}$ is a limit point of the orbit $\Gamma .pt$ w.r.t. the open topology if every open neighborhood $U$ of $\xi'$ in $\bf{H} \cup \partial_\infty \bf{H}$ has a non trivial intersection with the orbit $U \cap \Gamma.pt \neq \emptyset$.

The problem with the second definition, which admittedly the majority topology in the literature, is that the point at-infinity has not been defined, and no criteria is given for testing whether the "point" $\xi'$ is contained or not contained in the open subset $U$ of $\bf{H}$.

Therefore in the horofunction topology, the ideal points at-infinity are not "points on a sphere" they are instead $1$-Lipschitz functions obtained as a natural limit of the distance functions $d(x,y)$. The point at infinity $\xi$ is instead the negative infinity pole of the corresponding horofunction $b_\xi$.

Naively one says there is a circle at infinity, namely the visual sphere $\partial_\infty \bf{H} \approx \bf{S}^1$. With respect to the hyperbolic metric, of course the boundary is infinitely far away. Now we need to topologize the visual boundary such that the $\Gamma$-action on $\bf{H}$ extends to a continuous topological action on $\bf{H} \cup \partial \bf{H}$.

One method of topologizing the boundary is via the visual angle metric. Another interesting topology on the boundary is the Busemann topology. The key fact necessary is that the topology of $\partial_\infty$ needs be defined such that the group $\Gamma$ acts continuously on $\bf{H} \cup \partial_\infty \bf{H}$.

[Edit] If we fix a basepoint $pt$ in $\bf{H}$, then one naturally defines the boundary at-infinity $\partial_\infty \bf{H}$. The boundary at-infinity is topologized with the visual angle metric, and it's a standard fact that the boundary at-infinity is a topological sphere $\partial_\infty \bf{H}^{n+1} \approx \bf{S}^n$. The sphere at-infinity does not have a $\Gamma$-invariant metric since $\Gamma$ actions by translating the basepoint $pt$. It is a standard fact that the sphere at-infinity has a well-defined $\Gamma$-invariant metric modulo quasi-isometries. The definition of quasi-isometries will not be further developed in this article, except to say this: that the topological sphere at-infinity is a difficult object to study with respect to the $\Gamma$ action.

Standard fact: Under assumptions [insert] the topological action $\Gamma \times \bf{S}^n \to \bf{S}^n$ is ergodic with respect to the class of $n$-dimensional Lebesgue measures on $\bf{S}^n$. In other words, if $\lambda$ is the $n$-dimensional Lebesgue measure on the topological sphere at-infinity $\bf{S}^n$, then the only $\lambda$-measurable $\Gamma$-invariant functions $f: \bf{S}^n \to \bf{R}$ are constant a.e.. [Insert reference to Mostow's proof, or Thurston's book]. Roughly speaking, the topological $\Gamma$-action on $\bf{S}^n$ is very complicated, acting with sources and sinks and strange dynamics which are not measured by the $n$-dimensional Lebesge measure $\lambda$.

To finally state Ahlfor's measure conjecture we need to define the limit set of a $\Gamma$-orbit. Informally we can define $L_\Gamma \subset \partial_\infty \bf{H}$ as the accumulation points of the orbit $\Gamma. pt$.

Ahlfor's Measure Conjecture: If $\Gamma, X$ satisfy the assumptions (i) and (ii), namely having finitely many ends and finite volume, then the limit set $L_\Gamma$ is either a zero or full measure subset of $\partial_\infty \tilde{X}$. In otherwords, the limit set $L_\Gamma$ is either equal to $\bf{S}^n$ or has vanishing $n$-dimensional measure.

In most circumstances, the action of $\Gamma$ on the visual sphere is ergodic with respect to the natural Lebesgue measure on the sphere. However the example in the above MO post shows the action is not necessarily ergodic in higher dimensions for certain groups. However in this counter-example to ergodicity the group $\Gamma$ is finitely-generated but not finitely-presentable.

Now we must admit that the structure of the limit points $L_\Gamma$ is very difficult to comprehend. Many experts have been involved in producing graphics and simulations of these limit sets, especially for Kleinian and Fuchsian groups. Mumford's book "Indra's Pearls" is also relevant here.

Now our approach to Ahlfor's Measure Conjecture is to first realize that the visual boundary is not the correct boundary for the group action $\Gamma \times \bf{H} \to \bf{H}$. We view the visual boundary as extremely unnatural with respect to the group $\Gamma$. Specifically, the problem is that the $\Gamma$ action is not proper discontinuous on the visual sphere. This means that point orbits on the sphere are not well separated by the $\Gamma$ action. In otherwords, the visual boundary is very confusing because group elements which otherwise are very distinct can have similar actions on the visual boundary, and their distinct identities become confused.

# generated by the letters, a, A, b, B. Eventually we use a dictionary to convert these
# letters and words into numerical matrices. 
import numpy as np
#from numpy.linalg import matrix_power

gen=['a','A','b','B']
inverse_list=[['a','A'], ['A', 'a'], ['b', 'B'], ['B', 'b']]

def test(x):
    a, b = x
    if (x in inverse_list):
       return False
    else:
       return True

def f(x):
    l=[]
    level, word_list, tail = x
    new_level=level+1
    for letter in gen:
        if test([tail, letter])==True:
            new_word_list=word_list+[letter]
            new_tail=letter
            l=l+[[new_level, new_word_list, new_tail]]
        else:
            pass
    return l

print(f([1,['B', 'a'],'a' ]))


# Below we print the ends. 

seed=[0, [], ''];

def ends(x):
    m, seed = x
    sample_list=[seed];
    for n in range(m):
        new_list=[]
        for x in sample_list:
            new_list=new_list+f(x)
            sample_list=new_list        
    return [len(sample_list), sample_list]

print(ends([4, seed]))
[[2, ['B', 'a', 'a'], 'a'], [2, ['B', 'a', 'b'], 'b'], [2, ['B', 'a', 'B'], 'B']]
[108, [[4, ['a', 'a', 'a', 'a'], 'a'], [4, ['a', 'a', 'a', 'b'], 'b'], [4, ['a', 'a', 'a', 'B'], 'B'], [4, ['a', 'a', 'b', 'a'], 'a'], [4, ['a', 'a', 'b', 'A'], 'A'], [4, ['a', 'a', 'b', 'b'], 'b'], [4, ['a', 'a', 'B', 'a'], 'a'], [4, ['a', 'a', 'B', 'A'], 'A'], [4, ['a', 'a', 'B', 'B'], 'B'], [4, ['a', 'b', 'a', 'a'], 'a'], [4, ['a', 'b', 'a', 'b'], 'b'], [4, ['a', 'b', 'a', 'B'], 'B'], [4, ['a', 'b', 'A', 'A'], 'A'], [4, ['a', 'b', 'A', 'b'], 'b'], [4, ['a', 'b', 'A', 'B'], 'B'], [4, ['a', 'b', 'b', 'a'], 'a'], [4, ['a', 'b', 'b', 'A'], 'A'], [4, ['a', 'b', 'b', 'b'], 'b'], [4, ['a', 'B', 'a', 'a'], 'a'], [4, ['a', 'B', 'a', 'b'], 'b'], [4, ['a', 'B', 'a', 'B'], 'B'], [4, ['a', 'B', 'A', 'A'], 'A'], [4, ['a', 'B', 'A', 'b'], 'b'], [4, ['a', 'B', 'A', 'B'], 'B'], [4, ['a', 'B', 'B', 'a'], 'a'], [4, ['a', 'B', 'B', 'A'], 'A'], [4, ['a', 'B', 'B', 'B'], 'B'], [4, ['A', 'A', 'A', 'A'], 'A'], [4, ['A', 'A', 'A', 'b'], 'b'], [4, ['A', 'A', 'A', 'B'], 'B'], [4, ['A', 'A', 'b', 'a'], 'a'], [4, ['A', 'A', 'b', 'A'], 'A'], [4, ['A', 'A', 'b', 'b'], 'b'], [4, ['A', 'A', 'B', 'a'], 'a'], [4, ['A', 'A', 'B', 'A'], 'A'], [4, ['A', 'A', 'B', 'B'], 'B'], [4, ['A', 'b', 'a', 'a'], 'a'], [4, ['A', 'b', 'a', 'b'], 'b'], [4, ['A', 'b', 'a', 'B'], 'B'], [4, ['A', 'b', 'A', 'A'], 'A'], [4, ['A', 'b', 'A', 'b'], 'b'], [4, ['A', 'b', 'A', 'B'], 'B'], [4, ['A', 'b', 'b', 'a'], 'a'], [4, ['A', 'b', 'b', 'A'], 'A'], [4, ['A', 'b', 'b', 'b'], 'b'], [4, ['A', 'B', 'a', 'a'], 'a'], [4, ['A', 'B', 'a', 'b'], 'b'], [4, ['A', 'B', 'a', 'B'], 'B'], [4, ['A', 'B', 'A', 'A'], 'A'], [4, ['A', 'B', 'A', 'b'], 'b'], [4, ['A', 'B', 'A', 'B'], 'B'], [4, ['A', 'B', 'B', 'a'], 'a'], [4, ['A', 'B', 'B', 'A'], 'A'], [4, ['A', 'B', 'B', 'B'], 'B'], [4, ['b', 'a', 'a', 'a'], 'a'], [4, ['b', 'a', 'a', 'b'], 'b'], [4, ['b', 'a', 'a', 'B'], 'B'], [4, ['b', 'a', 'b', 'a'], 'a'], [4, ['b', 'a', 'b', 'A'], 'A'], [4, ['b', 'a', 'b', 'b'], 'b'], [4, ['b', 'a', 'B', 'a'], 'a'], [4, ['b', 'a', 'B', 'A'], 'A'], [4, ['b', 'a', 'B', 'B'], 'B'], [4, ['b', 'A', 'A', 'A'], 'A'], [4, ['b', 'A', 'A', 'b'], 'b'], [4, ['b', 'A', 'A', 'B'], 'B'], [4, ['b', 'A', 'b', 'a'], 'a'], [4, ['b', 'A', 'b', 'A'], 'A'], [4, ['b', 'A', 'b', 'b'], 'b'], [4, ['b', 'A', 'B', 'a'], 'a'], [4, ['b', 'A', 'B', 'A'], 'A'], [4, ['b', 'A', 'B', 'B'], 'B'], [4, ['b', 'b', 'a', 'a'], 'a'], [4, ['b', 'b', 'a', 'b'], 'b'], [4, ['b', 'b', 'a', 'B'], 'B'], [4, ['b', 'b', 'A', 'A'], 'A'], [4, ['b', 'b', 'A', 'b'], 'b'], [4, ['b', 'b', 'A', 'B'], 'B'], [4, ['b', 'b', 'b', 'a'], 'a'], [4, ['b', 'b', 'b', 'A'], 'A'], [4, ['b', 'b', 'b', 'b'], 'b'], [4, ['B', 'a', 'a', 'a'], 'a'], [4, ['B', 'a', 'a', 'b'], 'b'], [4, ['B', 'a', 'a', 'B'], 'B'], [4, ['B', 'a', 'b', 'a'], 'a'], [4, ['B', 'a', 'b', 'A'], 'A'], [4, ['B', 'a', 'b', 'b'], 'b'], [4, ['B', 'a', 'B', 'a'], 'a'], [4, ['B', 'a', 'B', 'A'], 'A'], [4, ['B', 'a', 'B', 'B'], 'B'], [4, ['B', 'A', 'A', 'A'], 'A'], [4, ['B', 'A', 'A', 'b'], 'b'], [4, ['B', 'A', 'A', 'B'], 'B'], [4, ['B', 'A', 'b', 'a'], 'a'], [4, ['B', 'A', 'b', 'A'], 'A'], [4, ['B', 'A', 'b', 'b'], 'b'], [4, ['B', 'A', 'B', 'a'], 'a'], [4, ['B', 'A', 'B', 'A'], 'A'], [4, ['B', 'A', 'B', 'B'], 'B'], [4, ['B', 'B', 'a', 'a'], 'a'], [4, ['B', 'B', 'a', 'b'], 'b'], [4, ['B', 'B', 'a', 'B'], 'B'], [4, ['B', 'B', 'A', 'A'], 'A'], [4, ['B', 'B', 'A', 'b'], 'b'], [4, ['B', 'B', 'A', 'B'], 'B'], [4, ['B', 'B', 'B', 'a'], 'a'], [4, ['B', 'B', 'B', 'A'], 'A'], [4, ['B', 'B', 'B', 'B'], 'B']]]
# into a matrix product. We evaluate these products over the ends of the tree 
# generated by the words in the letters a, A, b, B. 

import numpy as np
from numpy.linalg import matrix_power as mp

# S is a typical pseudo-anosov type transformation
# T was randomly chosen, and might not be a good example.
S=np.array([[2,1], [1,0]]);
T=np.array([[-1,-1], [2,1]]);


Id=np.array([[1.0,0.0], [0.0,1.0]]);

# matrix_power is abbreviated mp.
data={'a' : S,
     'A' : mp(S, -1),
     'b' : T,
     'B' : mp(T, -1)
     };


def bracket(w):
    x, y = w
    return (x@y)@(mp(x,-1)@mp(y, -1))

## the @ symbol represents matrix multiplication, i.e. np.matmul()

print("The commutator of S and T is:", bracket([S,T]));

print("The commutator of S and S is trivial:", bracket([S,S]))

# matmul is the numpy function for matrix multiplication.
def product(word_list):
    m=Id;
    for word in word_list:
        m=data[word]@m;
    return m

sample_word_list=['a', 'B', 'A', 'b'];
swl1=['a', 'b', 'A', 'b']

# print(product(swl1));
# print(product(sample_word_list))
The commutator of S and T is: [[-5. -3.]
 [-3. -2.]]
The commutator of S and S is trivial: [[1. 0.]
 [0. 1.]]
e=ends([5, seed]);
max_index=e[0];
matrix_list=[];

def maxFunc(x):
  return np.abs(x).max();

for n in range(max_index):
    matrix_list=matrix_list+[product(e[1][n][1])]

matrix_list.sort(key=maxFunc, reverse = True)


def rpl(x):
    return (maxFunc(x)**(-1))*x

def quad(x):
    return np.matmul(x.transpose(), x)    

# looks at the first largest elements. We should keep those terms which 
# are of similar order of magnitude as det(rpl(x)).
for x in matrix_list[0:10]:
    
    print("The matrix product is:",  x); 
#    print("The sup norm of the matrix product is:", maxFunc(x));
#    print("Renormalized projectivization:",rpl(x));
#    print("The determinant of the renormalized projectivization is:", np.linalg.det(rpl(x)));
    print("The log-absolute-determinant of the renormalized projectivization is:", np.log(
              np.abs(
                  np.linalg.det(rpl(x))
                  )
              )
         );
    print("The quadratic form Transpose(x)*x of x=rpl(x) is:", quad(rpl(x))  );
    
    eigen=np.linalg.eig(quad(rpl(x)))
#    print("The eigendistribution: is:", eigen);
   
    print("The log-absolute value of the near zero eigenvalue is:", np.log(np.abs(
        eigen[0].min()
        ))  
    )
    min_index=eigen[0].argmin()
    max_index=eigen[0].argmax()
    print("The approximate limit point is:", eigen[1][max_index] );
    
#   print("The rank-one quadratic form represented by the limit point is:", (eigen[1][max_index])@(eigen[1][max_index].transpose())   )
    print('\n')

## N.B. the limit point is the eigenvector corresponding to the nonzero eigenvalue. 

## we would like to retain only those elements such that floor(log|det(x)|) is maximized. 
## this means considering only those words whose renormalized projectivizations are of the same
## order of magnitude, i.e. of the same maximal "dimension".
## TO DO: quantify the uncertainty in the approximate limit point.
The matrix product is: [[ 29.  12.]
 [-75. -31.]]
The log-absolute-determinant of the renormalized projectivization is: -8.634976227072784
The quadratic form Transpose(x)*x of x=rpl(x) is: [[1.14951111 0.4752    ]
 [0.4752     0.19644444]]
The log-absolute value of the near zero eigenvalue is: -17.567056648013256
The approximate limit point is: [ 0.92414737 -0.38203618]


The matrix product is: [[-29. -12.]
 [ 75.  31.]]
The log-absolute-determinant of the renormalized projectivization is: -8.634976227072784
The quadratic form Transpose(x)*x of x=rpl(x) is: [[1.14951111 0.4752    ]
 [0.4752     0.19644444]]
The log-absolute value of the near zero eigenvalue is: -17.567056648013256
The approximate limit point is: [ 0.92414737 -0.38203618]


The matrix product is: [[ 31.  12.]
 [-75. -29.]]
The log-absolute-determinant of the renormalized projectivization is: -8.634976227072784
The quadratic form Transpose(x)*x of x=rpl(x) is: [[1.17084444 0.4528    ]
 [0.4528     0.17511111]]
The log-absolute value of the near zero eigenvalue is: -17.567056648013256
The approximate limit point is: [ 0.93268339 -0.36069612]


The matrix product is: [[-31. -12.]
 [ 75.  29.]]
The log-absolute-determinant of the renormalized projectivization is: -8.634976227072784
The quadratic form Transpose(x)*x of x=rpl(x) is: [[1.17084444 0.4528    ]
 [0.4528     0.17511111]]
The log-absolute value of the near zero eigenvalue is: -17.567056648013256
The approximate limit point is: [ 0.93268339 -0.36069612]


The matrix product is: [[-31. -13.]
 [ 74.  31.]]
The log-absolute-determinant of the renormalized projectivization is: -8.608130186408527
The quadratic form Transpose(x)*x of x=rpl(x) is: [[1.17549306 0.49251278]
 [0.49251278 0.206355  ]]
The log-absolute value of the near zero eigenvalue is: -17.539682136925283
The approximate limit point is: [ 0.92231631 -0.38643579]


The matrix product is: [[ 31.  13.]
 [-74. -31.]]
The log-absolute-determinant of the renormalized projectivization is: -8.608130186408527
The quadratic form Transpose(x)*x of x=rpl(x) is: [[1.17549306 0.49251278]
 [0.49251278 0.206355  ]]
The log-absolute value of the near zero eigenvalue is: -17.539682136925283
The approximate limit point is: [ 0.92231631 -0.38643579]


The matrix product is: [[70. 29.]
 [29. 12.]]
The log-absolute-determinant of the renormalized projectivization is: -8.496990484098841
The quadratic form Transpose(x)*x of x=rpl(x) is: [[1.17163265 0.48530612]
 [0.48530612 0.20102041]]
The log-absolute value of the near zero eigenvalue is: -17.310726354950265
The approximate limit point is: [ 0.92387953 -0.38268343]


The matrix product is: [[-41. -17.]
 [ 70.  29.]]
The log-absolute-determinant of the renormalized projectivization is: -8.496990484098706
The quadratic form Transpose(x)*x of x=rpl(x) is: [[1.34306122 0.55653061]
 [0.55653061 0.23061224]]
The log-absolute value of the near zero eigenvalue is: -17.447393627661846
The approximate limit point is: [ 0.92382689 -0.38281051]


The matrix product is: [[ 41.  17.]
 [-70. -29.]]
The log-absolute-determinant of the renormalized projectivization is: -8.496990484098706
The quadratic form Transpose(x)*x of x=rpl(x) is: [[1.34306122 0.55653061]
 [0.55653061 0.23061224]]
The log-absolute value of the near zero eigenvalue is: -17.447393627661846
The approximate limit point is: [ 0.92382689 -0.38281051]


The matrix product is: [[-12.  29.]
 [ 29. -70.]]
The log-absolute-determinant of the renormalized projectivization is: -8.496990484098877
The quadratic form Transpose(x)*x of x=rpl(x) is: [[ 0.20102041 -0.48530612]
 [-0.48530612  1.17163265]]
The log-absolute value of the near zero eigenvalue is: -17.31072635129126
The approximate limit point is: [-0.38268343 -0.92387953]


# To do: are two-generator subgroups sufficient to enumerate all the limit points?
# To do: need collect approximate limit points and attach a confidence value, i.e. rank by how small the smallest eigenvalue is in quad(rpl(x)).

What's the python code say?

First we need to generate the ends of a tree. That is, the ends of a Cayley graph. Why? Because the limit points correspond to divergent sequences of group elements. We see that a sequence diverges iff the sup norm of the matrices diverges to infinity, i.e. some element must be diverging. Here we generate the ends of the tree "abstractly", and then replace with actual matrix elements $S, T$ using a python dictionary.

Second, given divergent sequences we take the renormalized projective limit (RPL) of this sequence. This is inspired by H. Furstenberg's paper "On Borel's Density Theorem" The idea of taking the RPL is based on the natural ambient compactification of $\bf{H}$ when viewed in Voronoi's Cone model of hyperbolic space. That is, the RPL naturally defines the limit point as lying on the visual sphere at-infinity.

When we study RPL's with near zero determinants, then we find approximate limit points of the orbit. In the above computations, we restrict ourselves to two-generator subgroups of $\Gamma$. Note: a ping-pong argument should tell us that the limit points of a two-generator subgroup accumulate in a Cantor set at-infinity.