1#############################################################################
2##
3#W  rcwamono.gd                GAP4 Package `RCWA'                Stefan Kohl
4##
5##  This file contains declarations of functions, operations etc. for
6##  computing with rcwa monoids.
7##
8##  See the definitions given in the file rcwamap.gd.
9##
10#############################################################################
11
12#############################################################################
13##
14#C  IsRcwaMonoidOverZ . . . . . . . . . . . . . . . . . . rcwa monoids over Z
15#C  IsRcwaMonoidOverZxZ . . . . . . . . . . . . . . . . rcwa monoids over Z^2
16#C  IsRcwaMonoidOverZ_pi  . . . . . . . . . . . . .  rcwa monoids over Z_(pi)
17#C  IsRcwaMonoidOverGFqx  . . . . . . . . . . . .  rcwa monoids over GF(q)[x]
18#C  IsRcwaMonoidOverZOrZ_pi . . . . . . . . . . rcwa monoids over Z or Z_(pi)
19##
20##  The category of all rcwa monoids over Z, over Z^2, over semilocalizations
21##  of Z or over polynomial rings in one variable over a finite field,
22##  respectively. The category `IsRcwaMonoidOverZOrZ_pi' is the union of
23##  `IsRcwaMonoidOverZ' and `IsRcwaMonoidOverZ_pi'.
24##
25DeclareSynonym( "IsRcwaMonoidOverZ",
26                 CategoryCollections(IsRcwaMappingOfZ) and IsMonoid );
27DeclareSynonym( "IsRcwaMonoidOverZxZ",
28                 CategoryCollections(IsRcwaMappingOfZxZ) and IsMonoid );
29DeclareSynonym( "IsRcwaMonoidOverZ_pi",
30                 CategoryCollections(IsRcwaMappingOfZ_pi) and IsMonoid );
31DeclareSynonym( "IsRcwaMonoidOverGFqx",
32                 CategoryCollections(IsRcwaMappingOfGFqx) and IsMonoid );
33DeclareSynonym( "IsRcwaMonoidOverZOrZ_pi",
34                 CategoryCollections(IsRcwaMappingOfZOrZ_pi) and IsMonoid );
35
36#############################################################################
37##
38#V  TrivialRcwaMonoidOverZ . . . . . . . . . . . . trivial rcwa monoid over Z
39##
40DeclareGlobalVariable( "TrivialRcwaMonoidOverZ" );
41
42#############################################################################
43##
44#O  RcwaCons( <R> ) . . . . . . . . . . . . . . . . . .  Rcwa( R ) for ring R
45#F  Rcwa( <R> )
46##
47##  The monoid formed by all rcwa mappings of <R>.
48##
49DeclareConstructor( "RcwaCons", [ IsRcwaMonoid, IsDomain ] );
50DeclareGlobalFunction( "Rcwa" );
51
52#############################################################################
53##
54#P  IsNaturalRcwa( <M> ) . . . . . . . . . . . . . . . . . . . . .  Rcwa( R )
55##
56DeclareProperty( "IsNaturalRcwa", IsRcwaMonoid );
57
58#############################################################################
59##
60#A  ModulusOfRcwaMonoid( <M> ) . . . . . . . . modulus of the rcwa monoid <M>
61##
62##  We define the *modulus* of an rcwa monoid by the lcm of the moduli of its
63##  elements in case such an lcm exists, and by 0 otherwise.
64##
65DeclareAttribute( "ModulusOfRcwaMonoid", IsRcwaMonoid );
66
67#############################################################################
68##
69#O  Ball( <M>, <f>, <r> )    ball of radius <r> around the element <f> of <M>
70#O  Ball( <M>, <p>, <r>, <act> )   "    the point <p> under the action of <M>
71#O  Ball( <M>, <p>, <r> ) . . .  as above, where <act> defaults to `OnPoints'
72#O  RestrictedBall( <M>, <f>, <r>, <modulusbound> ) . . . . "restricted" ball
73#O  RestrictedBall( <M>, <p>, <r>, <act>, <bound> ) . . . . . . . . .  (dito)
74#O  RestrictedBall( <M>, <p>, <r>, <bound> )  . . . . . . . . . . . .  (dito)
75#O  RestrictedBall( <M>, <f>, <r>, <bounds> ) . . . . . . . . . . . .  (dito)
76##
77##  The first variant returns the ball of radius <r> about the element <f>
78##  of <M>.
79##
80##  The second variant returns the ball of radius <r> about the point <p>
81##  under the action of <M>.
82##
83##  The third variant is the same as the second --
84##  <act> defaults to `OnPoints'.
85##
86##  The fourth variant does the same as the first except that it stops
87##  where extending the ball would yield elements whose moduli exceed the
88##  bound <modulusbound>.
89##
90##  The fifth variant does the same as the second except that it stops
91##  where further extending the ball would yield points which exceed the
92##  bound <bound> in absolute value. If the points are tuples, then the
93##  bound applies to all coordinates.
94##
95##  The sixth variant is the fifth -- <act> defaults to `OnPoints'.
96##
97##  All balls are understood w.r.t. the stored generators of the monoid <M>,
98##  respectively w.r.t. the stored generators and their inverses if <M> is
99##  actually a group.
100##
101##  An option `Spheres' is recognized. If set, the returned ball is split
102##  into a list of spheres.
103##
104DeclareOperation( "Ball", [ IsMonoid, IsObject, IsInt ] );
105DeclareOperation( "Ball", [ IsMonoid, IsObject, IsInt, IsFunction ] );
106DeclareOperation( "RestrictedBall",
107                  [ IsMonoid, IsObject, IsObject, IsObject ] );
108DeclareOperation( "RestrictedBall",
109                  [ IsMonoid, IsObject, IsObject, IsObject, IsObject ] );
110
111#############################################################################
112##
113#O  ShortOrbits( <G>, <S>, <maxlng> ) . . . .  short orbits of rcwa group <G>
114#O  ShortOrbits( <G>, <S>, <maxlng>, <maxn> ) . dito, with upper bound <maxn>
115#O  ShortOrbits( <M>, <S>, <maxlng> ) short forward orbits of rcwa monoid <M>
116##
117##  In the first case, this operation returns a list of all finite orbits of
118##  the rcwa group <G> of length <= <maxlng>, which intersect nontrivially
119##  with the set <S>.
120##  In the second case, it returns a list of all such orbits which do not
121##  contain a point larger than <maxn>.
122##  In the third case, it returns a list of all finite forward orbits with
123##  starting point within the set <S>, of length <= <maxlng>.
124##
125DeclareOperation( "ShortOrbits", [ IsMonoid, IsListOrCollection, IsInt ] );
126DeclareOperation( "ShortOrbits", [ IsMonoid, IsListOrCollection, IsInt,
127                                   IsInt ] );
128
129#############################################################################
130##
131#E  rcwamono.gd . . . . . . . . . . . . . . . . . . . . . . . . . . ends here