# [om] CD questions on the occasion of permu1

Arjeh Cohen amc at win.tue.nl
Wed Oct 16 10:04:36 CEST 2002

```       SSB, October 6, 2002

Dear all,

Here are ten questions regarding the newly conceived CD permu1.ocd for
permutations. The CD can be found at
http://www.win.tue.nl/~amc/oz/om/cds/permu1.html

1. The CD may be too large. Ideas how to chop it up into smaller ones?
For instance, cycle is more general than permutations. It could
just as well be used for graph construction, so perhaps it should
go elsewhere (where?)
Also, order and cycle_type might be considered less basic than the
others and so could well go into a permu2.

2. The name: There is a CD called permut1 by Andrew Solomon, so a I
chose a variation. It could be abbreviated to perm1 or elongated to
permut1 (if Andrew and James agree), permutat1, or permutation1 (not sure
though that such long names are allowed).

3. The definition of a permutation has been set up so that there is a
unique data structure for each permutation if you regard the
arguments of permutation as a single set. This is convenient and
aligns with proof planning of Volker Sorge and Martin Pollet. I have made a
shortcut though by letting permutation(list of cycles) take over
the role of the abstract data structure "set(sequence of cycles)".
In other words, I did not want to top set(sequence of cycles) off by
writing permutation(set(sequence of cycles)). Is this OK?
(is_perm helps in the present approach!)
BTW likewise, PermList (with the same meaning as in GAP) is not
applied to an OM list, but just has the list entries for argument.

4. A symbol can stand either for a `real' function (like sin) or a
constructor (like `rational'). At any rate, in the encodings you
can often preform surgery and find the arguments back. But not on
the abstract OpenMath level. So my question is: what is our general
approach to finding arguments of contructors? In the example of
`rational(123,456)', would you like numerator and denominator to be
around so that the children (123 and 456) of the expression can be
accessed?  the vector_selector is an example (in a case where the
number of compnents may very...). We find the i-th argument of an
OM list by applying the list to <OMI>i</OMI> using an <OMA>...

5. Magma and Gap do not work with permutations of arbitrary objects
(to the best of my knowledge), so I would not know how to implement
the most general notion of permutation (as in the CD) there. But
for positive integers as entries (read: permuted elements), there
should be no problem with any of the symbols.

6. Regarding FMP's: there are many one could write. What are the
practical guidelines here? James has written some guidelines. These
are (roughly): have CMP correspond with FMP and don't put in too
many. The current version of permu1.ocd is large because of
examples, FMP's etc., not because of the number of symbols it
defines.

7. Regarding the composition of permutations vs the operator *: I have
avoided (so far) from using the symbol times from arith1. The
reason is that times might stand for either left or right compose.
For power there is no problem (there is an FMP in arith1 relating
it to times and whichever times we choose, the anwer is the
same). So we could use it. Nevertheless, so far I didn't.  I might
get into trouble when I use Group(perm1,perm2,...,permN) as
suggested in the CD group1.html, where it says "The n-ary function
Group. The group generated by its arguments.  The arguments must
have a natural group operation associated with them."  Left-compose
is less natural than right_compose, some say....  I probably should
avoid this symbol to avoid ambiguity.  (In other words, I think
that Group in CD group1 lacks an indication of the multiplication;
I suggest that it be added as a first argument.)  Is there a better
solution?

BTW, note that power(x,n) is something like <OMA><OMS cd="????"
name="apply"/> <OMS cd="arith1" name="times"/>....< which makes it clear
that power is implicitly related to times.

8. Since right_compose is defined only for two arguments, I
need the construct "apply" to describe multiplication of more than
one permutation (in order to avoid long expressions with many
occurrences of right_compose, that is).
Question: can't we allow left_compose and right_compose two have
at least two arguments (instead of exactly two)?

9. (Mainly for David Carlise:) How can I create .omcd files (with the
four letter extension). How can they be useful?

10. Is there anything else that strikes you as odd, remarkable,... in
permu1.ocd?

Thanks in advance, greetings, Arjeh M. Cohen

--
om at openmath.org  -  general discussion on OpenMath
Post public announcements to om-announce at openmath.org
Automatic list maintenance software at majordomo at openmath.org
Mail om-owner at openmath.org for assistance with any problems

```