# Revision history [back]

The following is the answer due to @nicolas-m-thiery

sage: Groups?
The category of (multiplicative) groups, i.e. monoids with
inverses.


Mind the multiplicative!

What you want is:

sage: V = FreeModule(CC,2)
True


or (better, but not imported by default):

sage: from sage.categories.additive_groups import


Now you can construct the group algebra:

sage: C = V.algebra(QQ)
sage: C.category()
Category of commutative additive group algebras over Rational Field

sage: x = C.an_element()
sage: x
B[(1.00000000000000, 0.000000000000000)]

sage: 3 * x + 1
B[(0.000000000000000, 0.000000000000000)] + 3*B[(1.00000000000000,


0.000000000000000)]

Ah, but this is disappointing::

sage: (x+1)^2
TypeError: mutable vectors are unhashable


One would need to have a variant of FreeModule that would guarantee that vectors remain immutable upon arithmetic.

In the mean time, you can use:

sage: V = CombinatorialFreeModule(CC, [0,1])
sage: C = V.algebra(QQ)
sage: x = C.an_element()
sage: x
B[2.00000000000000*B + 2.00000000000000*B]
sage: (x+1)^2
B + 2*B[2.00000000000000*B + 2.00000000000000*B] + B[4.00000000000000*B +


4.00000000000000*B] 2 No.2 Revision

The following is the answer due to @nicolas-m-thiery

sage: Groups?
The category of (multiplicative) groups, i.e. monoids with
inverses.


Mind the multiplicative!

What you want is:

sage: V = FreeModule(CC,2)
True


or (better, but not imported by default):

sage: from sage.categories.additive_groups import


True

Now you can construct the group algebra:

sage: C = V.algebra(QQ)
sage: C.category()
Category of commutative additive group algebras over Rational Field

sage: x = C.an_element()
sage: x
B[(1.00000000000000, 0.000000000000000)]

sage: 3 * x + 1
B[(0.000000000000000, 0.000000000000000)] + 3*B[(1.00000000000000,


0.000000000000000)]

3*B[(1.00000000000000, 0.000000000000000)]

Ah, but this is disappointing::

sage: (x+1)^2
TypeError: mutable vectors are unhashable


One would need to have a variant of FreeModule that would guarantee that vectors remain immutable upon arithmetic.

In the mean time, you can use:

sage: V = CombinatorialFreeModule(CC, [0,1])
sage: C = V.algebra(QQ)
sage: x = C.an_element()
sage: x
B[2.00000000000000*B + 2.00000000000000*B]
sage: (x+1)^2
B + 2*B[2.00000000000000*B + 2.00000000000000*B] + B[4.00000000000000*B +


4.00000000000000*B]

+ 4.00000000000000*B]

The following is the answer due to @nicolas-m-thiery

sage: Groups?
The category of (multiplicative) groups, i.e. monoids with
inverses.


Mind the multiplicative!

What you want is:

sage: V = FreeModule(CC,2)
True


or (better, but not imported by default):

sage: from sage.categories.additive_groups import AdditiveGroups
True


Now you can construct the group algebra:

sage: C = V.algebra(QQ)
sage: C.category()
Category of commutative additive group algebras over Rational Field

sage: x = C.an_element()
sage: x
B[(1.00000000000000, 0.000000000000000)]

sage: 3 * x + 1
B[(0.000000000000000, 0.000000000000000)] + 3*B[(1.00000000000000, 0.000000000000000)]


Ah, but this is disappointing::

sage: (x+1)^2
TypeError: mutable vectors are unhashable


One would need to have a variant of FreeModule that would guarantee that vectors remain immutable upon arithmetic.

In the mean time, you can use:

sage: V = CombinatorialFreeModule(CC, [0,1])
sage: C = V.algebra(QQ)
sage: x = C.an_element()
sage: x
B[2.00000000000000*B + 2.00000000000000*B]
sage: (x+1)^2
B + 2*B[2.00000000000000*B + 2.00000000000000*B] + B[4.00000000000000*B + 4.00000000000000*B]


The following is the answer due to @nicolas-m-thiery@Nicolas M Thiéry

sage: Groups?
The category of (multiplicative) groups, i.e. monoids with
inverses.


Mind the multiplicative!

What you want is:

sage: V = FreeModule(CC,2)
True


or (better, but not imported by default):

sage: from sage.categories.additive_groups import AdditiveGroups
True


Now you can construct the group algebra:

sage: C = V.algebra(QQ)
sage: C.category()
Category of commutative additive group algebras over Rational Field

sage: x = C.an_element()
sage: x
B[(1.00000000000000, 0.000000000000000)]

