Hello. I am new to python and sympy. I would like to know if
nontrivial mathematical objects and concepts like Lie algebras,
commutative rings, Lie groups, etc, are defined (or at least
approximately defined) in sympy. The following incomplete code
fragments should illustrate what I mean.
Thank you very much.
--------------------------------------------------------------------------------------------------------------------------------
LieAlgebra.py
#attempting to a class (category) of Lie algebras, using the sympy
package
from sympy.abc import
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
class LieAlgebra:
def __init__(self,name="sl(2)",generators=[e,f,h],product=
{(e,f):h, (e,h):2*e, (f,h):-2*f}, verbose=False):
self.name = name
self.generators=generators
self.product=product
if verbose: print "\n-----------------\n", name ,
"\n----------------\n"
signs=[-2,-1,0,+1,+2]
#GENERATE THE FIRST FEW BRACKETS FROM THE BASIC RELATIONS
for i in generators:
for j in generators:
if i == j: break #j is always smaller than i, in the
order e,f,h
for isign in signs:
for jsign in signs:
product[(isign*i, jsign*j)] = (-1)
*isign*jsign*product[(j,i)]
product[(jsign*j, isign*i)] =
isign*jsign*product[(j,i)] #need this for stuff like [-f,-h]
if verbose: print "[",isign*i, ",", jsign*j, "]
=", product[(isign*i, jsign*j)]
class LieAlgebraMap:
def __init__(self,name="I", fromAlg=LieAlgebra(), toAlg=LieAlgebra
()
, map={e:-f, f:-e, h:-h}, verbose=False):
self.name=name
self.fromAlg=fromAlg
self.toAlg=toAlg
self.map=map
#GENERATE THE FIRST FEW MAPPING POINTS FROM LINEARITY
signs=[-2,-1,0,+1,+2]
if verbose:
print "\n----\n", name, ":", fromAlg.name, "--->",
toAlg.name
for i in fromAlg.generators:
for isign in signs:
map[isign*i] = isign*map[i]
if verbose:
print isign*i, "|--->", isign*map[i]
def isHomomorphism(self, verbose=False):
fromAlg=self.fromAlg
toAlg=self.toAlg
map=self.map
name=self.name
for i in fromAlg.generators:
for j in fromAlg.generators:
if i==j : break
if verbose:
print '[',j,',',i,'] = ', fromAlg.product[(j,i)]
print name,'[', j, ',', i, ']=' ,map
[fromAlg.product[(j,i)]]
print '[', name, j, ',', name, i, '] = ',
toAlg.product[(map[j], map[i])]
if map[fromAlg.product[(j,i)]] != toAlg.product[(map
[j], map[i])]:
return False
else:
print "ok..."
return True
if __name__=='__main__':
A = LieAlgebra(verbose=True)
B = LieAlgebra()
m = LieAlgebraMap(verbose=True)
print "\n---------------------------\n"
print m.name, ":", A.name, "--->" , B.name
print "....Is it a Lie Algebra homomorphism?\n"
print m.isHomomorphism(verbose=True)
--------------------------------------------------------------------------------------------------------------------------------
Ring.py:
#attempting to define a class (category) of rings over Z, using the
sympy package
from sympy.abc import
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
class Ring:
def __init__(self,name="Ring of dual numbers", generators=[1,x],
relations = [x**2],elements=[], verbose=False):
self.name=name
self.generators=generators
self.relations=relations
#GENERATE SOME TYPICAL ELEMENTS IN THE RING
#USE groebner_.py IN THE PACKAGE? (see C:\Python\Lib\site-
packages\sympy\polynomials)
if verbose:
print "\n------------\nRing ", self.name , ":\n"
for i in generators:
for j in generators:
for k in generators:
for l in range(-3,4):
if verbose:
print l*i*j*k
elements.append(l*i*j*k)
def isHomomorphism(self,map, verbose=False):
#CHECK WHETHER A GIVEN MAP IS A HOMOMORPHISM;
#THE MAP ITSELF SHOULD CONTAIN SUCH INFO AS fromRing and
toRing
return True
Z=Ring(name="Z", generators=[1], relations=[]) #DEFINING THE BASE RING
class module:
def __init__(self,baseRing=Z):
#BASIC PROPERTIES OF A MODULE
return True
def isHomomorphism(self,map, baseRing, verbose=False): # e.g. a
map f:C->C may be considered be over different base rings
#check whether a given module map is a ring homomorphism
return True
def tensorProduct(self,module1, module2, baseRing, verbose=False):
return True
if __name__=="__main__":
F=Ring(name="C[x,y,z]", generators=[x,y,z], verbose=True)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sympy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---