FlabbyResolutionFromBase.gap

Definition of $M_G$
Let $G$ be a finite subgroup of $\mathrm{GL}(n,\mathbb{Z})$. The $G$-lattice $M_G$ of rank $n$ is defined to be the $G$-lattice with a $\mathbb{Z}$-basis $\{u_1,\ldots,u_n\}$ on which $G$ acts by $\sigma(u_i)=\sum_{j=1}^n a_{i,j}u_j$ for any $ \sigma=[a_{i,j}]\in G$.

Hminus1

Hminus1(G)
returns the Tate cohomology group $\widehat H^{-1}(G,M_G)$ for a finite subgroup $G \leq \mathrm{GL}(n,\mathbb{Z})$.

H0

H0(G)
returns the Tate cohomology group $\widehat H^0(G,M_G)$ for a finite subgroup $G \leq \mathrm{GL}(n,\mathbb{Z})$.

H1

H1(G)
returns the cohomology group $H^1(G,M_G)$ for a finite subgroup $G \leq \mathrm{GL}(n,\mathbb{Z})$.

Z0lattice

Z0lattice(G)
returns a $\mathbb{Z}$-basis of the group of Tate $0$-cocycles $\widehat Z^0(G,M_G)$ for a finite subgroup $G \leq \mathrm{GL}(n,\mathbb{Z})$.

ConjugacyClassesSubgroups2, ConjugacyClassesSubgroupsFromPerm

ConjugacyClassesSubgroups2(G)
ConjugacyClassesSubgroupsFromPerm(G)
returns the list of conjugacy classes of subgroups of a group $G$. We use this function because the ordering of the conjugacy classes of subgroups of $G$ by the built-in function ConjugacyClassesSubgroups(G) is not fixed for some groups. If a group $G$ is too big, ConjugacyClassesSubgroups2(G) may not work well.

IsFlabby

IsFlabby(G)
returns whether $G$-lattice $M_G$ is flabby or not.

IsCoflabby

IsCoflabby(G)
returns whether $G$-lattice $M_G$ is coflabby or not.

IsInvertible

IsInvertible(G)
returns whether $G$-lattice $M_G$ is invertible or not.

FlabbyResoluton

FlabbyResolution(G)
returns a flabby resolution $0 \rightarrow M_G \xrightarrow{\iota} P \xrightarrow{\phi} F \rightarrow 0$ of $M_G$ as follows:
FlabbyResolution(G).actionP
returns the matrix representation of the action of $G$ on $P$;
FlabbyResolution(G).actionF
returns the matrix representation of the action of $G$ on $F$;
FlabbyResolution(G).injection
returns the matrix which corresponds to the injection $\iota: M_G \rightarrow P$;
FlabbyResolution(G).surjection
returns the matrix which corresponds to the surjection $\phi: P \rightarrow F$.

IsInvertibleF

IsInvertibleF(G)
returns whether $[M_G]^{fl}$ is invertible.

flfl

flfl(G)
returns the $G$-lattice $E$ with $[[M_G]^{fl}]^{fl}=[E]$.

PossibilityOfStablyPermutationF

PossibilityOfStablyPermutationF(G)
returns a basis $\mathcal{L}=\{l_1,\dots,l_s\}$ of the solution space of the system of linear equations which is obtained by computing some $\mathbb{Z}$-class invariants. Each isomorphism class of irreducible permutation $G$-lattices corresponds to a conjugacy class of subgroup $H$ of $G$ by $H \leftrightarrow \mathbb{Z}[G/H]$. Let $H_1,\dots,H_r$ be conjugacy classes of subgroups of $G$ whose ordering corresponds to the GAP function ConjugacyClassesSubgroups2(G). Let $F$ be the flabby class of $M_G$. We assume that $F$ is stably permutation, i.e. for $x_{r+1}=\pm 1$, \begin{align*} \left(\bigoplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus x_i}\right)\oplus F^{\oplus x_{r+1}} \ \simeq\ \bigoplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus y_i}.%\label{eqpos} \end{align*} Define $a_i=x_i-y_i$ and $b_1=x_{r+1}$. Then we have for $b_1=\pm 1$, \[ \bigoplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i}\ \simeq\ F^{\oplus(-b_1)}. \] $[M_G]^{fl}=0\Longrightarrow$ there exist $a_1,\ldots,a_r\in\mathbb{Z}$ and $b_1=\pm 1$ which satisfy the system of linear equations.

PossibilityOfStablyPermutationM

PossibilityOfStablyPermutationM(G)
returns the same as PossibilityOfStablyPermutationF(G) but with respect to $M_G$ instead of $F$.

Nlist

