Re: The wisdom of the object mentors (Was: Searching OO Associations with RDBMS Persistence Models)

From: Bob Badour <bbadour_at_pei.sympatico.ca>
Date: Fri, 02 Jun 2006 02:54:01 GMT
Message-ID: <dLNfg.16341$A26.378724_at_ursa-nb00s0.nbnet.nb.ca>


vc wrote:

> [...]
>

>>The third problem is that
>>you need "=" for all things as well as literals for all things. It is a can
>>of worms.

>
> Why is it 'a can of worms'?

The problems regarding equality and literals apply equally when one treats functions as object instances as when one treats them as relations so Dmitry basically hoists himself on his own petard.

Equality poses some problems. For instance cos(x-pi/2) = sin(x)

Unless I recall incorrectly, something I read recently about Church and the lambda calculus suggests that evaluating the equality of two arbitrary functions is undecidable.

If one assumes cos and sin are defined on an infinite range, which is impossible to implement on a finite computer, then it would take infinite resources to verify the equality above. If one assumes cos and sin are defined on the same large finite range, the computer will treat the above as unequal due to fact that (x-pi/2) is defined for more values at the negative end of the range than is x and for fewer values at the positive end of the range than is x.

ie. if the range of x is [MIN_X,MAX_X], then the range of (x-pi/2) is [MIN_X-pi/2,MAX_X-pi/2]

>>Especially function literals aren't easy. What is a literal of
>>sine?

>
> You tell us 'what is a literal of sine'. There is no such creature in
> math.

I gave two above, which I repeat here:

sin(x)
cos(x-pi/2)

Actually, there are potentially several in math depending on whether 'literal' means 1) a terminal symbol in a formal grammar, 2) a notation for representing a value, or 3) an elementary proposition or its negation in logic. One can subsume all three uses under the broad field of mathematics.

http://en.wikipedia.org/wiki/Literal

>>Even if they model uncountable sets?

>
> Interesting to know how would you go about 'model[ing] uncountable
> sets' in your OO tool of choice.

One might name an uncountable set with some symbol and write expressions using that symbol. However, no finite computer can evaluate all of the elements of such a set.

Once again, that applies equally to functions as object instances as to anything else.

>>. In general, when you want to enforce some
>>semantics on the resulting function.

>
> What kind of semantics do you have in mind ? Any computer program can
> be regarded as having say denotational semantics. Is that what you
> have in mind ? If so, you do not need to 'enforce' anything -- as soon
> as you've written your program the semantics is already there.

Good question. Perhaps he meant something along the lines of Hoare Logic with pre- and post- conditions? Or does that even matter as much as things like distributivity, transitivity, commutativity, associativity etc. which are not semantics really; although, they are properties one can derive from the semantics of functions?

>>>>Because in this particular case function is a value and values are outside
>>>>the language scope.

>
> That does not make any obvious sense -- how a function can be a value
> that is outside the language scope ? Surely it depends on the language
> in question.
>
>>Right. The problem is that mathematical constructs modeled in a
>>computational framework might be too large for any finite state machine. So
>>an uncountable set of real numbers is replaced by a finite set of
>>intervals.

>
> What do you mean by 'a finite set of intervals' ? If you mean the
> floating point arithmetic, then the numerals in this arithmentic
> nominally represent members of a finite subset of rational numbers with
> peculiar operations (+, -, *, /) that are affected by rounding issues.

You answered your own question. If two real numbers or unrepresentable rational numbers round to the same representable rational, then the computer will consider them equal. Thus, each representable rational represents an interval of reals or of rationals that will round to it.

>>That's the gibberish in which I am talking. We can't have all
>>the table of real-valued functions.

>
> You do not need one. It's well-known that sine is a Turing-computable
> function. Otherwise, how would a gadget like your PC produce it ?
>
>>The size of this table is aleph-2!

>
> It is not.

It makes for a better straw man if it is, though.

>>Where you find a hard disk of this size? Fortunately, from all this table,
>>today, I need only sine. So I say let sine be denoted as 0x2.

>
> You are not making much sense here.

He makes sense. He is attacking a straw man he constructed. It's pointless and unpersuasive, but it is easy enough to see what he is up to.

>>Nevertheless, nothing prevents us to formalize these bastards and use
>>mathematical rigour to handle them.

>
> What 'bastards' do you intend to formalize ? Could you, like,
> demonstrate ?
>
> Disagree?
Received on Fri Jun 02 2006 - 04:54:01 CEST

Original text of this message