MathGroup Archive 2002

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

Search the Archive

Re: CirclePlus precedence and bigoplus

  • To: mathgroup at smc.vnet.net
  • Subject: [mg36320] Re: CirclePlus precedence and bigoplus
  • From: "Carl K. Woll" <carlw at u.washington.edu>
  • Date: Sat, 31 Aug 2002 01:26:06 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Lucas,

An addendum to my previous post (by the way, did you try to change
precedences as I recommended?).

If you are interested in using something like the normal summation notation,
the summation symbol can't be CirclePlus, as CirclePlus is not an extensible
character. I don't know all of the extensible characters, but one
possibility is \[UnionPlus], which looks a bit like CirclePlus, with an
opening on top. Of course, the usual syntax for \[UnionPlus] is as a binary
operator, and this is not what we want for our summation notation. So, we
need to incorporate new syntactical rules. There are three rules needed
here. A rule to convert 2 dimensional input into a mathematica internal
expression, a rule to convert the internal expression into a box structure,
and a rule to convert the internal expression into a regular CirclePlus
expression. I give these three rules below:

Clear[MakeExpression]
MakeExpression[
    RowBox[{UnderoverscriptBox["\[UnionPlus]",RowBox[{i_,"=",k_}],n_],y_}],
    StandardForm]:=

MakeExpression[RowBox[{"BigCirclePlus[",y,",{",i,",",k,",",n,"}]"}],Standard
Form]

Clear[MakeBoxes]
MakeBoxes[BigCirclePlus[y_, {i_, k_, n_}], f_] :=
  RowBox[{UnderoverscriptBox["\[UnionPlus]",
     RowBox[{MakeBoxes[i, f], "=", MakeBoxes[k, f]}],
     MakeBoxes[n, f]], MakeBoxes[y, f]}]

BigCirclePlus[y_, {i_, k_Integer, n_Integer}] :=
  CirclePlus @@ Table[y, {i, k, n}]

As you can see, BigCirclePlus is used in the Mathematica internal
representation. If BigCirclePlus can be converted into a CirclePlus
expression (when the summation indices are integers), then the BigCirclePlus
rule acts. Here are a couple of examples:

\!\(\(\[UnionPlus]\+\(i = 1\)\%M g[i]\)\)

\!\(\(\[UnionPlus]\+\(i = 1\)\%5 g[i]\/\(1 + h[i]\/5\)\)\)

Just copy each of the above expressions into Mathematica and evaluate after
evaluating the above rules.

Of course, if \[UnionPlus] is not an acceptable substitute for an extensible
CirclePlus, then you will just need to petition Mathematica to include such
a feature in the future.

Carl Woll
Physics Dept
U of Washington

----- Original Message -----
From: "Carl K. Woll" <carlw at u.washington.edu>
To: mathgroup at smc.vnet.net
Subject: [mg36320] Re: CirclePlus precedence and bigoplus


> Lucas,
>
> One way to change the precedence of CirclePlus is to change the file
> UnicodeCharacters.tr.
>
> On my machine the file is located under
>
> ../4.1/SystemFiles/FrontEnd/TextResources
>
> Open up the file, search for CirclePlus, change the precedence from 450 to
> 420, and then save. Of course, it would be wise to make a backup copy of
the
> file before you make any changes. Also, 420 is low enough to get the
> behavior you desire, but you may want to experiment with other
precedences.
> Then, start mathematica and you will get the behavior you want.
>
> Carl Woll
> Physics Dept
> U of Washington
>
> "Lucas" <lscharen at d.umn.edu> wrote in message
> news:ak4dvm$6e$1 at smc.vnet.net...
> > Hello,
> >
> > I'm attempting to implement an abstract mathematica package in
> > mathematica that utilized the \[CirclePlus] operator in an unusual
> > way.  Specifically, the \[CirclePlus] has a precidence lower than +
> > and introduces barriers in the computation.  So, an expression such as
> >
> > a + b \[CirclePlus] c + d   --> (a+b) \[CirclePlus] (c+d)
> >
> > The mathematica ouput of
> >
> > a + d + (b \[CirclePlus] c) is incorrect.  I've tried playing with the
> > PrecedenceForm[] function, but that does not seem able to produce the
> > desired effect.
> >
> > Also, I would like to introduce a notation like
> >
> >         N
> > \[BigCirclePlus] x[[i]] --> x[[1]] \[CirclePlus] x[[2]] \[CirclePlus]
> > ....
> >        i=0
> >
> > analagous to summation, but mathematica does not appear to offer the
> > CirclePlus in a large format.  to relate this to the case above, x[1]
> > = (a + b) and
> > x[2] = (c + d), so each indexed element is a subexpression.
> >
> > Finally, I would like to be able to set up the CirclePlus operator
> > such that the following algebraic relations hold:
> >
> >
> > \Sum \BigCirclePlus E    =  \BigCirclePlus \Sum E
> >   i        j         ij            j         i   ij
> >
> > d                                        d
> > -- \BigCirclePlus E    =  \BigCirclePlus -- E
> > dx        j        j             j       dx  j
> >
> >
> > Thanks in advance for any help on the above.
> >
> > -Lucas Scharenbroich
> > -MLS Group / JPL
> >
>
>
>




  • Prev by Date: Re: NDSolve with integral equation
  • Next by Date: RE: Operating on Level Subparts of an Expression
  • Previous by thread: Re: CirclePlus precedence and bigoplus
  • Next by thread: (maybe off topic) Mathematica suddenly doesn't start anymore