Nlist(l)
returns the negative part of the list $l$.

Plist

Plist(l)
returns the positive part of the list $l$.

StablyPermutationFCheck

StablyPermutationFCheck(G,L1,L2)
returns the matrix $P$ which satisfies $G_1P=PG_2$ where $G_1$ (resp. $G_2$) is the matrix representation group of the action of $G$ on $(\oplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i})\oplus F^{\oplus b_1}$ (resp. $(\oplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i^{\prime}})\oplus F^{\oplus b_1^{\prime}}$) with the isomorphism \[ \left(\bigoplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i}\right)\oplus F^{\oplus b_1} \simeq \left(\bigoplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i^{\prime}}\right)\oplus F^{\oplus b_1^{\prime}} \] for lists $L_1=[a_1,\ldots,a_r,b_1]$ and $L_2=[a_1^{\prime},\ldots,a_r^{\prime},b_1^{\prime}]$, if $P$ exists. If such $P$ does not exist, this returns false.

StablyPermutationMCheck

StablyPermutationMCheck(G,L1,L2)
returns the same as StablyPermutationFCheck(G,L1,L2) but with respect to $M_G$ instead of $F$.

StablyPermutationFCheckP

StablyPermutationFCheckP(G,L1,L2)
returns a basis $\mathcal{P}=\{P_1,\dots,P_m\}$ of the solution space of $G_1P=PG_2$ where $G_1$ (resp. $G_2$) is the matrix representation group of the action of $G$ on $(\oplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i})\oplus F^{\oplus b_1}$ (resp. $(\oplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i^{\prime}})\oplus F^{\oplus b_1^{\prime}}$) for lists $L_1=[a_1,\ldots,a_r,b_1]$ and $L_2=[a_1^{\prime},\ldots,a_r^{\prime},b_1^{\prime}]$, if $P$ exists. If such $P$ does not exist, this returns [ ].

StablyPermutationMCheckP

StablyPermutationMCheckP(G,L1,L2)
returns the same as StablyPermutationFCheckP(G,L1,L2) but with respect to $M_G$ instead of $F$.

StablyPermutationFCheckMat

StablyPermutationFCheckMat(G,L1,L2,P)
returns true if $G_1P=PG_2$ and det $P=\pm 1$ where $G_1$ (resp. $G_2$) is the matrix representation group of the action of $G$ on $(\oplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i})\oplus F^{\oplus b_1}$ (resp. $(\oplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i^{\prime}})\oplus F^{\oplus b_1^{\prime}}$) for lists $L_1=[a_1,\ldots,a_r,b_1]$ and $L_2=[a_1^{\prime},\ldots,a_r^{\prime},b_1^{\prime}]$. If not, this returns false.

StablyPermutationMCheckMat

StablyPermutationMCheckMat(G,L1,L2,P)
returns the same as StablyPermutationFCheckMat(G,L1,L2,P) but with respect to $M_G$ instead of $F$.

StablyPermutationFCheckGen

StablyPermutationFCheckP(G,L1,L2)
returns the list $[\mathcal{M}_1,\mathcal{M}_2]$ where $\mathcal{M}_1=[g_1,\ldots,g_t]$ (resp. $\mathcal{M}_2=[g_1^{\prime},\ldots,g_t^{\prime}]$) is a list of the generators of $G_1$ (resp. $G_2$) which is the matrix representation group of the action of $G$ on $(\oplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i})\oplus F^{\oplus b_1}$ (resp. $(\oplus_{i=1}^r \mathbb{Z}[G/H_i]^{\oplus a_i^{\prime}})\oplus F^{\oplus b_1^{\prime}}$) for lists $L_1=[a_1,\ldots,a_r,b_1]$ and $L_2=[a_1^{\prime},\ldots,a_r^{\prime},b_1^{\prime}]$.

StablyPermutationMCheckGen

StablyPermutationMCheckGen(G,L1,L2)
returns the same as StablyPermutationFCheckGen(G,L1,L2) but with respect to $M_G$ instead of $F$.

DirectSumMatrixGroup

DirectSumMatrixGroup(l)
returns the direct sum of the groups $G_1,\ldots,G_n$ for the list $l=[G_1,\ldots,G_n]$.

DirectProductMatrixGroup

DirectProductMatrixGroup(l)
returns the direct product of the groups $G_1,\ldots,G_n$ for the list $l=[G_1,\ldots,G_n]$.

Norm1TorusJ

Norm1TorusJ(d,m)
returns the Chevalley module $J_{G/H}$ for the $m$-th transitive subgroup $G=dTm\leq S_d$ of degree $d$ where $H$ is the stabilizer of one of the letters in $G$.

