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

Quelle  mwo.gd   Sprache: Shell

 

############################################################################# 
## 
#W  mwo.gd                 GAP4 package `groupoids'             Chris Wensley 
##  
##  This file contains the declarations of elements, magma, etc., and their 
##  families in the case of many objects.  So each algebraic structure comes 
##  with a set of objects, and each element $e$ has a tail object $te$ and a 
##  head object $he$, and multiplies partially if composable: on the left 
##  with those elements in its family which have head $te$, and on the right 
##  with those elements of its family which have tail $he$.  Non-composable 
##  elements return $fail$ when multiplied. 
##  

###########################  DOMAIN WITH OBJECTS  ########################### 

############################################################################# 
## 
#C  IsDomainWithObjects( <obj> ) . . test if object is a domain with objects 
## 
DeclareCategory( "IsDomainWithObjects", IsDomain ); 

############################################################################ 
## 
#F  DomainWithObjects( <dom>, <obs> ) 
##
DeclareGlobalFunction( "DomainWithObjects" ); 

############################################################################# 
## 
#P  IsSinglePieceDomain( <dwo> ) . . . . . . . . . . . . . a connected domain
#P  IsDiscreteDomainWithObjects( <dwo> ) . . . . .  with at least two objects
#P  IsDirectProductWithCompleteDigraphDomain( <dwo> ) 
#P  IsHomogeneousDomainWithObjects( <dwo> ) 
## 
DeclareProperty( "IsSinglePieceDomain", IsDomainWithObjects );  
DeclareProperty( "IsDiscreteDomainWithObjects", IsDomainWithObjects ); 
DeclareProperty( "IsDirectProductWithCompleteDigraphDomain", 
    IsDomainWithObjects ); 
DeclareProperty( "IsHomogeneousDomainWithObjects", IsDomainWithObjects ); 

############################################################################# 
## 
#A  ObjectList( <dwo> ) 
#A  Pieces( <dwo> ) 
#A  PieceIsomorphisms( <dwo> )
#A  RootObject( <dwo> )
## 
DeclareAttribute( "ObjectList", IsDomainWithObjects ); 
DeclareAttribute( "Pieces", IsDomainWithObjects );  
DeclareAttribute( "PieceIsomorphisms", IsHomogeneousDomainWithObjects );  
DeclareAttribute( "RootObject", IsSinglePieceDomain ); 
  
############################################################################# 
## 
#R  IsPiecesRep( <dwo> ) 
## 
##  A domain with objects is a list of single piece domains
## 
DeclareRepresentation( "IsPiecesRep", 
    IsComponentObjectRep and IsAttributeStoringRep and IsDomainWithObjects, 
    [ "Pieces", "ObjectList" ] ); 

############################################################################# 
## 
#O  UnionOfPieces( <pieces> )              
#O  UnionOfPiecesOp( <pieces>, <dom> )              
## 
DeclareGlobalFunction( "UnionOfPieces" );
DeclareOperation( "UnionOfPiecesOp", [ IsList, IsDomainWithObjects ] );    

############################################################################# 
## 
#O  PieceOfObject( <dwo>, <obj> )                                    
#O  PieceNrOfObject( <dwo>, <obj> )                                    
## 
DeclareOperation( "PieceOfObject", [ IsDomainWithObjects, IsObject ] );  
DeclareOperation( "PieceNrOfObject", [ IsDomainWithObjects, IsObject ] );

############################################################################# 
## 
#A  KindOfDomainWithObjects( <dwo> ) 
## 
DeclareAttribute( "KindOfDomainWithObjects", IsList );  


########################  MULT ELTS WITH OBJECTS  ########################### 

############################################################################# 
## 
#C  IsMultiplicativeElementWithObjects( <elt> ) 
## 
DeclareCategory( "IsMultiplicativeElementWithObjects", 
    IsMultiplicativeElement ); 
DeclareCategoryCollections( "IsMultiplicativeElementWithObjects" ); 

############################################################################# 
## 
#C  IsMultiplicativeElementWithObjectsAndOnes( <elt> ) 
## 
##  An identity element at object $o$ is an element $1_o$ which is a left 
##  identity for $e$ when $te=o$ and a right identity for $e$ when $he=o$. 
DeclareCategory( "IsMultiplicativeElementWithObjectsAndOnes", 
    IsMultiplicativeElementWithObjects ); 
DeclareCategoryCollections( "IsMultiplicativeElementWithObjectsAndOnes" ); 

############################################################################# 
## 
#C  IsMultiplicativeElementWithObjectsAndInverses( <elt> ) 
## 
##  An element $e$ has inverse $f$ provided $e*f=1_{te}$ and $f*e=1_{he}$. 
DeclareCategory( "IsMultiplicativeElementWithObjectsAndInverses", 
    IsMultiplicativeElementWithObjectsAndOnes ); 
DeclareCategoryCollections( 
    "IsMultiplicativeElementWithObjectsAndInverses" ); 

############################################################################# 
## 
#C  IsGroupoidElement( <elt> ) 
#C  IsGroupoidByIsomorphismsElement( <elt> ) 
## 
DeclareCategory( "IsGroupoidElement", 
    IsMultiplicativeElementWithObjectsAndInverses ); 
DeclareCategoryCollections( "IsGroupoidElement" ); 
DeclareCategory( "IsGroupoidByIsomorphismsElement", 
    IsMultiplicativeElementWithObjectsAndInverses ); 
DeclareCategoryCollections( "IsGroupoidByIsomorphismsElement" ); 

############################################################################# 
##  
#V  IsMultiplicativeElementWithObjectsFamily  . . family for elements of mwos 
#V  IsMultiplicativeElementWithObjectsAndOnesFamily . . . . . . and with ones
#V  IsMultiplicativeElementWithObjectsAndInversesFamily  . . . . and inverses
#V  IsGroupoidElementFamily  . . . . . . . . family for elements of groupoids
#T  IsMultiplicativeElementWithObjectsType  default type for elements of mwos 
#T  IsGroupoidElementType  . . . . . . default type for elements of groupoids
#T  IsGroupoidByIsomorphismsElementType  . special type for groupoid elements
##  
BindGlobal( "IsMultiplicativeElementWithObjectsFamily", 
    NewFamily( "IsMultiplicativeElementWithObjectsFamily", 
               IsMultiplicativeElementWithObjects, 
               CanEasilySortElements, CanEasilySortElements ) ); 
BindGlobal( "IsMultiplicativeElementWithObjectsAndOnesFamily", 
    NewFamily( "IsMultiplicativeElementWithObjectsAndOnesFamily", 
               IsMultiplicativeElementWithObjectsAndOnes, 
               CanEasilySortElements, CanEasilySortElements ) ); 
BindGlobal( "IsMultiplicativeElementWithObjectsAndInversesFamily", 
    NewFamily( "IsMultiplicativeElementWithObjectsAndInversesFamily", 
               IsMultiplicativeElementWithObjectsAndInverses, 
               CanEasilySortElements, CanEasilySortElements ) ); 
BindGlobal( "IsGroupoidElementFamily", 
    NewFamily( "IsGroupoidElementFamily", IsGroupoidElement, 
               CanEasilySortElements, CanEasilySortElements ) ); 
BindGlobal( "IsMultiplicativeElementWithObjectsType", 
            NewType( IsMultiplicativeElementWithObjectsFamily, 
                     IsMultiplicativeElementWithObjects ) );
BindGlobal( "IsGroupoidElementType", 
            NewType( IsGroupoidElementFamily, IsGroupoidElement ) );
BindGlobal( "IsGroupoidByIsomorphismsElementType", 
            NewType( IsGroupoidElementFamily, 
                     IsGroupoidByIsomorphismsElement ) );

###########################  MAGMA WITH OBJECTS  ############################ 

############################################################################# 
## 
#C  IsMagmaWithObjects( <dwo> ) . . . . . . . category of magmas with objects 
#C  IsMagmaWithObjectsAndOnes( <dwo> ) . . . . . . . . . . . . . . . and ones
#C  IsMagmaWithObjectsAndInverses( <dwo> ) . . . . . . . . . . . and inverses
#C  IsGroupoid( <dwo> )  . . . . . . . . . . . . . . . . . . and all inverses
##
##  A *magma with objects* in {\GAP} is a domain $M$ with (not necessarily 
##  associative) partial mutliplication. 
## 
DeclareCategory( "IsMagmaWithObjects", IsDomainWithObjects and 
    IsMultiplicativeElementWithObjectsCollection );  
DeclareCategoryCollections( "IsMagmaWithObjects" ); 
DeclareCategory( "IsSemigroupWithObjects",
    IsMagmaWithObjects and IsAssociative ); 
DeclareCategory( "IsMonoidWithObjects", 
    IsSemigroupWithObjects and 
    IsMultiplicativeElementWithObjectsAndOnesCollection ); 
DeclareCategory( "IsGroupoid", IsMonoidWithObjects and 
    IsGroupoidElementCollection ); 
DeclareCategoryCollections( "IsGroupoid" ); 

############################################################################# 
##  
#V  IsMagmaWithObjectsFamily . . . . . . . . . family for magmas with objects 
#V  IsSemigroupWithObjectsFamily . . . . . family for semigroups with objects 
#V  IsMonoidWithObjectsFamily . . . . . . . . family for monoids with objects 
#V  IsGroupoidFamily . . . . . . . . . . . . . . . . . . family for groupoids
##  
IsMagmaWithObjectsFamily := CollectionsFamily( 
    IsMultiplicativeElementWithObjectsFamily ); 
IsSemigroupWithObjectsFamily := CollectionsFamily( 
    IsMultiplicativeElementWithObjectsAndOnesFamily ); 
IsMonoidWithObjectsFamily := CollectionsFamily( 
    IsMultiplicativeElementWithObjectsAndInversesFamily );  
IsGroupoidFamily := CollectionsFamily( IsGroupoidElementFamily ); 

############################################################################# 
## 
#P  IsSinglePiece( <mwo> )
#P  IsDiscreteMagmaWithObjects( <mwo> ) 
#P  IsDirectProductWithCompleteDigraph( <mwo> )
## 
DeclareSynonymAttr( "IsSinglePiece", 
    IsMagmaWithObjects and IsSinglePieceDomain );
DeclareSynonymAttr( "IsDiscreteMagmaWithObjects", 
    IsMagmaWithObjects and IsDiscreteDomainWithObjects );
DeclareSynonymAttr( "IsDirectProductWithCompleteDigraph", 
    IsMagmaWithObjects and IsDirectProductWithCompleteDigraphDomain );

############################################################################ 
## 
#F  MagmaWithObjects( <mag>, <obs> ) 
##
##  A standard single piece magma with objects has elements $(e,t,h)$ 
##  where $e$ is an element of <mag> and $t$, $h$ are the tail and head. 
##  Multiplication is given by  $(e,t,h)*(f,h,k) = (e*f,t,k)$. 
##  Other constructors are possible. 
## 
DeclareGlobalFunction( "MagmaWithObjects" ); 

############################################################################# 
## 
#A  GeneratorsOfMagmaWithObjects( <mwo> ) 
#A  GeneratorsOfSemigroupWithObjects( <mwo> ) 
#A  GeneratorsOfMonoidWithObjects( <mwo> ) 
## 
DeclareAttribute( "GeneratorsOfMagmaWithObjects", IsMagmaWithObjects ); 
DeclareAttribute( "GeneratorsOfSemigroupWithObjects", IsSemigroupWithObjects );
DeclareAttribute( "GeneratorsOfMonoidWithObjects", IsMonoidWithObjects ); 
    
############################################################################# 
## 
##  representation and types for groupoids etc with a single piece 
##
#R  IsMWOSinglePieceRep 
#T  IsMagmaWithObjectsType ( <mwo> )
#T  IsSemigroupWithObjectsType( <swo> )
#T  IsMonoidWithObjectsType( <mwo> )
#T  IsGroupoidType( <gpd> )
## 
DeclareRepresentation( "IsMWOSinglePieceRep", 
    IsComponentObjectRep and IsAttributeStoringRep and IsMagmaWithObjects, 
    [ "objects", "magma" ] ); 

