OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

# relax-ng message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Subject: Re: Guarded normal form (part 1)

• From: James Clark <jjc@jclark.com>
• To: Kohsuke KAWAGUCHI <kohsuke.kawaguchi@eng.sun.com>, trex@lists.oasis-open.org
• Date: Sat, 05 May 2001 10:50:14 +0700

```I'm lost.  What problem are you solving here?

----- Original Message -----
From: "Kohsuke KAWAGUCHI" <kohsuke.kawaguchi@eng.sun.com>
To: <trex@lists.oasis-open.org>
Sent: Saturday, May 05, 2001 10:45 AM
Subject: Re: Guarded normal form (part 1)

>
> I think I made it, although it has to be cooked better.
>
>
> First, let me change the notation from
>
> Pos{foo}<...> to foo{Pos}<...>
>
>
> <choice> and <intersection>(concur) are symmetric operations, so I
> choose to use them (and <not>) for the algorithm. As I wrote,
> <diff> A B </diff> => <intersection> A <not> B </not> </intersection>.
>
>
>
>
> 1. <choice> NC1 NC2 </choice>
> ------------------------------------------------
> case NC1=PosSet<...> & NC2=PosSet<...>
>     return PosSet< union of Namespaces >;
>
>     if two Namespaces foo<S>{X} and foo<T>{Y} collide,
>     switch(S,T){
>     case Pos,Pos
>         => foo{Pos}<X \cup Y>
>     case Pos,Neg
>         => foo{Neg}<Y-X>
>     case Neg,Neg
>         => foo{Neg}<X \cap Y>
>
> case NC1=PosSet<A> & NC2=NegSet<B>
>     return NegSet< B >
>     if A and B has a common Namespace, do as above.
>
> case NC1=NegSet<...> & NC2=NegSet<...>
>     return NegSet< intersection of Namespaces >
>     if two Namespaces collide, do the same as above.
>
>
> 2. <intersection> NC1 NC2 </intersection>
> ------------------------------------------------
> case NC1=PosSet<...> & NC2=PosSet<...>
>     return PosSet< intersection of Namespaces >;
>
>     for every collided Namespace foo{S}<X> and foo{T}<Y>,
>     switch(S,T){
>     case Pos,Pos
>         => foo{Pos}<X \cap Y>
>     case Pos,Neg
>         => foo{Pos}<X-Y>
>     case Neg,Neg
>         => foo{Neg}<X \cup Y>
>
> case NC1=PosSet<A> & NC2=NegSet<B>
>     return PosSet< A >
>     if A and B has a common Namespace, do as above.
>
> case NC1=NegSet<...> & NC2=NegSet<...>
>     return NegSet< union of Namespaces >
>     if two Namespaces collide, do the same as above.
>
>
> 3. <not> NC </not>
> ------------------------------------------------
> case NC=PosSet<...>
>     return NegSet< negated Namespaces >
> case NC=NegSet<...>
>     return PosSet< negated Namespaces >
>
>     To negate Namespace: foo{Pos}<a,b,...>  => foo{Neg}<a,b,...>
>                          foo{Neg}<a,b,...>  => foo{Pos}<a,b,...>
>
>
>
>
> --
> Kohsuke KAWAGUCHI                          +1 650 786 0721
> Sun Microsystems                   kohsuke.kawaguchi@eng.sun.com
>
>
>
>

```

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]