‣ EndAsEqualizer ( C, HomC, ForgetfulFunctor, IndexSet ) | ( function ) |
‣ EndByLifts ( C, HomC, ForgetfulFunctor, Objects ) | ( function ) |
‣ ReconstructTableOfMarks ( C, MinimalGeneratingSet, Decompose ) | ( function ) |
‣ HomSkeletalFinGSets ( S, T ) | ( function ) |
Returns: a finite set (see FinSetsForCAP
)
The finite set \mathrm{Hom}_{\mathrm{SkeletalFinGSets}}( S, T ).
‣ ForgetfulFunctorSkeletalFinGSets ( G ) | ( attribute ) |
Returns: a functor SkeletalFinGSets \rightarrow SkeletalFinSets
The forgetful functor SkeletalFinGSets \rightarrow SkeletalFinSets.
‣ 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.
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
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
generated by GAPDoc2HTML