Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I tried

Subscript[a, 0] = 1
(* 1 *)

Clear[Subscript[a, 0]]
       During evaluation of Clear::ssym: Subscript[a, 0] is not a symbol or a string. >>
Clear[a]
Subscript[a, 0]
(* 1 *)

Any idea?

share|improve this question

migrated from stackoverflow.com Jan 30 '12 at 18:12

This question came from our site for professional and enthusiast programmers.

    
This probably should have been marked as a duplicate question on stackoverflow. See [1] (and maybe [2]) Should we also migrate the other post and/or merge? Or are we happy with the question being covered on both sites? Of course, @Spartacus' answer covers most variations of this question. +1! –  Simon Jan 30 '12 at 23:24
    
This is contained in Mr. Wizard's answer below, but the short and sweet of it that does exactly what I want is: Type your variable name, e.g. "a", then CTRL and - to type your subscript. You can assign a value using ":=", but to remove the assignment the Clear command won't work, but Unset command will work. –  pbs May 7 at 7:47

1 Answer 1

up vote 21 down vote accepted

Yes you can, with limitations.

You have at least three different ways to make an assignment to a subscripted symbol a0 :

  1. make a rule for Subscript

  2. make a rule for a

  3. "symbolize" a0 using the Notation package/palette

In each case below, when I write e.g. Subscript[a, 1] this can also be entered as a1 by typing a then Ctrl+_ then 1.

When you write:

Subscript[a, 1] = "dog";

You make an assignment to Subscript:

DownValues[Subscript]

{HoldPattern[a1] :> "dog"}

You make a rule for a by using TagSet:

a /: Subscript[a, 2] = "cat";

UpValues[a]

{HoldPattern[a2] :> "cat"}

If you use the Notation palette you mess with underlying Box forms behind the scenes, allowing for assignment to OwnValues:

Mathematica graphics

Each of these can be cleared with either Unset or TagUnset:

Subscript[a, 1] =.

a /: Subscript[a, 2] =.

Mathematica graphics

share|improve this answer
1  
It's worth noting that you can directly type a shortcut for subscripts, but I don't know how to show this here. Namely: a<sub>3</sub> = "lion"; where "<sub>3</sub> should be an actual subscript, typed in the Mathematica Front End by first typing Ctrl _ . –  murray Jan 30 '12 at 18:38
1  
is it good MMA form to convert subscript as quickly as possible to something like a5 and then at the last step for output output the result with a subscript, so do the majority of manipulations with identifiers like a5? –  Manuel --Moe-- G Jan 5 at 19:00
1  
@Manuel--Moe--G That would work but usually it is better to use e.g. a[5] which makes conversion in either direction much simpler and faster. However there are places (like Module) that actual Symbols are needed. Also, I haven't looked at the internals of the Notation palette in some years but I seem to recall that the use of Symbolize is performing this kind of translation itself, such that Symbols are used in place of Subscripts during computation, then formatted again as Subscripts for output, so look at that before you "reinvent the wheel" as it were. –  Mr.Wizard Jan 6 at 3:59

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.