Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

610956 views
1
2
4 Residue-Class-Wise Affine Monoids
3
4
In this short chapter, we describe how to compute with residue-class-wise
5
affine monoids. Residue-class-wise affine monoids, or rcwa monoids for
6
short, are monoids whose elements are residue-class-wise affine mappings.
7
8
9
4.1 Constructing residue-class-wise affine monoids
10
11
As any other monoids in GAP, residue-class-wise affine monoids can be
12
constructed by Monoid or MonoidByGenerators.
13
14
 Example 
15

16
gap> M := Monoid(RcwaMapping([[ 0,1,1],[1,1,1]]),
17
>  RcwaMapping([[-1,3,1],[0,2,1]]));
18
<rcwa monoid over Z with 2 generators>
19
gap> Size(M);
20
11
21
gap> Display(MultiplicationTable(M));
22
[ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ], 
23
 [ 2, 8, 5, 11, 8, 3, 10, 5, 2, 8, 5 ], 
24
 [ 3, 10, 11, 5, 5, 5, 8, 8, 8, 2, 3 ], 
25
 [ 4, 9, 6, 8, 8, 8, 5, 5, 5, 7, 4 ], 
26
 [ 5, 8, 5, 8, 8, 8, 5, 5, 5, 8, 5 ], 
27
 [ 6, 7, 4, 8, 8, 8, 5, 5, 5, 9, 6 ], 
28
 [ 7, 5, 8, 6, 5, 4, 9, 8, 7, 5, 8 ], 
29
 [ 8, 5, 8, 5, 5, 5, 8, 8, 8, 5, 8 ], 
30
 [ 9, 5, 8, 4, 5, 6, 7, 8, 9, 5, 8 ], 
31
 [ 10, 8, 5, 3, 8, 11, 2, 5, 10, 8, 5 ], 
32
 [ 11, 2, 3, 5, 5, 5, 8, 8, 8, 10, 11 ] ]
33

34

35
36
There are methods for the operations View, Display, Print and String which
37
are applicable to rcwa monoids. All rcwa monoids over a ring R are
38
submonoids of Rcwa(R). The monoid Rcwa(R) itself is not finitely generated,
39
thus cannot be constructed as described above. It is handled as a special
40
case:
41
42
4.1-1 Rcwa
43
44
Rcwa( R )  function
45
Returns: the monoid Rcwa(R) of all residue-class-wise affine mappings of
46
the ring R.
47
48
 Example 
49

50
gap> RcwaZ := Rcwa(Integers);
51
Rcwa(Z)
52
gap> IsSubset(RcwaZ,M);
53
true
54

55

56
57
In our methods to construct rcwa groups, two kinds of mappings played a
58
crucial role, namely the restriction monomorphisms (cf. Restriction (3.1-6))
59
and the induction epimorphisms (cf. Induction (3.1-7)). The restriction
60
monomorphisms extend in a natural way to the monoids Rcwa(R), and the
61
induction epimorphisms have corresponding generalizations, also. Therefore
62
the operations Restriction and Induction can be applied to rcwa monoids as
63
well:
64
65
 Example 
66

67
gap> M2 := Restriction(M,2*One(Rcwa(Integers)));
68
<rcwa monoid over Z with 2 generators, of size 11>
69
gap> Support(M2);
70
0(2)
71
gap> Action(M2,ResidueClass(1,2));
72
Trivial rcwa group over Z
73
gap> Induction(M2,2*One(Rcwa(Integers))) = M;
74
true
75

76

77
78
79
4.2 Computing with residue-class-wise affine monoids
80
81
There is a method for Size which computes the order of an rcwa monoid.
82
Further there is a method for in which checks whether a given rcwa mapping
83
lies in a given rcwa monoid (membership test), and there is a method for
84
IsSubset which checks for a submonoid relation.
85
86
There are also methods for Support, Modulus, IsTame, PrimeSet, IsIntegral,
87
IsClassWiseOrderPreserving and IsSignPreserving available for rcwa monoids.
88
89
The support of an rcwa monoid is the union of the supports of its elements.
90
The modulus of an rcwa monoid is the lcm of the moduli of its elements in
91
case such an lcm exists and 0 otherwise. An rcwa monoid is called tame if
92
its modulus is nonzero, and wild otherwise. The prime set of an rcwa monoid
93
is the union of the prime sets of its elements. An rcwa monoid is called
94
integral, class-wise order-preserving or sign-preserving if all of its
95
elements are so.
96
97
 Example 
98

