Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/groupoids/lib/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 11.8.2025 mit Größe 12 kB image not shown  

Quelle  gpd.gd   Sprache: unbekannt

 
############################################################################# 
## 
#W  gpd.gd                 GAP4 package `groupoids'             Chris Wensley 
#W                                                               & Emma Moore

############################################################################# 
##
#O  RootGroup( <gpd> ) 
#A  RaysOfGroupoid( <gpd> ) 
#O  RayArrowsOfGroupoid( <gpd> ) 
#A  GeneratorsOfGroupoid( <gpd> )
## 
DeclareOperation( "RootGroup", [ IsGroupoid and IsSinglePiece ] ); 
DeclareAttribute( "RaysOfGroupoid", IsGroupoid ); 
DeclareOperation( "RayArrowsOfGroupoid", [ IsGroupoid ] ); 
DeclareAttribute( "GeneratorsOfGroupoid", IsGroupoid );
  
############################################################################## 
## 
#R  IsSinglePieceRaysRep( <gpd> ) 
#T  IsSinglePieceRaysType( <gpd> ) 
#A  LargerDirectProductGroupoid( <gpd> ) 
## 
##  A connected groupoid with variable object groups is a wide subgroupoid 
##  of an IsDirectProductWithCompleteDigraph with the same objects, and is 
##  determined by a root group, and a set of conjugating elements 
## 
DeclareRepresentation( "IsSinglePieceRaysRep",
  IsGroupoid and IsAttributeStoringRep and IsComponentObjectRep, 
  [ "parent", "rootGroup", "rays" ] ); 
BindGlobal( "IsSinglePieceRaysType", 
            NewType( IsGroupoidFamily, IsSinglePieceRaysRep ) );
DeclareAttribute( "LargerDirectProductGroupoid", IsSinglePieceRaysRep ); 
 
############################################################################# 
## 
#P  IsPermGroupoid( <gpd> ) 
#P  IsFpGroupoid( <gpd> ) 
#P  IsPcGroupoid( <gpd> ) 
#P  IsMatrixGroupoid( <gpd> ) 
#P  IsFreeGroupoid( <gpd> ) 
#P  IsSinglePieceGroupoidWithRays( <gpd> )
## 
DeclareProperty( "IsPermGroupoid", IsGroupoid );  
DeclareProperty( "IsFpGroupoid", IsGroupoid );  
DeclareProperty( "IsPcGroupoid", IsGroupoid );  
DeclareProperty( "IsMatrixGroupoid", IsGroupoid );  
DeclareProperty( "IsFreeGroupoid", IsGroupoid );  
DeclareProperty( "IsSinglePieceGroupoidWithRays", IsGroupoid );  
  
############################################################################# 
## 
#F  Groupoid( <args> )              
## 
DeclareGlobalFunction( "Groupoid" );

############################################################################# 
##           
#O  SinglePieceGroupoidNC( <group>, <objects> )              
#O  SinglePieceGroupoid( <group>, <objects> )        
#O  GroupoidWithRays( <rootgp>, <objects>, <rays> )
#O  SubgroupoidWithRaysNC( <parent>, <rootgp>, <rays> )
#O  SubgroupoidWithRays( <parent>, <rootgp>, <rays> )
#O  SinglePieceSubgroupoidByGenerators( <ancestor>, <gens> )
#O  SinglePieceGroupoidWithRaysNC( <group>, <objects>, <rays> )              
#O  SinglePieceGroupoidWithRays( <group>, <objects>, <rays> ) 
## 
DeclareOperation( "SinglePieceGroupoidNC", 
    [ IsGroup, IsHomogeneousList ] ); 
DeclareOperation( "SinglePieceGroupoid", 
    [ IsGroup, IsHomogeneousList ] ); 
DeclareOperation( "GroupoidWithRays", 
    [ IsGroup, IsHomogeneousList, IsList ] );
DeclareOperation( "SubgroupoidWithRaysNC", 
    [ IsGroupoid, IsGroup, IsHomogeneousList ] );
DeclareOperation( "SubgroupoidWithRays", 
    [ IsGroupoid, IsGroup, IsHomogeneousList ] );
DeclareOperation( "SinglePieceSubgroupoidByGenerators", 
    [ IsGroupoid, IsList ] ); 
DeclareOperation( "SinglePieceGroupoidWithRaysNC", 
    [ IsGroup, IsHomogeneousList, IsHomogeneousList ] ); 
DeclareOperation( "SinglePieceGroupoidWithRays", 
    [ IsGroup, IsHomogeneousList, IsHomogeneousList ] ); 

############################################################################# 
##           
#O  GroupoidByIsomorphisms( <rootgp>, <objects>, <isos> )
#P  IsGroupoidByIsomorphisms( <gpd> )
## 
DeclareOperation( "GroupoidByIsomorphisms", 
    [ IsGroup, IsHomogeneousList, IsList ] );
DeclareProperty( "IsGroupoidByIsomorphisms", 
                 IsSinglePieceDomain and IsGroupoid );

############################################################################# 
##                         
#O  ObjectGroup( <gpd>, <obj> )
#A  ObjectGroups( <gpd> )
## 
DeclareOperation( "ObjectGroup", [ IsGroupoid, IsObject ] );    
DeclareAttribute( "ObjectGroups", IsGroupoid );    


## ======================================================================== ##
##                           Homogeneous groupoids                          ##
## ======================================================================== ##

############################################################################## 
## 
#P  IsHomogeneousDiscreteGroupoid( <gpd> ) 
#R  IsHomogeneousDiscreteGroupoidRep( <gpd> ) 
#T  IsHomogeneousDiscreteGroupoidType( <gpd> ) 
## 
##  A homogeneous, discrete groupoid is a union of identical, single domain 
##  groupoids - just the thing for the source of an xmod of groupoids! 
##  So such structures deserve their own representation and type. 
## 
DeclareSynonymAttr( "IsHomogeneousDiscreteGroupoid", IsGroupoid and 
    IsDiscreteDomainWithObjects and IsHomogeneousDomainWithObjects ); 
DeclareRepresentation( "IsHomogeneousDiscreteGroupoidRep",
  IsGroupoid and IsAttributeStoringRep and IsComponentObjectRep, 
  [ "magma", "objects" ] ); 
BindGlobal( "IsHomogeneousDiscreteGroupoidType", 
            NewType( IsGroupoidFamily, 
                     IsHomogeneousDiscreteGroupoidRep and IsGroupoid ) );

############################################################################## 
## 
#O  HomogeneousGroupoid( <gpd>, <obs> ) 
#O  HomogeneousGroupoidNC( <gpd>, <obs> ) 
#O  HomogeneousDiscreteGroupoid( <gp>, <obs> ) 
## 
DeclareOperation( "HomogeneousGroupoid", [ IsGroupoid, IsHomogeneousList ] ); 
DeclareOperation( "HomogeneousGroupoidNC", [ IsGroupoid, IsHomogeneousList ] ); 
DeclareOperation( "HomogeneousDiscreteGroupoid", 
    [ IsGroup, IsHomogeneousList ] ); 

## ======================================================================== ##
##                       Manipulating groupoid unions                       ##
## ======================================================================== ##

############################################################################## 
## 
#O  ReplaceOnePieceInUnion( <union>, <old>, <new> ) 
## 
DeclareOperation( "ReplaceOnePieceInUnion", 
    [ IsGroupoid and IsPiecesRep, IsGroupoid and IsSinglePiece,  
      IsGroupoid and IsSinglePiece ] ); 
DeclareOperation( "ReplaceOnePieceInUnion", 
    [ IsGroupoid and IsPiecesRep, IsPosInt,  
      IsGroupoid and IsSinglePiece ] ); 


## ======================================================================== ##
##                            Groupoid Elements                             ##
## ======================================================================== ##

############################################################################## 
## 
#O  GroupoidElement( <gpd>, <elt>, <src>, <tgt> ) 
#O  IdentityArrow( <gpd>, <obj> )
## 
##  A connected groupoid element is [ group element, tail, head ]
## 
DeclareSynonym( "GroupoidElement", Arrow ); 
DeclareOperation( "IdentityArrow", [ IsGroupoid, IsObject ] ); 

############################################################################## 
## 
##  Stars, Costars and Homsets are particular subsets of the elements
##  of a connected groupoid for which an iterator is required
##  
##  Up to seven items of data are required: 
##  1.  a list of source objects, 
##  2.  a list of target objects, 
##  3.  a list of source rays, 
##  4.  a list of target rays, 
##  5.  a representative arrow, 
##  6.  a list of group elements, e.g. an object group of a coset, 
##  7.  a single character string 'c' in {s,c,h,u,r,l,d}, 
##      specifying star; costar; homset; union; right/left/double coset.
##
#P  IsHomsetCosets( <obj> )
#R  IsHomsetCosetsRep( <obj> )
#R  IsHomsetCosetsFamily( <obj> )
#R  IsHomsetCosetsType( <obj> )
#O  ObjectStarNC( <gpd>, <obj> ) 
#O  ObjectStar( <gpd>, <obj> ) 
#O  ObjectCostarNC( <gpd>, <obj> ) 
#O  ObjectCostar( <gpd>, <obj> ) 
#O  HomsetNC( <gpd>, <obj1>, <obj2> ) 
#O  Homset( <gpd>, <obj1>, <obj2> ) 
#A  ElementsOfGroupoid( <gpd> ) 
##
DeclareProperty( "IsHomsetCosets", IsGroupoidElementCollection );
InstallTrueMethod(IsListOrCollection, IsHomsetCosets);
DeclareRepresentation( "IsHomsetCosetsRep", IsHomsetCosets 
    and IsAttributeStoringRep and IsComponentObjectRep, 
    [ "tobj", "hobj", "trays", "hrays", "rep", "elements", "type" ] ); 
BindGlobal( "IsHomsetCosetsFamily", 
            NewFamily( "IsHomsetCosetsFamily", IsList ) ); 
BindGlobal( "IsHomsetCosetsType", 
            NewType( CollectionsFamily( IsGroupoidElementFamily ), 
                     IsHomsetCosetsRep ) );
DeclareOperation( "ObjectStarNC", [ IsGroupoid, IsObject ] ); 
DeclareOperation( "ObjectStar", [ IsGroupoid, IsObject ] ); 
DeclareOperation( "ObjectCostarNC", [ IsGroupoid, IsObject ] ); 
DeclareOperation( "ObjectCostar", [ IsGroupoid, IsObject ] ); 
DeclareOperation( "HomsetNC", [ IsGroupoid, IsObject, IsObject ] ); 
DeclareOperation( "Homset", [ IsGroupoid, IsObject, IsObject ] ); 
DeclareAttribute( "ElementsOfGroupoid", IsGroupoid ); 

############################################################################## 
##  
#P  IsGroupoidCoset( <cset> ) 
#A  SuperDomain( <cset> );                          #? rename ?? 
#O  RightCosetRepresentatives( <gpd>, <sgpd> )      #? should be Iterator ?? 
#R  IsLeftCosetWithObjectsDefaultRep( <gp>, <obj> ) 
#O  LeftCosetRepresentatives( <gpd>, <sgpd> )       #? should be Iterator ?? 
#O  LeftCosetRepresentativesFromObject( <gpd>, <sgpd>, <obj> ) 
#O  DoubleCosetRepresentatives( <gpd>, <sgpd>, <sgpd> )          #? ditto ?? 
## 
DeclareProperty( "IsGroupoidCoset", IsRightCosetDefaultRep ); 
DeclareAttribute( "SuperDomain", IsRightCosetDefaultRep ); 
DeclareCategory( "IsLeftCosetWithObjects", IsDomain and IsExternalOrbit );
DeclareRepresentation( "IsLeftCosetWithObjectsDefaultRep", 
    IsComponentObjectRep and IsAttributeStoringRep 
    and IsLeftCosetWithObjects, [] );
DeclareOperation( "RightCosetRepresentatives", [ IsGroupoid, IsGroupoid ] ); 
DeclareOperation( "LeftCosetRepresentatives", [ IsGroupoid, IsGroupoid ] ); 
DeclareOperation( "LeftCosetRepresentativesFromObject", 
    [ IsGroupoid, IsGroupoid, IsObject ] ); 
DeclareOperation( "DoubleCosetRepresentatives", 
    [ IsGroupoid, IsGroupoid, IsGroupoid ] ); 


## ======================================================================== ##
##                               Subgroupoids                               ##
## ======================================================================== ##

############################################################################# 
## 
#F  Subgroupoid( <args> )              
#O  IsSubgroupoid( <G>, <S> )
#O  IsWideSubgroupoid( <G>, <S> )                            
#O  IsFullSubgroupoid( <G>, <S> )                            
## 
DeclareGlobalFunction( "Subgroupoid" );
DeclareOperation( "IsSubgroupoid", [ IsGroupoid, IsGroupoid ] );
DeclareOperation( "IsWideSubgroupoid", [ IsGroupoid, IsGroupoid ] ); 
DeclareOperation( "IsFullSubgroupoid", [ IsGroupoid, IsGroupoid ] ); 

############################################################################# 
## 
#O  SubgroupoidBySubgroup( <gpd>, <sgp> ) 
#O  SubgroupoidByObjects( <gpd>, <obs> ) 
#O  SubgroupoidByPieces( <gpd>, <obhoms> )              
#O  PiecePositions( <gpd>, <sgpd> )
#O  DiscreteSubgroupoid( <gpd>, <gps>, <obs> )              
#O  HomogeneousDiscreteSubgroupoid( <gpd>, <gp>, <obs> )              
#A  MaximalDiscreteSubgroupoid( <gpd> )  
#A  FullTrivialSubgroupoid( <gpd> )  
#A  DiscreteTrivialSubgroupoid( <gpd> )  
## 
DeclareOperation( "SubgroupoidBySubgroup", 
    [ IsGroupoid and IsSinglePiece, IsGroup ] ); 
DeclareOperation( "SubgroupoidByObjects", [ IsGroupoid, IsHomogeneousList ] );
DeclareSynonym( "FullSubgroupoid", SubgroupoidByObjects ); 
DeclareOperation( "SubgroupoidByPieces",
    [ IsGroupoid, IsList ] );
##  DeclareOperation( "PiecePositions", [ IsGroupoid, IsGroupoid ] );
DeclareOperation( "DiscreteSubgroupoid",
    [ IsGroupoid, IsList, IsHomogeneousList ] );
DeclareOperation( "HomogeneousDiscreteSubgroupoid",
    [ IsGroupoid, IsGroup, IsHomogeneousList ] );
DeclareAttribute( "MaximalDiscreteSubgroupoid", IsGroupoid );
DeclareAttribute( "FullTrivialSubgroupoid", IsGroupoid );
DeclareAttribute( "DiscreteTrivialSubgroupoid", IsGroupoid );

#############################################################################
##
#O  ConjugateGroupoid( <gpd>, <elt> ) . . . . . . conjugate of <gpd> by <elt>
##
DeclareOperation( "ConjugateGroupoid", [ IsGroupoid, IsGroupoidElement ] );

############################################################################# 
## 
#O  NormalSubgroupoid( <G>, <S> )              
#O  IsNormalSubgroupoid( <G>, <S> )
## 
DeclareOperation( "NormalSubgroupoid", [ IsGroupoid, IsGroupoid ] );
DeclareOperation( "IsNormalSubgroupoid", [ IsGroupoid, IsGroupoid ] );

############################################################################# 
## 
#P  IsGroupoidWithMonoidObjects( <gpd> ) 
## 
DeclareProperty( "IsGroupoidWithMonoidObjects", IsGroupoid );  

############################################################################# 
## 
#A  RightActionGroupoid( <M> )              
## 
DeclareAttribute( "RightActionGroupoid", IsMonoid );

[ Dauer der Verarbeitung: 0.23 Sekunden  (vorverarbeitet)  ]