10.4 Saving lots of time when typing

10.4.1 Saving time when typing relations involving inverses:NCMakeRelations

One can save time in inputting various types of starting relations easily by using the command NCMakeRelations.

In[12]:= <<NCMakeRelations.m  
In[13]:= NCMakeRelations[{Inv,y,1-y}]  
Out[13]= { y ** Inv[y] == 1, Inv[y] ** y == 1,  
           (1 - y) ** Inv[1 - y] == 1, Inv[1 - y] ** (1 - y) == 1}

WARNING

It is traditional in mathematics to use only single characters for indeterminates (e.g., x, y and α). However, we allow these indeterminate names as well as more complicated constructs such as

Inv[x],Inv[y],Inv[1 - x * *y] and Rt[x].
In fact, we allow f[expr] to be an indeterminate if expr is an expression and f is a Mathematica symbol which has no Mathematica code associated to it (e.g., f = Dummy or f = Joe, but NOT f = List or f = Plus). Also one should never use inv[m] to represent m-1 in the input of any of the commands explained within this document, because NCAlgebra has already assigned a meaning to inv[m]. It knows that inv[m] **m is 1 which will transform your starting set of data prematurely.

Besides Inv many more functions are facilitated by NCMakeRelations, see Section 22.0.1.

10.4.2 Saving time working in algebras with involution: NCAddTranspose, NCAddAdjoint

One can save time when working in an algebra with transposes or adjoints by using the command NCAddTranpose[ ] or NCAddAdjoint[ ]. These commands “symmetrize” a set of relations by applying tp[ ] or 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 tp[a] = tp[b].

            NCAddTranspose[ { a + b , tp[b] == c + a } ]

returns

{ a + b , tp[b] == c + a, b == tp[c] + tp[a], tp[a] + tp[b] }

10.4.3 Saving time when setting orders: NCAutomaticOrder

One can save time in setting the monomial order by not including all of the indeterminants found in a set of relations, only the variables which they are made of. NCAutomaticOrder[aMonomialOrder, aListOfPolynomials] inserts all of the indeterminants found in aListOfPolynomials into aMonomialOrder and sets this order. NCAutomaticOrder[ aListOfPolynomials] inserts all of the indeterminants found in aListOfPolynomials into the ambient monomial order. If x is an indeterminant found in aMonomialOrder then any indeterminant whose symbolic representation is a function of x will appear next to x.

              NCAutomaticOrder[{{a},{b}},  { a**Inv[a]**tp[a] + tp[b]}]

would set the order to be a < tp[a] < Inv[a] b < tp[b].