MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: How to do Continued fraction of polynomials
  • Next by Date: Re: Mathematica is destroying my sanity....
  • Previous by thread: Re: finite domains
  • Next by thread: Printing Error Messages to "Messages" Window?