BindGlobal( "IsMagmaWithObjectsType", 
            NewType( IsMagmaWithObjectsFamily, IsMWOSinglePieceRep ) );
BindGlobal( "IsSemigroupWithObjectsType", 
            NewType( IsSemigroupWithObjectsFamily, 
                     IsMWOSinglePieceRep and IsSemigroupWithObjects ) );
BindGlobal( "IsMonoidWithObjectsType", 
            NewType( IsMonoidWithObjectsFamily, 
                     IsMWOSinglePieceRep and IsMonoidWithObjects ) );
BindGlobal( "IsGroupoidType", 
            NewType( IsGroupoidFamily, 
                     IsMWOSinglePieceRep and IsGroupoid ) );

############################################################################# 
##  
##  types and properties for groupoids etc with several pieces
##
#T  IsMWOPiecesType( <dwo> )
#T  IsSemigroupWOPiecesType( <dwo> )
#T  IsMonoidWOPiecesType( <dwo> )
#T  IsGroupoidPiecesType( <dwo> )
## 
BindGlobal( "IsMagmaWOPiecesType", 
            NewType( IsMagmaWithObjectsFamily, 
                     IsPiecesRep and IsMagmaWithObjects ) );
BindGlobal( "IsSemigroupWOPiecesType", 
            NewType( IsSemigroupWithObjectsFamily, 
                     IsPiecesRep and IsSemigroupWithObjects ) );
BindGlobal( "IsMonoidWOPiecesType", 
            NewType( IsMonoidWithObjectsFamily, 
                     IsPiecesRep and IsMonoidWithObjects ) );
BindGlobal( "IsGroupoidPiecesType", 
            NewType( IsGroupoidFamily, 
                     IsPiecesRep and IsGroupoid and IsAssociative ) );

############################################################################# 
## 
#O  SinglePieceMagmaWithObjects( <mag>, <obs> ) 
#O  MagmaWithSingleObject( <mag>, <obj> )
## 
DeclareOperation( "SinglePieceMagmaWithObjects", [ IsMagma, IsCollection ] ); 
DeclareOperation( "MagmaWithSingleObject", [ IsMagma, IsObject ] );    

############################################################################# 
## 
#O  Arrow( <mwo>, <elt>, <tail>, <head> ) 
#O  MultiplicativeElementWithObjects( <mwo>, <elt>, <tail>, <head> ) 
#O  ArrowNC( <mwo> <isgpdelt>, <elt>, <tail>, <head> ) 
## 
DeclareOperation( "Arrow", 
  [ IsMagmaWithObjects, IsMultiplicativeElement, IsObject, IsObject ] ); 
DeclareSynonym( "MultiplicativeElementWithObjects", Arrow ); 
DeclareOperation( "ArrowNC", 
  [ IsMagmaWithObjects, IsBool, IsMultiplicativeElement, IsObject, IsObject ] ); 
    
############################################################################## 
## 
#O  ElementOfArrow( <ewo> ) 
#O  TailOfArrow( <ewo> ) 
#O  HeadOfArrow( <ewo> ) 
#O  GroupoidOfArrow( <ewo> ) 
##  
DeclareOperation( "ElementOfArrow", [ IsMultiplicativeElementWithObjects ] ); 
DeclareOperation( "TailOfArrow", [ IsMultiplicativeElementWithObjects ] ); 
DeclareOperation( "HeadOfArrow", [ IsMultiplicativeElementWithObjects ] ); 
DeclareOperation( "GroupoidOfArrow", [ IsMultiplicativeElementWithObjects ] ); 


################################  SEMIGROUPS  ###############################

############################################################################ 
## 
#F  SemigroupWithObjects( <mag>, <obs> )  
##
##  This is a magma with objects where the vertex magmas are semigroups. 
## 
DeclareGlobalFunction( "SemigroupWithObjects" ); 

############################################################################# 
## 
#O  SinglePieceSemigroupWithObjects( <sgp>, <obs> ) 
## 
DeclareOperation( "SinglePieceSemigroupWithObjects", 
    [ IsSemigroup, IsCollection ] ); 



#################################  MONOIDS  #################################

