Home / Math and Physics Files / Math / Curvilinear Systems / Tensor Doc and Support / transpose in Standard Notation
notation bug
DOCX · 29.0 KB
Open DOCX file
Working note by Phil dated 2.9.12 examining an error in his tensor document's rule for translating a matrix transpose into standard index notation. It states the bug via R R^T and g', then resolves it: matrix multiplication needs a true contraction, so the transpose must be defined through the metric. It proposes a standard-notation matrix multiplication theorem and discusses inverses of R and S and mixed tensors. Index positions are lost in the extracted text.
AI-written summary; may contain errors. This description is approximate.
Extracted text (machine-read; may contain errors)
Notation Bug PhL 2.9.12
In my first cut of tensor doc, I stated this translation rule:
ATab = Aba → (AT)ab = Aba [ wrong !!! ]
I was always uncomfortable with the rule since the RHS has wrong indices. My argument for the above was simply that AT is like any other matrix, and therefore since Aba → Aba, we should have
(AT)ba → (AT)ba . This led to a contradiction (the Bug below). I eventually realized that Aba → Aba is a rule that applies only to the non-tensor objects R and S, but not to a true tensor. For a true tensor, we know of course that Aba → Aab (contravariant goes to contravariant). Eventually I realized this fact and then learned how to translate things correctly, namely: First write this in standard notation
Cab = (CT)ba
Since both indices are down (or they could be both up), no one argues about what transpose means. Now apply ga'a to both sides to get
ga'a Cab = ga'a (CT)ba
=> Ca'b = (CT)ba'
and there you are. This is the correct rule. So we need to repair our claim above and say
(AT)ab = Aba → (AT)ab = Aba [ all are correct ]
(AT)ab = Aba
(AT)ab = Aba
(AT)ab = Aba
________________________________________________________________________________
Statement of the Bug
1. On the one hand, we know that this is true
g'ab = Raa'Rbb'ga'b' => g'ab = Raa'Rba' if g = 1
Notice that we can write this as g'ab = Raa'Rba' and then it shows a clean contraction on a'.
2. On the other hand, consider this sequence of seemingly legal steps, all in std notation:
Raa'Rba' = Raa'(RT)a'b 1 // using our rule that (AT)ab = Aba
= [ R RT ]ab 2 // using our rule that Aaa'Ba'b = [AB]ab
= [g' ]ab 3 // using our "fact" that RRT = g'
But this result conflicts with the result obtained by method 1. Therefore at least one of the above three steps must be wrong.
Resolution of the Bug.
1. In std notation space, "matrix multiplication" exists and is allowed to the extent that you are contracting an adjacent pair of indices. For example, if A and B are true tensors of the type they appear, then when we write
Cab = AacBcb
then the two sides of this equation have the same "tensor nature" and thus we can think of this as matrix multiplication and we can write
C = AB and then Cab = (AB)ab
2. Consider now this different product, where again A and B are true tensors,
Dab = AacBbc
For general g, the RHS is NOT a tensor of any type, because we don't have a true contraction, and therefore Dab is NOT a pure contravariant tensor. Now suppose we make this definition
(BT)cb ≡ Bbc
Then our equation would read
Dab = Aac(BT)cb
Now you would be tempted to say that we DO have contraction and therefore D IS a contra tensor. But the fallacy here is that the object (BT)cb is not a tensor of the type Xcb , and therefore despite the contraction, D is not a tensor either. The above equation is a valid equation, given our definition, but since the two objects on the right are not tensors of the sense they appear, you cannot summarize the above equation in this manner
D = ABT
If you could write the above, then you would be claiming
Dab = (ABT)ab
But in fact the above equation never occurs because D = ABT is invalid in the first place.
3. We know that if Mab is a true tensor in std notation, then (MT)ab is also a true tensor, and we have no qualms writing
(MT)ba = Mab
Suppose then we have M and N both true tensors and the equation
Cac = MabNbc = MabNbc => C = MN
We could regard this as matrix multiplication of "down arrow" matrices in the second form so C = NM where all are down type tensors. We could also write the above as
Cac = (NT)cb (MT)ba = (NT)cb (MT)ba = [ NTMT]ca
This does NOT say that C = NTMT because the "nature of the indices" does not match -- the tilts are different in this case. It does, however, suggest that you might define
(CT)ca ≡ Cac
something I rejected earlier. If you could do this, then you would have
(CT)ca = [ NTMT]ca => CT = NTMT
which looks pretty reasonable. This is matrix multiplication of two "up arrow matrices NT and MT to give the up arrow matrix XT
4. Maybe I can derive the above relationship. Start with
Cab = (CT)ba
Now apply ga'a to both sides to get
ga'a Cab = ga'a (CT)ba
=> Ca'b = (CT)ba'
and there you are. This works if C is a true tensor.
2 Revisited. Consider now this different product, where again A and B are true tensors,
Dab = AacBbc
For general g, the RHS is NOT a tensor of any type, because we don't have a true contraction, and therefore Dab is NOT a pure contravariant tensor. Now suppose we make this definition
(BT)cb ≡ Bbc
Then our equation would read
Dab = Aac(BT)cb
The indices are now "aligned" properly for matrix multiplication, but we don't have a contraction on c, so we cannot conclude that
D = A BT
I am ready to propose a theorem:
Standard Notation Matrix Multiplication Theorem.
A combination of two rank-2 tensors with a single summed index can be regarded as a matrix multiplication only if the following two conditions are met:
(a) the summation index must be on the right side of the first factor and on the left side of the second factor.
(b) the summation index must be up on one factor and down on the other, ie, it must be a contraction.
Examples:
Cac = AabBbc = (AB)ac and C = AB
Cac = AabBbc = (AB)ac and C = AB
Cac = AabBbc does NOT imply C = AB
Cac = AabBcb is not in the right form, but
Cac = AabBcb = AabBTbc and C = ABT
g'ac = RabRcb is not in the right form, but
g'ac = RabRcb = Rab(R)Tbc and g' = RRT
On the last two lines, however, R is not a tensor, so extra attention is needed to see if really true. That is to say, is this really true for R:
Rcb = (RT)bc ??
Since we know that Rcb = Sbc this would imply that
Sbc = (RT)bc
I ought to be able to raise one index with one g and the other with g' to get
Sbc = (RT)bc
Can I map that back to dev notation? I don't know what to do with the RHS! I think we can say this for sure
Sbc → Sbc
(RT)bc NOT→ (RT)bc
Thus the reverse mapping does NOT give
Sbc = (RT)bc which would imply S = RT which I know is not true.
But maybe we can have S = RT in std notation but not in dev notation. Very strange indeed.
What about the inverse stuff?
Let's assume these are OK:
Rik ≡ (∂x'i/∂xk) → Rik ≡ (∂x'i/∂xk)
Sik ≡ (∂xi/∂x'k) → Sik ≡ (∂xi/∂x'k)
Then we could say
(S-1)ik ≡ (∂x'i/∂xk) → Rik ≡ (∂x'i/∂xk)
(R-1)ik ≡ (∂xi/∂x'k) → Sik ≡ (∂xi/∂x'k)
In std notation we might try to define S-1 such that
(S-1)ik Skc = δic (*)
But I know from the chain rule that
(∂x'i/∂xk) (∂xk/∂x'c) = δic
which says that
Rik Skc = δic (**)
Comparison of (*) and (**) then tells us that
(S-1)ik = Rik
Thus the notion that S-1 = R maintains in the std notation world.
Look at this another way. How do we show that
(S-1)ab → (S-1)ab ?
Well, we know that
(S-1)ab = Rab → Rab
I then must use the chain rule argument shown above. I need to add this to tensor doc.
Conclusion: My only problem is the transpose, not with inverse. I scanned all of tensor doc starting at Section 7 looking for capital T in superscript font and found only a few cases where this appears in the std notation, so should not be a disaster to clean up!
Earlier notes. These came just after the "Statement of the Bug".
Examine Step 3. Suppose we know that AB = C in developmental notation. Is this same equation true in standard notation?
AabBbc = Cac → AabBbc = Cac yes it is true
But suppose a transpose matrix is involved. That is, suppose we know that ADT = C in dev notation. Is this same equation true in std notation?
AabDTbc = Cac → Aab(DT)bc = Cac this seems true as stated so far [but not ]
Now what happens if we rewrite the dev notation equation and then do → on that,
AabDcb = Cac → AabDcb = Cac same true step as shown above [ this ok]
Now if we assume that (DT)bc = Dcb, the last two std notation equations agree. All seems well.
Examine Step 2. This is just the matrix multiplication rule already stated in 3 as true. That is,
(AB)ac = AabBbc → AabBbc = (AB)ac
Examine Step 1. Is this rule valid: (AT)ab = Aba ?
It does seem suspicious. Suppose we let B ≡ AT . It then says Bab = Aba. This does not look like a valid tensor equation because on the LHS a is a contravariant index and on the RHS it is a covariant one. Suppose A is a valid rank-2 tensor. Is B also a valid tensor or not? Yes it is, but not the same type! So how can you set tensors of different types equal ??
Bab = (AT)ab = Aba
How did I come up with this rule in the first place? Here is a direct quote:
(RT)ab = Rba → (RT)ab = Rba
Suppose here I set RT = C. Then this says
Cab = Rba → Cab = Rba
I think my presentation is reasonable as to the fact that
Rab → Rab
Sab → Sab
But I have not said anything about how RT should be mapped from dev to std notation!
Rik ≡ (∂x'i/∂xk) → Rik ≡ (∂x'i/∂xk)
Rki ≡ (∂x'k/∂xi) → Rki ≡ (∂x'k/∂xi)
Rki = (RT)ik → Rki ≡ (∂x'k/∂xi)
Maybe we are not allowed to have object RT in std notation space?
Plan A. But why can I not just make this definition:
Define: (RT)ik ≡ Rki ≡ (∂x'k/∂xi)
Perhaps a better definition would be this:
(RT)ik ≡ Rki ≡ (∂x'k/∂xi) = Sik
But then I have that RT = S which I know is wrong.
It must be that my definition shown above leads to some inconsistency. My bug is one such inconsistency, but you would think something more fundamental would show a problem. I have to show WHY such a definition is wrong. I can just say that RT is not a tensor I suppose.
Comment. Suppose matrix M is a tensor. Then we know that
M' = R M RT => M'ab = Raa' Rbb' Ma'b'
Now do transpose on this equation
M'T = R MT RT
Therefore, if M' is a rank 2 contravariant tensor, then M'T is also a rank 2 contravariant tensor.
Plan B. The problem arises with mixed tensors! Let's try an outer product example:
Mab = AaBb →
Let's go back to these rules
Rik ≡ (∂x'i/∂xk) → Rik ≡ (∂x'i/∂xk)
Rki ≡ (∂x'k/∂xi) → Rki ≡ (∂x'k/∂xi)
Rki = (RT)ik → Rki ≡ (∂x'k/∂xi)
Do I have any "rules" for mixed tensors' translation? Unmixed the rules were
Mab → Mab
ab → Mab
This idea of → causing me to raise the first index only applies to Rab and Sab and nothing else!
The only mixed tensors I know of would be
ab ≡ Aab → AaBb = Wab
So for this kind of mixed tensor, I seem to have the rule
ab → Wab
Now what would this mean? Here the leftmost T means "swap the indices only"
(T)ab = Aba = ba → AbBa = Wba
That's interesting. Put these side by side:
ab ≡ Aab → AaBb = Wab
(T)ab = Aba = ba → AbBa = Wba
This seems consistent with the idea that (WT)ab = Wba = what is on the bottom right.
Plan C. Let's go back to the original bug and do "side by side"
Dev Notation Std Notation
Raa'Rba' Raa'Rba'
= Raa'(RT)a'b = Raa'(RT)a'b
= [ RRT]ab = [ RRT]ab
STOP. We already have a problem on the right. Object has "changed its tensor nature".
Start over with a simpler example
Dev Notation Std Notation
Rba' Rba'
= (RT)a'b = (RT)a'b
STOP. Object on right has changed its tensor nature.
Now consider this line all by itself:
(RT)a'b → (RT)a'b
I suspect that Rule 1 = "raise the first index in going dev→std" does not apply to object RT although it does apply to object R. I certainly know that Rule 1 does not apply to pure tensor Mab. What I do know is true is this
(RT)a'b = Rba' → Rba'
Thus we have these two rules known to be valid:
Rba' → Rba'
(RT)a'b → Rba'
so the correct rules are:
Rmn → Rmn
(RT)nm → Rmn
You raise the second index and then reflect in vertical.
But what is the harm in just defining (RT)nm ≡ Rmn ?