  
  [1X3 Extending the [5XOpenMath[1X package[0X
  
  
  [1X3.1 Exploring the range of supported symbols[0X
  
  The  [5XOpenMath[0m  package  supports  such  basic [5XOpenMath[0m objects as integers (
  <OMI>  ),  character  strings ( <OMSTR> ) and variables ( <OMVAR> ). Besides
  that,  it  supports  a number of [5XOpenMath[0m content dictionaries (some of them
  only partially, dependently on their relevance to [5XGAP[0m). To see which symbols
  from  which  content  dictionaries  are  supported  for  the conversion from
  [5XOpenMath[0m  to [5XGAP[0m, explore the global record [10XOMsymRecord[0m. Its components have
  names  of appropriate CDs, and subcomponents of each component have names of
  symbols  from  the  corresponding  CD.  If the value of the component is not
  equal to [9Xfail[0m, then it contains the function or the object which is used for
  conversion. The following example of the entry for the nums1 CD demonstrates
  a combination of all possible cases:
  
  [4X---------------------------  Example  ----------------------------[0X
    [4X[0X
    [4Xgap> Print(OMsymRecord.nums1,"\n");[0X
    [4Xrec([0X
    [4X  e := fail,[0X
    [4X  i := E(4),[0X
    [4X  pi := fail,[0X
    [4X  based_integer := fail,[0X
    [4X  gamma := fail,[0X
    [4X  infinity := infinity,[0X
    [4X  NaN := fail,[0X
    [4X  rational := function ( x )[0X
    [4X        return OMgapId( [ OMgap2ARGS( x ), x[1] / x[2] ] )[2];[0X
    [4X    end )[0X
    [4X[0X
  [4X------------------------------------------------------------------[0X
  
  [10XOMsymRecord[0m  contains  all symbols for which conversion from [5XOpenMath[0m to [5XGAP[0m
  is  supported  except  some  special symbols related with errors and special
  procedures from the [5XSCSCP[0m package which are treated separately.
  
  To check quickly if [5XGAP[0m can parse a given [5XOpenMath[0m object, copy the [5XOpenMath[0m
  code and paste it directly into standard input after the following commands:
  
  [4X---------------------------  Example  ----------------------------[0X
    [4X[0X
    [4Xgap> stream := InputTextUser();;[0X
    [4Xgap> g := OMGetObject(stream);CloseStream(stream);[0X
    [4X[0X
  [4X------------------------------------------------------------------[0X
  
  The  main  tool  for the conversion from [5XGAP[0m to [5XOpenMath[0m is [10XOMPut( <stream>,
  <object>  )[0m.  A  number  of  methods  for  [10XOMPut[0m  are  installed in the file
  [11Xopenmath/gap/omput.gi[0m.
  
  To  check  quickly  whether  the  object  may be converted to [5XOpenMath[0m, call
  [10XOMprint[0m for that object, for example:
  
  [4X---------------------------  Example  ----------------------------[0X
    [4X[0X
    [4Xgap> OMPrint( [ [1..10], ZmodnZObj(2,6), (1,2) ] );                [0X
    [4X<OMOBJ>[0X
    [4X	<OMA>[0X
    [4X		<OMS cd="list1" name="list"/>[0X
    [4X		<OMA>[0X
    [4X			<OMS cd="interval1" name="integer_interval"/>[0X
    [4X			<OMI> 1</OMI>[0X
    [4X			<OMI> 10</OMI>[0X
    [4X		</OMA>[0X
    [4X		<OMA>[0X
    [4X			<OMS cd="integer2" name="class"/>[0X
    [4X			<OMI> 2</OMI>[0X
    [4X			<OMI> 6</OMI>[0X
    [4X		</OMA>[0X
    [4X		<OMA>[0X
    [4X			<OMS cd="permut1" name="permutation"/>[0X
    [4X			<OMI> 2</OMI>[0X
    [4X			<OMI> 1</OMI>[0X
    [4X		</OMA>[0X
    [4X	</OMA>[0X
    [4X</OMOBJ>[0X
    [4X[0X
  [4X------------------------------------------------------------------[0X
  
  The  package  is  in  the  continuous development and will support even more
  symbols  in  the  future. In the meantime, if you will have any requests for
  the  support for particular symbols, please write to Alexander Konovalov who
  currently develops and maintains the package.
  
  
  [1X3.2 Adding support for private content dictionaries and symbols[0X
  
  There  is  also  a way for the user to extend the package adding support for
  private and experimental CDs or separate symbols. We allocated the directory
  [11Xopenmath/private[0m  for  this  purposes,  and  currently  it  contain the file
  [11Xprivate.g[0m  for  conversions from [5XOpenMath[0m to [5XGAP[0m and the file [11Xprivate.gi[0m for
  conversions from [5XGAP[0m to [5XOpenMath[0m for some symbols from private CDs contained
  in the [11Xopenmath/cds[0m directory.
  
  In  particular,  we extended the package with the following private [5XOpenMath[0m
  symbols:
  
  --    [10Xgroup1.group_by_generators[0m  which allows us to input and output groups
        given by their generators as this is a natural way to create groups in
        [5XGAP[0m;
  
  --    [10Xsemigroup1.semigroup_by_generators[0m   and  [10Xmonoid1.monoid_by_generators[0m
        following the same considerations for semigroups and monoids;
  
  --    [10Xpcgroup1.pcgroup_by_pcgscode[0m for PcGroups given by their pcgs code and
        order;
  
  --    [10Xrecord1.record[0m for records as they are important data structures which
        we  want  to  pass  in  a straightforward manner between different [5XGAP[0m
        instances;
  
  --    [10Xtransform1.transformation[0m  to  support transformations, transformation
        semigroups and their automorphism groups.
  
  The  file [11Xprivate.g[0m is loaded from [11Xopenmath/gap/new.g[0m, and the [11Xprivate.gi[0m is
  loaded  from  [11Xopenmath/gap/read.g[0m.  If  the user would like to add own code,
  this may be done either by adding it to these files or by placing additional
  files in [11Xopenmath/private[0m directory and load them similarly to [11Xprivate.g[0m and
  [11Xprivate.gi[0m.  We will welcome user's contributions in the form of the code to
  support  existing content dictionaries from the [5XOpenMath[0m web site or private
  content dictionaries, if they may be interesting for a wider community.
  
