Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

4 SkeletalFinSets
 4.1 Attributes
 4.2 Constructors
 4.3 GAP categories
 4.4 Skeletal Examples

4 SkeletalFinSets

4.1 Attributes

4.1-1 Length
‣ Length( M )( attribute )

Returns: an integer

The integer defining the skeletal finite set M, i.e., Length( FinSet( n ) ) = n.

4.1-2 AsList
‣ AsList( M )( attribute )

Returns: a list

The list associated to a skeletal finite set, i.e., AsList( FinSet( n ) ) = [ 0 .. n - 1 ].

4.1-3 AsList
‣ AsList( phi )( attribute )

Returns: a lazy array

The lazy array of images between skeletal finite sets.

4.2 Constructors

4.2-1 SkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
‣ SkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory( arg )( function )

Returns: a CAP category

Construct a category of skeletal finite sets as the finite coproduct cocompletion of the terminal category.

4.2-2 SkeletalFinSetsAsFreeElementaryToposOfInitialCategory
‣ SkeletalFinSetsAsFreeElementaryToposOfInitialCategory( global variable )

The default instance of the category of skeletal finite sets. It is automatically created while loading this package.

4.3 GAP categories

4.3-1 IsSkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
‣ IsSkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory( arg )( filter )

Returns: true or false

The GAP category of a finite coproduct cocompletion category.

4.3-2 IsCellInSkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
‣ IsCellInSkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory( arg )( filter )

Returns: true or false

The GAP category of cells in the category of skeletal finsets.

4.3-3 IsObjectInSkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
‣ IsObjectInSkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory( arg )( filter )

Returns: true or false

The GAP category of objects in the category of skeletal finsets.

4.3-4 IsMorphismInSkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
‣ IsMorphismInSkeletalCategoryOfFiniteSetsAsFiniteStrictCoproductCompletionOfTerminalCategory( arg )( filter )

Returns: true or false

The GAP category of morphisms in the category of skeletal finsets.

4.4 Skeletal Examples

4.4-1 Skeletal WellDefined
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> Display( sFinSets );
A CAP category with name
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory:

35 primitive operations were used to derive 165 operations for this category
which algorithmically
* IsCategoryWithDecidableColifts
* IsCategoryWithDecidableLifts
* IsEquippedWithHomomorphismStructure
* IsFiniteCompleteCategory
* IsDistributiveCategory
and furthermore mathematically
* IsStrictCartesianCategory
* IsStrictCocartesianCategory
gap> s := ObjectConstructor( sFinSets, 7 );
|7|
gap> ObjectDatum( s );
7
gap> t := ObjectConstructor( sFinSets, 4 );
|4|
gap> ObjectDatum( t );
4
gap> psi := MorphismConstructor( s, [ 0, 2, 1, 2, 1, 3 ], t );
|7| → |4|
gap> IsWellDefined( psi );
false
gap> psi := MorphismConstructor( s, [ 0, 2, 1, 2, 1, 3, -2 ], t );
|7| → |4|
gap> IsWellDefined( psi );
false
gap> psi := MorphismConstructor( s, [ 1, 2, 1, 4, 2, 1, 3 ], t );
|7| → |4|
gap> IsWellDefined( psi );
false
gap> psi:= MorphismConstructor( s, [ 0, 2, 1, 3, 2, 1, 3 ], t );
|7| → |4|
gap> IsWellDefined( psi );
true
gap> Display( psi );
{ 0,..., 6 } ⱶ[ 0, 2, 1, 3, 2, 1, 3 ]→ { 0,..., 3 }
gap> MorphismDatum( psi );
[ 0, 2, 1, 3, 2, 1, 3 ]