sage: 3 * x + 1
B[(0.000000000000000, 0.000000000000000)] + 3*B[(1.00000000000000, 0.000000000000000)]


Ah, but this is disappointing::

sage: (x+1)^2
TypeError: mutable vectors are unhashable


One would need to have a variant of FreeModule that would guarantee that vectors remain immutable upon arithmetic.

In the mean time, you can use:

sage: V = CombinatorialFreeModule(CC, [0,1])
sage: C = V.algebra(QQ)
sage: x = C.an_element()
sage: x
B[2.00000000000000*B + 2.00000000000000*B]
sage: (x+1)^2
B + 2*B[2.00000000000000*B + 2.00000000000000*B] + B[4.00000000000000*B + 4.00000000000000*B]


The following is the answer due to @Nicolas M Thiéry@462

sage: Groups?
The category of (multiplicative) groups, i.e. monoids with
inverses.


Mind the multiplicative!

What you want is:

sage: V = FreeModule(CC,2)
True


or (better, but not imported by default):

sage: from sage.categories.additive_groups import AdditiveGroups
True


Now you can construct the group algebra:

sage: C = V.algebra(QQ)
sage: C.category()
Category of commutative additive group algebras over Rational Field

sage: x = C.an_element()
sage: x
B[(1.00000000000000, 0.000000000000000)]

sage: 3 * x + 1
B[(0.000000000000000, 0.000000000000000)] + 3*B[(1.00000000000000, 0.000000000000000)]


Ah, but this is disappointing::

sage: (x+1)^2
TypeError: mutable vectors are unhashable


One would need to have a variant of FreeModule that would guarantee that vectors remain immutable upon arithmetic.

In the mean time, you can use:

sage: V = CombinatorialFreeModule(CC, [0,1])
sage: C = V.algebra(QQ)
sage: x = C.an_element()
sage: x
B[2.00000000000000*B + 2.00000000000000*B]
sage: (x+1)^2
B + 2*B[2.00000000000000*B + 2.00000000000000*B] + B[4.00000000000000*B + 4.00000000000000*B]


The following is the answer due to @462@Nicolas_M_Thiéry

sage: Groups?
The category of (multiplicative) groups, i.e. monoids with
inverses.


Mind the multiplicative!

What you want is:

sage: V = FreeModule(CC,2)
True


or (better, but not imported by default):

sage: from sage.categories.additive_groups import AdditiveGroups
True


Now you can construct the group algebra:

sage: C = V.algebra(QQ)
sage: C.category()
Category of commutative additive group algebras over Rational Field

sage: x = C.an_element()
sage: x
B[(1.00000000000000, 0.000000000000000)]

sage: 3 * x + 1
B[(0.000000000000000, 0.000000000000000)] + 3*B[(1.00000000000000, 0.000000000000000)]


Ah, but this is disappointing::

sage: (x+1)^2
TypeError: mutable vectors are unhashable


One would need to have a variant of FreeModule that would guarantee that vectors remain immutable upon arithmetic.

In the mean time, you can use:

sage: V = CombinatorialFreeModule(CC, [0,1])
sage: C = V.algebra(QQ)
sage: x = C.an_element()
sage: x
B[2.00000000000000*B + 2.00000000000000*B]
sage: (x+1)^2
B + 2*B[2.00000000000000*B + 2.00000000000000*B] + B[4.00000000000000*B + 4.00000000000000*B]


The following is the answer due to @Nicolas_M_Thiéry@Nicolas-M-Thiéry

sage: Groups?
The category of (multiplicative) groups, i.e. monoids with
inverses.


Mind the multiplicative!

What you want is:

sage: V = FreeModule(CC,2)
True


or (better, but not imported by default):

sage: from sage.categories.additive_groups import AdditiveGroups
True


Now you can construct the group algebra:

sage: C = V.algebra(QQ)
sage: C.category()
Category of commutative additive group algebras over Rational Field

sage: x = C.an_element()
sage: x
B[(1.00000000000000, 0.000000000000000)]

sage: 3 * x + 1
B[(0.000000000000000, 0.000000000000000)] + 3*B[(1.00000000000000, 0.000000000000000)]


Ah, but this is disappointing::

sage: (x+1)^2
TypeError: mutable vectors are unhashable


One would need to have a variant of FreeModule that would guarantee that vectors remain immutable upon arithmetic.

In the mean time, you can use:

sage: V = CombinatorialFreeModule(CC, [0,1])
sage: C = V.algebra(QQ)
sage: x = C.an_element()
sage: x
B[2.00000000000000*B + 2.00000000000000*B]
sage: (x+1)^2
B + 2*B[2.00000000000000*B + 2.00000000000000*B] + B[4.00000000000000*B + 4.00000000000000*B]