The mons list MyList6 was in the original free algebra generators, but I
managed to fix it so it's in the monoid F generators and that fixed the
first error AttributeError: 'FreeAlgebra_generic_with_
category.element_class' object has no attribute '_element_list' My matrices
were transposed but I fixed that also. Checking the behavior of the results
now.

The other good answer for Clifford Algebras was from David Joyner to use
sympy packages
plenty to read in http://docs.sympy.org/latest/modules/galgebra/GA.html

import sympy
from sympy import *
from sympy.galgebra import *
from sympy.galgebra.ga import *

Fully featured but every statement has to be predicated in sage with a
print statement to display the result and the sympy package doesn't
dovetail with sage polynomial and quotient rings if you what to define
something like g^2(1-b^2)=1 or a^2+b^2+c^2=1 with quotients. You get
incompatible operand errors when you b*(sympyGAvector). Hopefully the free
algebra solution can be created over these quotient and polynomial rings
but I would have to reinvent all the myriad Clifford algebra operations...



On Mon, Jul 28, 2014 at 1:21 AM, Nils Bruin <[email protected]> wrote:

> On Sunday, July 27, 2014 8:40:50 PM UTC-7, Stephen Kauffman wrote:
>>
>> Thanks for your help but I think I need more. I've written some code for
>> a somewhat general case of n orthogonal generators and an arbitrary
>> diagonal metric and I think I've generated the correct 16x16 matrices for
>> my n=4 case.
>>
>
> I think you're mainly running into python syntax issues here. For the most
> part, whenever you use "exec" in a computer algebra package, you're doing
> something wrong. There is probably a better way of passing around
> information (mind you, sometimes there's not. You're still doing something
> wrong, but the package might not give you the tools to do it right).
>
>
>> When I finish running the .sage file and return to sage I execute
>>
>> F = PRGA.monoid()
>> MyStr=str(PRGA.gens())
>> MyStr=MyStr[1:len(MyStr)-1]
>> exec MyStr+' = F.gens()'
>> ST.<g0,g1,g2,g3>=FreeAlgebraQuotient(PRGA,MyList6,mats)
>> ST
>>   Free algebra quotient on 4 generators ('g0', 'g1', 'g2', 'g3') and
>> dimension 16 over Rational Field
>>
>> but when I do
>>
>> g3*g3 # or ST.gen(3)*ST.gen(3)
>> AttributeError: 'FreeAlgebra_generic_with_category.element_class' object
>> has no attribute '_element_list'
>>
>
> I can't reproduce this error because you're not telling what MyList6 and
> mats are. If I set
>
> sage: g0,g1,g2,g3 = F.gens()
> sage: MyList6 = [ F(1), g0, g1, g2, g3, g0*g1, g0*g2, g0*g3, g1*g2, g2*g3,
> g3*g1, g0*g1*g2*g3*g0, g0*g1*g2*g3*g1, g0*g1*g2*g3*g2, g0*g1*g2*g3*g3,
> g0*g1*g2*g3]
> sage: mats=[matrix(QQ,16,16,1) for j in range(4)]
> sage: ST.<g0,g1,g2,g3>=FreeAlgebraQuotient(PRGA,MyList6,mats)
> sage: ST.gen(3)*ST.gen(3)
> g3
>
> I get no error (I do get a rather nonsensical result because I initialized
> the matrices to nonsense).
>
>
>> Further when I try to automate with the generated string MyStr='g0, g1,
>> g2, g3' and within the .sage file
>>
>> exec 'ST.<'+MyStr+'> = FreeAlgebraQuotient(PRGA,MyList6,mats)'
>>
>> Traceback (most recent call last):
>>   File "<string>", line 1
>>     ST.<g0, g1, g2, g3> = FreeAlgebraQuotient(PRGA,MyList6,mats)
>>        ^
>> SyntaxError: invalid syntax
>>
>
> That's because "exec" is just python's "exec" and you're giving syntax
> that needs sage's preparser. The ST.<g0> syntax is not valid python. To see
> how it converts:
>
> sage: preparse("ST.<g0,g1,g2,g3> = FreeAlgebraQuotient(PRGA, mons, mats)")
> "ST = FreeAlgebraQuotient(PRGA, mons, mats, names=('g0', 'g1', 'g2',
> 'g3',)); (g0, g1, g2, g3,) = ST._first_ngens(4)"
>
> which also helps you for your next error:
>
>
>> If I try:
>>
>> ST=FreeAlgebraQuotient(PRGA,MyList6,mats, names='g0, g1, g2, g3') # or
>> anything else I try in names
>>
>> Traceback (most recent call last):
>> ValueError: first letter of variable name must be a letter
>>
>
> As the preparse command shows, it should work if you set names to a tuple
> (really, an iterable) of strings. A nasty design choice is that strings
> themselves are iterables, which produce their individual characters. Compare
>
>  sage: [x for x in ('g0', 'g1', 'g2', 'g3')]
> ['g0', 'g1', 'g2', 'g3']
> sage: [x for x in "g0, g1, g2, g3"]
> ['g', '0', ',', ' ', 'g', '1', ',', ' ', 'g', '2', ',', ' ', 'g', '3']
>
> Hence the error message: '0' is not a valid generator name.
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-support" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sage-support.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to