<html><head><title>[openmath.htm] 1 OpenMath functionality in GAP</title></head> <body text="#000000" bgcolor="#ffffff"> [<a href = "chapters.htm">Up</a>] [<a href = "theindex.htm">Index</a>] <h1>1 OpenMath functionality in GAP</h1><p> <p> After loading the package: <pre> gap> LoadPackage( "openmath" ); true </pre> the following operations are available. <p> <li><code>OMPrint( </code><var>obj</var><code> ) F</code> <p> OMPrint writes the XML OpenMath encoding of GAP object <var>obj</var> to the standard output. <p> <pre> 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> </pre> <p> <li><code>OMGetObject( </code><var>stream</var><code> ) F</code> <p> <var>stream</var> is an input stream (see <a href="../../../doc/htm/ref/CHAP010.htm#SSEC005.1"> InputTextFile</a>, <a href="../../../doc/htm/ref/CHAP010.htm#SSEC006.1"> InputTextUser</a>, <a href="../../../doc/htm/ref/CHAP010.htm#SSEC007.1"> InputTextString</a>, <a href="../../../doc/htm/ref/CHAP010.htm#SSEC008.2"> InputOutputLocalProcess</a> ) with an OpenMath object on it. OMGetObject takes precisely one object off <var>stream</var> and returns it as a GAP object. Both XML and binary OpenMath encoding are supported, autodetection is used. This function requires that the external program <code>gpipe</code>, included in this package, has been compiled. <p> This may be used to retrieve objects from a file, for example: <pre> gap> test3:=Filename(DirectoriesPackageLibrary("openmath","tst"),"test3.omt");; gap> stream := InputTextFile( test3 );; gap> OMGetObject(stream); 912873912381273891 gap> OMGetObject(stream); E(4) gap> CloseStream(stream); </pre> 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: <pre> gap> stream := InputTextUser();; gap> g := OMGetObject(stream);CloseStream(stream); </pre> <p> <li><code>OMPutObject( </code><var>stream</var><code>, </code><var>obj</var><code> ) F</code> <p> OMPutObject writes (appends) the XML OpenMath encoding of the GAP object <var>obj</var> to output stream <var>stream</var> (see <a href="../../../doc/htm/ref/CHAP010.htm#SSEC005.2"> OutputTextFile</a>, <a href="../../../doc/htm/ref/CHAP010.htm#SSEC006.2"> OutputTextUser</a>, <a href="../../../doc/htm/ref/CHAP010.htm#SSEC007.2"> OutputTextString</a>, <a href="../../../doc/htm/ref/CHAP010.htm#SSEC008.2"> InputOutputLocalProcess</a> ). <p> <pre> 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> </pre> <p> <li><code>OMTest( </code><var>obj</var><code> ) F</code> <p> Converts <var>obj</var> to OpenMath and back. Returns true iff <var>obj</var> is unchanged (as a GAP object) by this operation. The OpenMath standard does not stipulate that converting to and from OpenMath should be the identity function so this is a useful diagnostic tool. <p> <p> [<a href = "chapters.htm">Up</a>] [<a href = "theindex.htm">Index</a>] <P> <address>openmath.htm manual<br>marzo 2006 </address></body></html>