FlabbyResolutionLowRank

FlabbyResolutionLowRank(G).actionF
returns the matrix representation of the action of $G$ on $F$ where $F$ is a suitable flabby class of $M_G$ ($F]=[M_G]^{fl}$) with low rank by using backtracking techniques (see [HY17, Chapter 5], see also [HHY20 Algorithm 4.1 (3)]).

FlabbyResolutionLowRankFromGroup

FlabbyResolutionLowRankFromGroup(M,G)
returns a suitable flabby resolution with low rank for $G$-lattice $M$ by using backtracking techniques. Repeating the algorithm, by defining $[M]^{fl^n}:=[[M]^{fl^{n-1}}]^{fl}$ inductively, $[M]^{fl}=0$ is provided if we may find some $n$ with $[M]^{fl^n}=0$ (this method is slightly improved to the flfl algorithm, see above).

SearchPRowBlocks

SearchPRowBlocks(P)
returns the records bpBlocks and rowBlocks where bpBlocks (resp. rowBlocks) is the decomposition of the list $l=[1,\ldots,m]$ (resp. $l=[1,\ldots,n]$) with $m={\rm rank}_\mathbb{Z}$ ${\rm Hom}(G_1,G_2)$ (resp. $n={\rm size}$ $G_1$) according to the direct sum decomposition of $M_{G_1}$ for a basis $\mathcal{P}=\{P_1,\dots,P_m\}$ of the solution space of $G_1P=PG_2$ where $G_1$ (resp. $G_2$) is the matrix representation group of the action of $\widetilde{H}$ on the left-hand side $(\oplus_{i=1}^r \mathbb{Z}[\widetilde{H}/H_i]^{\oplus a_i})\oplus F^{\oplus b_1}$ (resp. the right-hand side $(\oplus_{i=1}^r \mathbb{Z}[\widetilde{H}/H_i]^{\oplus a_i^{\prime}})\oplus F^{\prime\,\oplus b_1^{\prime}}$) of the isomorphism $(8)$.

We write $B$[$t$] $=$ SearchPRowBlocks($\mathcal{P}$).bpBlocks[$t$] and $R$[$t$] $=$ SearchPRowBlocks($\mathcal{P}$).rowBlocks[$t$].

SearchPFilterRowBlocks

SearchPFilterRowBlocks(P,B[t],R[t],j)
returns the lists $\{M_s\}$ where $M_s$ is the $n_t \times n$ matrix with all invariant factors $1$ which is of the form $M_s=\sum_{i\,\in\,B{\rm [}t{\rm ]}} c_i P_i^\prime$ $(c_i\in\{0,1\})$ at most $j$ non-zero $c_i$'s and $P_i^\prime$ is the submatrix of $P_i$ consists of $R$[$t$] rows with $n_t={\rm length}($$R$[$t$]$)$ for a basis $\mathcal{P}=\{P_1,\dots,P_m\}$ of the solution space of $G_1P=PG_2$ where $G_1$ (resp. $G_2$) is the matrix representation group of the action of $\widetilde{H}$ on the left-hand side $(\oplus_{i=1}^r \mathbb{Z}[\widetilde{H}/H_i]^{\oplus a_i})\oplus F^{\oplus b_1}$ (resp. the right-hand side $(\oplus_{i=1}^r \mathbb{Z}[\widetilde{H}/H_i]^{\oplus a_i^{\prime}})\oplus F^{\prime\,\oplus b_1^{\prime}}$) of the isomorphism $(8)$, $B$[$t$] $=$ SearchPRowBlocks($\mathcal{P}$).bpBlocks[$t$], $R$[$t$] $=$ SearchPRowBlocks($\mathcal{P}$).rowBlocks[$t$]) and $j\geq 1$.
SearchPFilterRowBlocks(P,B[t],R[t],j,C)
returns the same as SearchPFilterRowBlocks(P,B[t],R[t],j) but with respect to $c_i\in C$ instead of $c_i\in\{0,1\}$ for the list $C$ of integers.

SearchPFilterRowBlocksRandomMT

SearchPFilterRowBlocksRandomMT(P,B[t],R[t],u)
returns the same as SearchPFilterRowBlocks(P,B[t],R[t],j) but with respect to random $u$ $c_i$'s via Mersenne Twister instead of at most $j$ non-zero $c_i$'s for integer $u\geq 1$.
SearchPFilterRowBlocksRandomMT(P,B[t],R[t],u,C)
returns the same as SearchPFilterRowBlocksRandomMT(P,B[t],R[t],u) but with respect to $c_i\in C$ instead of $c_i\in\{0,1\}$ for the list $C$ of integers.