4.4-2 Skeletal PreCompose
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> m := ObjectConstructor( sFinSets, 3 );
|3|
gap> n := ObjectConstructor( sFinSets, 5 );
|5|
gap> p := ObjectConstructor( sFinSets, 7 );
|7|
gap> psi := MorphismConstructor( m, [ 1, 4, 2 ], n );
|3| → |5|
gap> phi := MorphismConstructor( n, [ 0, 3, 5, 5, 2 ], p );
|5| → |7|
gap> alpha := PreCompose( psi, phi );
|3| → |7|
gap> Display( alpha );
{ 0, 1, 2 } ⱶ[ 3, 2, 5 ]→ { 0,..., 6 }

4.4-3 Skeletal Lift
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> m := ObjectConstructor( sFinSets, 3 );
|3|
gap> n := ObjectConstructor( sFinSets, 4 );
|4|
gap> f := MorphismConstructor( m, [ 1, 1, 0 ], m );
|3| → |3|
gap> g := MorphismConstructor( n, [ 2, 1, 0, 1 ], m );
|4| → |3|
gap> IsLiftable( f, g );
true
gap> chi := Lift( f, g );
|3| → |4|
gap> Display( chi );
{ 0, 1, 2 } ⱶ[ 1, 1, 2 ]→ { 0,..., 3 }
gap> PreCompose( Lift( f, g ), g ) = f;
true
gap> IsLiftable( g, f );
false
gap> k := ObjectConstructor( sFinSets, 100000 );
|100000|
gap> h := ListWithIdenticalEntries( Length( k ) - 3, 2 );;
gap> h := Concatenation( h, [ 1, 0, 1 ] );;
gap> h := MorphismConstructor( k, h, m );
|100000| → |3|
gap> IsLiftable( f, h );
true
gap> IsLiftable( h, f );
false

4.4-4 Morphisms of external Hom
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> L := ObjectConstructor( sFinSets, 0 );
|0|
gap> M := ObjectConstructor( sFinSets, 2 );
|2|
gap> N := ObjectConstructor( sFinSets, 3 );
|3|
gap> Display( MorphismsOfExternalHom( L, L ) );
[ ∅ ⱶ[ ]→ ∅ ]
gap> Display( MorphismsOfExternalHom( M, L ) );
[  ]
gap> Display( MorphismsOfExternalHom( L, M ) );
[ ∅ ⱶ[ ]→ { 0, 1 } ]
gap> Display( MorphismsOfExternalHom( M, N ) );
[ { 0, 1 } ⱶ[ 0, 0 ]→ { 0, 1, 2 }, { 0, 1 } ⱶ[ 1, 0 ]→ { 0, 1, 2 },\
 { 0, 1 } ⱶ[ 2, 0 ]→ { 0, 1, 2 }, { 0, 1 } ⱶ[ 0, 1 ]→ { 0, 1, 2 },\
 { 0, 1 } ⱶ[ 1, 1 ]→ { 0, 1, 2 }, { 0, 1 } ⱶ[ 2, 1 ]→ { 0, 1, 2 },\
 { 0, 1 } ⱶ[ 0, 2 ]→ { 0, 1, 2 }, { 0, 1 } ⱶ[ 1, 2 ]→ { 0, 1, 2 },\
 { 0, 1 } ⱶ[ 2, 2 ]→ { 0, 1, 2 } ]

4.4-5 Skeletal Initial and Terminal Objects
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> m := ObjectConstructor( sFinSets, 8 );
|8|
gap> IsInitial( m );
false
gap> IsTerminal( m );
false
gap> i := InitialObject( sFinSets );
|0|
gap> AsList( i );
[  ]
gap> Display( i );gap> IsInitial( i );
true
gap> IsTerminal( i );
false
gap> iota := UniversalMorphismFromInitialObject( m );
|0| → |8|
gap> ii := InitialObjectFunctorial( sFinSets );
|0| → |0|
gap> IsOne( ii );
true
gap> ii;
|0| ⭇ |0|
gap> t := TerminalObject( sFinSets );
|1|
gap> AsList( t );
[ 0 ]
gap> Display( t );
{ 0 }
gap> IsInitial( t );
false
gap> IsTerminal( t );
true
gap> pi := UniversalMorphismIntoTerminalObject( m );
|8| → |1|
gap> IsIdenticalObj( Target( pi ), t );
true
gap> pi_t := UniversalMorphismIntoTerminalObjectWithGivenTerminalObject( m, t );
|8| → |1|
gap> Display( pi_t );
{ 0,..., 7 } ⱶ[ 0, 0, 0, 0, 0, 0, 0, 0 ]→ { 0 }
gap> pi = pi_t;
true

4.4-6 Skeletal Direct Product
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> m := ObjectConstructor( sFinSets, 7 );
|7|
gap> n := ObjectConstructor( sFinSets, 3 );
|3|
gap> p := ObjectConstructor( sFinSets, 4 );
|4|
gap> d := DirectProduct( [ m, n, p ] );
|84|
gap> AsList( d );
[ 0 .. 83 ]
gap> pi1 := ProjectionInFactorOfDirectProduct( [ m, n, p ], 1 );
|84| → |7|
gap> Display( pi1 );
{ 0,..., 83 } ⱶ[ 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6,
                 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6,
                 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6,
                 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6,
                 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6,
                 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6 ]→ { 0,..., 6 }
gap> pi2 := ProjectionInFactorOfDirectProduct( [ m, n, p ], 2 );
|84| → |3|
gap> Display( pi2 );
{ 0,..., 83 } ⱶ[ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
                 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
                 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
                 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2 ]→ { 0, 1, 2 }
gap> pi3 := ProjectionInFactorOfDirectProduct( [ m, n, p ], 3 );
|84| → |4|
gap> Display( pi3 );
{ 0,..., 83 } ⱶ[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
                 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
                 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
                 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 ]→ { 0,..., 3 }
gap> psi := UniversalMorphismIntoDirectProduct( [ m, n, p ], [ pi1, pi2, pi3 ] );
|84| → |84|
gap> psi = IdentityMorphism( d );
true

4.4-7 Skeletal Coproduct
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> m := ObjectConstructor( sFinSets, 7 );
|7|
gap> n := ObjectConstructor( sFinSets, 3 );
|3|
gap> p := ObjectConstructor( sFinSets, 4 );
|4|
gap> c := Coproduct( m, n, p );
|14|
gap> AsList( c );
[ 0 .. 13 ]
gap> iota1 := InjectionOfCofactorOfCoproduct( [ m, n, p ], 1 );
|7| → |14|
gap> IsWellDefined( iota1 );
true
gap> Display( iota1 );
{ 0,..., 6 } ⱶ[ 0 .. 6 ]→ { 0,..., 13 }
gap> iota2 := InjectionOfCofactorOfCoproduct( [ m, n, p ], 2 );
|3| → |14|
gap> IsWellDefined( iota2 );
true
gap> Display( iota2 );
{ 0, 1, 2 } ⱶ[ 7 .. 9 ]→ { 0,..., 13 }
gap> iota3 := InjectionOfCofactorOfCoproduct( [ m, n, p ], 3 );
|4| → |14|
gap> IsWellDefined( iota3 );
true
gap> Display( iota3 );
{ 0,..., 3 } ⱶ[ 10 .. 13 ]→ { 0,..., 13 }
gap> psi := UniversalMorphismFromCoproduct(
>                [ m, n, p ], [ iota1, iota2, iota3 ] );
|14| → |14|
gap> id := IdentityMorphism( Coproduct( [ m, n, p ] ) );
|14| → |14|
gap> psi = id;
true

4.4-8 Skeletal coproduct complement
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> m := ObjectConstructor( sFinSets, 3 );
|3|
gap> n := ObjectConstructor( sFinSets, 5 );
|5|
gap> iota:= MorphismConstructor( m, [ 1, 4, 2 ], n );
|3| → |5|
gap> Display( iota );
{ 0, 1, 2 } ⱶ[ 1, 4, 2 ]→ { 0,..., 4 }
gap> kappa := InjectionOfCoproductComplement( iota );
|2| → |5|
gap> IsWellDefined( kappa );
true
gap> Display( kappa );
{ 0, 1 } ⱶ[ 0, 3 ]→ { 0,..., 4 }
gap> iso := UniversalMorphismFromCoproduct( [ iota, kappa ] );
|5| → |5|
gap> IsWellDefined( iso );
true
gap> Display( iso );
{ 0,..., 4 } ⱶ[ 1, 4, 2, 0, 3 ]→ { 0,..., 4 }
gap> IsIsomorphism( iso );
true

