<Index Key="View" Subkey="for an rcwa monoid"><C>View</C></Index>
<Index Key="Display" Subkey="for an rcwa monoid"><C>Display</C></Index>
<Index Key="Print" Subkey="for an rcwa monoid"><C>Print</C></Index>
<Index Key="String" Subkey="for an rcwa monoid"><C>String</C></Index>
There are methods for the operations <C>View</C>, <C>Display</C>,
<C>Print</C> and <C>String</C> which are applicable to rcwa monoids.
All rcwa monoids over a ring <M>R</M> are submonoids of Rcwa(<M>R</M>).
The monoid Rcwa(<M>R</M>) itself is not finitely generated, thus cannot
be constructed as described above. It is handled as a special case:
<ManSection>
<Func Name="Rcwa" Arg="R"
Label="the monoid formed by all rcwa mappings of a ring"/>
<Returns>
the monoid Rcwa(<A>R</A>) of all residue-class-wise affine
mappings of the ring <A>R</A>.
</Returns>
<Description>
<Example>
<![CDATA[
gap> RcwaZ := Rcwa(Integers);
Rcwa(Z)
gap> IsSubset(RcwaZ,M);
true
]]>
</Example>
</Description>
</ManSection>
<Index Key="Restriction"
Subkey="for an rcwa monoid, by an injective rcwa mapping">
<C>Restriction</C>
</Index>
<Index Key="Induction"
Subkey="for an rcwa monoid, by an injective rcwa mapping">
<C>Induction</C>
</Index>
In our methods to construct rcwa groups, two kinds of mappings played
a crucial role, namely the restriction monomorphisms (cf. <Ref
Oper="Restriction" Label="of an rcwa group, by an injective rcwa mapping"/>)
and the induction epimorphisms (cf. <Ref Oper="Induction"
Label="of an rcwa group, by an injective rcwa mapping"/>).
The restriction monomorphisms extend in a natural way to the monoids
Rcwa(<M>R</M>), and the induction epimorphisms have corresponding
generalizations, also. Therefore the operations <C>Restriction</C>
and <C>Induction</C> can be applied to rcwa monoids as well:
<Example>
<![CDATA[
gap> M2 := Restriction(M,2*One(Rcwa(Integers)));
<rcwa monoid over Z with 2 generators, of size 11>
gap> Support(M2);
0(2)
gap> Action(M2,ResidueClass(1,2));
Trivial rcwa monoid over Z
gap> Induction(M2,2*One(Rcwa(Integers))) = M;
true
]]>
</Example>
<Section Label="sec:ComputingWithRcwaMonoids">
<Heading>Computing with residue-class-wise affine monoids</Heading>
<Index Key="Size" Subkey="for an rcwa monoid"><C>Size</C></Index>
<Index Key="rcwa monoids" Subkey="membership test">
<C>rcwa monoids</C>
</Index>
<Index Key="IsSubset" Subkey="for two rcwa monoids"><C>IsSubset</C></Index>
There is a method for <C>Size</C> which computes the order of an rcwa monoid.
Further there is a method for <C>in</C> which checks whether a given
rcwa mapping lies in a given rcwa monoid (membership test), and there
is a method for <C>IsSubset</C> which checks for a submonoid relation. <P/>
<Index Key="Support" Subkey="of an rcwa monoid"><C>Support</C></Index>
<Index Key="Modulus" Subkey="of an rcwa monoid"><C>Modulus</C></Index>
<Index Key="IsTame" Subkey="for an rcwa monoid"><C>IsTame</C></Index>
<Index Key="PrimeSet" Subkey="of an rcwa monoid"><C>PrimeSet</C></Index>
<Index Key="IsIntegral" Subkey="for an rcwa monoid"><C>IsIntegral</C></Index>
<Index Key="IsClassWiseOrderPreserving" Subkey="for an rcwa monoid">
<C>IsClassWiseOrderPreserving</C>
</Index>
<Index Key="IsSignPreserving" Subkey="for an rcwa monoid">
<C>IsSignPreserving</C>
</Index>
There are also methods for <C>Support</C>, <C>Modulus</C>, <C>IsTame</C>,
<C>PrimeSet</C>, <C>IsIntegral</C>, <C>IsClassWiseOrderPreserving</C> and
<C>IsSignPreserving</C> available for rcwa monoids. <P/>
The <E>support</E> of an rcwa monoid is the union of the supports of
its elements. The <E>modulus</E> of an rcwa monoid is the lcm of the
moduli of its elements in case such an lcm exists and 0 otherwise.
An rcwa monoid is called <E>tame</E> if its modulus is nonzero, and
<E>wild</E> otherwise. The <E>prime set</E> of an rcwa monoid is the
union of the prime sets of its elements. An rcwa monoid is called
<E>integral</E>, <E>class-wise order-preserving</E> or <E>sign-preserving</E>
if all of its elements are so.
Balls of given radius around an element of an rcwa monoid can be computed
by the operation <C>Ball</C>. This operation can also be used for computing
forward orbits or subsets of such under the action of an rcwa monoid:
<ManSection>
<Heading>
Ball (for monoid, element and radius or monoid, point, radius and action)
</Heading>
<Meth Name ="Ball"
Arg="M, f, r" Label="for monoid, element and radius"/>
<Meth Name ="Ball"
Arg="M, p, r, action" Label="for monoid, point, radius and action"/>
<Returns>
the ball of radius <A>r</A> around the element <A>f</A> in
the monoid <A>M</A>, respectively
the ball of radius <A>r</A> around the point <A>p</A> under
the action <A>action</A> of the monoid <A>M</A>.
</Returns>
<Description>
All balls are understood with respect to <C>GeneratorsOfMonoid(<A>M</A>)</C>.
As membership tests can be expensive, the first-mentioned method does not
check whether <A>f</A> is indeed an element of <A>M</A>.
The methods require that point- / element comparisons are cheap.
They are not only applicable to rcwa monoids.
If the option <A>Spheres</A> is set, the ball is split up and
returned as a list of spheres.
<Example>
<![CDATA[
gap> List([0..12],k->Length(Ball(N,One(N),k)));
[ 1, 4, 11, 26, 53, 99, 163, 228, 285, 329, 354, 364, 366 ]
gap> Ball(N,[0..3],2,OnTuples);
[ [ -3, 3, 3, 3 ], [ -1, -3, 0, 2 ], [ -1, -1, -1, -1 ],
[ -1, -1, 1, -1 ], [ -1, 1, 1, 1 ], [ -1, 3, 0, -4 ], [ 0, -1, 2, -3 ],
[ 0 .. 3 ], [ 1, -1, -1, -1 ], [ 1, 3, 0, 2 ], [ 3, -4, -1, 0 ] ]
gap> l := 2*IdentityRcwaMappingOfZ; r := l+1;
Rcwa mapping of Z: n -> 2n
Rcwa mapping of Z: n -> 2n + 1
gap> Ball(Monoid(l,r),1,4,OnPoints:Spheres);
[ [ 1 ], [ 2, 3 ], [ 4, 5, 6, 7 ], [ 8, 9, 10, 11, 12, 13, 14, 15 ],
[ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 ] ]
]]>
</Example>
</Description>
</ManSection>
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 ist noch experimentell.