# Integer Distances in Pointsets Generated from Simplices with Integer Sidelengths

Let $\mathbb{S}_\mathbb{N}^n$ denote the set of all $n$-simplices in $n$-dimensional euclidean space $E^n$.

Call an $n$-simplex aligned, if the set $C$ of its corners satisfies
$\exists c_k=\left(x^1_k,\ \dots,\ x^n_k \right)\in C:\quad x^j_k > 0\iff j\lt k\ \quad\wedge\quad x^j_k=0\iff j\ge k$
$\forall k\in\{1,\ \dots,\ n\}$

One may assume that the corners of an aligned copy of an $n$-simplex are sorted according to decreasing number of $0$-coordinate values, i.e. that $c_k=\left(x^1_k,\ \dots,\ x^{k-1}_k,\ 0^k,\ \dots,\ 0^n\right)$
(in this context the superscripts are coordinate-indices and not exponents).

Let further ACIS$^n$ denote the set of all aligned copies of simplices in $\mathbb{S}_\mathbb{N}$ and, let $C^n$ denote the set of all points in $E^n$ that correspond to corners of simplices in ACIS$^n$ whose coordinate values are all positive.

Question:

do there exist pairs $(p_n,q_n)$ of points in $C^n$ with:

• $\|q_n-p_n\|\in \mathbb{N}$
• $p^n_n\ne q^n_n$
• $(q_n-p_n)^T(u_j-u_i)\ne 0$ for all pairs of corners $u_i,u_j$ of the same simplex in ACIS$^n$

i.e. pairs of points that are corners of aligned simplices with all coordinates having positive values and, whose distance is integral.

The other restrictions are meant to rule out trivial cases; e.g. scaled copies of an aligned simplex with integral side-lengthwould trivially yield integer distances.

Adendum: for illustrational purposes, here are two images of aligned integer-sided triangles:

The first one depicts the loci of the vertices $C$, when $A$ are at the origin and $B$ on the positive x-axis; that resembles the alignment in the formulation of the question:

The second image is based on the same data, however this time the centers of side $c$ of the triangles are at the origin:

And here is the code fragment that was used for generating the data:

int n= 0;
float[] x=new float[dim];
float[] y=new float[dim];
float xmin, xmax, ymin, ymax;

for (int ab=2; ab<100; ++ab)    {
for (int c=1; c<ab; ++c)    {
for (int a=1; a<ab; ++a){
float b=ab-a;
if (a < b)  {
// remove the 'c/2' to get the uncentered version
x[n] = (c*c+b*b-a*a)/(2*c)-c/2;
y[n] = sqrt(b*b-x[n]*x[n]);
} else      {
x[n] = (c*c+a*a-b*b)/(2*c)-c/2;
y[n] = sqrt(a*a-x[n]*x[n]);
}
++n;
}
}
}