Re: Proposal: 6NF

From: Keith H Duggar <duggar_at_alum.mit.edu>
Date: 18 Oct 2006 18:44:47 -0700
Message-ID: <1161222287.833397.243490_at_m73g2000cwd.googlegroups.com>


vc wrote:
> Jan Hidders wrote:
> > You keep on saying that, and I have no idea why you
> > think that. Demonstrating that there is a problem
> > should be simple. You could give a well-typed expression
> > that has a certain result, and if you replace certain
> > constants of type t1 in that expression with the
> > corresponding constants in a subtype t2 then the result
> > of the expression changes. Can you give me such an
> > expression?
>
> A, B and C are real;
> D, E are integer;
>
> C = A / B -- is OK
> C = D / E -- the LSP requires that should be OK too but it
> is not because D / E is undefined.

The expression is "C = D / E" not "D / E". And what is the type of the expression? Well, it is not INT = INT / INT. It is either REAL = REAL / REAL or REAL = INT / INT (depending on the meaning of "replace certain constants ...") both of which are defined.

>From a value perspective "replac[ing] certain constants [A
B] of type [REAL] with the corresponding constants [values] in [the] subtype [INT] in /that/ expression" the expression type remains REAL = REAL / REAL and is defined.

If "replace ... the corresponding constants" means some kind of "object substitution" where the expression type changes, the "new" expression type is REAL = INT / INT for which / is still defined.

Since C is REAL the expression does not have type INT = INT / INT. And even that, contrary to your claim, IS defined though it is a partial function on the domain INT x INT.

Keith -- Fraud 6 Received on Thu Oct 19 2006 - 03:44:47 CEST

Original text of this message