Construct the category of bouquets.
In the following we construct the category of finite bouquets (or finite multisets or finite maps):
gap> FinBouquets;
CategoryOfBouquetsEnrichedOver( SkeletalFinSets )
gap> C := UnderlyingCategory( FinBouquets );
FreeCategory( RightQuiver( "q(V,L)[b:V->L]" ) )
gap> V := FinBouquets.V;
<A projective object in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> Display( V );
( { 0 }, { } )
gap> L := FinBouquets.L;
<A projective object in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> Display( L );
( { 0 }, { 0 ↦ 0 } )
gap> b := FinBouquets.b;
<A monomorphism in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> Display( b );
Image of <(V)>:
{ 0 } ⱶ[ 0 ]→ { 0 }
Image of <(L)>:
∅ ⱶ[ ]→ { 0 }
A morphism in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )
given by the above data
gap> T := TerminalObject( FinBouquets );
<An object in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> Display( T );
( { 0 }, { 0 ↦ 0 } )
gap> T = L;
true
gap> M := CreateBouquet( 3, [ 1, 1, 1, 2 ] );
<An object in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> Display( M );
( { 0, 1, 2 }, { 0 ↦ 1, 1 ↦ 1, 2 ↦ 1, 3 ↦ 2 } )
gap> N := Colimit( [ V, V, V, L, L, L, L ],
> [ [ 1, b, 3 ],
> [ 1, b, 4 ],
> [ 1, b, 5 ],
> [ 2, b, 6 ] ] );
<An object in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> N = M;
true
gap> LL := Coproduct( L, L );
<An object in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> L2 := CreateBouquet( 1, [ 0, 0 ] );
<An object in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> epsilon := CreateBouquetMorphism( LL, [ 0, 0 ], [ 0, 1 ], L2 );
<A morphism in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> IsWellDefined( epsilon );
true
gap> IsEpimorphism( epsilon );
true
gap> IsSplitEpimorphism( epsilon );
false
gap> omega := SubobjectClassifier( FinBouquets );
<An object in CategoryOfBouquetsEnrichedOver( SkeletalFinSets )>
gap> Display( omega );
( { 0, 1 }, { 0 ↦ 0, 1 ↦ 1, 2 ↦ 1 } )