Re: Principle of Orthogonal Design(B

From: Marshall(B <marshall.spight_at_gmail.com>
Date: Wed, 6 Feb 2008 11:12:19 -0800 (PST)
Message-ID: <c8b884d0-cbe9-4a34-a982-372be6e6529d_at_q21g2000hsa.googlegroups.com>


On Feb 5, 3:50 pm, JOG <j..._at_cs.nott.ac.uk> wrote:
> On Feb 5, 9:06 pm, Marshall <marshall.spi..._at_gmail.com> wrote:
>
> > However, suppose we have a binary predicate P over
> > domain X and we want to assert it is reflexive? In predicate
> > logic we can use the same name twice and express this
> > very conveniently:
>
> > Ax in X: P(x,x)
>
> In my own work I prefer to view the input of the predicate as a set,
> given attributes are no longer ordered. So to state reflexivity I'd
> have:
>
> $B"O(Bx P( { a:x, b:x } )
>
> With the : notation just being a shorthand to represent an ordered
> pair.

Hmmm. Syntactically they are ordered pairs, yes; but the use of that term here worries me, because the syntactic elements are names not values. But maybe I am just being picky.

> In fact, if one considers the full enumeration of the binary
> predicate (denoted as S), one can state reflexivity as:
>
> $B"O(Bx { a:x, b:x } $B":(B S
>
> Which I find kind of neat - that sort of notation allows one to get
> completely set-theoretic on a data model ass.

Yeah, that's sort of the direction I want to go in.

But you've still got tuple-level constructs in there, which I think we can do without. Let's see:

  X(x) -- the domain
  R(a, b) -- the relation

R is reflexive if the domain extended to a and b is a subset of R

  X & x=a & x=b => R

(Using => as the Tropashko generalized subset, from the Relational Lattice.)

In this case we can even get away without projecting the left side of the inequality over (a, b).

Let's try another one. Symmetry in its positional expression:

  Aa in X: Ab in X: R(a, b) -> R(b, a)

Bleah. We have to swap attribute names, which means a pair of renames. Um ...

  R & a=c & b=d | set(c, d) {} & c=b & d=a => R

I'm sure no one can read that except me. "R join a=c join b=d inner-union with the empty relation of attributes c and d join c=b join d=a is a subset of R."

That would be a *lot* easier with a rename/rebind operation.

  R => R(b,a)

I need to work on this sometime when I'm not stupid.

> Hmmm. I really must remember to use that terminology
> in a paper some time.

Yes you should.

Marshall Received on Wed Feb 06 2008 - 20:12:19 CET

Original text of this message