############################################################################ 
## 
#F  MonoidWithObjects( <mag>, <obs> )  
##
##  This is a magma with objects where the vertex magmas are monoids. 
## 
DeclareGlobalFunction( "MonoidWithObjects" ); 

############################################################################# 
## 
#O  SinglePieceMonoidWithObjects( <mon>, <obs> ) 
## 
DeclareOperation( "SinglePieceMonoidWithObjects", 
    [ IsMonoid, IsCollection ] ); 



#################################  GROUPS  ##################################

##  A *group with objects* is a magma with objects where 
##  the vertex magmas are groups, and every arrow has an inverse, 
##  and so is a *groupoid* - see file gpd.gd.




#################################  SUBDOMAINS  ############################## 

############################################################################# 
## 
#O  IsSubdomainWithObjects( <D>, <U> )
#F  SubdomainWithObjects( <args> )              
## 
DeclareOperation( "IsSubdomainWithObjects", 
    [ IsDomainWithObjects, IsDomainWithObjects ] );
DeclareGlobalFunction( "SubdomainWithObjects" );

############################################################################# 
## 
#O  SubdomainByPieces( <dwo>, <comp> )              
#O  PiecePositions( <dwo>, <sdwo> )
#O  DiscreteSubdomain( <dwo>, <obs>, <doms> )              
#A  MaximalDiscreteSubdomain( <dwo> )  
#O  FullSubdomain( <dwo>, <obs> )              
## 
DeclareOperation( "SubdomainByPieces",
    [ IsDomainWithObjects, IsHomogeneousList ] );
DeclareOperation( "PiecePositions", 
    [ IsDomainWithObjects, IsDomainWithObjects ] );
DeclareOperation( "DiscreteSubdomain",
    [ IsDomainWithObjects, IsHomogeneousList, IsHomogeneousList ] );
DeclareAttribute( "MaximalDiscreteSubdomain", IsDomainWithObjects );
DeclareOperation( "FullSubdomain", [IsDomainWithObjects,IsHomogeneousList] );


################################  SUBMAGMAS  ################################ 

############################################################################# 
## 
#R  IsSubmagmaWithObjectsTableRep 
##
DeclareRepresentation( "IsSubmagmaWithObjectsTableRep", 
    IsComponentObjectRep and IsAttributeStoringRep and IsMagmaWithObjects, 
    [ "objects", "magma", "table" ] ); 

############################################################################ 
## 
#O  IsSubmagmaWithObjectsGeneratingTable( <swo>, <A> )  
#O  SubmagmaWithObjectsElementsTable( <mag>, <A> )  
#O  SubmagmaWithObjectsByElementsTable( <swo>, <A> )  

DeclareOperation( "IsSubmagmaWithObjectsGeneratingTable", [IsMagma,IsList] );
DeclareOperation( "SubmagmaWithObjectsElementsTable", [IsMagma,IsList] );
DeclareOperation( "SubmagmaWithObjectsByElementsTable", 
    [ IsMagmaWithObjects, IsList ] );


################################ UTILITIES ################################## 

############################################################################# 
##                         
#O  Ancestor( <dwo> ) 
## 
DeclareOperation( "Ancestor", [ IsDomainWithObjects ] ); 

##############################  DOUBLE GROUPOIDS  ########################### 

#C  IsDoubleGroupoidElement( <elt> ) 
#V  IsDoubleGroupoidElementFamily . . family for elements of double groupoids
#T  IdDoubleGroupoidElementType default type for elements of double groupoids 
## 
DeclareCategory( "IsDoubleGroupoidElement", 
    IsMultiplicativeElementWithObjectsAndInverses ); 
DeclareCategoryCollections( "IsDoubleGroupoidElement" ); 
BindGlobal( "IsDoubleGroupoidElementFamily", 
    NewFamily( "IsDoubleGroupoidElementFamily", IsDoubleGroupoidElement, 
               CanEasilySortElements, CanEasilySortElements ) ); 
BindGlobal( "IsDoubleGroupoidElementType", 
    NewType( IsDoubleGroupoidElementFamily, IsDoubleGroupoidElement ) );



¤ Dauer der Verarbeitung: 0.5 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.