Hello, Have you found the way to represent Clifford algebras in GAP ?
Personally I have represented monomial from Clifford algebra as list [cf, ind] where <cf> is coefficient and <ind> are list of indexes e.g. e12=[1, [1,2]] and -e12=[-1,[1,2]]. See below functions which I have created. In my functions I have assumed that either ei*ei=1 or ei*ei=-1 for given algebra. See below functions <cliff_mult_plus> and <cliff_mult_minus>. Regards, Marek # 2009-05-08 Create function which generate abstract clifford algebra # elements are represented as list with coefficients e123= [1,2,3] or [1, [1,2,3]] etc # Define first function for multiplying list elements. # Phase 1: Apply bubble sort to the concatenated list, each exchange of element will change the sign # Phase 2: Multiply all neighbour identical elements. The result will depend on the signature of Clifford algebra # i.e. whether e1 * e1 = 1 or -1. # This function should return new element (sorted list of integers) and sign 1 or -1. # Note: for sorting we can use SignPerm(Sortex(list)) functions which return permutation and calculates its sign. # In the same time <list> is sorted. # Examples: # SignPerm(Sortex([1,3,2])) = -1 ; [2,3,1] -> 1; [1,2,1] -> -1; # # Such a solution does not require writing function for bubble sort. # Case when all squares of generators are equal to 1 cliff_mult_plus:=function(a,b) local res, sign, ind; res:=Concatenation(a,b); sign:=SignPerm(Sortex(res)); # sort # now we remove all repeats ind:=First([1..Length(res)-1], s->res[s]=res[s+1]); while (ind <> fail) do res:=Concatenation(res{[1..ind-1]}, res{[ind+2..Length(res)]}); ind:=First([1..Length(res)-1], s->res[s]=res[s+1]); od; return [sign, res]; end; lie_bracket_plus:=function(a,b) local c,d; c:=cliff_mult_plus(a,b); d:=cliff_mult_plus(b,a); if c=d then return [0,[]]; else return [c[1]-d[1], c[2]]; fi; end; # Case when all squares of generators are equal to -1 cliff_mult_minus:=function(a,b) local res, sign, ind; res:=Concatenation(a,b); sign:=SignPerm(Sortex(res)); # sort # now we have to remove all repeats and change sign for each removal ind:=First([1..Length(res)-1], s->res[s]=res[s+1]); while (ind <> fail) do res:=Concatenation(res{[1..ind-1]}, res{[ind+2..Length(res)]}); sign:=-sign; ind:=First([1..Length(res)-1], s->res[s]=res[s+1]); od; return [sign, res]; end; # 2009-05-22 function return SCT table for Lie algebra with cllifford algebra elements # parameters: bas - basis of clifford Lie algebra in form [[1,2], [2,3],...] sct_lie_alg_cliff_plus:=function(bas) local T, dim, s,t,res, pos; dim:=Length(bas); T:=EmptySCTable(dim, 0, "antisymmetric"); for s in [1..dim-1] do for t in [s+1..dim] do res:=lie_bracket_plus(bas[s], bas[t]); if res[1]<>0 then pos:=Position(bas, res[2]); SetEntrySCTable(T,s,t, [res[1],pos]); fi; od; od; return T; end;; _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum