%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%A  openmath.msk                GAP documentation              Andrew Solomon
%%
%A  @(#)$Id: openmath.msk,v 1.6 2006/01/11 22:44:57 gap Exp $
%%
%Y  (C) 1999 School Math and Comp. Sci., University of St.  Andrews, Scotland
%%
\Chapter{OpenMath functionality in GAP}

After loading the package:
\beginexample
gap> LoadPackage( "openmath" );
true
\endexample
the following operations are available.

\Declaration{OMPrint}
\beginexample
gap> g := Group((1,2,3));;
gap> OMPrint(g);
<OMOBJ>
	<OMA>
		<OMS cd="group1" name="Group"/>
		<OMA>
			<OMS cd="permut1" name="Permutation"/>
			<OMI> 2</OMI>
			<OMI> 3</OMI>
			<OMI> 1</OMI>
		</OMA>
	</OMA>
</OMOBJ>
\endexample


\Declaration{OMGetObject}
This may be used to retrieve objects from a file,
for example:
\beginexample
gap> test3:=Filename(DirectoriesPackageLibrary("openmath","tst"),"test3.omt");;
gap> stream := InputTextFile( test3 );;
gap> OMGetObject(stream);
912873912381273891
gap> OMGetObject(stream);
E(4)
gap> CloseStream(stream);
\endexample
or it can be used to retrieve them from standard input -
one may paste an OpenMath object directly into standard input
after issuing GAP with the following commands:
%notest
\beginexample
gap> stream := InputTextUser();;
gap> g := OMGetObject(stream);CloseStream(stream);
\endexample


\Declaration{OMPutObject}
\beginexample
gap> g := [[1,2],[1,0]];;
gap> t := "";
""
gap> s := OutputTextString(t, true);;
gap> OMPutObject(s, g);
gap> CloseStream(s);
gap> Print(t);
<OMOBJ>
	<OMA>
		<OMS cd="linalg2" name="matrix"/>
		<OMA>
			<OMS cd="linalg2" name="matrixrow"/>
			<OMI> 1</OMI>
			<OMI> 2</OMI>
		</OMA>
		<OMA>
			<OMS cd="linalg2" name="matrixrow"/>
			<OMI> 1</OMI>
			<OMI> 0</OMI>
		</OMA>
	</OMA>
</OMOBJ>
\endexample

\Declaration{OMTest}






%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%E