4.4-9 Skeletal Equalizer
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> S := ObjectConstructor( sFinSets, 5 );
|5|
gap> T := ObjectConstructor( sFinSets, 3 );
|3|
gap> f1 := MorphismConstructor( S, [ 2, 2, 0, 1, 1 ], T );
|5| → |3|
gap> f2 := MorphismConstructor( S, [ 2, 1, 2, 0, 1 ], T );
|5| → |3|
gap> f3 := MorphismConstructor( S, [ 2, 0, 1, 0, 1 ], T );
|5| → |3|
gap> D := [ f1, f2, f3 ];;
gap> Eq := Equalizer( D );
|2|
gap> iota := EmbeddingOfEqualizer( D );
|2| → |5|
gap> Display( iota );
{ 0, 1 } ⱶ[ 0, 4 ]→ { 0,..., 4 }
gap> phi := MorphismConstructor( ObjectConstructor( sFinSets, 2 ), [ 4, 0 ], S );;
gap> IsWellDefined( phi );
true
gap> psi := UniversalMorphismIntoEqualizer( D, phi );
|2| → |2|
gap> IsWellDefined( psi );
true
gap> Display( psi );
{ 0, 1 } ⱶ[ 1, 0 ]→ { 0, 1 }
gap> PreCompose( psi, iota ) = phi;
true
gap> D := [ f2, f3 ];;
gap> Eq := Equalizer( D );
|3|
gap> psi := EmbeddingOfEqualizer( D );
|3| → |5|
gap> Display( psi );
{ 0, 1, 2 } ⱶ[ 0, 3, 4 ]→ { 0,..., 4 }

4.4-10 Skeletal homomorphism structre
gap> LoadPackage( "FiniteCocompletions", false );
true
gap> sFinSets :=
>   SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory;
SkeletalFinSetsAsFiniteStrictCoproductCompletionOfTerminalCategory
gap> A := ObjectConstructor( sFinSets, 3 );
|3|
gap> Display( A );
{ 0, 1, 2 }
gap> B := ObjectConstructor( sFinSets, 2 );
|2|
gap> A = B;
false
gap> Display( B );
{ 0, 1 }
gap> HomAB := HomStructure( A, B );
|8|
gap> I := HomStructure( sFinSets );
|1|
gap> homAB := List( [ 0 .. Length( HomAB ) - 1 ], i ->
>                MorphismConstructor( I, [ i ], HomAB ) );
[ |1| → |8|, |1| → |8|, |1| → |8|, |1| → |8|,
  |1| → |8|, |1| → |8|, |1| → |8|, |1| → |8| ]
gap> List( homAB, IsWellDefined );
[ true, true, true, true, true, true, true, true ]
gap> List( homAB, m -> HomStructure( HomStructure( A, B, m ) ) ) = homAB;
true
gap> alpha := HomStructure( A, B, homAB[6] );
|3| → |2|
gap> Display( alpha );
{ 0, 1, 2 } ⱶ[ 1, 0, 1 ]→ { 0, 1 }
gap> gamma := HomStructure( A, B, homAB[2] );
|3| → |2|
gap> Display( gamma );
{ 0, 1, 2 } ⱶ[ 1, 0, 0 ]→ { 0, 1 }
gap> hom_alpha_gamma := HomStructure( alpha, gamma );
|9| → |8|
gap> Display( hom_alpha_gamma );
{ 0,..., 8 } ⱶ[ 7, 5, 5, 2, 0, 0, 2, 0, 0 ]→ { 0,..., 7 }
gap> IsWellDefined( hom_alpha_gamma );
true
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Ind

generated by GAPDoc2HTML