Using Maple 6 I have parallel constructions that are being treated differently. Can anyone tell me why?
Motivational background:
I am updating worksheets I use in teaching abstract algebra so that they will run under Maple 6. The worksheets on computing Galois groups need the most revision since the galois function was rewritten between versions V4 and V5 and again with version 6.
The worksheet walks the students throught he computation focusing on the technique rather than just on the answer. (By the way, I think it is a nice feature of Maple that you can gain access to the code used for a computation.)
In the revision to version 6, information that was stored in the table `group/transgrp`
is
now scattered across a collection of tables `group/transgroup/InfoDeg`
where Info is one
of {name, order, parity, generators, SnConjugates}
and Deg is an integer from 1 to
11.
At the same time the table `galois/groups`
no longer contains group names that my
students will recognize. I was able to rewrite the worksheets, but ran into the following
interesting behavior:
Maple question:
Why is Maple treating the list of SnConjugates different from the other 4 lists in the code below?
> deg := 5: > numb := 3: > [`group/transgroup/names`||deg[numb], > `group/transgroup/order`||deg[numb], > `group/transgroup/parity`||deg[numb], > `group/transgroup/generators`||deg[numb], > `group/transgroup/SnConjugates`||deg[numb]]; [{"F(5)", "5:4"}, 20, -1, {[[1, 2, 3, 4, 5]], [[1, 2, 4, 3]]}, group/transgroup/SnConjugates5[3]] > [eval(`group/transgroup/names`||deg[numb]), > eval(`group/transgroup/order`||deg[numb]), > eval(`group/transgroup/parity`||deg[numb]), > eval(`group/transgroup/generators`||deg[numb]), > eval(`group/transgroup/SnConjugates`||deg[numb])]; [{"F(5)", "5:4"}, 20, -1, {[[1, 2, 3, 4, 5]], [[1, 2, 4, 3]]}, [1, 0, 5, 0, 0, 10, 4]]
As the second block of code shows I can make Maple behave in the desired fashion. I am curious as to why parallel constructions seem to be treated differently.
`group/transgroup/names5`
and `group/transgroup/generators5`
are arrays of sets,
while `group/transgroup/order5`
and `group/transgroup/parity5`
are arrays of
integers.
So e.g. `group/transgroup/names5`[3]
is a set, and this is subject to normal evaluation
rules. However `group/transgroup/SnConjugates5`
is an array of arrays, and arrays have
last-name evaluation. Therefore
> `group/transgroup/SnConjugates5`[3];
does not fully evaluate the array `group/transgroup/SnConjugates5`[3]
unless you use
"eval".