[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
I would greatly appreciate comments.

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

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
   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

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

More information about the Om mailing list