Chapter 22
Help in Typing Relations .

22.0.1 NCMakeRelations[aSpecialList, aSpecialList, . . . ]

Aliases: None
Description: This command allows the user to easily generate certain lists of polynomials which can be used as input to NCMakeRules. We begin with some examples and then explain the command in the third paragraph of this subsection. Suppose that z1, z2, z3 and z4 have been set to be noncommutative (if not, just type SetNonCommutative[z1,z2,z3,z4]). If one types
             < < N CM  akeRelations.m

      N CM   akeRelations[{Inv, a,b,c},
{SelfAdjoint, x,y,{{z1, z2},{z3, z4}}}]
then this function returns the list
{a * *Inv[a] ==  1,Inv[a] * *a == 1,b * *Inv[b] == 1,Inv[b] * *b == 1,
  c * *Inv[c] == 1,Inv[c] * *c == 1,- x + aj[x] == 0,- y + aj[y] == 0,

                               - z1 + aj[z1] ==  0,- z2 + aj[z3] == 0,
                               - z3 + aj[z2] ==  0,- z4 + aj[z4] ==  0}

NCMakeRelations takes any number of arguments and each of its arguments is a List. For each list, the first word describes the type of relations and the other elements can be either simple expressions (like x, y, 1 - y **x, 1 - x **y, etc.) or square matrices with symbolic entries (such as in the example above) or any mixture of these two types of data. We now list the allowed types of relations. Some of the relations are stated in terms of the hereditary functional calculus of Jim Agler (see HereditaryCalculus.m).
  1. Isometry (i.e., T such that T*T - 1 = 0 )
  2. CoIsometry (i.e., T such that TT*- 1 = 0 )
  3. SelfAdjoint (i.e., T such that T*- T = 0)
  4. Projection (i.e., T such that T2 - T = 0)
  5. InvL (i.e., T such that InvL[T] **T = 1)
  6. InvR (i.e., T such that T **InvR[T] = 1)
  7. Inv (i.e., T such that Inv[T] **T = 1 and T **Inv[T] = 1)
  8. Rt (i.e., T such that Rt[T]2 = T)
  9. Pinv (i.e., T such that T **Pinv[T] **T = T, Pinv[T] **T **Pinv[T] = Pinv[T], tp[T **Pinv[T]] = T **Pinv[T], tp[Pinv[T] **T] = Pinv[T] **T)
  10. PerpL (i.e., T such that PerpL[T] **T = 0)
  11. PerpR (i.e., T such that T **PerpR[T] = 0)
  12. PerpL2 (i.e., T such that 1-T**Pinv[T] = PerpL2[T] and tp[PerpL2[T]] = PerpL2[T])
  13. PerpR2 (i.e., T such that 1 - Pinv[T] * *T = PerpR2[T] and tp[PerpR2[T]] = PerpR2[T])
  14. Isometry[aInteger] (where aInteger is a natural number) (i.e., T such that (yx - 1)aInteger(T) = 0)
  15. Symmetry[aInteger] (where aInteger is a natural number) (i.e., T such that (y - x)aInteger(T) = 0)
  16. Isosymmetry (i.e., T such that (yx - 1)(y - x)(T) = 0 or equivalently T*2T - T*T2 - T* + T = 0). These extremely important operators were the subject of Mark Stankus incredible thesis.
Arguments: aSpecialList is a list whose first element is one of the allowed types above and the rest of whose elements are either simple expressions or square matrices.
Comments / Limitations: Not available before NCAlgebra 1.2

22.1 Output notation for pseudoinverse and perp’s

P inv[x]     -→    x+       xx+x =  x,  x+xx+  =  x+,
                           (x+x)T  =  x+x,   (xx+)T =  xx+

                   ⌊        ⌊
P erpL[x]   -→    x        x x = 0

P erpR[x]   -→    x⌋       xx⌋ = 0

                   ⌊⌊        ⌊⌊         +      ⌊⌊ T     ⌊⌊
P erpL2[x]  -→    x        x  = 1 - xx  ,  (x )  = x

P erpR2[x]  -→    x⌋⌋       x⌋⌋ = 1 - x+x,   (x⌋⌋)T = x ⌋⌋

22.1.1 NCAddTranspose[aListOfExpressions]

Aliases:
Description: One can save time when working in an algebra with transposes or adjoints by using the command NCAddTranspose[ ]. These commands “symmetrize” a set of relations by applying tp[ ] to the relations and returning a list with the new expressions appended to the old ones. This saves the user the trouble of typing both a = b and tp[a] = tp[b].
Arguments: aListOfExpressions is a list of expressions
Comments / Limitations:

22.1.2 NCAddAdjoint[aListOfExpressions]

Aliases:
Description: One can save time when working in an algebra with transposes or adjoints by using the command NCAddAdjoint[ ]. These commands “symmetrize” a set of relations by applying aj[ ] to the relations and returning a list with the new expressions appended to the old ones. This saves the user the trouble of typing both a = b and aj[a] = aj[b].
Arguments: aListOfExpressions is a list of expressions
Comments / Limitations:

22.1.3 Pulling important equations into your session from an NCProcess output - See GetCategories in §23.0.5.

22.1.4 Help in typing Monomial Orders - See NCAutomaticOrder Section 18.4.6