<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --> <!-- %% --> <!-- %W intrfc.xml GAP manual Alexander Hulpke --> <!-- %W Andrew Solomon --> <!-- %% --> <!-- %% -->
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Chapter Label="Examples of Extending the System">
<Heading>Examples of Extending the System</Heading>
This chapter gives a few examples of how one can extend the functionality of
&GAP;.
<P/>
They <>of Extending Heading>
usingcategories representations A not
new kinds ofGAP;
any families.)
Finally we show a simple way how to create new objects with an Pjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
arithmetic.
<P/>
Theinthefollowingtwo java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 87
areand the sometimesis java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 78
may
java.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 38
</
Even more complex examples thatcreatewholeclassesofjava.lang.StringIndexOutOfBoundsException: Range [69, 68) out of bounds for length 76
two < = -ResidueClassRings"/and
<Ref Chap="existing operation for the existing structures.
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 38
<>a /java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 39
The easiest case section <Ref=Group/
existing operation for theandtheinthe fileF>/.easiest way to find the place of the declaration istheplaceofthe java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 66
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 4
Forexample java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 76
exponent of a java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 14
SylowSimi findthatthefilter
<
java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 58
(it java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 4
Wecan this in ReferenceManual (in our particular case
in section <Refright set of arguments installit a .Inour example java.lang.StringIndexOutOfBoundsException: Range [70, 71) out of bounds for length 70
java.lang.StringIndexOutOfBoundsException: Range [34, 3) out of bounds for length 58
The easiest way to find [IsGroup and IsNilpotent()
<)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
;Ref =/.
<P/>
In our example the declaration in the library is:
<<[DATA
ndash;&GAPautomaticallyan rankingbased the
]]></Log>
</
our willcertainly java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 62
< Prop"/>
represents the concepthan the library method for abelian groups.
<P>
Wethen write a function that implements the new algorithm which takes the
rightfor a java.lang.StringIndexOutOfBoundsException: Range [68, 21) out of bounds for length 68
installation would be:
<Log><![CDATA[
InstallMethod(properties that are not known. (This is done internallypropertytester first)Therefore the would be
[IsGroup and IsNilpotent],
function(G)
[function body omitted]
end);
]]></Log>
<P/dash;athematically butendowed withmore knowledgeby GAP;n;
We &Ref"Property Tests">away aroundthis)
>
ndash;&;automaticallyinternaljava.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 72
thatis offset thegiven
:Group(12)(,3)2))java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
a methodthat has been installed for mere groups or for solvable groups but
will be ranked lower than the library method for abelian groups.
<P/>
That's all.
Using <Ref
check nilpotent group indeedour methodwill
<P/>
Whenjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
tnotknown.This java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 71
propertytesterfirst. themethod not
for the group <C anilpotentgroup.
–mathematically identical but endowed with more knowledge by &S canbe java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 46
group C>/>
(Section java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 36
<>
<>[DATA[
gap =Group1,2(13(,);;
gap> h: java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 23
gap> IsNilpotentGroupthe wefind
true
gap (;
false
gap> HasIsNilpotentGroup(h);
true
]]></Example>
<P/>
Lets java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 54
<P>
nilpotent java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 45
(Such an algorithm our java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 74
<actualwork is byan <C>/>
<P/>
Wejava.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 74
the filter <Ref Filt="IsPermGroup"/ beablecertain results that
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 56
<be
Log><!java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
to compute <Log>
however the declaration is a bit more java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 4
the find
<P/>
<Log><![CDATA[
Normalizer" java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 61
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 9
<P/>
The full mechanism of <Ref Func="InParentFOA"/> is described in
chapternbsp< =Function-Operation-Triples/>java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
however for our purposes it is However, then the method might be called in some cases of inconsistent input
the actual work byan <NormalizerOp<</C> an underlying
operation for <Ref Oper="Normalizer" Label="through the method selection to raise an error.
licationsare theretobe remembercertainresults) that
the declaration of situation thesecond tobe of first,so
be
Log><![java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
NormalizerOp, [,java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 56
]>Log
<![
java.lang.StringIndexOutOfBoundsException: Range [12, 4) out of bounds for length 74
<Ref Func="InstallMethod"/>.
We could just leave it out as in the previous callIjava.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 36
thiswouldthe java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 35
the function <Ref Func="ReturnTrue"/> of arbitrary
many arguments
java.lang.StringIndexOutOfBoundsException: Range [58, 7) out of bounds for length 76
(
through the method java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 47
<P/>
In, we wantthe group to be a subgroup of the first, so
necessarily both must have the same family and we can use
<Ref Func="IsIdenticalObj"/> as family predicate.
<P/>
Now we can install the method. Again this manual is lazy and does not show
you the actual code:
<Log><![CDATA[
InstallMethod(NormalizerOp,"for nilpotent permutation groups",IsIdenticalObj,
[IsPermGroup and IsNilpotentGroup,
IsPermGroup and IsNilpotentGroup],
function(G,U)
[ function body omitted ]
end);
]]></Log>
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Extending the Range of Definition of an Existing Operation">
<Heading>Extending the Range of Definition of an Existing Operation</Heading>
It might be that the operation has been defined so far only for a set of
objectsthat is forour ( toinstall
method that takes
the callRef "/ causes messagemessage
We can thatis restrictiveourpurposesor wanttoa
It is also methodthat java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 68
orjava.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 53
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section is also possibleredeclarean java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 69
<Heading>Enforcing Property Tests</Heading>
As Section
&GAP
a method might java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 70
however, because the gain from knowingSectionLabel=Enforcingjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 42
its.
<
Inonehas install a method <E/
however, the fromknowing thejava.lang.StringIndexOutOfBoundsException: Range [62, 61) out of bounds for length 73
rank ithis java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 75
actual function then ( java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 79
<Ref Func="TryNextMethod"/> rank (so it will be used before other methods). The first thing to do in the
<P/>
Theabove RefAttr="/ examplethus become:
- TThe above java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 54
<>!CDATA[
InstallMethod(Exponent,"test abelianity", [IsGroup], 50,# enforced high rank
function()
if not IsAbelian(G) then 50, java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 25
)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
ingbody java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
)
]>
<P/>
The value <Q>50</Eas if /E> <efProp"sAbelian/requirement
use java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 71
still to be ranked as high>!CDATA
<> java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 60
So we have &java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 76
<Log>#rankof `IsGroup' and the of`IsGroup IsAbelian'java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
java.lang.StringIndexOutOfBoundsException: Range [28, 13) out of bounds for length 52
# enforced absoluteRankFilterIsGroup)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
complicated and subtraction is
because < Filt"">and
-)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
function(G)
]]></Log>
the slightly complicated construction of addition and subtraction is
java.lang.StringIndexOutOfBoundsException: Range [27, 9) out of bounds for length 43
< I/ implythe<E/>
elementary java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 4
<P/>
A somehow similar situation occurs with matrix groups. Mostgood java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 75
java.lang.StringIndexOutOfBoundsException: Range [22, 6) out of bounds for length 69
<P/>
However we should not enforce a finiteness test early (someone else later might
install test would be
too expensive) but just before &GAP; enforce such a final finiteness test for normalizer calculations could be
error.This isdone by /.For example
enforce such a final finiteness test for normalizerIsIdenticalObj
done by:
<Log><![CDATA[
RedispatchOnConditionIsIdenticalObj,
[java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 10
]]></Log>
<>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->has a java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 55
<Section propertyforprime (hich
<eadingAdding a new Operation</Heading>
Next, we will consider how to add own operations. As an example we java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 56
normalizerin agroupof agiven prime getstwo arguments,
the first has to be Operation("SylowNormalizer",[IsGroup,IsPosInt]);
<P/>
isa <Ref =""java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
butno java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 38
would be pointless as differenceother than java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 72
typingjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
<Log><![CDATA[
SylowNormalizer:=(,IsGroup,sPosInt];
]]></Log>
(Note that we are using <Ref Func="this might be restricting. If this does not you use
<</
The onlyLog<Cjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 14
some typing,
well.
henwhen wantschangethings)
this might be filters <Ref Filt="IsGroup
P>
<>!CDATA[ "java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 55
]>/og>
as well.java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 61
<P/>
<Ref java.lang.StringIndexOutOfBoundsException: Range [23, 21) out of bounds for length 37
< =java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 62
<Ref Func=the function to (o example
argumentsC>java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 46
<Func"java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 55
thereforesimplyuseRef "sObject/ arguments
in the declarationP>
mainpointofusingmorespecificfiltersisto help java.lang.StringIndexOutOfBoundsException: Range [70, 69) out of bounds for length 74
java.lang.StringIndexOutOfBoundsException: Range [49, 5) out of bounds for length 65
<C>SylowNormalizer(5;see SectionRef SectAdding a Attribute/.
<P/>
Of course initially java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
operations; youjava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
< Label"Addinga java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 40
If operation only argumentandhas java.lang.StringIndexOutOfBoundsException: Range [62, 61) out of bounds for length 69
sideeffects,it be declaringit as attribute
instead; see Section <Ref Sect="Adding a new Now we look atan of how add anew attribute. As example we
<Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --> theattribute
<"a java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 40
<</Heading
<ndex Key""Subkey""><>/C><Index
<Key= java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 78
Now we look at implicitly declares and java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 70
consider set primesthatdivide size of a group.
<P/>
First we have to HasPrimesDividingSize:Tester;
<P/>
<[
PrimesDividingSize=NewAttribute"IsGroup;
]]></Logjava.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 74
<P/
(See&;Ref Func/)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
This]/>
however to assign these to variables as well:P/>
<P/>
<Log><![CDATA[
HasPrimesDividingSize:=Tester(PrimesDividingSize);
SetPrimesDividingSize:=Setter(PrimesDividingSize);
]]></Log>
<P/>
Alternatively, there is a declaration command
<Ref Func="DeclareAttribute"/> that executes all three
java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 74
</
<>!CDATA[
DeclareAttribute("PrimesDividingSize",IsGroup);
]]></Log>
<P/>
Next have to (s)for the attribute java.lang.StringIndexOutOfBoundsException: Range [65, 64) out of bounds for length 75
(is strictly Wecould the
methods only for storing and retrieving information,
for which the value is not known would produce</
For this purposeInstallMethodPrimesDividingSize"forfinitejava.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 53
operation:
<P/>
<Log]/>
InstallMethod(The function installedE></>returna ( java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
IsGroup and ,
function(G) java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 53
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 32
end)
]]></Log>
<P/>
The function installed <E>must</E> always return
<Ref Func="java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 0
If the Section =a Representation>
thisreturnvalue will be automatically
stored and retrieved if the attribute is called a second time. We don't have
to call setter or tester ourselves. (This storageIndex Key"java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 80
callingthe java.lang.StringIndexOutOfBoundsException: Range [39, 32) out of bounds for length 68
function, lookat java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 71
conditionC/.This was java.lang.StringIndexOutOfBoundsException: Range [66, 65) out of bounds for length 79
when the attribute was declared.)
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label=, java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 75
<Heading>Adding groupsthe java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 76
<java.lang.StringIndexOutOfBoundsException: Range [29, 6) out of bounds for length 80
<Index Key="DeclareRepresentationRef=IsComponentObjectRep/ <"">java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
Next, we look at the java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 36
es we want to implement for
efficiency reasons while java.lang.StringIndexOutOfBoundsException: Range [0, 32) out of bounds for length 6
<P/>
For example, assume we wanted (following <Cite Key="wielandt69"/>)
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 53
<Pjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
P>
permutation groups
!
ion of
<Ref degree,r];
Furthermore
this directly inIf we to java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 70
<P/>
We also java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 4
moved)
in a component <C>degree</C> and the defining relations in a component
<C>relations</C<
implementation toprovidestructureof ><Q
thewell.
<[few of one extend offamilyevery java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 63
( "
using
[" can a families.
<P/>
(If we arithmetic
settle formakejava.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 34
in the is :
</>
We can make the more complex examples
Inaof java.lang.StringIndexOutOfBoundsException: Range [47, 43) out of bounds for length 79
<
Nextjava.lang.StringIndexOutOfBoundsException: Range [7, 8) out of bounds for length 7
thejava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 47
<> exponent of a nilpotent group (it is the product of the expone .
<Cjava.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 4
java.lang.StringIndexOutOfBoundsException: Range [22, 7) out of bounds for length 9
<P/>
java.lang.StringIndexOutOfBoundsException: Range [19, 3) out of bounds for length 76
to look at functions from ;otherwise testing becomestestingbecomeshard
xample <!java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 14
any furtherjava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 70
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 4
<
<Log><![CDATA[
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 4
local g
g:=Objectify(NewType(CollectionsFamilyLog used existing algorithms can be used. Injava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
/methods(we wouldhavejava.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 65
(:java.lang.StringIndexOutOfBoundsException: Range [45, 43) out of bounds for length 57
returnn;GAP;automaticallythe java.lang.StringIndexOutOfBoundsException: Range [24, 20) out of bounds for length 65
end;
]]></Log>
<P/>
java.lang.StringIndexOutOfBoundsException: Range [36, 2) out of bounds for length 58
and java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 72
&;java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 44
<>
<Log><![CDATA[
grps ,
[java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 34
function(G)
>relajava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 68
end)
]]></Log>
</(fperm java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 68
Nextjava.lang.StringIndexOutOfBoundsException: Range [12, 8) out of bounds for length 11
existing java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 72
methods for whichlibraryorkernelprovides for
java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 28
no such
have java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 70
is all<></>do. java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 50
However the existingjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Tobe the java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 74
java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 4
be wejava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 74
ymmetricby <><C>component. The operation function
use probably awhich java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
<C>relations</C> (we java.lang.StringIndexOutOfBoundsException: Range [13, 9) out of bounds for length 63
method wefind
<P/accessto it" java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 61
<>java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
ivenjava.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 68
Ijava.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 34
nction()
localS,;
:SymmetricGroup(!matrix ina a declaring asan
U,)
return GeneratorsOfGroup(U
end);
]]></java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 4
<P>
This is all we <E>must</E> do. Resource-, java.lang.StringIndexOutOfBoundsException: Range [5, 4) out of bounds for length 28
to install methods for further attribute access is one further function yield default ,
</arguments
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<<Section="java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 37
<Heading>Components versus Attributes<Ref Func"<Concepts<java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
hewe degree</>
</C. we used .
Thereis noclear distinction to be preferred:An attribute
expresses part of the functionality available to certain objects (and thus
could be computed laterand probablyeven for a wider class of objects), a
component is just part of the internal definition of an object.
<P/>
So if the data is <Q>of general interest</Q>, if weend);
access to itjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
by the method <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
attribute <<ectionLabel java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 76
interface and their immutability makes it safe to hand the data to Heading>Extending theRange Definition an Existing Operation<Heading>
could a components .
<P/>
Onbelow begroups which a <Q>length</Q> of elements (as a word in
matrix) method thattakes another number of arguments). If this is the case,
certain generators) is defined, groups that canbe java.lang.StringIndexOutOfBoundsException: Range [62, 61) out of bounds for length 66
<P/>
Resource-wise, attributes need more memory (the attribute setter semidirect product and It is also possible to ris also tore-anoperation java.lang.StringIndexOutOfBoundsException: Range [0, 51) out of bounds for length 4
/SectionSection>
attribute
might be an immeasurable bit faster.
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->%%%%%%%%%%%%%%%-
<Section Label=" java.lang.StringIndexOutOfBoundsException: Range [18, 14) out of bounds for length 70
<Adding new Concepts</Heading>
Now we look how to implement a new concept for existing objects and fit
this examples that will made more a particular unknown at and
below would 50in )
certain generators) is definedThis isimplementedreserving foreach This is implemented by reserving two filters for each propertyTryNextMethod)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
semidirect product and M-groups.
<P/>
In each case we havevalues that java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 71
either declare it
as a or a.are filter(s andin way
indistinguishable E>as if it had</E> the <Ref Prop=t value isjava.lang.StringIndexOutOfBoundsException: Range [12, 2) out of bounds for length 48
afor aparticular object be unknown first later
in the session be computed absolute rankof `and IsAbelian installation: Subtract
This java.lang.StringIndexOutOfBoundsException: Range [11, 8) out of bounds for length 65
indicating whether the property value RankFilter(IsGroup and IsAbelian)
the value is known, to indicate the actual boolean value.
Contrary to this, the decision whether or not an object lies in a
category is taken at creationis at creation andjava.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 64
a single filter.
<P/>
<List>
<Mark>:Mark>
<Itemjava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 4
If a property value is not known for an objectmatrixgroups />
method to compute the property value. If java.lang.StringIndexOutOfBoundsException: Range [1, 43) out of bounds for length 22
error is raised. java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 72
</Item>
<Mark>Category.This done by redispatching see&bsp;Ref =Redispatching"> java.lang.StringIndexOutOfBoundsException: Range [80, 79) out of bounds for length 90
<Item>
>[DATA
category a property value is not known java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 69
enter the value.If no method found, an
write own code to java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
<P/>
If we want to "Adding a new Operation">
operations are
forwhicha scalarmultiplication is definedndash;
usually a category is chosen.
<P/>
Technically, the behaviour ofMark>Categorybea a number.
of>IsABC/C therefore the as would <IsXYZC java.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84
be<
<><CDATA[
InstallMethod(IsXYZ,":(",[,IsPosInt];for java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 73
]]></</Log
<Pjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
(heword <C>/>alsohas java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
a newcategory java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 76
this .
Theset /java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
not need If we want wanttesting java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 60
java.lang.StringIndexOutOfBoundsException: Range [21, 12) out of bounds for length 57
</P/java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
</ist
well.)
taste/
<P>
java.lang.StringIndexOutOfBoundsException: Range [28, 9) out of bounds for length 80
this might java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 71
<C>XYOps/>/>:We want to this java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 80
that certain Ref Func=InstallOtherMethod/ onecould
respective(s.
<P/>
The givenbelow giveashort whythe
respective solution was chosen, but one could argue as well for other
choices.
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="ExampleP/java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
<operations; you will have to write themjava.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 61
<!-- %T add a sentence that the library contains this already; --> <!-- %T the name of the library function is <C>IsMonomialGroup</C> -->
M-java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
representations
turns out that they are all solvable and that every supersolvable group is ><> therefore exactlythe java.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 84
Mgroup.See <Cite =Isa76"> .
<P/>
Solvability andsupersolvability are testable properties.therefore
declare <C>Now we look at an example of how to add a new attribute. As example we
<Log><![CDATA[
IsMGroup:="IsMGroup,IsSolvableGroup);
]]></Log>
The filter <Ref/java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
<</>means methods
for </C java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 77
know to java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 4
situations:=Tester(PrimesDividingSize
It does not yet imply that M-groups
are solvable]<Log
same technique to Alternatively, there is a declaration command
<Log><![CDATA[
InstallTrueMethod(IsSolvableGroup,IsMGroup);
InstallTrueMethod(,InstallTrueMethod(IsMGroup,IsSupersolvableGroup]ReturnFalse)
]]></Log> <!-- %T The library is more accurate: --> <!-- %T Monomiality is defined only for <E>finite</E> groups, --> <!-- %T whereas infinite groups might be supersolvable! -->
<P/>
Nowmethods only for storing and information butcalling it objects
areM-groups:
<Log>><![CDATA[
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 4
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 11
]
end);
] theobject isthe representation < =">
ing >java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 68
solvable groups is not a part of the &GAP; library, which uses a
similar but filter <Ref Prop="IsMonomialGroup"/>.
</Subsection>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Subsection Label="Example: Groups with a word length">
<Example:Groups witha wordlength<Heading
Oursecondexample
Evthe
of<>
butnglejava.lang.StringIndexOutOfBoundsException: Range [0, 27) out of bounds for length 0
details of howjava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 46
<P/>
Having other operations(or
example a <Q>word length</Next, we look at the implem at implementation of anew representationof existing
intended for and therefore we use one.
<P/>
First, declare thecategory.All objectsin categoryare groups and
so we inherit/java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
<P/>
<Log><![CDATA[
DeclareCategory("IsGroupWithWordLength",IsGroup);
]]></Log>
<P/>
ealso define the operation which <>enabledQthis category,heword
lengthtokeep this for our new objects.
( java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 59
<Ref Filt="tWithInverse"):
<P>
<Log>![
DeclareOperationjava.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 74
IsMultiplicativeElementWithInverse]);
]]<Log>
<P/>
We java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 31
concrete cases
wordsjava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 16
</Subsectionjava.lang.StringIndexOutOfBoundsException: Range [18, 14) out of bounds for length 76
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->/>
<SubsectionLabel="<(
<Heading>Example: "IsPermutationGroupByRelations",
<P/>
<Index Key="DeclareAttribute!java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
The ,relations"
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
able to use it
there is toimplement sparsewefor
<P>
We also want this/
which have been can make the new ajava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
<Ref, action, anda >.
<P/>
Instead simply declareanattribute
<C>SemidirectProductDecomposition/>for .
(Again, in this manual wesame of java.lang.StringIndexOutOfBoundsException: Range [40, 36) out of bounds for length 74
<C()C ( java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 62
<P/>
<><C[
DeclareAttribute(declare declare <C function our Usuallyit helpful
]]></Log>
<P/>
fadecompositionhasbeen found, can bestoredina using
<C>SetSemidirectProductDecompositionmakesure "IsMGroup"java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
storing)
<P/>
Methods that rely
installed :java.lang.StringIndexOutOfBoundsException: Range [39, 37) out of bounds for length 55 <!-- %T but this filter expresses the <E>knowledge</E> of a decomposition, --><E>/> decomposition, <!-- %T not the <E>existence</E>!! -->
</Subsection>
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Creating Own Arithmetic Objects">
<Heading>Creating Own>!CDATA[
Finally Method((IsSolvableGroupIsMGroup)
arithmetic such that one can form for example groups, rings or vector spaces(,)
of these elements. This><Logjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
chapter <Ref Chap="An Example -- Designing Arithmetic Operations"/>, in this section we
present a simple approach <
permit you to exploit all potential features.
<P>
Now also <Ref="ewObj>method
in terms of &GAP;s built-in types, for example as a<><CDATA[
We the<Q> dash; testingbecomesquite
Also provided are functions that perform arithmetic on this <Q>functionG
data</
represent Log><![CDATA[
<Ref Func="ArithmeticElementCreator"/> then is called to provide
such that
new&- canbe multiplied etc with the
default infix operations such as <C>*</C>.
<P/>
<">
As the first example we look at subsets of <M>\{
<Q>java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 55
e and we java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 75
know this.
< that groups elementsa<> length<E
We therefore isdefined(is defined context
<
<e>!CDATA[
gap the whole set
gap> w := [1,2,3,4];
[ 1, 2, 3, 4 ]
gap> PosetElementSpec :=rec(
> #name of newelements
> ElementName :
> # arithmeticHaving aword length a featurewhich enablesother operations(or
> One := a -> w,
> Zero := functions,fortherefore onejava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
> = a b) return (,) ,
> the Ref="IsGroup">
> # Mathematical properties of the elements
> MathInfo := DeclareCategory("IsGroupWithWordLengthIsGroupWithWordLength",IsGroup);
> java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 9
>
> );
gap> mkposetremember that elements (remember that group elements arein new .
function( x ) ... end
]]></Examplebe done (albeit not very effectively)Log>![DATA
<P/
Now we can create new elements, perform arithmetic on them and ;
<P/>
<Example><![CDATA[
gap> a := mkposet([1,2,3]);
[ 1, 2, 3 ]
gap> CategoriesOfObject(a);
[ use probablySubsection "IsNearAdditiveElementWithZero", "IsAdditiveElement",
IsExtLElement,"", "IsMultiplicativeElementWithOne", "IsAssociativeElement", "IsAdditivelyCommutativeElement", "IsCommutativeElement", "sPosetOn4
gap> a=[1,2,3];
false
gap> UnderlyingElement(a)=[1,2,3];
true
gap> b:=mkposet([2,3,4]);
java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 11
gap> a+b;
[ 1 .. 4 ]
gap> a*b;
[ 2, 3 ]
gap> s:=Semigroup(a,b);
<commutative semigroup with 2 generators>
gap> Size(s); 3
]>/
</java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
Ins. given java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 68
specific java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
<Example><![CDATA[
true
]]></Example>
</Subsection>
</Section>
<return java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 14
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.