Re: Re: finite domains
- To: mathgroup at smc.vnet.net
- Subject: [mg53090] Re: [mg53053] Re: finite domains
- From: János <janos.lobb at yale.edu>
- Date: Thu, 23 Dec 2004 07:58:28 -0500 (EST)
- References: <cp3t2v$9ai$1@smc.vnet.net> <200412201134.GAA02658@smc.vnet.net> <cq8u48$h47$1@smc.vnet.net> <200412220952.EAA04409@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Dec 22, 2004, at 4:52 AM, Paul Abbott wrote:
> In article <cq8u48$h47$1 at smc.vnet.net>, János <janos.lobb at yale.edu>
> wrote:
>
>
>> I looked at the article and I understand that for that particular
>> case. However that case fell back in the definition on an already
>> existing infinite domain of the same order namely Z. There is also a
>> similar definition in the Book for Odd numbers.
>>
>> In my case I cannot fall back on an existing finite domain, or I do
>> not know how to explore/exploite it with Boolean.
>>
>> I am thinking of a domain named Irany having elements
>> {North,East,South,West}. How can I do that without a reference to a
>> more basic domain as foundation and expect that
>> Element[NorthWest,Irany] will give me False?
>>
> The following code does what _you_ want:
>
> Irany /: Element[x_, Irany]:= MemberQ[{North,East,South,West}, #]& /@
> x
>
> Element[{North, West}, Irany]
>
> Element[NorthWest, Irany]
>
> However, this violates the "spirit" of Mathematica because, for an
> arbitrary symbol, the definition should return the unevaluated
> expression -- but if you try
>
> Element[y, Irany]
>
> you get false, rather than the unevaluated expression. Now, y could be
> North, or it could be NorthWest ...
>
> Cheers,
> Paul
Not exactly.
In[5]:=
Irany /: (x_) \[Element] Irany :=
(MemberQ[{North, East,
South, West},
#1] & ) /@ xIn[5]:=
Irany /: (x_) \[Element] Irany :=
(MemberQ[{North, East,
South, West},
#1] & ) /@ x
In[6]:=
{North, West} \[Element] Irany
Out[6]=
{True, True}
In[7]:=
NorthWest \[Element] Irany
Out[7]=
NorthWest
In[8]:=
y = North
Out[8]=
North
In[9]:=
y \[Element] Irany
Out[9]=
North
Here above I expected a True.
In[10]:=
y = NorthWest
Out[10]=
NorthWest
In[11]:=
y \[Element] Irany
Out[11]=
NorthWest
Here above I expected a False or NorthWest \[Element] Irany in the
"spirit" of Mathematica. Let' see how Booleans is doing in similar
situation:
In[40]:=
True \[Element] Booleans
Out[40]=
True
In[41]:=
y = True
Out[41]=
True
In[42]:=
y \[Element] Booleans
Out[42]=
True
as expected. Now let' see what Booleans is doing with y=NorthWest
In[59]:=
y = NorthWest
Out[59]=
NorthWest
In[60]:=
y \[Element] Booleans
Out[60]=
NorthWest \[Element] Booleans
That is the behavior you described as the "spirit" of Mathematica and
that is fine.
So, I still do not know how to define a finite domain, however I will
try to explore more of the direction you laid down.
Thanks a lot.
János
In[71]:=
$Version
Out[71]=
5.1 for Mac OS X (October 25, 2004) ------
"..because Annushka has already bought sunflower oil, and not only
bought it, but spilled it too."
Bulgakov: Master and Margarita
- References:
- Re: finite domains
- From: Paul Abbott <paul@physics.uwa.edu.au>
- Re: finite domains
- From: Paul Abbott <paul@physics.uwa.edu.au>
- Re: finite domains