MathGroup Archive 2000

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

Search the Archive

Re: Simplifying Problems

  • To: mathgroup at smc.vnet.net
  • Subject: [mg22480] Re: Simplifying Problems
  • From: Paul Abbott <paul at physics.uwa.edu.au>
  • Date: Wed, 8 Mar 2000 02:22:19 -0500 (EST)
  • Organization: University of Western Australia
  • References: <89ce39$brr@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Jordan Rosenthal wrote:

> Let's say I declare a variable to be an Integer with
>
>    j \[Element] Integers
>
> Now I set up a function which should only work on integers
>
>    f[x_?IntegerQ] = x+2
>
> This, however, does not recognize that the variable j has been declared an
> integer:
>
>    In[3]:=
>       f[2]
>
>    Out[3]=
>       4
>
>    In[4]:=
>       f[j]
>
>    Out[4]=
>       f[j]
>
> Is there a way I can get the function to work for variables declared as
> integers with the Element function?

Here is one way:

Notebook[{
Cell[TextData[{
  "I assume that you declared ",
  Cell[BoxData[
      FormBox[
        RowBox[{"j", "\[Element]",
          TagBox["\[DoubleStruckCapitalZ]",
            (Integers&)]}], TraditionalForm]]],
  " as follows?"
}], "Text"],

Cell[CellGroupData[{

Cell[BoxData[
    FormBox[
      RowBox[{"j", "/:",
        RowBox[{"j", "\[Element]",
          TagBox["\[DoubleStruckCapitalZ]",
            (Integers&)]}], "=", "True"}], TraditionalForm]], "Input"],

Cell[BoxData[
    \(TraditionalForm\`True\)], "Output"]
}, Open  ]],

Cell[TextData[{
  "Note that this does ",
  StyleBox["not",
    FontSlant->"Italic"],
  " work,"
}], "Text"],

Cell[CellGroupData[{

Cell[BoxData[
    \(TraditionalForm\`IntegerQ[j]\)], "Input"],

Cell[BoxData[
    \(TraditionalForm\`False\)], "Output"]
}, Open  ]],

Cell["but this does.", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
    FormBox[
      RowBox[{"j", "\[Element]",
        TagBox["\[DoubleStruckCapitalZ]",
          (Integers&)]}], TraditionalForm]], "Input"],

Cell[BoxData[
    \(TraditionalForm\`True\)], "Output"]
}, Open  ]],

Cell["Defining a test function:", "Text"],

Cell[BoxData[
    FormBox[
      RowBox[{\(test(x_)\), ":=",
        RowBox[{
          RowBox[{"x", "\[Element]",
            TagBox["\[DoubleStruckCapitalZ]",
              (Integers&)]}], "\[Or]", \(IntegerQ[x]\)}]}],
      TraditionalForm]], "Input"],

Cell["You can define your function as follows:", "Text"],

Cell[BoxData[
    \(TraditionalForm\`f(x_?test) := x + 2\)], "Input"],

Cell["Examples:", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
    \(TraditionalForm\`f(2)\)], "Input"],

Cell[BoxData[
    \(TraditionalForm\`4\)], "Output"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
    \(TraditionalForm\`f(j)\)], "Input"],

Cell[BoxData[
    \(TraditionalForm\`j + 2\)], "Output"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
    \(TraditionalForm\`f(k)\)], "Input"],

Cell[BoxData[
    \(TraditionalForm\`f(k)\)], "Output"]
}, Open  ]]
}
]




  • Prev by Date: Re: string-variable-Set-snarl
  • Next by Date: Re: Defining a function within a module (2)
  • Previous by thread: Re: Re: Simplifying Problems
  • Next by thread: Re: Transformation Methods for Pi