Re: LSP all over again
Date: 3 Nov 2006 05:44:45 -0800
Message-ID: <1162561485.218024.115200_at_e3g2000cwe.googlegroups.com>
Aloha Kakuikanu wrote:
> Difficult to follow the old tread in GG (not to mention the wrong
> title!)
>
> Marshall wrote:
> > On Oct 24, 9:04 am, "Aloha Kakuikanu" <aloha.kakuik..._at_yahoo.com>
> > wrote:
> > >
> > > with diagonals as equivalence classes...
> >
> > And, furthermore, an adaptation of Euclid's algorithm that we could
> > call, with perfect accuracy and more than a trace of humor,
> > Greatest Common Subtrahend, that we could use to normalize
> > the (nat, nat) pairs such that at least one of the nats was zero,
> > in *exactly* the same way as we use Greatest Common Divisor
> > to normalize the (int, int) pairs that make a rational to be relatively
> > prime. (In fact, if we're feeling particularly ambitious, we can
> > define a *single* normalizing algorithm and parameterize it with
> > either the Predecessor relation or the Subtraction relation as
> > the inverses of the iterated {successor, sum} that constructed
> > the sets in the first place.)
>
> You aren't serious, are you?. Greatest Common Divizor/Multiple are
> essentially min and max operators on the power sequences. E.g.
>
> 12 = 2^2*3^1 = sequence(2,1,0,0,...)
> 45 = 2^0*3^2*5^1 = sequence(0,2,1,0,...)
> GCD(12,45) = sequence(0,1,0,0,...)
>
> How do you decompose a number into a sequence with addition/subtraction
> operation?
>
> > Tossing out the reals for the much-easier-to-handle rationals,
> > (which are identically useful for the purposes of arguing the
> > construction argument,) we have to ask, if we assume the
> > naturals (and the successor function) and construct the integers
> > from that, such that there is an integer two constructed as
> > (2,0), (or, more descriptively, "(2-0)"), and then construct
> > the rationals from pairs of integers, such that we have
> > a two in the form of (2,1) or more descriptively (2/1),
> > vs. alternatively assume the integers and construct
> > the rationals from the integers such that we have a rational
> > (2/1) built out of assumed integers instead of
> > constructed-from-naturals integers, who gives a damn
> > anyway? (I *dare* you to diagram that sentence.)
> > There is no meaningful difference between the two;
> > they are alternate, equivalent constructions. Do
> > we now have, like, nine different kinds of two? No.
> > There's Only One Two, which is exactly the slogan
> > of a local TV news channel from years ago.
>
> I grant you have one abstract class for each Naturals, Integers,
> Rationals, etc. Multiple implementation classes. Why do you want to
> establish subclass relation between abstract classes in such a way that
> conforms to the abused subset inclusion intuition but breaks LSP?
> Again, the classes are abstract, so that we don't know what is the
> ground set of the elements of each type. Therefore we can't draw the
> subset relationship. It is the operation set that allows us to say that
> one guy inherits the others properties (whether there is any practical
> benefit in such an idea is another question).
>
> > If we're going to try to say that these various twos are
> > all different in anything *except* their construction, then
> > I'd say we're in a heap o' trouble, hoss. If you define
> > various rational arithmetic functions + - *, they're all going
> > to give the same answers for calculations done with two
> > either way, so what was the point again? And when we
> > come to the case of divide, they *won't* produce the same
> > answer, which shows that they weren't the same function
> > in the first place, so we have different functions and that
> > way we get the same answer again anyway.
>
> Why? You can establish equality between two objects of different
> implementation classes, can't you?
This is old technology. The theory of categories shows that equality is not interesting, It shows that isomorphism is more important.
Treatment of types is best done in categorical language:
Type is an object in a category like SET or CPO. Product or record type is product of two objects in category. Union type for example in C is a coproduct. A type like list is the least fixed p[oint of an endofunctor. There is no question of sets because the category is about the structure. Object class is a coalgebra for an endofunctor and coalgebraic treatment describes subtyping very well.
-- TegiReceived on Fri Nov 03 2006 - 14:44:45 CET