# Determine Two quadratic form is integer congruence (rational equivalent)?

Fix $n \geq 2$ and consider $A,B \in \operatorname{GL}(n,\mathbb{Z}).$ We know that we have the Smith normal form. One can find $U, V \in \operatorname{SL}(n,\mathbb{Z})$ such that $A=UDV.$ Likewise for $B$. The Smith normal form is easy to compute using Mathematica.

We also call two matrices $A,B$ congruent if there exists $X \in \operatorname{PSL}(n,\mathbb{Z})$ such that $X^TAX=B$.

Now we have the following: if two matrices are congruent, then they have the same $D$.

But now, given two 4 by 4 matrices with same Smith normal form $D$, how to verify they are congruent? An if they are, how to find a matrix $X$ such that $X^T A X = B$.

To be more specific, suppose $A = \begin{bmatrix} 2 & -1 & -1 & -1 \\ -1 & 2 & 0 & 0 \\ -1 & 0 & 2 & 0 \\ -1 & 0 & 0 & 2 \\ \end{bmatrix}$ and $B = \begin{bmatrix} 4 & -6 & 4 & -2 \\ -6 & 12 & -8 & 4 \\ 4 & -8 & 6 & -3 \\ -2 & 4 & -3 & 2 \\ \end{bmatrix}.$

I want to ask whether $A,B$ are congruent. Here is how far I got.

$A$, $B$ both have the same Smith normal form $D = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 0 & 0 & 0 & 2 \\ \end{bmatrix}.$ So they define the same integer lattices. But I do not know whether they are congruent.

I suspect they are congruent but I have no idea how to prove it. Any ideas or comments are really appreciated. By the way, $A$ is the Cartan matrix of $SO(8).$ I think it will not help.

I used Sage and typed them in as quadratic forms. But I found that the is_rationally_isometric function only works for number field but not integers ring (if I use integers, there will be an error like no real_embedding). The is_rationally_isometric is True. But I do not know whether they are isometric over the integers. If the answer is true, can I find such X?

sage: A = QuadraticForm(QQ, 4, [4, -12, 8, -4, 12, -16, 8, 6, -6, 2])
sage: print(A)
sage: A1 = QuadraticForm(QQ, 4, [2, -2, -2, -2, 2, 0, 0, 2, 0, 2])
sage: print(A1)
sage: A1.is_rationally_isometric(A)
True

edit retag close merge delete

Sort by » oldest newest most voted The method is_globally_equivalent_to answers this and provides the matrix:

sage: QA = QuadraticForm(QQ, 4, [4, -12, 8, -4, 12, -16, 8, 6, -6, 2])
sage: QB = QuadraticForm(QQ, 4, [2, -2, -2, -2, 2, 0, 0, 2, 0, 2])
sage: X = QA.is_globally_equivalent_to(QB, return_matrix=True); X
[ 0  0  0  1]
[ 0  0  1  0]
[ 0  1  1 -1]
[ 1  1 -1 -1]
sage: X.transpose()*QA.matrix()*X == QB.matrix()
True


This calls the PARI function qfisom, which implements an algorithm of Plesken and Souvignier.

more