# OpenMath Content Dictionary: scscp1

Canonical URL:
http://www.win.tue.nl/SCIEnce/cds/scscp1.ocd
CD File:
scscp1.ocd
CD as XML Encoded OpenMath:
scscp1.omcd
Defines:
call_id, error_memory, error_runtime, error_system_specific, info_memory, info_message, info_runtime, option_debuglevel, option_max_memory, option_min_memory, option_return_cookie, option_return_nothing, option_return_object, option_runtime, procedure_call, procedure_completed, procedure_terminated
Date:
2009-06-22
Version:
1 (Revision 13)
Review Date:
2017-12-31
Status:
experimental


This document is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The copyright holder grants you permission to redistribute this
document freely as a verbatim copy. Furthermore, the copyright
holder permits you to develop any derived work from this document
provided that the following conditions are met.
a) The derived work acknowledges the fact that it is derived from
this document, and maintains a prominent reference in the
work to the original source.
b) The fact that the derived work is not the original OpenMath
document is stated prominently in the derived work.  Moreover if
both this document and the derived work are Content Dictionaries
then the derived work must include a different CDName element,
chosen so that it cannot be confused with any works adopted by
the OpenMath Society.  In particular, if there is a Content
Dictionary Group whose name is, for example, math' containing
Content Dictionaries named math1', math2' etc., then you should
not name a derived Content Dictionary mathN' where N is an integer.
However you are free to name it private_mathN' or some such.  This
is because the names mathN' may be used by the OpenMath Society
for future extensions.
compilation of derived works, but keep paragraphs a) and b)
intact.  The simplest way to do this is to distribute the derived
work under the OpenMath license, but this is not a requirement.
society at http://www.openmath.org.


This CD defines symbols for the description of the management of mathematical queries.

