Re: Subscript Bug?

• To: mathgroup at smc.vnet.net
• Subject: [mg90131] Re: Subscript Bug?
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Mon, 30 Jun 2008 04:52:44 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <g47l28\$t66\$1@smc.vnet.net>

```Aaron Fude wrote:

> I have this code in a cell:
>
> Subscript[H, 1] = 110; Subscript[H, 2] = 90;
> H = Subscript[H, 1] + Subscript[H, 2];
> Tanh[Subscript[H, 1]]
>
> The first time I execute the cell, I get
>
> Tanh[Subscript[200, 1]]
>
> which of course is nonsense.
>
> A second execution, yields the correct answer:
>
> Tanh[110]
>
> Is this a feature that I don't understand or a bug?

*NO BUG HERE*. The "feature" you are looking for is indeed the standard
evaluation process of an expression by Mathematica (the main loop) and
you must keep in mind that _subscripted names are not symbols_.

That is they are *not* atomic.

Thus any elements, or their values, within the head *Subscript* can (and
will) change if any replacement rules may be applied.

To correctly deal with subscripted names as if they were symbols, you
must use the *Symbolize* command from the *Notation* package [1, 2, 3].

The first time you execute the cell, H is equal to 200 and is replaced
in the Tanh expression.

Then second time you execute the cell, H_1 becomes 200_1 and the
expression 200_1 gets the values 100.

You can follow the whole process below.

In[1]:= Subscript[H,1]=110;Subscript[H,2]=90;
H=Subscript[H,1]+Subscript[H,2];
Tanh[Subscript[H,1]]//Trace

Out[3]= {{{H,200},Subscript[200, 1]},Tanh[Subscript[200, 1]]}

In[4]:= ?Global`*
Global`H
H0

In[5]:= Tanh[Subscript[H,1]]//Trace

Out[5]= {{{H,200},Subscript[200, 1]},Tanh[Subscript[200, 1]]}

In[6]:= Subscript[H,1]=110;Subscript[H,2]=90;
Subscript[200,1]===Subscript[H,1]

Out[7]= True

In[8]:= Tanh[Subscript[H,1]]//Trace

Out[8]= {{{H,200},Subscript[200, 1],110},Tanh[110]}

In[9]:= <<Notation`
Symbolize[Subscript[H, _]]
Subscript[H,1]=110;Subscript[H,2]=90;
H=Subscript[H,1]+Subscript[H,2];
Tanh[Subscript[H,1]]

Out[13]= Tanh[110]

Regards,
-- Jean-Marc

(* Easy cut and past without the outputs. *)

Subscript[H, 1] = 110; Subscript[H, 2] = 90;
H = Subscript[H, 1] + Subscript[H, 2];
Trace[Tanh[Subscript[H, 1]]]

Information["Global`*", LongForm -> False]

Trace[Tanh[Subscript[H, 1]]]

Subscript[H, 1] = 110; Subscript[H, 2] = 90;
Subscript[200, 1] === Subscript[H, 1]

Trace[Tanh[Subscript[H, 1]]]

<< "Notation`"
Symbolize[ParsedBoxWrapper[\(H \_ _\)]]
Subscript[H, 1] = 110; Subscript[H, 2] = 90;
H = Subscript[H, 1] + Subscript[H, 2];
Tanh[Subscript[H, 1]]

[1] http://reference.wolfram.com/mathematica/Notation/tutorial/\
NotationSymbolizeAndInfixNotation.html

[2] Notation/guide/NotationPackage

[3] http://reference.wolfram.com/mathematica/Notation/ref/Symbolize.html

```

• Prev by Date: Re: Subscript Bug?
• Next by Date: Re: Re: Re: Re: Happy Birthday Mathematica!
• Previous by thread: Re: Subscript Bug?
• Next by thread: Re: Subscript Bug?