Goto Chapter: Top 1 2 3 4 5 Ind

### 4 Reconstructing G from the category of skeletal finite G-sets

#### 4.1 Reconstruction Tools

##### 4.1-1 EndAsEqualizer
 ‣ EndAsEqualizer( C, HomC, ForgetfulFunctor, IndexSet ) ( function )

##### 4.1-2 EndByLifts
 ‣ EndByLifts( C, HomC, ForgetfulFunctor, Objects ) ( function )

##### 4.1-3 ReconstructTableOfMarks
 ‣ ReconstructTableOfMarks( C, MinimalGeneratingSet, Decompose ) ( function )

##### 4.1-4 HomSkeletalFinGSets
 ‣ HomSkeletalFinGSets( S, T ) ( function )

Returns: a finite set (see FinSetsForCAP)

The finite set $$\mathrm{Hom}_{\mathrm{SkeletalFinGSets}}( S, T )$$.

##### 4.1-5 ForgetfulFunctorSkeletalFinGSets
 ‣ ForgetfulFunctorSkeletalFinGSets( G ) ( attribute )

Returns: a functor SkeletalFinGSets $$\rightarrow$$ SkeletalFinSets

The forgetful functor SkeletalFinGSets $$\rightarrow$$ SkeletalFinSets.

##### 4.1-6 ReconstructGroup
 ‣ ReconstructGroup( C, HomC, ForgetfulFunctor, GeneratingSet, EndImplementation ) ( function )

Returns: a group

The input is a CAP category C which is equivalent to the category of skeletal finite G-sets for some group $$G$$, a function HomC computing homs in C (e.g. HomSkeletalFinGSets), a generating set of C, and a function computing ends (e.g. EndAsEqualizer or EndByLifts). The output is a group isomorphic to $$G$$.

#### 4.2 Examples

##### 4.2-1 Reconstructing the Table of Marks
gap> G := CyclicGroup( 210 );;
gap> ToM := MatTom( TableOfMarks( G ) );
[ [ 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 105, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 70, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 42, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 35, 35, 35, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 30, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 21, 21, 0, 21, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 15, 15, 0, 0, 0, 15, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 14, 0, 14, 14, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0 ],
[ 10, 0, 10, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0 ],
[ 7, 7, 7, 7, 7, 0, 7, 0, 7, 0, 7, 0, 0, 0, 0, 0 ],
[ 6, 0, 0, 6, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0 ],
[ 5, 5, 5, 0, 5, 5, 0, 5, 0, 5, 0, 0, 5, 0, 0, 0 ],
[ 3, 3, 0, 3, 0, 3, 3, 3, 0, 0, 0, 3, 0, 3, 0, 0 ],
[ 2, 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2, 0 ],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ]
gap> k := Size( ToM );
16
gap> minimal_generating_set := [ ];;
gap> for i in [ 1 .. k ] do
>     M := ListWithIdenticalEntries( k, 0 )
>     ; M[ i ] := 1; Add( minimal_generating_set, FinGSet( G, M ) ); od;
gap> Decompose := function( Omega, minimal_generating_set )
>     return List( [ 1 .. k ], i ->
>         AsList( Omega )[Position( AsList( minimal_generating_set[i] ), 1 )]
>     ); end;;
gap> computed_ToM := ReconstructTableOfMarks(
>     SkeletalFinGSets( G ),
>     minimal_generating_set,
>     Decompose
> );;
gap> computed_ToM = ToM;
true
#@fi


##### 4.2-2 Reconstructing the Group
gap> G_1 := CyclicGroup( 5 );;
gap> G_2 := SmallGroup( 20, 5 );;
gap> CapCategorySwitchLogicOff( FinSets );
gap> DeactivateCachingOfCategory( FinSets );
gap> DisableSanityChecks( FinSets );
gap> DeactivateCachingOfCategory( SkeletalFinSets );
gap> CapCategorySwitchLogicOff( SkeletalFinSets );
gap> DisableSanityChecks( SkeletalFinSets );
#@fi
gap> CapCategorySwitchLogicOff( SkeletalFinGSets( G_1 ) );
gap> DeactivateCachingOfCategory( SkeletalFinGSets( G_1 ) );
gap> DisableSanityChecks( SkeletalFinGSets( G_1 ) );
gap> CapCategorySwitchLogicOff( SkeletalFinGSets( G_2 ) );
gap> DeactivateCachingOfCategory( SkeletalFinGSets( G_2 ) );
gap> DisableSanityChecks( SkeletalFinGSets( G_2 ) );
gap> DeactivateToDoList();
gap> ToM_1 := MatTom( TableOfMarks( G_1 ) );
[ [ 5, 0 ], [ 1, 1 ] ]
gap> k_1 := Size( ToM_1 );
2
gap> generating_set_1 := [ ];;
gap> for i in [ 1 .. k_1 ] do
>     M := ListWithIdenticalEntries( k_1, 0 )
>     ; M[i] := 1; Add( generating_set_1, FinGSet( G_1, M ) ); od;
gap> ToM_2 := MatTom( TableOfMarks( G_2 ) );
[ [ 20, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 10, 10, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 10, 0, 10, 0, 0, 0, 0, 0, 0, 0 ],
[ 10, 0, 0, 10, 0, 0, 0, 0, 0, 0 ],
[ 5, 5, 5, 5, 5, 0, 0, 0, 0, 0 ],
[ 4, 0, 0, 0, 0, 4, 0, 0, 0, 0 ],
[ 2, 2, 0, 0, 0, 2, 2, 0, 0, 0 ],
[ 2, 0, 2, 0, 0, 2, 0, 2, 0, 0 ],
[ 2, 0, 0, 2, 0, 2, 0, 0, 2, 0 ],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ]
gap> k_2 := Size( ToM_2 );
10
gap> generating_set_2 := [ ];;
gap> for i in [ 1 .. k_2 ] do
>     M := ListWithIdenticalEntries( k_2, 0 )
>     ; M[i] := 1; Add( generating_set_2, FinGSet( G_2, M ) ); od;
gap> SetInfoLevel( InfoWarning, 0 );
gap> computed_group := ReconstructGroup(
>     SkeletalFinGSets( G_1 ),
>     HomSkeletalFinGSets,
>     ForgetfulFunctorSkeletalFinGSets( G_1 ),
>     generating_set_1,
>     EndAsEqualizer
> );;
gap> IsFinite( computed_group );;
gap> IsomorphismGroups( computed_group, G_1 ) <> fail;
true
gap> computed_group := ReconstructGroup(
>     SkeletalFinGSets( G_1 ),
>     HomSkeletalFinGSets,
>     ForgetfulFunctorSkeletalFinGSets( G_1 ),
>     generating_set_1,
>     EndByLifts
> );;
gap> IsFinite( computed_group );;
gap> IsomorphismGroups( computed_group, G_1 ) <> fail;
true
gap> computed_group := ReconstructGroup(
>     SkeletalFinGSets( G_2 ),
>     HomSkeletalFinGSets,
>     ForgetfulFunctorSkeletalFinGSets( G_2 ),
>     generating_set_2,
>     EndByLifts
> );;
gap> IsFinite( computed_group );;
gap> IsomorphismGroups( computed_group, G_2 ) <> fail;
true
#@fi

Goto Chapter: Top 1 2 3 4 5 Ind

generated by GAPDoc2HTML