17.2 The key relations: executable form

The first step is to assemble all of the key relations in executable form:

The properties of Eij

We make the strong assumption that each Eij is invertible. While this turns out to be valid, making it at this point is cheating. Ironically we recommend strongly that the user make heavy invertibility assumptions at the outset of a session. Later after the main ideas have been discovered the user can selectively relax them and thereby obtain more general results.

Also, the 2 x 2 matrix (Eij) 1 i,j 2 is symmetric.

Creating an input file

It is a good idea to create an input file for the strategy session before starting Mathematica. There are several preliminary steps which may have to be done several times before the desired results are obtained. Setting the monomial order, setting variables noncommutative and defining the starting equations can all be done beforehand. This way, if the user wants to try the same run with a slightly different ordering, he only needs to edit the input file and load it again.

In this case, the input file is called cntrl. Notice that we are using Tp[ ] to denote transpose and Inv[] to denote inverse, which is inconsistent with the NCAlgebra package which uses tp[ ] and inv[ ] respectively. This is done intentionally to ensure that actual transposes and inverses are not taken within the GBA. The relations can be easily converted later if it is necessary to do mathematical operations on them.

This is the file “cntrl”:

SetNonCommutative[E11,E22,E12,E21,Inv[E11],Inv[E22],Inv[E12],Inv[E21],  
                  Tp[Inv[E11]],Tp[Inv[E22]],Tp[Inv[E12]],Tp[Inv[E21]],  
                  Tp[E11],Tp[E22],Tp[E12],Tp[E21]];  
 
(* These relations imply that the Eij  generate a symmetric quadratic form. *)  
transE = {  
Tp[E21]-E12,  
Tp[E11]-E11,  
Tp[E22]-E22,  
Tp[E12]-E21,  
Tp[Inv[E21]]-Inv[E12],  
Tp[Inv[E11]]-Inv[E11],  
Tp[Inv[E22]]-Inv[E22],  
Tp[Inv[E12]]-Inv[E21]};  
 
(* These relations assume that everything is invertible *)  
inverseE = {  
E11**Inv[E11] -1,  
Inv[E11]**E11 -1,  
E12**Inv[E12] -1,  
Inv[E12]**E12 -1,  
E21**Inv[E21] -1,  
Inv[E21]**E21 -1,  
E22**Inv[E22] -1,  
Inv[E22]**E22 -1,  
Tp[E11]**Tp[Inv[E11]] -1,  
Tp[Inv[E11]]**Tp[E11] -1,  
Tp[E12]**Tp[Inv[E12]] -1,  
Tp[Inv[E12]]**Tp[E12] -1,  
Tp[E21]**Tp[Inv[E21]] -1,  
Tp[Inv[E21]]**Tp[E21] -1,  
Tp[E22]**Tp[Inv[E22]] -1,  
Tp[Inv[E22]]**Tp[E22] -1};  
 
SetNonCommutative[A,Tp[A],B1,Tp[B1],B2,Tp[B2],  
                  C1,Tp[C1],C2,Tp[C2],  
                  b,Tp[b],c,Tp[c],a,Tp[a]];  
 
(* These are the Hamiltonian equations *)  
Hxx=E11 ** A + Tp[A] ** Tp[E11] + Tp[C1] ** C1 +  
  Tp[C2] ** Tp[b] ** (E21 + Tp[E12])/2 + (E12 + Tp[E21]) ** b ** C2/2 +  
  E11 ** B1 ** Tp[b] ** (E21 + Tp[E12])/2 + E11 ** B1 ** Tp[B1] ** Tp[E11] +  
  (E12 + Tp[E21]) ** b ** Tp[b] ** (E21 + Tp[E12])/4 +  
  (E12 + Tp[E21]) ** b ** Tp[B1] ** Tp[E11]/2;  
 
Hxz=E21 ** A + Tp[a] ** (E21 + Tp[E12])/2 + Tp[c] ** C1 + E22 ** b ** C2 +  
  Tp[c] ** Tp[B2] ** Tp[E11] + E21 ** B1 ** Tp[b]** (E21 + Tp[E12])/2 +  
  E21 ** B1 ** Tp[B1] ** Tp[E11] + E22 ** b ** Tp[b] ** (E21 + Tp[E12])/2 +  
  E22 ** b ** Tp[B1] ** Tp[E11];  
 
 
Hzx=Tp[A] ** Tp[E21] + Tp[C1] ** c + (E12 + Tp[E21]) ** a/2 + E11 ** B2 ** c +  
  Tp[C2] ** Tp[b] ** Tp[E22] + E11 ** B1 ** Tp[b] ** Tp[E22] +  
  E11 ** B1 ** Tp[B1] ** Tp[E21] +  
  (E12 + Tp[E21]) ** b ** Tp[b] ** Tp[E22]/2 +  
  (E12 + Tp[E21]) ** b ** Tp[B1] ** Tp[E21]/2;  
 
 
Hzz=E22 ** a + Tp[a] ** Tp[E22] + Tp[c] ** c + E21 ** B2 ** c +  
  Tp[c] ** Tp[B2] ** Tp[E21] + E21 ** B1 ** Tp[b] ** Tp[E22] +  
  E21 ** B1 ** Tp[B1] ** Tp[E21] + E22 ** b ** Tp[b] ** Tp[E22] +  
  E22 ** b ** Tp[B1] ** Tp[E21];  
 
Hameq = {Hxx,Hxz,Hzx,Hzz};  
 
(* Set the knowns and the order of the unknowns *)  
SetKnowns[A,Tp[A],B1,Tp[B1],B2,Tp[B2],C1,Tp[C1],C2,Tp[C2]];  
SetUnknowns[E12,Tp[E12],E21,Tp[E21],E22,Tp[E22],E11,Tp[E11],  
            Inv[E12],Tp[Inv[E12]],Inv[E21],Tp[Inv[E21]],  
             Inv[E22],Tp[Inv[E22]],Inv[E11],Tp[Inv[E11]],  
            b,Tp[b],c,Tp[c],a,Tp[a]];  
 
startingrels = Union[transE, inverseE, Hameq];  
 
result1 = NCProcess1[startingrels,2,"cntrlans1"];

Now when we load this file, we will be ready to begin the strategy session.