Phil Lucht Math & Physics Archive
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 ?