Function: Cliff5[minimalideal] - find a real basis in a minimal left or right ideal of a Clifford algebra

Calling Sequence:

minimalideal(list,f,s);

Parameters:

list - a list of Clifford basis monomials created, for example, by the procedure 'cbasis'

f - a primitive idempotent in Cl(B) which is to generate a minimal ideal

s - symbol 'left' or 'right' depending whether the ideal is to be left or right

Description:

Procedure 'minimalideal' finds a real basis in a left S=Cl(Q)f or right S=fCl(Q) minimal ideal in the algebra Cl(Q) where f is a primitive idempotent in Cl(Q).

The first argument in the procedure is a list of basis monomials in Cl(Q), e.g., a Clifford basis generated by the procedure 'cbasis' (see cbasis for more help).

If desired, the list entered as the first argument may be first sorted by grade using option 'bygrade' in the Maple's procedure 'sort'. The output from 'cbasis' is already sorted that way. See bygrade for more information on this sorting option.

The second argument in the procedure is a primitive idempotent f. Note that the procedure checks if the polynomial f entered is a primitive idempotent. See `type/primitiveidemp` for more help.

Depending whether the third argument is 'left' or 'right', a basis for the left S=Cl(Q)f or right S=fCl(Q) minimal ideal S in Cl(Q) is computed.

In the given Clifford algebra, there are many different primitive idempotents. It is known that if the signature of Q is (p,q) then a primitive idempotent f is a product of N = q - RHnumber(q-p) commuting projection operators where 'RHnumber' is the Radon-Hurwitz function (see RHnumber for more help). The projection operators may be defined in terms of N commuting basis monomials (see `type/clibasmon` for more help) which may be found with the procedure commutingelements .

For each orthogonal Clifford algebra Cl(Q) in dimensions 1 through 9 there is a data table stored under the procedure clidata . The table is labeled by the signature (p,q) of Q entered as a list [p,q]. The simplest way to access the data for the Clifford algebra over the signature [p,q] is to enter the command

> clidata([p,q]);

To see data for the Clifford algebra of the current form B enter

> clidata();

or use 'clidata' without any arguments provided that the bilinear form B has been defined as a diagonal matrix. For more help on 'clidata' see clidata .

Computation of a basis in S can be dramatically speeded up by using pre-defined primitive idempotents stored under clidata()[4] for each signature. These primitive idempotents are the same as those pre-defined in Pertti Lounesto's CLICAL.

If the primitive idempotent f is the same as clidata()[4] and if the global variable _shortcut_in_minimalideal is set to 'true', then the procedure uses Clifford basis monomials stored under clidata()[5] in a form of a list to compute expanded basis elements in S. Depending whether the third argument is 'left' or 'right', these basis monomials simply multiply f from the left or right.

To display all currently assigned values of environmental variables in 'CLIFFORD', use procedure CLIFFORD_ENV .

If f is different than clidata()[4], complete computations are performed and they usually take longer.

To speed up computations, set global variable _prolevel to true. To find out more, see Cliff5[init] . You can also use a cmulNUM instead of cmulRS for faster computations when B has been assigned a numeric matrix. Selection of the Clifford product procedure is done using useproduct .

The procedure returns a list consisting of three elements:

the first element is an ordered list of expanded basis elements for S,

the second element is the ordered list clidata()[5],

the third element is the string 's' initially entered as the third argument (to remind the user which ideal was used: left or right).

There is a one-to-one relationship between the elements of the two ordered lists.

Examples:

> restart:with(Cliff5):SS:=time():
_prolevel:=true:
_shortcut_in_minimalideal:=false:
'_default_Clifford_product'=_default_Clifford_product;
useproduct(cmulNUM);

[Maple Math]

Warning, cmul will use cmulNUM; for help see pages ?cmul, ?Cliff5[intro], or ?cmulNUM

To shorten output, we will use aliases. Since below we will not exceed dimension 6, we can define aliases first:

> eval(makealiases(6,'ordered')):

Thus, for example,

> e1 &c e2;

[Maple Math]

where e12 = e1e2. When the bilinear form B is diagonal, then e12 = e1e2 = e1we2, etc.

Example 1: Clifford algebra Cl(1,1) is isomorphic to R(2).

> dim:=2:B:=linalg[diag](1,-1): #define the bilinear form B for Cl(1,1)
clibasis:=cbasis(dim): #compute a Clifford basis for Cl(B)

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

> left_sbasis:=minimalideal(clibasis,f,'left'); #compute a real basis in Cl(B)f

[Maple Math]

> right_sbasis:=minimalideal(clibasis,f,'right'); #compute a real basis in fCl(B)

[Maple Math]

>

Example 2: Clifford algebra Cl(2,0) is also isomorphic to R(2)

> dim:=2:B:=linalg[diag](1,1): #define the bilinear form B for Cl(2,0)
clibasis:=cbasis(dim): #compute a Clifford basis for Cl(B)

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

> left_sbasis:=minimalideal(clibasis,f,'left'); #compute a real basis in Cl(B)f

[Maple Math]

> right_sbasis:=minimalideal(clibasis,f,'right'); #compute a real basis in fCl(B)

[Maple Math]

>

Example 3: Clifford algebra Cl(2,2) is isomorphic to R(4)

> dim:=4:B:=linalg[diag](1,1,-1,-1): #define the bilinear form B for Cl(2,2)
clibasis:=cbasis(dim): #compute a Clifford basis for Cl(B)

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

> left_sbasis:=minimalideal(clibasis,f,'left'); #compute a real basis in Cl(B)f

[Maple Math]
[Maple Math]
[Maple Math]

> right_sbasis:=minimalideal(clibasis,f,'right'); #compute a real basis in fCl(B)

[Maple Math]
[Maple Math]

>

Example 4: Now we compute real bases in the left and right minimal ideals of Cl(3,0) = C(2).

> B:=linalg[diag](1,1,1):

> data:=clidata(); #display data about Cl(3,0)

[Maple Math]

> f:=data[4]; #this is a pre-stored primitive idempotent

[Maple Math]

> clibasis:=cbasis(3); #a standard basis for Cl(Q)

[Maple Math]

> left_sbasis:=minimalideal(clibasis,f,'left'); #basis and generators for Cl(Q)f

[Maple Math]

> right_sbasis:=minimalideal(clibasis,f,'right'); #basis and generators for fCl(Q)

[Maple Math]

> f:=(1/2)*(Id+e3); #a different primitive idempotent is chosen now

[Maple Math]

> f &c f, type(f,primitiveidemp);

[Maple Math]

> left_sbasis:=minimalideal(clibasis,f,'left'); #basis and generators for Cl(Q)f

[Maple Math]

> right_sbasis:=minimalideal(clibasis,f,'right'); #basis and generators for fCl(Q)

[Maple Math]

>

Example 5: Clifford algebra Cl(1,3) is isomorphic to H(2).

> dim:=4:B:=linalg[diag](1,-1,-1,-1):#define form B for Cl(1,3)
clibasis:=cbasis(dim): #compute a Clifford basis for Cl(B)

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

> left_sbasis:=minimalideal(clibasis,f,'left'); #compute a real basis in Cl(B)f

[Maple Math]
[Maple Math]

> right_sbasis:=minimalideal(clibasis,f,'right'); #compute a real basis in fCl(B)

[Maple Math]
[Maple Math]

>

Here is a K_basis returned for S=Cl(B)f. Since for the current signature (1,3) we have that K = H and Cl(1,3)=H(2), the output from 'spinorKbasis' shown below has two basis vectors and their generators modulo f:

> SBgens:=data[5]:FBgens:=data[6]:

