Goal:
Given a $K$-dimensional vector space $V \subseteq \mathbb{F}_2^N$ firstly find the group $A$ of all automorphisms $\alpha_i: V\to V $ and secondly find the subgroup $\widetilde{A} \subseteq A$ of all automorphisms that are permutations.
Note: For $v=[v_0,v_1, v_2, \dots , v_N]\in V$ a permutation would be $\alpha(v)=[v_0,v_2, v_N, \dots , v_1]$. I use cycle notation which in this case is $(1,N,2)$ assuming all other $v_i$ stay in place.
What I tried (with example):
I am using GAP system to compute the solutions. Given a vector space $V$ from generators $g_1=[1,1,0,0]$ and $g_2=[0,0,1,1]$ I first try to find $\widetilde{A}$ by hand. There are three possible permutations $(0,1), (2,3)$ and $(0,2)(1,3)$ as well as any combination of them, so I expect $8$ elements in $\widetilde{A}$.
I construct $V$ like this:
g:=[[Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2)], [0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0]];
V:=VectorSpace(GF(2),g);
Then I compute $A$ by computing all homomorphisms from $V$ to itself.
A:=Hom(GF(2),V,V);
Sadly GAP doesn't tell me the elements of $A$ but rather a string output that doesn't help much. The number of elements is $|A|=16$.
A;
>>End( GF(2), <vector space of dimension 2 over GF(2)> )
Size(A);
>>16
I want to access the elements $\alpha_i \in A$ to further apply the constraint that $\alpha$ has to be a permutation. Furthermore $|A|$ may get large in other scenarios that I'm interested in. For those reasons I ask GAP for generators of $A$. The result is the identity mapping, a matrix homomorphism with $M_1=[[1,0],[0,0]]$ and a matrix homomorphism with $M_2=[[0,1],[1,0]]$
Print(GeneratorsOfAlgebra(A));
>>[ IdentityMapping( VectorSpace( GF(2), [ [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ] ] ) ),
LeftModuleHomomorphismByMatrix( SemiEchelonBasis( VectorSpace( GF(2),
[ [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ]
] ), [ [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ] ] ),
[ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), 0*Z(2) ]
], SemiEchelonBasis( VectorSpace( GF(2),
[ [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ]
] ), [ [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ] ] ) ),
LeftModuleHomomorphismByMatrix( SemiEchelonBasis( VectorSpace( GF(2),
[ [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ]
] ), [ [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ] ] ),
[ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, 0*Z(2) ]
], SemiEchelonBasis( VectorSpace( GF(2),
[ [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ]
] ), [ [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ] ] ) ) ]
Now I try to construct all $16$ $\alpha_i$ from those generators and this is where I start getting confused. With three generators I can only get $2^3=8$ combinations and not $16$. Also I am not interested in homomorphisms with matrices that don't have full rank since a permutation has to be bijective. The matrix homomorphisms that fulfill the conditions use $M_0=[[1,0],[0,1]]$, $M_2=[[0,1],[1,0]]$, $M_3=[[0,1],[1,1]]$ and $M_4=[[1,1],[1,0]]$.
One can quickly verify that $M_i\cdot [g_1,g_2]$ spans the same vector space $V$ again, so they represent in fact automorphisms. However, these automorphisms are simply linear combinations of the generators and are in general not the premutations that I am looking for. A right sided matrix multiplication would be able to represent the permutations. I tried to look at the dual problem by using generators $h_i$ such that $[g_0,\dots,g_K]\cdot[h_0,\dots,h_{N-K}]^T=0$ but the vector spaces I am interested in are self dual so that doesn't work.
Questions:
- I can not represent some automorphisms in the form of a left sided matrix multiplication (e.g. the permutation $(0,1)$ in the example above). Instead I would need to apply a right sided matrix multiplication. How can I find these automorphisms with GAP?
- How can I directly access all elements of the automorphism group $A$ in GAP as shown in the example above?
- Why do I fail at reconstructing $A$ from it's generators as explained above?
Some remarks:
End(GF(2), V)instead ofHom(GF(2), V, v)(shouldn't make a difference here, though)AsSet, i.e. here:AsSet(U)2^3elements from 3 generators is incorrect. E.g. even a single group generator $g$ can give an infinite number of elements ($g, g^2, g^3, \dots, g^0, g^{-1}, g^{-2}, \dots$. And for two elements $g,h$ in general $gh\neq hg$, and so on.UPDATE 2023-11-11: so it turns out you are not interested in automorphisms of the vector space $V,$ but rather in automorphisms of $\mathbb{F}_2^4$ which are induced by permutations of the coordinates and which also stabilize $V$. You can get those by defining an action of the symmetric group $S_4$ on $\mathbb{F}_2^4$ and a suitable action map, and then asking for the stabilizer: