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 11 kB image not shown  

Quelle  grpgraph.gd   Sprache: unbekannt

 
############################################################################
##
#W  grpgraph.gd             GAP4 package `groupoids'           Chris Wensley
#W                                                              & Emma Moore
##  
##  This file contains the declarations for involutory FpWeightedDigraphs 
##  and FpWeightedDigraphs of groups, 
##  and normal forms for FpWeightedDigraph of groups. 

############################################################################## 
## 
#C  IsGroupoidDigraph( <dig> )                
## 
DeclareCategory( "IsGroupoidDigraph", IsDomain );

############################################################################# 
## 
#O  GroupoidVertices( <dig> );  
#O  GroupoidArcs( <dig> );  
## 
##  Vertices must be declared as Operation, and not Attribute, 
##  so as not to conflict with Vertices in the Grape package. 
##   
DeclareOperation( "GroupoidVertices", [ IsGroupoidDigraph ] );  
DeclareOperation( "GroupoidArcs", [ IsGroupoidDigraph ] );  

############################################################################## 
## 
#R  IsFpWeightedDigraphRep( <dig> )                
#V  IsFpWeightedDigraphFamily( <dig> )                
#T  IsFpWeightedDigraphType( <dig> )                
#P  IsFpWeightedDigraph( <dig> )                
## 
##  A FpWeightedDigraph is a set of vertices and a set of directed arcs  
## 
DeclareRepresentation( "IsFpWeightedDigraphRep",
    IsGroupoidDigraph and IsComponentObjectRep, 
    [ "group", "vertices", "arcs" ] ); 
DeclareProperty( "IsFpWeightedDigraph", IsGroupoidDigraph ); 
BindGlobal( "IsFpWeightedDigraphFamily", 
            NewFamily( "IsFpWeightedDigraphFamily", IsFpWeightedDigraphRep ) ); 
BindGlobal( "IsFpWeightedDigraphType", 
            NewType( IsFpWeightedDigraphFamily, IsFpWeightedDigraphRep ) ); 
 
############################################################################# 
## 
#O  FpWeightedDigraphNC( <group>, <vertices>, <arcs> ) 
#O  FpWeightedDigraph( <group>, <vertices>, <arcs> )                                  
## 
DeclareOperation( "FpWeightedDigraphNC",  
    [ IsGroup, IsHomogeneousList, IsHomogeneousList ] );  
DeclareOperation( "FpWeightedDigraph", 
    [ IsGroup, IsHomogeneousList, IsHomogeneousList ] );    
 
############################################################################## 
## 
#A  InvolutoryArcs( <dig> )                
## 
##  An involutory digraph is a set of vertices and a set of directed arcs  
##  and an involution on the set of arcs which reverses source and target 
## 
DeclareAttribute( "InvolutoryArcs", IsFpWeightedDigraph ); 

############################################################################# 
## 
#O  FpWeightedAdjacencyMatrix( <dig> ) 
#O  ArcsIsosFromMatrices( <vertices>, <wt_adj_mx>, <isos_mx> ) 
DeclareOperation( "FpWeightedAdjacencyMatrix", [ IsGroupoidDigraph ] ); 
DeclareOperation( "ArcsIsosFromMatrices", 
    [ IsHomogeneousList, IsHomogeneousList, IsHomogeneousList ] ); 


## ------------------------------------------------------------------------##
##                          Graphs of Groups                               ##
## ------------------------------------------------------------------------##
 
############################################################################## 
## 
#P  IsStructuredDigraph( <dig> )                
## 
DeclareProperty( "IsStructuredDigraph", IsGroupoidDigraph ); 
 
############################################################################# 
## 
#C  IsGraphOfGroups( <gg> ) 
#R  IsGraphOfGroupsRep( <gg> )                                                
#V  IsGraphOfGroupsFamily
#T  IsGraphOfGroupsType
## 
##  A FpWeightedDigraph of groups is a 4-tuple containing 
##  - a FpWeightedDigraph,  
##  - groups associated with each vertex, 
##  - subgroup associated to tail vertex of each edge, and 
##  - an isomorphism associated to each edge.  
## 
DeclareCategory( "IsGraphOfGroups", IsGroupoidDigraph ); 
DeclareRepresentation( "IsGraphOfGroupsRep",
    IsStructuredDigraph and IsAttributeStoringRep, 
    [ "DigraphOfGraphOfGroups", "GroupsOfGraphOfGroups", 
      #?  "SubgroupsOfGraphOfGroups", 
      "IsomorphismsOfGraphOfGroups" ] ); 
BindGlobal( "IsGraphOfGroupsFamily", 
    NewFamily( "IsGraphOfGroupsFamily", IsGraphOfGroups ) ); 
BindGlobal( "IsGraphOfGroupsType", 
    NewType( IsGraphOfGroupsFamily, IsGraphOfGroupsRep ) ); 
 
############################################################################## 
## 
#P  IsGraphOfPermGroups( <gg> ) 
#P  IsGraphOfFpGroups( <gg> ) 
#P  IsGraphOfPcGroups( <gg> ) 
## 
DeclareProperty( "IsGraphOfPermGroups", IsGraphOfGroups ); 
DeclareProperty( "IsGraphOfFpGroups", IsGraphOfGroups ); 
DeclareProperty( "IsGraphOfPcGroups", IsGraphOfGroups ); 
 
############################################################################# 
## 
#O  GraphOfGroupsNC( <dig>, <gps>, <isos> )                      
#O  GraphOfGroups( <dig>, <gps>, <isos> )                 
## 
DeclareOperation( "GraphOfGroupsNC", 
    [ IsFpWeightedDigraph, IsList, IsList ] );  
DeclareOperation( "GraphOfGroups", 
    [ IsFpWeightedDigraph, IsList, IsList ] );    
 
#############################################################################
## 
#A  GroupsOfGraphOfGroups( <gg> )                                        
#A  DigraphOfGraphOfGroups( <gg> )                                    
#A  SubgroupsOfGraphOfGroups( <gg> )                                       
#A  IsomorphismsOfGraphOfGroups( <gg> )                                    
#A  RightTransversalsOfGraphOfGroups( <gg> ) 
#A  LeftTransversalsOfGraphOfGroups( <gg> ) 
## 
DeclareAttribute( "GroupsOfGraphOfGroups", IsGraphOfGroups ); 
DeclareAttribute( "DigraphOfGraphOfGroups", IsGraphOfGroups );  
## DeclareAttribute( "SubgroupsOfGraphOfGroups", IsGraphOfGroups ); 
DeclareAttribute( "IsomorphismsOfGraphOfGroups", IsGraphOfGroups );  
DeclareAttribute( "RightTransversalsOfGraphOfGroups", IsGraphOfGroups );  
DeclareAttribute( "LeftTransversalsOfGraphOfGroups", IsGraphOfGroups );  
 
## ------------------------------------------------------------------------##
##                         Rewriting Functions                             ##
## ------------------------------------------------------------------------##
 
############################################################################# 
## 
#A  FreeSemigroupOfKnuthBendixRewritingSystem( <kbrws> ) 
#O  NormalFormKBRWS( <group>, <word> )                                  
## 
##  creates inverse to  iso = IsomorphismFpSemigroup 
## 
DeclareAttribute( "FreeSemigroupOfKnuthBendixRewritingSystem", 
    IsKnuthBendixRewritingSystem ); 
DeclareOperation( "NormalFormKBRWS", [ IsFpGroup, IsObject ] );    
 
############################################################################# 
## 
#O  FreeProductWithAmalgamation( <grp>, <grp>, <iso> ) 
#O  FreeProductWithAmalgamationOp( <grp>, <grp>, <iso> ) 
#A  FreeProductWithAmalgamationInfo( <fpagrp> )
#P  IsFreeProductWithAmalgamation( <fpgrp> )  
## 
DeclareOperation( "FreeProductWithAmalgamation",
    [ IsGroup, IsGroup, IsGroupHomomorphism ] );    
DeclareOperation( "FreeProductWithAmalgamationOp",
    [ IsGroup, IsGroup, IsGroupHomomorphism ] );    
DeclareProperty( "IsFreeProductWithAmalgamation", IsFpGroup );
DeclareAttribute( "FreeProductWithAmalgamationInfo", 
    IsFreeProductWithAmalgamation, "mutable" );    
 
############################################################################# 
## 
#O  HnnExtension( <grp>, <iso> ) 
#P  IsHnnExtension( <fpgrp> )  
#A  HnnExtensionInfo( <fpa> )
## 
DeclareOperation( "HnnExtension", [ IsGroup, IsGroupHomomorphism ] );    
DeclareProperty( "IsHnnExtension", IsFpGroup );
DeclareAttribute( "HnnExtensionInfo", IsHnnExtension, "mutable" );    
 