SearchPMergeRowBlock

SearchPMergeRowBlock(m1,m2)
returns all concatenations of the matrices $M_s$ and $M_t$ vertically with all invariant factors $1$ (resp. a concatenation of the matrices $M_s$ and $M_t$ vertically with determinant $\pm 1$) for $m_1=\{M_s\}$ and $m_2=\{M_t\}$ where $M_s$ are $n_1\times n$ matrices and $M_t$ are $n_2\times n$ matrices with $n_1+n_2$ < $n$ (resp. $n_1+n_2=n$).

When there exists $t\in\mathbb{Z}$ such that $R$[$t$] $=\{j\}$, we can use:

SearchPLinear

SearchPLinear(M,P1)
returns the list $\{{\rm det}(M+P_i)\}_{i\,\in\,B{\rm [}t{\rm ]}}$ of integers for an $n\times n$ matrix $M$ which is obtained by inserting the zero row into the $j$-th row of $(n-1)\times n$ matrix $M_s=\sum_{i\,\not\in\,B{\rm [}t{\rm ]}} c_i P_i^\prime$ with all invariant factors $1$ and $\mathcal{P}_1=\{P_i\}_{i\,\in\, B{\rm [}t{\rm ]}}$ where $B$[$t$] $=$ SearchPRowBlocks($\mathcal{P}$).bpBlocks[$t$], $P_i^\prime$ is the submatrix of $P_i$ deleting the $j$-th row, and $\mathcal{P}=\{P_1,\ldots,P_m\}$ is obtained by StablyEquivalentFCheckPSubdirectProduct($\widetilde{H}$,$l_1$,$l_2$) under the assumption that there exists $t\in\mathbb{Z}$ such that $R$[$t$] $=\{j\}$.

When there exist $t_1, t_2\in\mathbb{Z}$ such that $R$[$t_1$] $=\{j_1\}$, $R$[$t_2$] $=\{j_2\}$, we can use:

SearchPBilinear

SearchPBilinear(M,P1,P2)
returns the matrix $[{\rm det}(M+P_{i_1}+P_{i_2})]_{i_1\,\in\,B{\rm [}t_1{\rm ]},i_2\,\in\,B{\rm [}t_2{\rm ]}}$ for an $n\times n$ matrix $M$ which is obtained by inserting the two zero rows into the $j_1$-th row and the $j_2$-th row of $(n-2)\times n$ matrix $M_s=\sum_{i\,\not\in\,B{\rm [}t_1{\rm ]} \,\cup\,B{\rm [}t_2{\rm ]}} c_i P_i^\prime$ with all invariant factors $1$ and $\mathcal{P}_1=\{P_{i_1}\}_{i_1 \in B{\rm [}t_1{\rm ]}}$, $\mathcal{P}_2=\{P_{i_2}\}_{i_2 \in B{\rm [}t_2{\rm ]}}$, where $B$[$t_1$] $=$ SearchPRowBlocks($\mathcal{P}$).bpBlocks[$t_1$], $B$[$t_2$] $=$ SearchPRowBlocks($\mathcal{P}$).bpBlocks[$t_2$], $P_i^\prime$ is the submatrix of $P_i$ deleting the $j_1$-th and the $j_2$-th rows, and $\mathcal{P}=\{P_1,\ldots,P_m\}$ is obtained by StablyEquivalentFCheckPSubdirectProduct($\widetilde{H}$,$l_1$,$l_2$) under the assumption that there exist $t_1, t_2\in\mathbb{Z}$ such that $R$[$t_1$] $=\{j_1\}$ and $R$[$t_2$] $=\{j_2\}$.

When there exists $t\in\mathbb{Z}$ such that $R$[$t$] $=\{j_1,j_2\}$, we can use:

SearchPQuadratic

SearchPQuadratic(M,P1)
returns the matrix $[\frac{1}{2}({\rm det}(M+P_{i_1}+P_{i_2})-{\rm det}(M+P_{i_1})-{\rm det}(M+P_{i_2}))]_{i_1,i_2\,\in\,B{\rm [}t{\rm ]}}$ for an $n\times n$ matrix $M$ which is obtained by inserting the two zero rows into the $j_1$-th row and the $j_2$-th row of $(n-2)\times n$ matrix $M_s=\sum_{i\,\not\in\,B{\rm [}t{\rm ]}} c_i P_i^\prime$ with all invariant factors $1$ and $\mathcal{P}_1=\{P_i\}_{i \in B{\rm [}t{\rm ]}}$, where $B$[$t$] $=$ SearchPRowBlocks($\mathcal{P}$).bpBlocks[$t$], $P_i^\prime$ is the submatrix of $P_i$ deleting the $j_1$-th and $j_2$-th rows and $\mathcal{P}=\{P_1,\ldots,P_m\}$ is obtained by StablyEquivalentFCheckPSubdirectProduct($\widetilde{H}$,$l_1$,$l_2$) under the assumption that there exists $t\in\mathbb{Z}$ such that $R$[$t$] $=\{j_1,j_2\}$.

