Re: Re: OneIdentity

*To*: mathgroup at smc.vnet.net*Subject*: [mg103720] Re: [mg103646] Re: OneIdentity*From*: "Kurt TeKolste" <tekolste at fastmail.us>*Date*: Sat, 3 Oct 2009 09:05:00 -0400 (EDT)*References*: <200909240352.XAA13458@smc.vnet.net> <h9vfkq$e6g$1@smc.vnet.net>

I retract my comment: I misread the definition by incorrectly making the immediate association with idempotence. On Thu, 01 Oct 2009 06:38 -0400, "Chris Osborn" <chrisosb at gmail.com> wrote: > On Sep 30, 6:32 am, "Kurt TeKolste" <tekol... at fastmail.us> wrote: > > You have misread the definition of OneIdentity. OneIdentity declares > > key to be what mathematicians call "idempotent," i.e. you get the > > answer after one application and no change occurs with repeated > > application. The usual example of an idempotent operator is projection > > in linear algebra: the result of projecting to the x-axis a projection > > to the x-axis is the same > > > > xProjection[xProjection[{x,y}]] = xProjection[{x,y}] = {x,0} > > > > Note, however that > > > > xProjectionn[{x,y}] == {x,y} is false in general > > > > On Wed, 23 Sep 2009 23:52 -0400, "Chris Osborn" <chris... at gmail.com> > > wrote: > > > > > > > > > I do not understand why I get "False" instead of "True" here: > > > > > In[773]:= ClearAll[key]; > > > SetAttributes[key, OneIdentity]; > > > > > MatchQ[13, key[_]] > > > > > Out[775]= False > > > > > According to the docs: > > > > > OneIdentity > > > is an attribute that can be assigned to a symbol f to indicate that f > > > [x], f[f[x]], etc. are all equivalent to x for the purpose of pattern > > > matching. > > > > > Thanks in advance, > > > Chris > > > > Regards, > > Kurt Tekolste > > As I see it, the function description implies that for purposes of > pattern matching, > every input to "key" is a fixed point (i.e. key[x] = x) which is a > bit stronger > than idempotence (key[key[x_]] = key[x]). > > But, OneIdentity does not seem to correspond to Idempotence, either, > e.g.: > > In[1568]:= ClearAll[key]; > SetAttributes[key, OneIdentity]; > > MatchQ[key[13], key@key[13]] > > Out[1570]= False > > > > Chris > Regards, Kurt Tekolste