The projectSoftware composability
Examples in GAPFinal remarks
Providing mathematical Web serviceswith Symbolic Computation Software
Composability Protocol
Alexander Konovalov(joint work with Steve Linton and SCIEnce partners)Supported by the EU FP6 project "SCIEnce – Symbolic Computation Infrastructure for Europe"
School of Computer Science and Centre for Interdisciplinary Research inComputational Algebra, University of St Andrews, Scotland
Math Wiki Workshop, University of Edinburgh, November 1, 2007
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
What is SCIEnce?SCIEnce participantsI3 = Integrated Infrastructure InitiativeProject objectives and activities
The project
SCIEnce – Symbolic Computation Infrastructure for Europe
http://www.symbolic-computation.org
5-year project supported by the EU Framework VI programmegrant RII3-CT-2005-026133.
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
What is SCIEnce?SCIEnce participantsI3 = Integrated Infrastructure InitiativeProject objectives and activities
Partner institutions from seven countries
University of St Andrews, St Andrews, UK
Research Institute for Symbolic Computation, Linz, AustriaCentre National de la Recherche Scientifique, FranceUniversität Kassel, GermanyTechnische Universiteit Eindhoven, NetherlandsTechnische Universität Berlin, GermanyInstitute e-Austria Timisoara, RomaniaMaplesoft, Waterloo, CanadaHeriot Watt University, Edinburgh, UK
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
What is SCIEnce?SCIEnce participantsI3 = Integrated Infrastructure InitiativeProject objectives and activities
Symbolic computation systems involved
GAPKANT/KASHMaple
MuPAD
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
What is SCIEnce?SCIEnce participantsI3 = Integrated Infrastructure InitiativeProject objectives and activities
I3 = Integrated Infrastructure Initiative
SCIEnce is an Integrated Infrastructure Initiative (I 3).
I 3 means that the project combines:networking activitiesprovision of access to transnational users (in RISC-Linz)joint research activities
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
What is SCIEnce?SCIEnce participantsI3 = Integrated Infrastructure InitiativeProject objectives and activities
Modern needs of symbolic computations
Efficient tools for combining different computationalalgebra systems to solve complex problems that requirecapabilities not available in any single systemWeb services client and server interfaces allowingdeployment of computer algebra systems as Web servicesand local/remote calls of facilities of another system ineasy and efficient wayThis may be used to combine several copies of the samesystem in a parallel computing context of various scalesfrom multicore to grids
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
What is SCIEnce?SCIEnce participantsI3 = Integrated Infrastructure InitiativeProject objectives and activities
Our main directions of work
Software composability:A programme of standards developments andimplementations for symbolic computation software to useWeb services and OpenMath technologies, allowing themto be efficiently composed to solve complex problems
Symbolic computing on the Grid:developing common standards and middleware to allow theproduction of Grid-enabled symbolic computation systemsconstructing research prototypes supporting appropriatesecurity, scheduling, and resource broking for complexsymbolic computing applications on computational Grids
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
Most common restrictions from our GAP experience
interfaces do not support remote communicationtransmission of large or complex objects may be difficultSupport of new system requires new I/O convertor. It reliesupon the I/O format, may be subject to parsing errors andneeds update if I/O format of the linked system changesnot enough deeply (syntax, cd) and widely (other CAS)supported data encoding format (OpenMath)not interactive, just database access (Web services)not enough robust (ParGAP)less efficient for irregular parallel computing (ParGAP)shaped to deal with the particular problem (dc)may not work in some operating systemsmay be not easy customisable by the end-user
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
Common protocol for communication
In the direction of the software composability, on the first stepwe designed the Symbolic Computation Software ComposibilityProtocol (SCSCP) by which a computer algebra system (CAS)may offer services for the following clients:
A Web server which passes on the same services as Webservices using SOAP/HTTP protocols to another clientsGrid middlewareAnother instance of the same CAS (in a parallel computingcontext)Another CAS running on the same computer or remotely
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
Current vision of SCSCP usage
CAS 3
SCSCPserver
OpenMathfunctionality
CAS 1
Webserviceclient
Webservicesserver
Serverbackend
=SCSCPclient
CAS 2
SCSCPclient
Gridmiddle-ware
Webserviceclient
Gridmiddle-ware
SCSCPclient
SCSCP messages
SCSCP messages
SCSCPmessages
Interrupt signal
Interrupt signal
HTTP/SOAPrequests
HTTP/SOAPrequests
Interruptsignal
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
What is OpenMath?
standard for representing mathematical objects with theirsemanticsthe current OpenMath Standard 2.0 is dated June 2004the worldwide OpenMath activities are coordinated withinthe OpenMath Society, based in Helsinkithe idea is to allow their exchange between variousprograms, storing in databases, publishing on web . . .
two encodings: XML and binary format
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
What is OpenMath?
basic objects: integers, floats, strings, byte arrays,variables, symbolssymbols consist of a name and a reference to a definitionin an external document called content dictionary (CD)OpenMath objects can be combined recursively in anumber of ways: application, attribution, binding, errorsee http://www.openmath.org for further details
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
SCSCP: OpenMath inside
Protocol messages represented as OpenMath objectsContent Dictionary cascall1 developed for this purposeSCSCP specification defines semantical and technicaldescriptions and allowed sequences ofOpenMath-encoded messages to and from CAS:
remote procedure callreturning result of successfully completed procedurereturning a signal about procedure termination
Both transmission of actual mathematical objects andreferences to them are supportedFlexibility: service designer can choose the data to beOMSTR, OMB, OMFOREIGN, containing information insome other format, including MathML
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
cascall1 CD defines:
three main kinds of messages: procedure_call,procedure_completed, procedure_terminatedoptions that may be added to the procedure_callmessage: option_runtime, option_debuglevel,option_min_memory, option_max_memory,option_return_object, option_return_cookieinformation that may be supplied with the result:info_runtime, info_memory, cookiestandard errors: error_runtime, error_memory,error_system_specific
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
Example: procedure_call messageIdentifying permutation group in the GAP Small Groups Library<OMOBJ>
<OMATTR><OMATP>
<OMS cd="cascall1" name="call_ID"/><OMSTR>01-234567890@gap1</OMSTR>
</OMATP><OMA>
<OMS cd="cascall1" name="procedure_call"/><OMSTR>GroupIdentificationService</OMSTR><OMA>
<OMS cd="list1" name="list"/><OMA>
<OMS cd="permut1" name="Permutation"/><OMI> 2</OMI><OMI> 3</OMI><OMI> 1</OMI>
</OMA><OMA>
<OMS cd="permut1" name="Permutation"/><OMI> 2</OMI><OMI> 1</OMI>
</OMA></OMA>
</OMA></OMATTR>
</OMOBJ>
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
Example: procedure_completed message
The procedure GroupIdentificationService evaluatedthe procedure_call message and determined that thepermutation group has the number [6,1]:
<OMOBJ><OMATP>
<OMS cd="cascall1" name="call_ID"/><OMSTR>01-234567890@gap1</OMSTR>
</OMATP><OMA>
<OMS cd="cascall1" name="procedure_completed"/><OMA>
<OMS cd="linalg2" name="vector"/><OMI> 6</OMI><OMI> 1</OMI>
</OMA></OMA>
</OMOBJ>
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
GAP implementation of the SCSCP
GAP Package SCSCP (in development)Allows GAP to work as an SCSCP server and clientUses GAP packages IO, GAPDoc and OpenMath.devUses recent developments by Steve Linton for theexception and error handling in GAPCommunication goes via TCP/IP protocolHandling OpenMath encoding, including:
new symbols from the cascall1 OM CDsupport of OM attributes (OMATTR, OMATP)support of OM references (OMR)
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Current limitationsCommon protocol for communicationOpenMath insideGAP package for SCSCP
User-level functionality:Installing procedures available as SCSCP servicesRunning the SCSCP serverSending request to the server and getting resultStore/Retrieve procedures allowing to work with remoteobjects
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
IdGroup for order 512OR-parallelismStore and retrieveWorkflows
Example: identification of groups of order 512
The following function accepts an integer that is a code for pcgsof a group of order 512 and returns the number of this group inthe GAP Small Groups library using the ANUPQ package:IdGroup512ByCode:=function( code )local g, f, h;g := PcGroupCode( code, 512 );f := PqStandardPresentation( g );h := PcGroupFpGroup( f );return IdStandardPresented512Group( h );end;
It is installed on the SCSCP server by the command
InstallSCSCPprocedure( "IdGroup512ByCode", IdGroup512ByCode );
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
IdGroup for order 512OR-parallelismStore and retrieveWorkflows
Example: identification of groups of order 512
The client’s counterpart takes the group in pc-presentation andsends its pcgs code to the server to identify the group.IdGroup512:=function( G )local code, result;if Size( G ) <> 512 thenError( "G must be a group of order 512 \n" );
fi;code := CodePcGroup( G );result := EvaluateBySCSCP( "IdGroup512ByCode",
[ code ], "localhost", 26133 );return result.object;end;
How it works:
gap> IdGroup512(DihedralGroup(512));#I Creating a socket ...#I Connecting to a remote socket via TCP/IP ...#I Got connection initiation message SCSCP_VERSION 0 CAS_PID 1#I Request sent, waiting for reply ...[ 512, 2042 ]
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
IdGroup for order 512OR-parallelismStore and retrieveWorkflows
Example: OR-parallelism with FactInt package
Continued Fraction Algorithm vs. Multiple Polynomial QuadraticSievegap> for i in [1..120] do r:=FactorsCFRAC( 2^i+1 ); od; time;4789gap> for i in [1..120] do r:=FactorsMPQS( 2^i+1 ); od; time;3330
ParEvaluateBySCSCP applies various methods to the sameargument, waiting for the first available result. This examplewas made with a dual core CPU:gap> for i in [1..120] do> r:=ParEvaluateBySCSCP( [ "WS_FactorsCFRAC", "WS_FactorsMPQS" ],> [ 2^i+1 ],> [ "localhost", "localhost" ],> [ 26133, 26134 ] );> od; time;532
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
IdGroup for order 512OR-parallelismStore and retrieveWorkflows
Example: remote objects
On the SCSCP server:InstallSCSCPprocedure( "WS_IdGroup", IdGroup );RunSCSCPserver( "localhost", 26133 );
On the SCSCP client:gap> s:=StoreAsRemoteObject( SymmetricGroup(3), "localhost", 26133 );< remote object TEMPVarSCSCP1 at localhost:26133 >
gap> EvaluateBySCSCP( "WS_IdGroup", [ s ], "localhost", 26133 );rec( object := [ 6, 1 ], attributes := [ [ "call_ID", "" ] ] )
gap> RetrieveRemoteObject(s);Group([ (1,2,3), (1,2) ])
gap> UnbindRemoteObject(s);true
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
IdGroup for order 512OR-parallelismStore and retrieveWorkflows
Two more examples
The server retrieves the remote object from another serverwithout transmitting it to the client on an intermediate step:gap> s:=StoreAsRemoteObject( SymmetricGroup(3), "localhost", 26133 );< remote object TEMPVarSCSCP@localhost:26133 >gap> EvaluateBySCSCP( "WS_IdGroup", [ s ], "localhost", 26134 );rec( object := [ 6, 1 ], attributes := [ [ "call_ID", "2" ] ] )gap>
Creating two parallel processes and their synchronizing:gap> a := NewProcess( "WS_factorial", [10], "localhost", 26133 );;gap> b := NewProcess( "WS_factorial", [20], "localhost", 26134 );;gap> Synchronize(a,b);[ rec( object := "3628800", attributes := [ [ "call_ID", "1" ] ] ),rec( object := "2432902008176640000", attributes := [ [ "call_ID", "1" ] ] ) ]
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Joining SCSCP Framework: OEIS lookupAdvantagesWhat next?References
Example: communicating with other software
A Java program by Dan Roozemond searches in the On-LineEncyclopedia of Integer Sequences.
What is the meaning of the following sequence:
1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14 ?
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Joining SCSCP Framework: OEIS lookupAdvantagesWhat next?References
Example: communicating with other software
This is the number of groups of orders 1, 2, . . . , 16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 161 1 1 2 1 2 1 5 2 2 1 5 1 2 1 14
Here we obtain a record with the search result:gap> EvaluateBySCSCP("OnLineEncyclopediaOfIntegerSequences",> [ [ 1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14 ] ],> "localhost", 26133 );#I Creating a socket ...#I Connecting to a remote socket via TCP/IP ...#I Got connection initiation message SCSCP_VERSION 0 CAS_PID 1#I Request sent, waiting for reply ...rec( object := [ 1, "A000001: Number of groups of order n." ],attributes := [ [ "call_ID", "0" ] ] )
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Joining SCSCP Framework: OEIS lookupAdvantagesWhat next?References
What we have in the result
low-overhead (compensated by easy-to-use), robust,cross-platforming, light-weight and reliable protocolpossibility of communication not only between CASs butalso between CAS and other software, including Web andGrid servicesbesides the four participating systems (GAP, KANT, Mapleand MuPAD), we expect more systems joining SCSCPframework later
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Joining SCSCP Framework: OEIS lookupAdvantagesWhat next?References
Work in progress
Next steps:Adding basic SCSCP implementations to all participatingsystemsIdentifying and developing new OpenMath contentdictionaries and other standards extensions neededAdding support of selected OpenMath CDs in allparticipating systemsImplementing higher level interfaces in all participatingsystems
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP
The projectSoftware composability
Examples in GAPFinal remarks
Joining SCSCP Framework: OEIS lookupAdvantagesWhat next?References
References
A. Konovalov, S. Linton. Symbolic Computation Software Composability Protocol Specification.CIRCA preprint 2007/5, The University of St Andrews. http://www-circa.mcs.st-and.ac.uk/pre-prints.html
A. Konovalov, S. Linton. SCSCP — Symbolic Computation Software Composability Protocol.GAP package, in development.
D. Roozemond. OpenMath Content Dictionary cascall1.http://www.win.tue.nl/SCIEnce/cds/cascall1.html
Alexander Konovalov, Steve Linton Providing mathematical Web services with SCSCP