[om] Reference vs. Referent: solution to an old problem

Manfred Riem mriem at win.tue.nl
Thu Dec 7 16:06:00 CET 2000


Hi Andrew,

You beat me to it. I envisioned that the programming CD would
either have some of the same methods specified like you did,
or that a separate CD would be needed for it. 

One comment on the way in which the go about with the CAS CD.
So far the phrasebook implementation we have been using has 
2 parts, one being the instruction (EVAL, SIMPLIFY, SOLVE ....)
and the other the arguments in OpenMath.

You seem to be putting both in OpenMath, which shouldn't be the
case as OpenMath is a content-language and not a communication-language
(is this correct?). Anyway a more fundamental discussion is needed
first on how the general structure of a phrasebook should be implemented.

If OpenMath is also a communincation-language in the sense that it
also carries the code for a specific operation then lets first sit
down to think about that before we start the reference vs referent
discussion which could be solved by a good operation set.

If OpenMath is NOT a communication-language for operations a discussion
there is needed before we continue.

So the questions I still have (related or not related) and with no 
real answer:

1. Should actions that a CAS should do be implemented in OpenMath,
   or in a separate messaging protocol language.

2. What will be done if a CAS delivers a statistical answer, how 
   should this be handled if you want real answers.

3. How would one specify algorithms in OpenMath and make sure the
   back-engine can use them? I've got some idea's here, but I need
   more feedback from the community as it also has to do with this
   subject somewhat.

Regards,

Manfred

RIACA
Eindhoven University of Technology


> This note pertains to the problem of defining the behaviour of an 
> OpenMath compliant compute engine and I attach to this email the 
> Computer Algebra System (CAS) CD on which I'd be happy to 
> receive comments. 
> For the most part it is self explanatory, but there is one 
> aspect I'd like to motivate and explain.
> 
> The problem, roughly, is this.
> If I send to a compute engine the object(A):
> 
> <OMOBJ>
>     <OMA>
>       <OMS cd="integer1" name="factorial"/>
>       <OMI 3/>
>     </OMA>
> </OMOBJ>
> 
> what's to prevent the compute engine from sending exactly (A)
> straight back instead of (B)
> <OMOBJ>
> 	<OMI 6/>
> </OMOBJ>
> 
> We didn't come to any real conclusions in our lengthy 
> discussions on the topic
> in Eindoven and Bath, but I hope I have a solution here. 
> 
> I think the key to the problem is to distinguish *reference* 
> from *referent*.
> In the present example, (A) is a *reference* to the number 6, 
> while (B) is the object
> referred to by (A) and is therefore the *referent*.
> 
> In general, a reference can refer to a set of objects, for example
> (and I now desert XML in favour of brevity and readability) 
> if G is a permutation group,
> Representative(G) refers to a set of possible values, namely, the set 
> {g_1, ..., g_n} of elements of G.
> 
> I believe that in any case, it is possible to define (say, in 
> the symbol definition)
> precisely what referents a reference may have. 
> 
> Examples: 
> * The symbol [cd="group1" name="character_table"] which has a 
> single argument which 
> is a group, has a set of referents. Each is a list of lists 
> of strings, integers, 
> algebraic numbers and other paraphernalia which constitute a 
> character table of the 
> group which is the argument. Different orderings of the 
> conjugacy classes give rise to 
> different tables (corresponding to reordering the columns).
> * If it existed, the symbol [cd="polyZ" name="factorization"] 
> would have 
> a set of referents, which are the set of factorizations into 
> irreducible factors, for example
> Factorization(3x^2 - 6x + 3) has the set of referents {[3, 
> x-1, x+1], [3x-3, x+1], [x-1, 3x+3]}. 
> * (non example) The integer <OMI 1/> is not a reference. It 
> is an actual thing.
> 
> Therefore, I've defined a symbol [cd="cas" name="referent"] 
> which takes
> two arguments. The second argument is a reference while the 
> first argument is a string
> which is either "some" or "all" where Referent("some", 
> <reference>) returns a single
> object to which <reference> refers, while Referent("all", 
> <reference>) returns the set
> of all objects to which <reference> refers.
> 
> Therefore a CAS which implements cas.ocd and integer1.ocd 
> must evaluate 
> 
> <OMOBJ>
>   <OMA>
>     <OMS cd="cas" name="referent"/>
>     <OMSTR some/>
>     <OMA>
>       <OMS cd="integer1" name="factorial"/>
>       <OMI 3/>
>     </OMA>
>   </OMA>
> </OMOBJ>
> 
> 
> to
> 
> <OMOBJ>
>       <OMI 6/>
> </OMOBJ>
> 
> while 
> 
> <OMOBJ>
>   <OMA>
>     <OMS cd="cas" name="referent"/>
>     <OMSTR all/>
>     <OMA>
>       <OMS cd="integer1" name="factorial"/>
>       <OMI 3/>
>     </OMA>
>   </OMA>
> </OMOBJ>
> 
> must evaluate to 
> 
> <OMOBJ>
>   <OMA>
>     <OMS cd="set1" name="set"/>
>     <OMI 6/>
>   </OMA>
> </OMOBJ>
> 
> Back to the permutation group example, if G = <(1,2,3)> then
> 
> 
> <OMOBJ>
>   <OMA>
>     <OMS cd="cas" name="referent"/>
>     <OMSTR some/>
>     <OMA>
>       <OMS cd="group1" name="representative"/>
>       <OMV name="G"/>
>     </OMA>
>   </OMA>
> </OMOBJ>
> 
> might return the element (1,3,2) where replacing "some" by "all" would
> result in the set of all representatives: {(), (1,2,3), (1,3,2)}.
> 
> 
> I look forward to your comments. 
> 
> Andrew
> 
> 
> -- 
> PIMS/MITACS/CECM                       http://www.cecm.sfu.ca
> Simon Fraser University
> Personal homepage:                     http://www.illywhacker.net
--
om at openmath.org  -  general discussion on OpenMath
Post public announcements to om-announce at openmath.org
Automatic list maintenance software at majordomo at openmath.org
Mail om-owner at openmath.org for assistance with any problems



More information about the Om mailing list