Goto Chapter: Top 1 2 3 4 5 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

4 Reconstructing G from the category of skeletal finite G-sets
 4.1 Reconstruction Tools
 4.2 Examples

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;;
#@if IsPackageMarkedForLoading( "FinSetsForCAP", ">= 2018.09.17" )
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 );;
#@if IsPackageMarkedForLoading( "FinSetsForCAP", ">= 2018.09.17" )
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 );
#@if IsPackageMarkedForLoading( "FinSetsForCAP", ">= 2018.09.17" )
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
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 Ind

generated by GAPDoc2HTML