Closed aidevnn closed 4 months ago
Consider two multiplicative groups: a subgroup of $\textbf{GL}(n_0,p_0)$, denoted as A, and a subgroup of $\textbf{GL}(n_1,p_1)$, denoted as B. Their Cartesian product, C = A × B, is represented in $\textbf{GL}(n_0+n_1,p)$ by block diagonal matrices.
To fix the unexpected case, an exception is thrown by method ProductMatrixBlock if the generators of group A are not diagonal or permutation matrices and $p_0 \neq p$, and similarly for group B.
Changing the value of prime $p$ for a subgroup of $\textbf{GL}(n,p)$ by a value $q$ with respect that $\textbf{U}_p$ is isomorphic to a subgroup of $\textbf{U}_q$, conducts to an unexpected subgroup $\textbf{GL}(n,q)$ which needs to be corrected.
https://github.com/aidevnn/FastGoat/blob/51ad5e5de921b5e2fa8547d5afb0509fe8ad1519/FastGoat/Examples/GroupMatrixFormPart2.cs#L58-L88
It produces an isomorphism for multiplicative groups of matrices with only one non-null value in each row and column.
These methods require further examination.