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
-~----------~----~----~----~------~----~------~--~---

Reply via email to