> K_basis:=spinorKbasis(SBgens,f,FBgens,'left');

[Maple Math]

>

Example 6: Clifford algebra Cl(3,1) is isomorphic to R(4).

> dim:=4:B:=linalg[diag](1,1,1,-1):#define form B for Cl(3,1)
clibasis:=cbasis(dim): #compute a Clifford basis for Cl(B)

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

> left_sbasis:=minimalideal(clibasis,f,'left'); #compute a real basis in Cl(B)f

[Maple Math]
[Maple Math]
[Maple Math]

> right_sbasis:=minimalideal(clibasis,f,'right'); #compute a real basis in fCl(B)

[Maple Math]
[Maple Math]

>

Example 7: Clifford algebra Cl(3,3) is isomorphic to R(8).

> dim:=6:B:=linalg[diag](1,1,1,-1,-1,-1):#define form B for Cl(3,3)
clibasis:=cbasis(dim): #compute a Clifford basis for Cl(B)

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]
[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

> left_sbasis:=minimalideal(clibasis,f,'left'); #compute a real basis in Cl(B)f

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

>

Example 8: Clifford algebra Cl(4,2) is isomorphic to R(8).

> dim:=6:B:=linalg[diag](1,1,1,1,-1,-1):#define form B for Cl(3,3)
clibasis:=cbasis(dim): #compute a Clifford basis for Cl(B)

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]
[Maple Math]

> f:=data[4];#assign pre-stored idempotent to f or use your own here

[Maple Math]

> left_sbasis:=minimalideal(clibasis,f,'left'); #compute a real basis in Cl(B)f

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

>

Example 9: Testing an error message when f is not primitive:

> _prolevel:=false:
dim:=4:B:=linalg[diag](1,1,1,-1):#define form B for Cl(3,1)
clibasis:=cbasis(dim): #compute a Clifford basis for Cl(B)

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]

Thus, a primitive idempotent in Cl(3,1) must have two commuting simple factors. Therefore, f1 defined below is not a primitive idempotent, although it is an idempotent:

> f1:=(1/2)*(1+e1);

[Maple Math]

> f1 &c f1, type(f1,primitiveidemp);

[Maple Math]

Attempting to find a real basis in S=Cl(3,1)f1 will result in an error message:

> sbasis:=minimalideal(clibasis,f1,'left');

Error, (in minimalideal) second argument must be a primitive idempotent

Therefore, let's use data[4]:

> f:=eval(data[4]); f &c f, type(f,primitiveidemp);

[Maple Math]

[Maple Math]

> sbasis:=minimalideal(clibasis,f,'left');

[Maple Math]
[Maple Math]
[Maple Math]

> time()-SS; #13.43 sec

[Maple Math]

>

Comments:

Using 'minimalideal' as shown above is the first step towards the computation of the spinor representation of Cl(Q) in a minimal ideal S over the field K. The next step is to use the procedure 'Kfield' to find a basis for the field K (see Kfield ).

The above examples may be redone for right minimal ideals with the same generators for the field K (replace 'left' with 'right'). This is because K is isomophic to the intersection of the left and right minimal ideals Cl(B)f and fCl(B).

Examples 1 -- 7 are continued in the help page for 'Kfield'. Enter Kfield to see them.

See Also: Cliff5[`type/fieldelement`] , Cliff5[squaremodf] , Cliff5[cbasis] , Cliff5[bygrade] , Cliff5[RHnumber] , Cliff5[Bsignature] , Cliff5[`type/primitiveidemp`] , Cliff5[commutingelements] , Cliff5[spinorKrepr] , Cliff5[spinorKbasis] , Cliff5[matKrepr] , Cliff5[Kfield] , Cliff5[`type/clipolynom`] , Cliff5[clidata]

(c) Copyright October 8, 1995, by Rafal Ablamowicz & Bertfried Fauser, all rights reserved.
Last modified: December 26, 2001, RA/BF.