99
gap> f1 := RcwaMapping([[-1, 1, 1],[ 0,-1, 1]]);;
100
gap> f2 := RcwaMapping([[ 1,-1, 1],[-1,-2, 1],[-1, 2, 1]]);; 
101
gap> f3 := RcwaMapping([[ 1, 0, 1],[-1, 0, 1]]);; 
102
gap> N := Monoid(f1,f2,f3);;
103
gap> Size(N);
104
366
105
gap> List([Monoid(f1,f2),Monoid(f1,f3),Monoid(f2,f3)],Size);
106
[ 96, 6, 66 ]
107
gap> f1*f2*f3 in N;
108
true
109
gap> IsSubset(N,M);
110
false
111
gap> IsSubset(N,Monoid(f1*f2,f3*f2));
112
true
113
gap> Support(N);
114
Integers
115
gap> Modulus(N);
116
6
117
gap> IsTame(N) and IsIntegral(N);
118
true
119
gap> IsClassWiseOrderPreserving(N) or IsSignPreserving(N);
120
false
121
gap> Collected(List(AsList(N),Image)); # The images of the elements of N.
122
[ [ Integers, 2 ], [ 1(2), 2 ], [ Z \ 1(3), 32 ], [ 0(6), 44 ], 
123
 [ 0(6) U 1(6), 4 ], [ Z \ 4(6) U 5(6), 32 ], [ 0(6) U 2(6), 4 ], 
124
 [ 0(6) U 5(6), 4 ], [ 1(6), 44 ], [ 1(6) U [ -1 ], 2 ], 
125
 [ 1(6) U 3(6), 4 ], [ 1(6) U 5(6), 40 ], [ 2(6), 44 ], 
126
 [ 2(6) U 3(6), 4 ], [ 3(6), 44 ], [ 3(6) U 5(6), 4 ], [ 5(6), 44 ], 
127
 [ 5(6) U [ 1 ], 2 ], [ [ -5 ], 1 ], [ [ -4 ], 1 ], [ [ -3 ], 1 ], 
128
 [ [ -1 ], 1 ], [ [ 0 ], 1 ], [ [ 1 ], 1 ], [ [ 2 ], 1 ], [ [ 3 ], 1 ], 
129
 [ [ 5 ], 1 ], [ [ 6 ], 1 ] ]
130

131

132
133
Finite forward orbits under the action of an rcwa monoid can be found by the
134
operation ShortOrbits:
135
136
4.2-1 ShortOrbits
137
138
ShortOrbits( M, S, maxlng )  method
139
Returns: a list of finite forward orbits of the rcwa monoid M of length at
140
most maxlng which start at points in the set S.
141
142
 Example 
143

144
gap> ShortOrbits(M,[-5..5],20);
145
[ [ -5, -4, 1, 2, 7, 8 ], [ -3, -2, 1, 2, 5, 6 ], [ -1, 0, 1, 2, 3, 4 ] ]
146
gap> Print(Action(M,last[1]),"\n");
147
Monoid( [ Transformation( [ 2, 3, 4, 3, 6, 3 ] ), 
148
 Transformation( [ 4, 5, 4, 3, 4, 1 ] ) ] )
149
gap> orbs := ShortOrbits(N,[0..10],100);
150
[ [ -5, -4, -3, -1, 0, 1, 2, 3, 5, 6 ], 
151
 [ -11, -10, -9, -7, -6, -5, -4, -3, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
152
 11, 12 ], 
153
 [ -17, -16, -15, -13, -12, -11, -10, -9, -7, -6, -5, -4, -3, -1, 0, 1, 
154
 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18 ] ]
155
gap> quots := List(orbs,orb->Action(N,orb));;
156
gap> List(quots,Size);
157
[ 268, 332, 366 ]
158

159

160
161
Balls of given radius around an element of an rcwa monoid can be computed by
162
the operation Ball. This operation can also be used for computing forward
163
orbits or subsets of such under the action of an rcwa monoid:
164
165
166
4.2-2 Ball (for monoid, element and radius or monoid, point, radius and
167
action)
168
169
Ball( M, f, r )  method
170
Ball( M, p, r, action )  method
171
Returns: the ball of radius r around the element f in the monoid M,
172
respectively the ball of radius r around the point p under the
173
action action of the monoid M.
174
175
All balls are understood with respect to GeneratorsOfMonoid(M). As
176
membership tests can be expensive, the first-mentioned method does not check
177
whether f is indeed an element of M. The methods require that point- /
178
element comparisons are cheap. They are not only applicable to rcwa monoids.
179
If the option Spheres is set, the ball is split up and returned as a list of
180
spheres.
181
182
 Example 
183

184
gap> List([0..12],k->Length(Ball(N,One(N),k)));
185
[ 1, 4, 11, 26, 53, 99, 163, 228, 285, 329, 354, 364, 366 ]
186
gap> Ball(N,[0..3],2,OnTuples);
187
[ [ -3, 3, 3, 3 ], [ -1, -3, 0, 2 ], [ -1, -1, -1, -1 ], 
188
 [ -1, -1, 1, -1 ], [ -1, 1, 1, 1 ], [ -1, 3, 0, -4 ], [ 0, -1, 2, -3 ], 
189
 [ 0, 1, 2, 3 ], [ 1, -1, -1, -1 ], [ 1, 3, 0, 2 ], [ 3, -4, -1, 0 ] ]
190
gap> l := 2*IdentityRcwaMappingOfZ; r := l+1;
191
Rcwa mapping of Z: n -> 2n
192
Rcwa mapping of Z: n -> 2n + 1
193
gap> Ball(Monoid(l,r),1,4,OnPoints:Spheres);
194
[ [ 1 ], [ 2, 3 ], [ 4, 5, 6, 7 ], [ 8, 9, 10, 11, 12, 13, 14, 15 ], 
195
 [ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 ] ]
196

197

198
199
200