[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: Re: Guarded normal form (part 1)
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]
Powered by eList eXpress LLC