Package sage :: Package algebras :: Module free_algebra
[hide private]
[frames] | no frames]

Module free_algebra

source code


Free algebras

AUTHOR: David Kohel, 2005-09
    William Stein 2006-11-01 -- add all doctests; implemented many things.

EXAMPLES:
    sage: F = FreeAlgebra(ZZ,3,'x,y,z')
    sage: F.base_ring()
    Integer Ring
    sage: G = FreeAlgebra(F, 2, 'm,n'); G
    Free Algebra on 2 generators (m, n) over Free Algebra on 3 generators (x, y, z) over Integer Ring
    sage: G.base_ring()
    Free Algebra on 3 generators (x, y, z) over Integer Ring        

TESTS:
    sage: F = FreeAlgebra(GF(5),3,'x')
    sage: F == loads(dumps(F))
    True

    sage: F.<x,y,z> = FreeAlgebra(GF(5),3)
    sage: F == loads(dumps(F))
    True

    sage: F = FreeAlgebra(GF(5),3, ['xx', 'zba', 'Y'])
    sage: F == loads(dumps(F))
    True

    sage: F = FreeAlgebra(GF(5),3, 'abc')
    sage: F == loads(dumps(F))
    True

    sage: F = FreeAlgebra(FreeAlgebra(ZZ,1,'a'), 2, 'x')
    sage: F == loads(dumps(F))
    True



Classes [hide private]
  FreeAlgebra_generic
The free algebra on $n$ generators over a base ring.
Functions [hide private]
 
FreeAlgebra(R, n, names)
Return the free algebra over the ring $R$ on $n$ generators with given names.
source code
 
is_FreeAlgebra(x)
Return True if x is a free algebra; otherwise, return False.
source code
Variables [hide private]
  cache = Cache(FreeAlgebra_generic)
Function Details [hide private]

FreeAlgebra(R, n, names)

source code 

Return the free algebra over the ring $R$ on $n$ generators with
given names.

INPUT:
    R -- ring
    n -- integer
    names -- string or list/tuple of n strings

OUTPUT:
    a free algebra

EXAMPLES:
    sage: FreeAlgebra(GF(5),3,'x')
    Free Algebra on 3 generators (x0, x1, x2) over Finite Field of size 5
    sage: F.<x,y,z> = FreeAlgebra(GF(5),3)
    sage: (x+y+z)^2
    x^2 + x*y + x*z + y*x + y^2 + y*z + z*x + z*y + z^2
    sage: FreeAlgebra(GF(5),3, 'xx, zba, Y')
    Free Algebra on 3 generators (xx, zba, Y) over Finite Field of size 5
    sage: FreeAlgebra(GF(5),3, 'abc')
    Free Algebra on 3 generators (a, b, c) over Finite Field of size 5
    sage: FreeAlgebra(GF(5),1, 'z')
    Free Algebra on 1 generators (z,) over Finite Field of size 5
    sage: FreeAlgebra(GF(5),1, ['alpha'])
    Free Algebra on 1 generators (alpha,) over Finite Field of size 5
    sage: FreeAlgebra(FreeAlgebra(ZZ,1,'a'), 2, 'x')
    Free Algebra on 2 generators (x0, x1) over Free Algebra on 1 generators (a,) over Integer Ring

Free algebras are globally unique:
    sage: F = FreeAlgebra(ZZ,3,'x,y,z')
    sage: G = FreeAlgebra(ZZ,3,'x,y,z')
    sage: F is G
    True

Free algebras commute with their base ring.
    sage: K.<a,b> = FreeAlgebra(QQ,2)
    sage: K.is_commutative()
    False
    sage: L.<c> = FreeAlgebra(K,1)
    sage: L.is_commutative()
    False
    sage: s = a*b^2 * c^3; s
    a*b^2*c^3
    sage: parent(s)
    Free Algebra on 1 generators (c,) over Free Algebra on 2 generators (a, b) over Rational Field
    sage: c^3 * a * b^2
    a*b^2*c^3    

is_FreeAlgebra(x)

source code 

Return True if x is a free algebra; otherwise, return False.

EXAMPLES:
    sage: is_FreeAlgebra(5)
    False
    sage: is_FreeAlgebra(ZZ)
    False
    sage: is_FreeAlgebra(FreeAlgebra(ZZ,100,'x'))
    True