Let $d(a,b) = 1 - \frac{2\gcd(a,b)^3}{ab(a+b)}$ be a metric on natural numbers without $0$.
The metric space $X = \{x_0,x_1,\cdots,x_n\},n>2$ is isometric embeddable in $\mathbb{R}^n$ if and only if the matrix: $$M(x_0,x_1,\cdots,x_n) = (1/2 (d(x_0,x_i)^2+d(x_0,x_j)^2-d(x_i,x_j)^2))_{1 \le i,j \le n}$$ is positive semidefinite.
So my question is:
Is the matrix above for $d$ as above positive semidefinite for all choices of $x_i \in \mathbb{N}$? (Maybe it is possible to prove this using quadratic forms and then transform it to $\sum_{i} a_{ii} y_i^2$ showing then that $a_{ii}\ge 0$?
If it is so, then this would one allow to do euclidean geometry of natural numbers. For instance for three (pairwise distinct) points / natural numbers we would have:
- a triangle
- Sine law
- Cosine law
- All other theorems concerning triangles
Then in the limit three consecutive numbers / primes would build an equilateral triangle of side length $1$. Hence one could imagine primes ("in the limit") as an infinite dimensional simplex, which would be a funny thing to think about.
Thanks for your help.
Related question: https://math.stackexchange.com/questions/3385102/is-this-metric-matrix-positive-semidefinite
See Theorem 2.4 in https://books.google.de/books?id=7_DuCAAAQBAJ&printsec=frontcover&hl=de&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false for isometrically embedding of $(\mathbb{N},d)$ in a Hilbert space.
Edit: Here is some Sage code in case one wants to check this numerically for some examples:
def dABC(a,b):
"""ABC"""
return 1- 2*gcd(a,b)**3/(a*b*(a+b))
def MM(xx,d=dABC):
N = len(xx)
return matrix([[1/2*(d(xx[0],xx[i])**2+d(xx[0],xx[j])**2-d(xx[i],xx[j])**2) for i in range(1,N)] for j in range(1,N)])
def skp(a,b,d=dABC):
return 1/2*(d(a,1)**2+d(b,1)**2-d(a,b)**2)
def schur(M):
from scipy.linalg import schur
import numpy as np
M_np = np.matrix(M,dtype='float64')
A,B = schur(M_np,output="complex")
return (matrix(np.asmatrix(A)),matrix(np.asmatrix(B)))
def createEmbedding(rr):
M = MM(rr)
n = len(rr)+1
A,B = schur(M)
E = diagonal_matrix([sqrt(x) for x in A.diagonal()])
X = B*E
ee = [ matrix([[i==j] for i in range(1,n-1)],ring=QQ) for j in range(1,n-1)]
#print ee
xx = [ X.transpose()*ee[i] for i in range(n-2)]
return xx
X = range(1,1600)
for i in X:
i,j,k = nth_prime(i),nth_prime(i+1),nth_prime(i+2)
a = dABC(i,j)
b = dABC(j,k)
c = dABC(k,i)
s = 1/2*(a+b+c)
area = sqrt(s*(s-a)*(s-b)*(s-c)).n()
alpha = acos((skp(j,k)-skp(j,i)-skp(k,k)+skp(k,i))/(b*c))
print area,a/sin(alpha).n(),a.n(),b.n(),c.n()