When $R$[$1$] $=\{1,\ldots,m\}$, we can use:

SearchP1

SearchP1(P)
returns a matrix $P=\sum_{i=1}^m c_i P_i$ with $c_i\in\{0,1\}$, $G_1P=PG_2$ and det $P=\pm 1$ where $G_1$ (resp. $G_2$) is the matrix representation group of the action of $\widetilde{H}$ on the left-hand side $(\oplus_{i=1}^r \mathbb{Z}[\widetilde{H}/H_i]^{\oplus a_i})\oplus F^{\oplus b_1}$ (resp. the right-hand side $(\oplus_{i=1}^r \mathbb{Z}[\widetilde{H}/H_i]^{\oplus a_i^{\prime}})\oplus F^{\prime\,\oplus b_1^{\prime}}$) of the isomorphism $(8)$ for $\mathcal{P}=\{P_1,\ldots,P_m\}$ which is obtained by StablyEquivalentFCheckPSubdirectProduct($\widetilde{H}$,$l_1$,$l_2$) under the assumption that $R$[$1$]$=\{1,\ldots,m\}$.
SearchP1(P,C)
returns the same as SearchP1(P) but with respect to $c_i\in C$ instead of $c_i\in\{0,1\}$ for the list $C$ of integers.

Hcandidates

Hcandidates(G)
returns subgroups $H$ of $G$ which satisfy $\bigcap_{\sigma\in G} H^\sigma=\{1\}$ where $H^\sigma=\sigma^{-1}H\sigma$ (hence $H$ contains no normal subgroup of $G$ except for $\{1\}$).

Norm1TorusJTransitiveGroup

Norm1TorusJTransitiveGroup(d,m)
returns the Chevalley module $J_{G/H}$ for the $m$-th transitive subgroup $G = {}_dT_m \leq S_d$ of degree $d$ where $H$ is the stabilizer of one of the letters in $G$. (The input and output of this function is the same as the function Norm1TorusJ(d,m) but this function is more efficient.)

Norm1TorusJCoset

Norm1TorusJCoset(G,H)
returns the Chevalley module $J_{G/H}$ for a group $G$ and a subgroup $H\leq G$.

StablyPermutationMCheckPPari

StablyPermutationMCheckPPari(G,L1,L2)
returns the same as StablyPermutationMCheckP(G,L1,L2) but using efficient PARI/GP functions (e.g. matker, matsnf) [PARI2]. (This function applies union-find algorithm and it also requires PARI/GP [PARI2].)

StablyPermutationFCheckPPari

StablyPermutationFCheckPPari(G,L1,L2)
returns the same as StablyPermutationFCheckP(G,L1,L2) but using efficient PARI/GP functions (e.g. matker, matsnf) [PARI2]. (This function applies union-find algorithm and it also requires PARI/GP [PARI2].)

StablyPermutationFCheckPFromBasePari

StablyPermutationFCheckPFromBasePari(G,mi,L1,L2)
returns the same as StablyPermutationFCheckPPari(G,L1,L2) but with respect to $m_i=\mathcal{P}^\circ$ instead of the original $\mathcal{P}^\circ$ as in Hoshi and Yamasaki [HY17, Equation (4) in Section 5.1]. (See [HY17, Section 5.7, Method III]. This function applies union-find algorithm and it also requires PARI/GP [PARI2].)

References

[HY17] Akinari Hoshi and Aiichi Yamasaki, Rationality problem for algebraic tori, Mem. Amer. Math. Soc. 248 (2017) no. 1176, v+215 pp. AMS Preprint version: arXiv:1210.4525.
[HHY20] Sumito Hasegawa, Akinari Hoshi and Aiichi Yamasaki, Rationality problem for norm one tori in small dimensions, Math. Comp. 89 (2020) 923-940. AMS Extended version: arXiv:1811.02145.
[HY] Akinari Hoshi and Aiichi Yamasaki, Rationality problem for norm one tori for $A_5$ and ${\rm PSL}_2(\mathbb{F}_8)$ extensions, arXiv:2309.16187.
[PARI2] The PARI Group, PARI/GP version 2.13.3, Univ. Bordeaux, 2021, http://pari.math.u-bordeaux.fr/.