############################################################################# 
## 
#A  GraphOfGroupsRewritingSystem( <fpgrp> )
#O  NormalFormGGRWS( <fpgrp>, <word> )                                  
## 
DeclareAttribute( "GraphOfGroupsRewritingSystem", IsFpGroup );
DeclareOperation( "NormalFormGGRWS", [ IsFpGroup, IsObject ] );    
 
## ------------------------------------------------------------------------##
##                      Graph of Groups Words                              ##
## ------------------------------------------------------------------------##
 
############################################################################## 
## 
#R  IsGraphOfGroupsWordRep( <ggword> )                
#V  IsGraphOfGroupsWordFamily( <ggword> )                
#T  IsGraphOfGroupsWordType( <ggword> )                
## 
##  A GraphOfGroupsWord is a word made from elements in the group 
##  and arcs in the digraph  
## 
DeclareRepresentation( "IsGraphOfGroupsWordRep", 
    ## IsGroupoidElement and IsAttributeStoringRep, 
    IsObject and IsAttributeStoringRep, 
    [ "GraphOfGroupsOfWord", 
      "TailOfGraphOfGroupsWord", "WordOfGraphOfGroupsWord" ] ); 
BindGlobal( "IsGraphOfGroupsWordFamily", 
            NewFamily( "IsGraphOfGroupsWordFamily", 
                       IsGraphOfGroupsWordRep ) );
BindGlobal( "IsGraphOfGroupsWordType", 
            NewType( IsGraphOfGroupsWordFamily, IsGraphOfGroupsWordRep ) );
 
############################################################################## 
## 
#P  IsGraphOfGroupsWord( <ggword> )                
#P  IsReducedGraphOfGroupsWord( <ggword> )                
##  A GraphOfGroupsWord is Reduced if of the form [ t, h, t, h, ..., t, g ] 
## 
DeclareProperty( "IsGraphOfGroupsWord", IsGraphOfGroupsWordRep ); 
DeclareProperty( "IsReducedGraphOfGroupsWord", IsGraphOfGroupsWord ); 
 
############################################################################# 
## 
#O  GraphOfGroupsWordNC( <gg>, <tv>, <wL> )  
#O  GraphOfGroupsWord( <gg>, <tv>, <wL> )                                  
## 
DeclareOperation( "GraphOfGroupsWordNC", [ IsGraphOfGroups, IsInt, IsList ] );
DeclareOperation( "GraphOfGroupsWord", [ IsGraphOfGroups, IsInt, IsList ] );   
 
############################################################################# 
## 
#A  GraphOfGroupsOfWord( <ggword> ) 
#A  HeadOfGraphOfGroupsWord( <ggword> ) 
#A  TailOfGraphOfGroupsWord( <ggword> ) 
#A  WordOfGraphOfGroupsWord( <ggword> )                                       
#O  ReducedGraphOfGroupsWord( <ggword> )    
## 
DeclareAttribute( "GraphOfGroupsOfWord", IsGraphOfGroupsWordRep ); 
DeclareAttribute( "HeadOfGraphOfGroupsWord", IsGraphOfGroupsWordRep ); 
DeclareAttribute( "TailOfGraphOfGroupsWord", IsGraphOfGroupsWordRep ); 
DeclareAttribute( "WordOfGraphOfGroupsWord", IsGraphOfGroupsWordRep); 
DeclareOperation( "ReducedGraphOfGroupsWord", [ IsGraphOfGroupsWordRep ] );   
 
############################################################################# 
## 
#P  IsMappingToGroupWithGGRWS( <map> ) 
#O  ReducedImageElm( <hom>, <elm> )    
## 
DeclareProperty( "IsMappingToGroupWithGGRWS", 
    IsGroupGeneralMappingByImages ); 
DeclareOperation( "ReducedImageElm", [ IsMappingToGroupWithGGRWS, 
    IsMultiplicativeElementWithInverse ] );   


## ------------------------------------------------------------------------##
##         Graph of Groups Groupoid - still be to implemented              ##
## ------------------------------------------------------------------------##
 
############################################################################# 
## 
## #P  IsGraphOfGroupsGroupoid( <gpd> )  
## #O  GraphOfGroupsGroupoid( <gg> ) 
## 
## DeclareProperty( "IsGraphOfGroupsGroupoid", IsGroupoid );
## DeclareOperation( "GraphOfGroupsGroupoid", [ IsGraphOfGroups ] );

[ Dauer der Verarbeitung: 0.18 Sekunden  (vorverarbeitet)  ]