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

2 The category of skeletal finite G-sets
 2.1 Skeletal GAP Categories
 2.2 Skeletal Attributes
 2.3 Skeletal Constructors
 2.4 Skeletal Examples

2 The category of skeletal finite G-sets

2.1 Skeletal GAP Categories

2.1-1 IsSkeletalFinGSetCategory
‣ IsSkeletalFinGSetCategory( object )( filter )

Returns: true or false

The GAP category of the category of skeletal finite G-sets.

2.1-2 IsSkeletalFinGSet
‣ IsSkeletalFinGSet( object )( filter )

Returns: true or false

The GAP category of objects in the category of skeletal finite G-sets.

2.1-3 IsSkeletalFinGSetMap
‣ IsSkeletalFinGSetMap( object )( filter )

Returns: true or false

The GAP category of morphisms in the category of skeletal finite G-sets.

2.2 Skeletal Attributes

2.2-1 AsList
‣ AsList( Omega )( attribute )

Returns: a GAP set

The GAP set of the list used to construct a finite G-set Omega, i.e., AsList( FinGSet( G, L ) ) = L.

2.2-2 UnderlyingGroup
‣ UnderlyingGroup( Omega )( attribute )

Returns: a group

The group G underlying the finite G-set Omega.

2.3 Skeletal Constructors

2.3-1 FinGSet
‣ FinGSet( G, L )( operation )

Returns: a CAP object

Construct a skeletal finite G-set out of the group G and a list L, i.e., an object in the CAP category SkeletalFinGSets.

gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> SetName( S3, "S3" );
gap> w1 := FinGSet( S3, [ 1, 2, 3, 1 ] );
<An object in SkeletalFin-S3-Sets>
gap> IsWellDefined( w1 );
true
gap> w2 := FinGSet( S3, [ 1, 2, 3, 1 ] );
<An object in SkeletalFin-S3-Sets>
gap> IsWellDefined( w2 );
true
gap> w1 = w2;
true
gap> S := FinGSet( S3, [ 1 ] );
<An object in SkeletalFin-S3-Sets>
gap> IsWellDefined( S );
false
gap> S := FinGSet( S3, [ "a", 0, 0, 0 ] );
<An object in SkeletalFin-S3-Sets>
gap> IsWellDefined( S );
false
gap> S := FinGSet( S3, [ -1, 0, 0, 0 ] );
<An object in SkeletalFin-S3-Sets>
gap> IsWellDefined( S );
false

2.3-2 MapOfFinGSets
‣ MapOfFinGSets( s, G, t )( operation )

Returns: a CAP morphism

Construct a map \phi \colons\tot of the skeletal finite G-sets s and t, i.e., a morphism in the CAP category SkeletalFinGSets, where G is a list of lists describing the graph of \phi.

gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> w1 := FinGSet( S3, [ 1, 2, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> w2 := FinGSet( S3, [ 0, 1, 0, 1 ] );
<An object in SkeletalFinGSets>
gap> imgs1 := [ [ [ 1, (2,3), 2 ] ],
>            [ [ 1, (), 4 ], [ 1, (), 2 ] ],
>            [],
>            [] ];;
gap> pi1 := MapOfFinGSets( w1, imgs1, w2 );
<A morphism in SkeletalFinGSets>
gap> imgs2 := [ [ [ 1, (), 2 ] ],
>            [ [ 1, (), 4 ], [ 1, (2,3), 2 ] ],
>            [],
>            [] ];;
gap> pi2 := MapOfFinGSets( w1, imgs2, w2 );
<A morphism in SkeletalFinGSets>
gap> pi1 = pi2;
true
gap> # BUT
> imgs1 = imgs2;
false
gap> M := FinGSet( S3, [ 2, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> N := FinGSet( SymmetricGroup( 3 ), [ 2, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (), 2 ], [ 1, (), 2 ] ],
>           [ [ 1, (), 2 ] ],
>           [],
>           [] ];;
gap> phi := MapOfFinGSets( M, imgs, N );
Error, The underlying groups of the source and the range are not the same
  with respect to IsIdenticalObj
gap> phi := MapOfFinGSets( M, [ 1 ], M );
Error, I has the wrong format
gap> phi := MapOfFinGSets( M, [ [ 1 ] ], M );
Error, images must be triples
gap> phi := MapOfFinGSets( M, [ [ [ 1, () ] ] ], M );
Error, images must be triples
gap> phi := MapOfFinGSets( M, [ [ [ 1, (), -1 ] ] ], M );
Error, last entry of an image must be an integer j with 1 <= j <= 4
gap> phi := MapOfFinGSets( M, [ [ [ 1, (), 5 ] ] ], M );
Error, last entry of an image must be an integer j with 1 <= j <= 4
gap> imgs := [ [ [ 1, (), 2 ], [ 1, (), 2 ] ], [ [ 1, (), 2 ] ], [] ];;
gap> phi := MapOfFinGSets( M, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
false
gap> imgs := [ [ [ 1, (), 2 ] ], [ [ 1, (), 2 ] ], [], [] ];;
gap> phi := MapOfFinGSets( M, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
false
gap> imgs := [ [ [ 0, (), 2 ], [ 1, (), 2 ] ], [ [ 1, (), 2 ] ], [], [] ];;
gap> phi := MapOfFinGSets( M, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
false
gap> imgs := [ [ [ 3, (), 2 ], [ 1, (), 2 ] ], [ [ 1, (), 2 ] ], [], [] ];;
gap> phi := MapOfFinGSets( M, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
false
gap> imgs := [ [ [ 1, (), 2 ], [ 1, (), 2 ] ], [ [ 1, "", 2 ] ], [], [] ];;
gap> phi := MapOfFinGSets( M, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
false
gap> imgs := [ [ [ 1, (), 2 ], [ 1, (), 2 ] ], [ [ 1, (), 3 ] ], [], [] ];;
gap> phi := MapOfFinGSets( M, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
false
gap> imgs := [ [ [ 1, (), 2 ], [ 1, (), 2 ] ],
>           [ [ 1, (1,2,3), 2 ] ],
>           [],
>           [] ];;
gap> phi := MapOfFinGSets( M, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
false

2.3-3 SkeletalFinGSets
‣ SkeletalFinGSets( G )( attribute )

Returns: a category

The argument is a group G. The output is the category of skeletal finite G-Sets.

2.4 Skeletal Examples

2.4-1 Skeletal IsEqualForObjects
gap> # Groups have to be the same with respect to IsIdenticalObj
> C6 := CyclicGroup( 6 );
<pc group of size 6 with 2 generators>
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> w1 := FinGSet( C6, [1, 2, 3, 1]);
<An object in SkeletalFinGSets>
gap> IsWellDefined( w1 );
true
gap> w2 := FinGSet( S3, [1, 2, 3, 1]);
<An object in SkeletalFinGSets>
gap> IsWellDefined( w2 );
true
gap> w1 = w2;
Error, the object "An object in SkeletalFinGSets" and the object "An o\
bject in SkeletalFinGSets" do not belong to the same CAP category

2.4-2 Skeletal PreCompose
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> S := FinGSet( S3, [ 1, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> R := FinGSet( S3, [ 1, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> T := FinGSet( S3, [ 1, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> psi1 := MapOfFinGSets( S, [ [ [ 1, (1,2), 1 ] ], [], [], [] ], R );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( psi1 );
true
gap> psi2 := MapOfFinGSets( R, [ [ [ 1, (1,2,3), 1 ] ] , [], [], [] ] , T );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( psi2 );
true
gap> PreCompose( psi1, psi2 );
<A morphism in SkeletalFinGSets>
gap> phi := PreCompose( psi1, psi2 );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
true
gap> Display( phi );
[ [ [ 1, (2,3), 1 ] ], [  ], [  ], [  ] ]
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> S := FinGSet( S3, [ 2, 2, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> R := FinGSet( S3, [ 2, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> T := FinGSet( S3,  [ 2, 1, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 2, (1,2), 1 ], [ 1, (1,2,3), 2 ] ],
>           [ [ 1, (), 2 ], [ 1, (2,3), 2 ] ],
>           [ ],
>           [ ] ];;
gap> psi1 := MapOfFinGSets( S, imgs, R );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( psi1 );
true
gap> imgs := [ [ [ 1, (1,3), 1 ], [ 1, (1,2,3), 3 ] ],
>           [ [ 1, (), 2 ] ],
>           [ ],
>           [ ] ];;
gap> psi2 := MapOfFinGSets( R, imgs, T );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( psi2 );
true
gap> pi := PreCompose( psi1, psi2 );
<A morphism in SkeletalFinGSets>
gap> Display( pi );
[ [ [ 1, (2,3), 3 ], [ 1, (1,2,3), 2 ] ],
  [ [ 1, (), 2 ], [ 1, (2,3), 2 ] ],
  [  ],
  [  ] ]
gap> G := SymmetricGroup( 0 );;
gap> m := FinGSet( G, [ 3 ] );
<An object in SkeletalFinGSets>
gap> n := FinGSet( G, [ 5 ] );
<An object in SkeletalFinGSets>
gap> p := FinGSet( G, [ 7 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 2, (), 1 ], [ 5, (), 1 ], [ 3, (), 1 ] ] ];;
gap> psi := MapOfFinGSets( m, imgs, n );
<A morphism in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (), 1 ],
>             [ 4, (), 1 ],
>             [ 6, (), 1 ],
>             [ 6, (), 1 ],
>             [ 3, (), 1 ] ] ];;
gap> phi := MapOfFinGSets( n, imgs, p );
<A morphism in SkeletalFinGSets>
gap> alpha := PreCompose( psi, phi );
<A morphism in SkeletalFinGSets>
gap> Display( alpha );
[ [ [ 4, (), 1 ], [ 3, (), 1 ], [ 6, (), 1 ] ] ]

2.4-3 Skeletal IdentityMorphism
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> M := FinGSet( S3, [ 1, 2, 1, 2 ] );
<An object in SkeletalFinGSets>
gap> iota := IdentityMorphism( M );
<An identity morphism in SkeletalFinGSets>
gap> IsWellDefined( iota );
true
gap> IsEpimorphism( iota );
true
gap> Display( iota );
[ [ [ 1, (), 1 ] ],
  [ [ 1, (), 2 ], [ 2, (), 2 ] ],
  [ [ 1, (), 3 ] ],
  [ [ 1, (), 4 ], [ 2, (), 4 ] ] ]

2.4-4 Skeletal Initial and Terminal Objects
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> S := FinGSet( S3, [ 2, 2, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> u := UniversalMorphismFromInitialObject( S );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( u );
true
gap> S := FinGSet( S3, [ 2, 2, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> u := UniversalMorphismIntoTerminalObject( S );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( u );
true
gap> G := SymmetricGroup( 0 );;
gap> m := FinGSet( G, [ 8 ] );
<An object in SkeletalFinGSets>
gap> i := InitialObject( CapCategory( m ) );
<An object in SkeletalFinGSets>
gap> iota := UniversalMorphismFromInitialObject( m );
<A morphism in SkeletalFinGSets>
gap> AsList( i );
[ 0 ]
gap> t := TerminalObject( CapCategory( m ) );
<An object in SkeletalFinGSets>
gap> AsList( t );
[ 1 ]
gap> pi := UniversalMorphismIntoTerminalObject( m );
<A morphism in SkeletalFinGSets>
gap> IsIdenticalObj( Range( pi ), t );
true
gap> pi_t := UniversalMorphismIntoTerminalObject( m );
<A morphism in SkeletalFinGSets>
gap> Display( pi_t );
[ [ [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ], 
      [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ] ] ]
gap> pi = pi_t;
true

2.4-5 Skeletal LiftAlongMonomorphism
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> M := FinGSet( S3, [ 1, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> N := FinGSet( S3, [ 2, 0, 2, 0 ] );
<An object in SkeletalFinGSets>
gap> O := FinGSet( S3, [ 2, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> tau := MapOfFinGSets( M, [ [ [ 1, (1,2), 1 ] ], [], [], [] ], N );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( tau );
true
gap> imgs := [ [ [ 2, (), 1 ], [ 1, (1,3,2), 1 ] ], [], [], [] ];;
gap> iota := MapOfFinGSets( O, imgs, N );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( iota );
true
gap> IsMonomorphism( iota );
true
gap> u := LiftAlongMonomorphism( iota, tau );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( u );
true
gap> tau = PreCompose( u, iota );
true

2.4-6 Skeletal ColiftAlongEpimorphism
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> M := FinGSet( S3, [ 2, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> N := FinGSet( S3, [ 1, 0, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> O := FinGSet( S3, [ 2, 0, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (1,2), 1 ], [ 1, (), 3 ] ], [], [], [] ];;
gap> tau := MapOfFinGSets( M, imgs, O );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( tau );
true
gap> imgs := [ [ [ 1, (1,2,3), 1 ], [ 1, (1,2), 3 ] ], [], [], [] ];;
gap> epsilon := MapOfFinGSets( M, imgs, N );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( epsilon );
true
gap> IsEpimorphism( epsilon );
true
gap> u := ColiftAlongEpimorphism( epsilon, tau );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( u );
true
gap> tau = PreCompose( epsilon, u );
true

2.4-7 Skeletal Product
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> A := FinGSet( S3, [ 0, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> B := FinGSet( S3, [ 0, 0, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> Display( DirectProduct( A, B ) );
[ SymmetricGroup( [ 1 .. 3 ] ), [ 1, 0, 0, 0 ] ]
gap> S4 := SymmetricGroup( 4 );
Sym( [ 1 .. 4 ] )
gap> A := FinGSet( S4, [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> B := FinGSet( S4, [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> Display( DirectProduct( A, B ) );
[ SymmetricGroup( [ 1 .. 4 ] ), [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ]
gap> pi := ProjectionInFactorOfDirectProduct( [ A, A ], 1 );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( pi );
true
gap> Display( pi );
[ [ [ 1, (), 3 ], [ 1, (), 3 ], [ 1, (), 3 ], [ 1, (), 3 ], 
      [ 1, (), 3 ] ], [  ], [ [ 1, (), 3 ], [ 1, (), 3 ] ], [  ], 
  [  ], [  ], [  ], [  ], [  ], [  ], [  ] ]
gap> S5 := SymmetricGroup( 5 );
Sym( [ 1 .. 5 ] )
gap> A := FinGSet( S5,
>               [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
>             );
<An object in SkeletalFinGSets>
gap> B := FinGSet( S5,
>               [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
>             );
<An object in SkeletalFinGSets>
gap> D := [ A, B ];
[ <An object in SkeletalFinGSets>, 
  <An object in SkeletalFinGSets> ]
gap> pi1 := ProjectionInFactorOfDirectProduct( D, 1 );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( pi1 );
true
gap> pi2 := ProjectionInFactorOfDirectProduct( D, 2 );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( pi2 );
true
gap> tau := [ pi1, pi2 ];
[ <A morphism in SkeletalFinGSets>, <A morphism in SkeletalFinGSets> ]
gap> u := UniversalMorphismIntoDirectProduct( D, tau );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( u );
true
gap> A := FinGSet( S3, [ 0, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> B := FinGSet( S3, [ 0, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> pi1 := ProjectionInFactorOfDirectProduct( [ A, B ], 1 );
<A morphism in SkeletalFinGSets>
gap> pi2 := ProjectionInFactorOfDirectProduct( [ A, B ], 2 );
<A morphism in SkeletalFinGSets>
gap> Display( pi1 );
[ [ [ 1, (), 2 ] ], [ [ 1, (), 2 ] ], [  ], [  ] ]
gap> Display( pi2 );
[ [ [ 1, (1,3), 2 ] ], [ [ 1, (), 2 ] ], [  ], [  ] ]
gap> M := FinGSet( S3, [ 1, 2, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> N := FinGSet( S3, [ 1, 0, 1, 2 ] );
<An object in SkeletalFinGSets>
gap> D := [ M, N ];
[ <An object in SkeletalFinGSets>, 
  <An object in SkeletalFinGSets> ]
gap> tau1 := ProjectionInFactorOfDirectProduct( D, 1 );
<A morphism in SkeletalFinGSets>
gap> tau2 := ProjectionInFactorOfDirectProduct( D, 2 );
<A morphism in SkeletalFinGSets>
gap> tau := [ tau1, tau2 ];
[ <A morphism in SkeletalFinGSets>, <A morphism in SkeletalFinGSets> ]
gap> u := UniversalMorphismIntoDirectProduct( D, tau );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( u );
true
gap> Display( u );
[ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 5, (), 1 ], [ 6, (), 1 ], [ 7, (), 1 ], [ 8, (), 1 ], 
      [ 9, (), 1 ], [ 10, (), 1 ], [ 11, (), 1 ], [ 12, (), 1 ], 
      [ 13, (), 1 ], [ 14, (), 1 ], [ 15, (), 1 ], [ 16, (), 1 ], 
      [ 17, (), 1 ], [ 18, (), 1 ] ], 
  [ [ 1, (), 2 ], [ 2, (), 2 ], [ 3, (), 2 ], [ 4, (), 2 ] ], [  ], 
  [  ] ]
gap> L := FinGSet( S3, [ 2, 1, 0, 1 ] );
<An object in SkeletalFinGSets>
gap> D := [ M, N, L ];
[ <An object in SkeletalFinGSets>,
  <An object in SkeletalFinGSets>, 
  <An object in SkeletalFinGSets> ]
gap> tau := ProjectionInFactorOfDirectProduct( D, 3 );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( tau );
true
gap> G := SymmetricGroup( 0 );;
gap> m := FinGSet( G, [ 7 ] );
<An object in SkeletalFinGSets>
gap> n := FinGSet( G, [ 3 ] );
<An object in SkeletalFinGSets>
gap> p := FinGSet( G, [ 4 ] );
<An object in SkeletalFinGSets>
gap> d := DirectProduct( [ m, n, p ] );
<An object in SkeletalFinGSets>
gap> AsList( d );
[ 84 ]
gap> pi1 := ProjectionInFactorOfDirectProduct( [ m, n, p ], 1 );
<A morphism in SkeletalFinGSets>
gap> Display( pi1 );
[ [ [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ], 
      [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ], 
      [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ], [ 1, (), 1 ], 
      [ 2, (), 1 ], [ 2, (), 1 ], [ 2, (), 1 ], [ 2, (), 1 ], 
      [ 2, (), 1 ], [ 2, (), 1 ], [ 2, (), 1 ], [ 2, (), 1 ], 
      [ 2, (), 1 ], [ 2, (), 1 ], [ 2, (), 1 ], [ 2, (), 1 ], 
      [ 3, (), 1 ], [ 3, (), 1 ], [ 3, (), 1 ], [ 3, (), 1 ], 
      [ 3, (), 1 ], [ 3, (), 1 ], [ 3, (), 1 ], [ 3, (), 1 ], 
      [ 3, (), 1 ], [ 3, (), 1 ], [ 3, (), 1 ], [ 3, (), 1 ], 
      [ 4, (), 1 ], [ 4, (), 1 ], [ 4, (), 1 ], [ 4, (), 1 ], 
      [ 4, (), 1 ], [ 4, (), 1 ], [ 4, (), 1 ], [ 4, (), 1 ], 
      [ 4, (), 1 ], [ 4, (), 1 ], [ 4, (), 1 ], [ 4, (), 1 ], 
      [ 5, (), 1 ], [ 5, (), 1 ], [ 5, (), 1 ], [ 5, (), 1 ], 
      [ 5, (), 1 ], [ 5, (), 1 ], [ 5, (), 1 ], [ 5, (), 1 ], 
      [ 5, (), 1 ], [ 5, (), 1 ], [ 5, (), 1 ], [ 5, (), 1 ], 
      [ 6, (), 1 ], [ 6, (), 1 ], [ 6, (), 1 ], [ 6, (), 1 ], 
      [ 6, (), 1 ], [ 6, (), 1 ], [ 6, (), 1 ], [ 6, (), 1 ], 
      [ 6, (), 1 ], [ 6, (), 1 ], [ 6, (), 1 ], [ 6, (), 1 ], 
      [ 7, (), 1 ], [ 7, (), 1 ], [ 7, (), 1 ], [ 7, (), 1 ], 
      [ 7, (), 1 ], [ 7, (), 1 ], [ 7, (), 1 ], [ 7, (), 1 ], 
      [ 7, (), 1 ], [ 7, (), 1 ], [ 7, (), 1 ], [ 7, (), 1 ] ] ]
gap> pi3 := ProjectionInFactorOfDirectProduct( [ m, n, p ], 3 );
<A morphism in SkeletalFinGSets>
gap> Display( pi3 );
[ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ], 
      [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ] ] ]

2.4-8 Skeletal Coproduct
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> M1 := FinGSet( S3, [ 2, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> M2 := FinGSet( S3, [ 1, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> M3 := FinGSet( S3, [ 2, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> M4 := FinGSet( S3, [ 2, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> C := Coproduct( [ M1, M2, M3, M4 ] );
<An object in SkeletalFinGSets>
gap> tau1 := InjectionOfCofactorOfCoproduct( [ M1, M2, M3, M4 ], 1 );
<A morphism in SkeletalFinGSets>
gap> tau2 := InjectionOfCofactorOfCoproduct( [ M1, M2, M3, M4 ], 2 );
<A morphism in SkeletalFinGSets>
gap> tau3 := InjectionOfCofactorOfCoproduct( [ M1, M2, M3, M4 ], 3 );
<A morphism in SkeletalFinGSets>
gap> tau4 := InjectionOfCofactorOfCoproduct( [ M1, M2, M3, M4 ], 4 );
<A morphism in SkeletalFinGSets>
gap> tau := [ tau1, tau2, tau3, tau4 ];;
gap> D := [ M1, M2, M3, M4 ];;
gap> id_to_be := UniversalMorphismFromCoproduct( D, tau );
<A morphism in SkeletalFinGSets>
gap> id := IdentityMorphism( C );
<An identity morphism in SkeletalFinGSets>
gap> id_to_be = id;
true
gap> T := TerminalObject( CapCategory( M1 ) );
<An object in SkeletalFinGSets>
gap> pi1 := UniversalMorphismIntoTerminalObject( M1 );
<A morphism in SkeletalFinGSets>
gap> pi2 := UniversalMorphismIntoTerminalObject( M2 );
<A morphism in SkeletalFinGSets>
gap> pi3 := UniversalMorphismIntoTerminalObject( M3 );
<A morphism in SkeletalFinGSets>
gap> pi4 := UniversalMorphismIntoTerminalObject( M4 );
<A morphism in SkeletalFinGSets>
gap> pi := [ pi1, pi2, pi3, pi4 ];;
gap> psi := UniversalMorphismFromCoproduct( D, pi );
<A morphism in SkeletalFinGSets>
gap> psi = UniversalMorphismIntoTerminalObject( C );
true
gap> IsEpimorphism( psi );
true
gap> G := SymmetricGroup( 0 );;
gap> m := FinGSet( G, [ 7 ] );
<An object in SkeletalFinGSets>
gap> n := FinGSet( G, [ 3 ] );
<An object in SkeletalFinGSets>
gap> p := FinGSet( G, [ 4 ] );
<An object in SkeletalFinGSets>
gap> c := Coproduct( m, n, p );
<An object in SkeletalFinGSets>
gap> AsList( c );
[ 14 ]
gap> iota1 := InjectionOfCofactorOfCoproduct( [ m, n, p ], 1 );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( iota1 );
true
gap> Display( iota1 );
[ [ [ 1, (), 1 ],
    [ 2, (), 1 ],
    [ 3, (), 1 ],
    [ 4, (), 1 ],
    [ 5, (), 1 ],
    [ 6, (), 1 ],
    [ 7, (), 1 ] ] ]
gap> iota3 := InjectionOfCofactorOfCoproduct( [ m, n, p ], 3 );
<A morphism in SkeletalFinGSets>
gap> Display( iota3 );
[ [ [ 11, (), 1 ], [ 12, (), 1 ], [ 13, (), 1 ], [ 14, (), 1 ] ] ]

2.4-9 Skeletal Image
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> M := FinGSet( S3, [ 2, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (), 2 ], [ 1, (), 2 ] ], [ [ 1, (), 2 ] ], [], [] ];;
gap> phi := MapOfFinGSets( M, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
true
gap> IsEpimorphism( phi );
false
gap> I := ImageObject( phi );
<An object in SkeletalFinGSets>
gap> iota := ImageEmbedding( phi );
<A monomorphism in SkeletalFinGSets>
gap> phi_res := CoastrictionToImage( phi );
<A morphism in SkeletalFinGSets>
gap> phi = PreCompose( phi_res, iota );
true
gap> T := FinGSet( S3, [ 1, 1, 0, 0 ] );;
gap> imgs := [ [ [ 1, (), 2 ], [ 1, (), 2 ] ], [ [ 1, (), 2 ] ], [], [] ];;
gap> tau1 := MapOfFinGSets( M, imgs, T );;
gap> imgs := [ [ [ 1, (), 1 ] ], [ [ 1, (), 2 ] ], [], [] ];;
gap> tau2 := MapOfFinGSets( T, imgs, M );;
gap> IsMonomorphism( tau2 );
true
gap> phi = PreCompose( tau1, tau2 );
true
gap> u := UniversalMorphismFromImage( phi, [ tau1, tau2 ] );
<A morphism in SkeletalFinGSets>
gap> tau1 = PreCompose( phi_res, u );
true
gap> iota = PreCompose( u, tau2 );
true
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> M := FinGSet( S3, [ 2, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 2, (), 1 ], [ 1, (), 1 ] ], [ [ 1, (), 2 ] ], [], [] ];;
gap> phi := MapOfFinGSets( M, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
true
gap> IsEpimorphism( phi );
true
gap> I := ImageObject( phi );
<An object in SkeletalFinGSets>
gap> psi := ImageEmbedding( phi );
<A monomorphism in SkeletalFinGSets>
gap> phi_res := CoastrictionToImage( phi );
<A morphism in SkeletalFinGSets>
gap> phi = PreCompose( phi_res, psi );
true
gap> G := SymmetricGroup( 0 );;
gap> m := FinGSet( G, [ 7 ] );
<An object in SkeletalFinGSets>
gap> n := FinGSet( G, [ 3 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 7, (), 1 ], [ 5, (), 1 ], [ 5, (), 1 ] ] ];;
gap> phi := MapOfFinGSets( n, imgs, m );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( phi );
true
gap> ImageObject( phi );
<An object in SkeletalFinGSets>
gap> AsList( ImageObject( phi ) );
[ 2 ]
gap> pi := ImageEmbedding( phi );
<A monomorphism in SkeletalFinGSets>
gap> Display( pi );
[ [ [ 5, (), 1 ], [ 7, (), 1 ] ] ]
gap> phi_res := CoastrictionToImage( phi );
<A morphism in SkeletalFinGSets>
gap> phi = PreCompose( phi_res, pi );
true

2.4-10 Skeletal Equalizer
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> s := FinGSet( S3, [ 1, 0, 2, 0 ] );
<An object in SkeletalFinGSets>
gap> r := FinGSet( S3, [ 1, 2, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (1,2), 1 ] ],
>           [],
>           [ [ 1, (), 3 ], [ 1, (1,2,3), 3 ] ],
>           [] ];;
gap> psi1 := MapOfFinGSets( s, imgs, r );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( psi1 );
true
gap> imgs := [ [[ 1, (1,2), 3 ]], [], [[ 1, (), 3 ], [ 1, (), 3 ]], [] ];;
gap> psi2 := MapOfFinGSets( s, imgs, r );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( psi2 );
true
gap> D := [ psi1, psi2 ];;
gap> Eq := Equalizer( D );
<An object in SkeletalFinGSets>
gap> AsList( Eq );
[ 0, 0, 2, 0 ]
gap> psi := EmbeddingOfEqualizer( D );
<A monomorphism in SkeletalFinGSets>
gap> IsWellDefined( psi );
true
gap> Display( psi );
[ [  ], [  ], [ [ 1, (), 3 ], [ 2, (), 3 ] ], [  ] ]
gap> PreCompose( psi, psi1 ) = PreCompose( psi, psi2 );
true
gap> t := FinGSet( S3, [ 1, 0, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 2, (1,2), 3 ] ], [], [ [ 1, (1,2,3), 3 ] ], [] ];;
gap> tau := MapOfFinGSets( t, imgs , s );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( tau );
true
gap> phi := UniversalMorphismIntoEqualizer( D, tau );
<A morphism in SkeletalFinGSets>
gap> Display( phi );
[ [ [ 2, (1,2), 3 ] ], [  ], [ [ 1, (1,2,3), 3 ] ], [  ] ]
gap> IsWellDefined( phi );
true
gap> PreCompose( phi, psi ) = tau;
true
gap> G := SymmetricGroup( 0 );;
gap> S := FinGSet( G, [ 5 ] );
<An object in SkeletalFinGSets>
gap> T := FinGSet( G, [ 3 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 3, (), 1 ],
>             [ 3, (), 1 ],
>             [ 1, (), 1 ],
>             [ 2, (), 1 ],
>             [ 2, (), 1 ] ] ];;
gap> f1 := MapOfFinGSets( S, imgs, T );
<A morphism in SkeletalFinGSets>
gap> imgs := [ [ [ 3, (), 1 ],
>             [ 2, (), 1 ],
>             [ 3, (), 1 ],
>             [ 1, (), 1 ],
>             [ 2, (), 1 ] ] ];;
gap> f2 := MapOfFinGSets( S, imgs, T );
<A morphism in SkeletalFinGSets>
gap> imgs := [ [ [ 3, (), 1 ],
>             [ 1, (), 1 ],
>             [ 2, (), 1 ],
>             [ 1, (), 1 ],
>             [ 2, (), 1 ] ] ];;
gap> f3 := MapOfFinGSets( S, imgs, T );
<A morphism in SkeletalFinGSets>
gap> D := [ f1, f2, f3 ];;
gap> Eq := Equalizer( D );
<An object in SkeletalFinGSets>
gap> AsList( Eq );
[ 2 ]
gap> psi := EmbeddingOfEqualizer( D );
<A monomorphism in SkeletalFinGSets>
gap> Display( psi );
[ [ [ 1, (), 1 ], [ 5, (), 1 ] ] ]
gap> PreCompose( psi, f1 ) = PreCompose( psi, f2 );
true
gap> PreCompose( psi, f1 ) = PreCompose( psi, f3 );
true
gap> D := [ f2, f3 ];
[ <A morphism in SkeletalFinGSets>, <A morphism in SkeletalFinGSets> ]
gap> Eq := Equalizer( D );
<An object in SkeletalFinGSets>
gap> AsList( Eq );
[ 3 ]
gap> psi := EmbeddingOfEqualizer( D );
<A monomorphism in SkeletalFinGSets>
gap> Display( psi );
[ [ [ 1, (), 1 ], [ 4, (), 1 ], [ 5, (), 1 ] ] ]

2.4-11 Skeletal Pullback
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> A := FinGSet( S3, [ 1, 0, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> B := FinGSet( S3, [ 2, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> C := FinGSet( S3, [ 2, 1, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 2, (), 1 ] ], [], [ [ 1, (), 3 ] ], [] ];;
gap> tau1 := MapOfFinGSets( A, imgs, C );
<A morphism in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (), 1 ], [ 2, (), 1 ] ], [ [ 1, (), 2 ] ], [], [] ];;
gap> tau2 := MapOfFinGSets( B, imgs, C );
<A morphism in SkeletalFinGSets>
gap> D := [ tau1, tau2 ];
[ <A morphism in SkeletalFinGSets>, 
 <A morphism in SkeletalFinGSets> ]
gap> F := FiberProduct( D );
<An object in SkeletalFinGSets>
gap> Display( F );
[ SymmetricGroup( [ 1 .. 3 ] ), [ 1, 0, 0, 0 ] ]
gap> pi1 := ProjectionInFactorOfFiberProduct( D, 1 );
<A morphism in SkeletalFinGSets>
gap> Display( pi1 );
[ [ [ 1, (), 1 ] ], [  ], [  ], [  ] ]
gap> pi2 := ProjectionInFactorOfFiberProduct( D, 2 );
<A morphism in SkeletalFinGSets>
gap> Display( pi2 );
[ [ [ 2, (), 1 ] ], [  ], [  ], [  ] ]
gap> G := SymmetricGroup( 0 );;
gap> m := FinGSet( G, [ 5 ] );
<An object in SkeletalFinGSets>
gap> n1 := FinGSet( G, [ 3 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ] ] ];;
gap> iota1 := MapOfFinGSets( n1, imgs, m );
<A morphism in SkeletalFinGSets>
gap> IsMonomorphism( iota1 );
true
gap> n2 := FinGSet( G, [ 4 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 4, (), 1 ] ] ];;
gap> iota2 := MapOfFinGSets( n2, imgs, m );
<A morphism in SkeletalFinGSets>
gap> IsMonomorphism( iota2 );
true
gap> D := [ iota1, iota2 ];
[ <A monomorphism in SkeletalFinGSets>, <A monomorphism in SkeletalFinGSets> ]
gap> Fib := FiberProduct( D );
<An object in SkeletalFinGSets>
gap> AsList( Fib );
[ 3 ]
gap> pi1 := ProjectionInFactorOfFiberProduct( D, 1 );
<A monomorphism in SkeletalFinGSets>
gap> Display( pi1 );
[ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ] ] ]
gap> int1 := ImageObject( pi1 );
<An object in SkeletalFinGSets>
gap> AsList( int1 );
[ 3 ]
gap> pi2 := ProjectionInFactorOfFiberProduct( D, 2 );
<A monomorphism in SkeletalFinGSets>
gap> Display( pi2 );
[ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ] ] ]
gap> int2 := ImageObject( pi2 );
<An object in SkeletalFinGSets>
gap> AsList( int2 );
[ 3 ]
gap> omega1 := PreCompose( pi1, iota1 );
<A monomorphism in SkeletalFinGSets>
gap> omega2 := PreCompose( pi2, iota2 );
<A monomorphism in SkeletalFinGSets>
gap> omega1 = omega2;
true
gap> Display( omega1 );
[ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ] ] ]

2.4-12 Skeletal Coequalizer
gap> S5 := SymmetricGroup( 5 );
Sym( [ 1 .. 5 ] )
gap> g_1_1 := ();;
gap> g_1_2 := (1,2);;
gap> g_1_3 := (1,3);;
gap> g_1_4 := (1,4);;
gap> g_2_1 := ();;
gap> g_2_2 := (1,2);;
gap> g_2_3 := ();;
gap> g_2_4 := (1,2);;
gap> g_3_1 := ();;
gap> g_3_2 := (1,2);;
gap> g_3_3 := (1,3);;
gap> g_3_4 := (1,3);;
gap> A := FinGSet( S5,
>               [ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
>             );
<An object in SkeletalFinGSets>
gap> B := FinGSet( S5,
>               [ 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
>             );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, g_1_1, 2 ],
>             [ 1, g_1_3, 2 ],
>             [ 2, g_2_1, 2 ],
>             [ 2, g_2_3, 2 ],
>             [ 3, g_3_1, 2 ],
>             [ 3, g_3_3, 2 ] ],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [], [], [] ];;
gap> f_1 := MapOfFinGSets(A, imgs, B);
<A morphism in SkeletalFinGSets>
gap> imgs := [ [ [ 1, g_1_2, 4 ],
>             [ 1, g_1_4, 4 ],
>             [ 2, g_2_2, 4 ],
>             [ 2, g_2_4, 4 ],
>             [ 3, g_3_2, 4 ],
>             [ 3, g_3_4, 4 ] ],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [], [], [] ];;
gap> f_2 := MapOfFinGSets(A, imgs, B);
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( f_1 );
true
gap> IsWellDefined( f_2 );
true
gap> D := [ f_1, f_2 ];;
gap> Cq := Coequalizer( D );
<An object in SkeletalFinGSets>
gap> AsList( Cq );
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1 ]
gap> pi := ProjectionOntoCoequalizer( D );
<An epimorphism in SkeletalFinGSets>
gap> IsWellDefined( pi );
true
gap> id_to_be := UniversalMorphismFromCoequalizer( D, pi );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( id_to_be );
true
gap> id := IdentityMorphism( Cq );
<An identity morphism in SkeletalFinGSets>
gap> id = id_to_be;
true
gap> A := FinGSet( S5,
>               [ 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
>             );
<An object in SkeletalFinGSets>
gap> B := FinGSet( S5,
>               [ 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
>             );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, g_1_1, 2 ],
>             [ 1, g_1_3, 2 ],
>             [ 2, g_2_1, 2 ],
>             [ 2, g_2_3, 2 ],
>             [ 3, g_3_1, 2 ],
>             [ 3, g_3_3, 2 ] ],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [], [], [] ];;
gap> f_1 := MapOfFinGSets(A, imgs, B);
<A morphism in SkeletalFinGSets>
gap> imgs := [ [ [ 1, g_1_2, 4 ],
>             [ 1, g_1_4, 4 ],
>             [ 2, g_2_2, 4 ],
>             [ 2, g_2_4, 4 ],
>             [ 3, g_3_2, 4 ],
>             [ 3, g_3_4, 4 ] ],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [], [], [] ];;
gap> f_2 := MapOfFinGSets(A, imgs, B);
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( f_1 );
true
gap> IsWellDefined( f_2 );
true
gap> D := [ f_1, f_2 ];;
gap> Cq := Coequalizer( D );
<An object in SkeletalFinGSets>
gap> AsList( Cq );
[ 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1 ]
gap> pi := ProjectionOntoCoequalizer( D );
<An epimorphism in SkeletalFinGSets>
gap> IsWellDefined( pi );
true
gap> id_to_be := UniversalMorphismFromCoequalizer( D, pi );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( id_to_be );
true
gap> id := IdentityMorphism( Cq );
<An identity morphism in SkeletalFinGSets>
gap> id = id_to_be;
true
gap> A := FinGSet( S5,
>               [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
>             );
<An object in SkeletalFinGSets>
gap> B := FinGSet( S5,
>               [ 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
>             );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (), 3 ] ],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [], [], [] ];;
gap> f_1 := MapOfFinGSets(A, imgs, B);
<A morphism in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (1,2,3), 4] ],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [],
>           [], [], [], [], [], [] ];;
gap> f_2 := MapOfFinGSets(A, imgs, B);
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( f_1 );
true
gap> IsWellDefined( f_2 );
true
gap> D := [ f_1, f_2 ];;
gap> Cq := Coequalizer( D );
<An object in SkeletalFinGSets>
gap> AsList( Cq );
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ]
gap> pi := ProjectionOntoCoequalizer( D );
<An epimorphism in SkeletalFinGSets>
gap> IsWellDefined( pi );
true
gap> G := SymmetricGroup( 0 );;
gap> s := FinGSet( G, [ 5 ] );
<An object in SkeletalFinGSets>
gap> t := FinGSet( G, [ 4 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 3, (), 1 ],
>             [ 4, (), 1 ],
>             [ 4, (), 1 ],
>             [ 2, (), 1 ],
>             [ 4, (), 1 ] ] ];;
gap> f := MapOfFinGSets( s, imgs, t );
<A morphism in SkeletalFinGSets>
gap> imgs := [ [ [ 3, (), 1 ],
>             [ 3, (), 1 ],
>             [ 4, (), 1 ],
>             [ 2, (), 1 ],
>             [ 4, (), 1 ] ] ];;
gap> g := MapOfFinGSets( s, imgs, t );
<A morphism in SkeletalFinGSets>
gap> D := [ f, g ];
[ <A morphism in SkeletalFinGSets>, <A morphism in SkeletalFinGSets> ]
gap> C := Coequalizer( D );
<An object in SkeletalFinGSets>
gap> AsList( C );
[ 3 ]
gap> pi := ProjectionOntoCoequalizer( D );
<An epimorphism in SkeletalFinGSets>
gap> Display( pi );
[ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ], [ 3, (), 1 ] ] ]
gap> imgs := [ [ [ 2, (), 1 ], [ 1, (), 1 ], [ 2, (), 1 ], [ 2, (), 1 ] ] ];;
gap> tau := MapOfFinGSets( t, imgs, FinGSet( G, [ 2 ] ) );
<A morphism in SkeletalFinGSets>
gap> phi := UniversalMorphismFromCoequalizer( D, tau );
<A morphism in SkeletalFinGSets>
gap> Display( phi );
[ [ [ 2, (), 1 ], [ 1, (), 1 ], [ 2, (), 1 ] ] ]
gap> PreCompose( pi, phi ) = tau;
true
gap> G := SymmetricGroup( 0 );;
gap> A := FinGSet( G, [ 2 ] );
<An object in SkeletalFinGSets>
gap> B := FinGSet( G, [ 3 ] );
<An object in SkeletalFinGSets>
gap> f := MapOfFinGSets( A, [ [ [ 1, (), 1 ], [ 2, (), 1 ] ] ], B );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( f );
true
gap> g := MapOfFinGSets( A, [ [ [ 2, (), 1 ], [ 3, (), 1 ] ] ], B );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( g );
true
gap> D := [ f, g ];;
gap> Cq := Coequalizer( D );;
gap> Display( Cq );
[ Group( () ), [ 1 ] ]
gap> pi := ProjectionOntoCoequalizer( D );;
gap> IsWellDefined( pi );
true
gap> PreCompose( f, pi ) = PreCompose( g, pi );
true
gap> G := SymmetricGroup( 3 );;
gap> A := FinGSet( G, [ 0, 0, 0, 0 ] );;
gap> id := IdentityMorphism( A );
<An identity morphism in SkeletalFinGSets>
gap> D := [ id, id ];;
gap> Cq := Coequalizer( D );;
gap> Display( Cq );
[ SymmetricGroup( [ 1 .. 3 ] ), [ 0, 0, 0, 0 ] ]
gap> pi := ProjectionOntoCoequalizer( D );;
gap> IsWellDefined( pi );
true
gap> pi = id;
true
gap> G := SymmetricGroup( 3 );;
gap> A := FinGSet( G, [ 0, 0, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> B := FinGSet( G, [ 1, 1, 1, 1 ] );
<An object in SkeletalFinGSets>
gap> f := MapOfFinGSets( A, [ [ ], [ ], [ ], [ ] ], B );
<A morphism in SkeletalFinGSets>
gap> IsWellDefined( f );
true
gap> D := [ f, f ];;
gap> Cq := Coequalizer( D );;
gap> Display( Cq );
[ SymmetricGroup( [ 1 .. 3 ] ), [ 1, 1, 1, 1 ] ]
gap> pi := ProjectionOntoCoequalizer( D );;
gap> pi = IdentityMorphism( B );
true

2.4-13 Skeletal Pushout
gap> S3 := SymmetricGroup( 3 );
Sym( [ 1 .. 3 ] )
gap> A := FinGSet( S3, [ 1, 0, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> B := FinGSet( S3, [ 2, 1, 0, 0 ] );
<An object in SkeletalFinGSets>
gap> C := FinGSet( S3, [ 3, 1, 1, 0 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 3, (), 1 ] ], [], [ [ 1, (), 3 ] ], [] ];;
gap> tau1 := MapOfFinGSets( A, imgs, C );
<A morphism in SkeletalFinGSets>
gap> imgs := [ [ [ 2, (), 1 ], [ 3, (), 1 ] ], [ [ 1, (), 2 ] ], [], [] ];;
gap> tau2 := MapOfFinGSets( B, imgs, C );
<A morphism in SkeletalFinGSets>
gap> D := [ tau1, tau2 ];
[ <A morphism in SkeletalFinGSets>, 
 <A morphism in SkeletalFinGSets> ]
gap> F := FiberProduct( D );
<An object in SkeletalFinGSets>
gap> pi1 := ProjectionInFactorOfFiberProduct( D, 1 );
<A morphism in SkeletalFinGSets>
gap> pi2 := ProjectionInFactorOfFiberProduct( D, 2 );
<A morphism in SkeletalFinGSets>
gap> iota := UniversalMorphismFromPushout( [ pi1, pi2 ], [ tau1, tau2 ] );
<A morphism in SkeletalFinGSets>
gap> Display( iota );
[ [ [ 3, (), 1 ], [ 2, (), 1 ] ], [ [ 1, (), 2 ] ], [ [ 1, (), 3 ] ], [  ] ]
gap> G := SymmetricGroup( 0 );;
gap> M := FinGSet( G, [ 5 ] );
<An object in SkeletalFinGSets>
gap> N1 := FinGSet( G, [ 3 ] );
<An object in SkeletalFinGSets>
gap> imgs := [ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ] ] ];;
gap> iota1 := MapOfFinGSets( N1, imgs, M );
<A morphism in SkeletalFinGSets>
gap> IsMonomorphism( iota1 );
true
gap> N2 := FinGSet( G, [ 2 ] );
<An object in SkeletalFinGSets>
gap> iota2 := MapOfFinGSets( N2, [ [ [ 1, (), 1 ], [ 2, (), 1 ] ] ], M );
<A morphism in SkeletalFinGSets>
gap> IsMonomorphism( iota2 );
true
gap> D := [ iota1, iota2 ];
[ <A monomorphism in SkeletalFinGSets>, <A monomorphism in SkeletalFinGSets> ]
gap> Fib := FiberProduct( D );
<An object in SkeletalFinGSets>
gap> AsList( Fib );
[ 2 ]
gap> pi1 := ProjectionInFactorOfFiberProduct( D, 1 );
<A monomorphism in SkeletalFinGSets>
gap> Display( pi1 );
[ [ [ 1, (), 1 ], [ 2, (), 1 ] ] ]
gap> pi2 := ProjectionInFactorOfFiberProduct( D, 2 );
<A monomorphism in SkeletalFinGSets>
gap> Display( pi2 );
[ [ [ 1, (), 1 ], [ 2, (), 1 ] ] ]
gap> D := [ pi1, pi2 ];
[ <A monomorphism in SkeletalFinGSets>, <A monomorphism in SkeletalFinGSets> ]
gap> UU := Pushout( D );
<An object in SkeletalFinGSets>
gap> AsList( UU );
[ 3 ]
gap> kappa1 := InjectionOfCofactorOfPushout( D, 1 );
<A morphism in SkeletalFinGSets>
gap> Display( kappa1 );
[ [ [ 1, (), 1 ], [ 2, (), 1 ], [ 3, (), 1 ] ] ]
gap> kappa2 := InjectionOfCofactorOfPushout( D, 2 );
<A morphism in SkeletalFinGSets>
gap> Display( kappa2 );
[ [ [ 1, (), 1 ], [ 2, (), 1 ] ] ]
gap> PreCompose( pi1, kappa1 ) = PreCompose( pi2, kappa2 );
true
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 Ind

generated by GAPDoc2HTML