1##############################################################################
2##
3#W  gp2map.gd                   GAP4 package `XMod'              Chris Wensley
4#W                                                                 & Murat Alp
5#Y  Copyright (C) 2001-2019, Chris Wensley et al,
6#Y  School of Computer Science, Bangor University, U.K.
7##
8##  This file contains implementations of 2DimensionalMappings
9##  for crossed modules and cat1-groups.
10##
11
12#############################################################################
13##
14#F  PreXModMorphism( <args> )
15#O  PreXModMorphismByGroupHomomorphisms( <src>, <rng>, <srchom>, <rnghom> )
16#F  PreCat1GroupMorphism( <args> )
17#O  PreCat1GroupMorphismByGroupHomomorphisms( <src>, <rng>, <srchom>, <rnghom> )
18##
19DeclareGlobalFunction( "PreXModMorphism" );
20DeclareOperation( "PreXModMorphismByGroupHomomorphisms",
21    [ IsPreXMod, IsPreXMod, IsGroupHomomorphism, IsGroupHomomorphism ] );
22DeclareGlobalFunction( "PreCat1GroupMorphism" );
23DeclareOperation( "PreCat1GroupMorphismByGroupHomomorphisms",
24    [ IsPreCat1Group, IsPreCat1Group, IsGroupHomomorphism,
25      IsGroupHomomorphism ] );
26
27#############################################################################
28##
29#O  Is2DimensionalGroupMorphismData( <list> )
30#O  Make2DimensionalGroupMorphism( <list> )
31##
32##  A pre-crossed module or pre-cat1-group morphism is a pair of commuting
33##  group homomorphisms: at this stage actions not checked
34##
35DeclareOperation( "Is2DimensionalGroupMorphismData", [ IsList ] );
36DeclareOperation( "Make2DimensionalGroupMorphism", [ IsList ] );
37
38#############################################################################
39##
40#F  XModMorphism( <args> )
41#O  XModMorphismByGroupHomomorphisms( <src>, <rng>, <srchom>, <rnghom> )
42#F  Cat1GroupMorphism( <args> )
43#O  Cat1GroupMorphismByGroupHomomorphisms( <src>, <rng>, <srchom>, <rnghom> )
44#O  InclusionMorphism2DimensionalDomains( <obj>, <sub> )
45##
46DeclareGlobalFunction( "XModMorphism" );
47DeclareOperation( "XModMorphismByGroupHomomorphisms",
48    [ IsXMod, IsXMod, IsGroupHomomorphism, IsGroupHomomorphism ] );
49DeclareGlobalFunction( "Cat1GroupMorphism" );
50DeclareOperation( "Cat1GroupMorphismByGroupHomomorphisms",
51    [ IsCat1Group, IsCat1Group, IsGroupHomomorphism, IsGroupHomomorphism ] );
52DeclareOperation( "InclusionMorphism2DimensionalDomains",
53    [ Is2DimensionalDomain, Is2DimensionalDomain ] );
54
55#############################################################################
56##
57#O  InnerAutomorphismXMod( <XM>, <r> )
58#O  InnerAutomorphismCat1Group( <C1G>, <r> )
59##
60DeclareOperation( "InnerAutomorphismXMod",
61    [ IsPreXMod, IsMultiplicativeElementWithInverse ] );
62DeclareOperation( "InnerAutomorphismCat1Group",
63    [ IsPreCat1Group, IsMultiplicativeElementWithInverse ] );
64
65#############################################################################
66##
67#P  IsEndomorphism2DimensionalDomain( <mor> )
68#P  IsAutomorphism2DimensionalDomain( <mor> )
69##
70DeclareProperty( "IsEndomorphism2DimensionalDomain", Is2DimensionalMapping );
71DeclareProperty( "IsAutomorphism2DimensionalDomain", Is2DimensionalMapping );
72
73#############################################################################
74##
75#P  IsPermPreXModMorphism( <mor> )
76#P  IsPermPreCat1GroupMorphism( <mor> )
77##
78DeclareProperty( "IsPermPreXModMorphism", IsPreXModMorphism );
79DeclareProperty( "IsPermPreCat1GroupMorphism", IsPreCat1GroupMorphism );
80
81#############################################################################
82##
83#A  ReverseIsomorphism( <PCG> )
84#O  CompositionMorphism( <mor2>, <mor1> )
85##
86DeclareAttribute( "ReverseIsomorphism", IsPreCat1Group );
87DeclareOperation( "CompositionMorphism", [ Is2DimensionalMapping, Is2DimensionalMapping ] );
88
89#############################################################################
90##
91#P  IsSourceMorphism( <mor> )
92#O  PreXModBySourceHom( <mor> )
93##
94DeclareProperty( "IsSourceMorphism", IsPreXModMorphism );
95DeclareOperation( "PreXModBySourceHom", [ IsPreXModMorphism ] );
96
97#############################################################################
98##
99#A  XModMorphismOfCat1GroupMorphism( <mor> )
100#A  Cat1GroupMorphismOfXModMorphism( <mor> )
101##
102DeclareAttribute( "XModMorphismOfCat1GroupMorphism", IsCat1GroupMorphism );
103DeclareAttribute( "Cat1GroupMorphismOfXModMorphism", IsXModMorphism );
104
105#############################################################################
106##
107#O  IsomorphismByIsomorphisms( <n-dim-obj>, <list> )
108#A  IsomorphismPerm2DimensionalGroup( <obj> )
109#A  IsomorphismFp2DimensionalGroup( <obj> )
110#A  IsomorphismPc2DimensionalGroup( <obj> )
111##
112DeclareOperation( "IsomorphismByIsomorphisms", [ IsObject, IsList ] );
113DeclareAttribute( "IsomorphismPerm2DimensionalGroup", Is2DimensionalGroup );
114DeclareAttribute( "IsomorphismFp2DimensionalGroup", Is2DimensionalGroup );
115DeclareAttribute( "IsomorphismPc2DimensionalGroup", Is2DimensionalGroup );
116
117#############################################################################
118##
119#A  IsomorphismXModByNormalSubgroup( <xmod> )
120##
121DeclareAttribute( "IsomorphismXModByNormalSubgroup", IsXMod );
122
123#############################################################################
124##
125#F  SmallerDegreePerm2DimensionalGroup( <args> )
126#A  SmallerDegreePermPreXMod( <XM> )
127##
128DeclareGlobalFunction( "SmallerDegreePerm2DimensionalGroup" );
129DeclareAttribute( "SmallerDegreePermPreXMod", IsPreXMod );
130
131#############################################################################
132##
133#O  IsomorphismPreCat1Groups( <precat1>, <precat1> )
134#O  IsomorphismCat1Groups( <cat1>, <cat1> )
135##
136DeclareOperation( "IsomorphismPreCat1Groups",
137    [ IsPreCat1Group, IsPreCat1Group ] );
138DeclareOperation( "IsomorphismCat1Groups", [ IsCat1Group, IsCat1Group ] );
139
140#############################################################################
141##
142#A  MorphismOfPullback( <xmod> )
143##
144DeclareAttribute( "MorphismOfPullback", IsXMod );
145
146#############################################################################
147##
148#O  AllCat1GroupMorphisms( <cat1>, <cat1> )
149##
150DeclareOperation( "AllCat1GroupMorphisms", [ IsCat1Group, IsCat1Group ] );
151