In particular, it is used by the SCIEnce project [http://www.symbolic-computation.org/](SCIEnce website) in the communication between a web service (i.e. computer algebra system, proof checker, etc) and a client. SCSCP is an abbreviation for "Symbolic Computation Software Composability Protocol" [http://www.symbolic-computation.org/scscp/](SCSCP specification)

This version of the Content Dictionary agrees with version 1.3 of the SCSCP protocol.

## procedure_call

Description:

The actual procedure call. Its only argument is an OpenMath Application, whose head symbol describes the procedure to be called, and whose arguments are the arguments to the procedure.

Example:
$\mathrm{procedure_call}\left(\mathrm{GroupIdentificationService}\left(\mathrm{group}\left(\mathrm{permutation}\left(2,3,1\right),\mathrm{permutation}\left(1,2,4,3\right)\right)\right)\right)$
Signatures:
sts

 [Next: procedure_completed] [Last: error_system_specific] [Top]

## procedure_completed

Description:

The result of a successful computation. Should come along with a call_id and, possibly, some extra information.

Example:
$\mathrm{procedure_completed}\left(26925748508234281076009\right)$
  Instead of the result, we may return a reference to the result, as follows:

Example:
$\mathrm{procedure_completed}\left(\right)$
Signatures:
sts

 [Next: procedure_terminated] [Previous: procedure_call] [Top]

## procedure_terminated

Description:

The result of a failed computation. Should come along with a call_id, an error description, and possibly some extra information.

Example:
$\mathrm{procedure_terminated}\left(\mathrm{error_system_specific}\text{Segmentation fault}\right)$
Signatures:
sts

 [Next: call_id] [Previous: procedure_completed] [Top]

## call_id

Description:

Uniquely identifies a procedure call. Used in subsequent communication, so the parties know which call they are talking about.

Example:
$\text{The OMA goes here}$
Signatures:
sts

 [Next: option_max_memory] [Previous: procedure_terminated] [Top]

## option_max_memory

Description:

An option, to be given along with a procedure call, describing the maximum amount of memory (in bytes) the system should spend on this call.

Example:
$\text{The OMA goes here}$
Signatures:
sts

 [Next: option_min_memory] [Previous: call_id] [Top]

## option_min_memory

Description:

An option, to be given along with a procedure call, describing the minimum amount of memory (in bytes) the system should be able to spend on this call. The idea is that in certain cases we know in advance that we will need a large amount of memory. If the system will never be able to provide that, it would be a waste of time and resources to even start the computation.

Example:
$\text{The OMA goes here}$
Signatures:
sts

 [Next: option_runtime] [Previous: option_max_memory] [Top]

## option_runtime

Description:

An option, to be given along with a procedure call, describing the maximum amount of time (in milliseconds) the system should spend on this call.

Example:
$\text{The OMA goes here}$
Signatures:
sts

 [Next: option_debuglevel] [Previous: option_min_memory] [Top]

## option_debuglevel

Description:

An option, to be given along with a procedure call, describing the amount of debug information the client is interested in. Should be an integer.

Example:
$\text{The OMA goes here}$
Signatures:
sts

Description:

An option, to be given along with a procedure call, indicating that the client would like to have a cookie (i.e. a reference to an OpenMath object residing somewhere) as return value.

Example:
$\text{The OMA goes here}$
      The reply from the server should then look like:

Example:
$\mathrm{procedure_completed}\left(\right)$
Signatures:
sts

 [Next: option_return_object] [Previous: option_debuglevel] [Top]

## option_return_object

Description:

An option, to be given along with a procedure call, indicating that the client would like to have the actual OpenMath object as return value.

Example:
$\text{The OMA goes here}$
      The reply from the server should then look like:

Example:
$\mathrm{procedure_completed}\left(42\right)$
Signatures:
sts

## option_return_nothing

Description:

An option, to be given along with a procedure call, indicating that the client expects no return value.

Example:
$\text{The OMA goes here}$
	    The reply from the server may then look like:

Example:
$\mathrm{procedure_completed}\left(\right)$
Signatures:
sts

 [Next: info_memory] [Previous: option_return_object] [Top]

## info_memory

Description:

A piece of information from the system, to be used along with a procedure_completed or procedure_terminated message, describing how much memory was spent on the calculation. It should be in bytes, denoted using an OMI.

Example:
$\text{The OMA goes here}$
Signatures:
sts

 [Next: info_runtime] [Previous: option_return_nothing] [Top]

## info_runtime

Description:

A piece of information from the system, to be used along with a procedure_completed or procedure_terminated message, describing how much cputime was spent on the calculation. It should be in milliseconds, denoted using an OMI.

Example:
$\text{The OMA goes here}$
Signatures:
sts

 [Next: info_message] [Previous: info_memory] [Top]

## info_message

Description:

A piece of information from the server, to be used along with a procedure_completed or procedure_terminated message, giving some additional information. The client may choose to present this information to its user. The argument is an OMSTR.

Example:
$\text{The OMA goes here}$
Signatures:
sts

 [Next: error_memory] [Previous: info_runtime] [Top]

## error_memory

Description:

A description of the error that caused a procedure call to be terminated. This symbol is used with a procedure_terminated, when the system exceeded the amount of memory specified in the option_max_memory option given in the corresponding procedure call.

It carries one argument: An OMSTR, which may be empty.

Signatures:
sts

 [Next: error_runtime] [Previous: info_message] [Top]

## error_runtime

Description:

A description of the error that caused a procedure call to be terminated. This symbol is used with a procedure_terminated, when the system exceeded the runtime specified in the option_runtime option given in the corresponding procedure call.

It carries one argument: An OMSTR, which may be empty.

Note that this symbol is not intended to be used when a different runtime error occurred. In those cases, one should use error_system_specific.

Signatures:
sts

 [Next: error_system_specific] [Previous: error_memory] [Top]

## error_system_specific

Description:

A description of the error that caused a procedure call to be terminated. This symbol is used with a procedure_terminated, when the error is specific to the system that carried out the calculation. This error must carry exactly one argument, and it must be an OMSTR describing the error that occurred.

Signatures:
sts

 [First: procedure_call] [Previous: error_runtime] [Top]