Code and implementation
The file main_algorithm.m2
implements Algorithm 2 in our paper. The code also uses the file eqnTangential.m2
that implements equations for the tangential variety of a Segre variety \(X_{1^k}\), for some \(k\geq 3\).
Input: a concise tensor \(T=(t_{i_1,\dots, i_{k}})\in \mathcal{T}_{n_1,n_2,2^{k-2}}\),for some \(k>3\), \(2\leq n_1,n_2\leq 3\).
Output: a statement telling if the given tensor is a rank-3 tensor that falls into one of the cases mentioned above or not.
Below a pseudocode description of the algorithm.
0. For all \(i,j=1,\dots,k\) with \(i\neq j\) denote by \(\theta_{i,j}\) the reshape grouping the \(i\)-th and \(j\)-th factor of \(\mathcal{T}_{n_1,\dots,n_{k}}\).
1. Case \((n_1,n_2)=(2,2)\).
Case \(k=4\). Test if \(T\in \sigma_3(X_{1^4})\setminus \sigma_2(X_{1^4})\). If the answer to the test is positive, the output is: \(T\) is a non-identifiable rank-3 tensor, otherwise the output is: \(T\) is not on the list of non-identifiable rank-3 tensors.
Case \(k\geq 5\). For all \(i=1,\dots,k-1\) and for all \(j=i+1\dots,k\) follow this procedure:
Test if \(\theta_{i,j}(T)\) satisfies the equations of \(\sigma_2(X_{3,1^{k-2}})\) and does not satisfy the equations of \(\tau(X_{3,^{k-2}})\). If \(\theta_{i,j}(T)\in \sigma_2(X_{3,1^{k-2}})\setminus \tau(X_{3,1^{k-2}})\) then \(\theta_{i,j}(T)\) is an identifiable rank-2 tensor. Make the concision process on the first factor of \(\mathcal{T}_{3,1^{k-2}}\) and call \(T'\) the resulting tensor. Consider \(T'\) as a matrix pencil of \(\mathbb{C}^2\otimes \mathbb{C}^2\otimes( (\mathbb{C}^2)^{\otimes(k-2)})\) with respect to the second factor
\[T'=\lambda C_1 + \mu C_2.\]Find the eigenvectors \(x,y\in \mathbb{C}^2\) of \(C_1C_2^{-1}\) and then rewrite \(x,y\) as elements of \(\mathbb{C}^{4}\cong \mathbb{C}^2\otimes \mathbb{C}^2\) via \(\theta^{-1}_{i,j}\). If \(\{r(x),r(y) \}=\{ 1,2\}\) then the output is: \(T\) is a non-identifiable rank-3 tensor corresponding to case 6 of the identifiability Theorem.
Else, if one of the previous conditions is not satisfied, then stop and restart with another \(j\) (and another \(i\) when necessary).
If the algorithm stops at some point when \(i=k-1,j=k\) then break and the output is: \(T\) is not on the list of non-identifiable rank-3 tensors.
2. Case \((n_1,n_2)=(3,2)\). For all \(i=2,\dots,k-1\) follow this procedure:
Test if \(\theta_{1,i}(T)\) satisfies the equations of \(\sigma_2(X_{5,1^{k-2}})\) and does not satisfy the equations of \(\tau(X_{5,^{k-2}})\). If \(\theta_{1,i}(T)\in \sigma_2(X_{5,1^{k-2}})\setminus \tau(X_{5,1^{k-2}})\) then \(\theta_{1,i}(T)\) is an identifiable rank-2 tensor. Reduce the first factor of \(\mathcal{T}_{6,2^{k-2}}\) via concision, working now on \(\mathcal{T}_{2^{k-1}}\) with \(T'\). Consider \(T'\) as a matrix pencil with respect to the second factor of \(\mathbb{C}^2\otimes \mathbb{C}^2\otimes (\mathbb{C}^2)^{\otimes (k-3)}\), i.e.
\[T'=\lambda C_1 + \mu C_2.\]Find the eigenvectors \(x,y\) of \(C_1C_2^{-1}\) and then rewrite \(x,y\) as elements of \(\mathbb{C}^6=\mathbb{C}^3\otimes \mathbb{C}^2\) via \(\theta^{-1}_{1,i}\). If \(\{ r(x),r(y)\}=\{ 2,1 \}\) the output is: \(T\) is a non-identifiable rank-3 tensor.
Else, if one of the previous conditions is not satisfied then stop and restart with another \(i\).
If the algorithm stops at some point when \(i=k\) then break and the output is: \(T\) is not on the list of non-identifiable rank-3 tensors.
Case \((n_1,n_2)=(3,3)\).
Test if \(\theta_{1,2}(T)\) satisfies the equations of \(\sigma_2(X_{8,1^{k-2}})\) and does not satisfy the equations of \(\tau(X_{8,^{k-2}})\). If \(\theta_{1,2}(T)\in \sigma_2(X_{8,1^{k-2}})\setminus \tau(X_{8,1^{k-2}})\) then \(\theta_{1,2}(T)\) is an identifiable rank-2 tensor. Reduce the first factor of \(\mathcal{T}_{9,2^{k-2}}\) via the concision process, working now with \(T'\) on \((\mathbb{C}^2)^{\otimes (k-1)}\). Consider \(T'\) as a matrix pencil with respect to the second factor of \(\mathbb{C}^2\otimes \mathbb{C}^2\otimes (\mathbb{C}^2)^{\otimes (k-3)}\), i.e.
\[T'=\lambda C_1+\mu C_2.\]
Find the eigenvectors \(x,y\) of \(C_1C_2^{-1}\) and then rewrite \(x,y\) as elements of \(\mathbb{C}^9\cong \mathbb{C}^3\otimes \mathbb{C}^3\) via \(\theta^{-1}_{1,2}\). If \(\{ r(x),r(y) \}=\{1,2 \}\) the output is: \(T\) is a non-idenfitiable rank-3 tensor as in case 6.
If one of these conditions is not satisfied then stop and the output is: \(T\) is not on the list of non-identifiable rank-3 tensors.