# Formal sums#

AUTHORS:

• David Harvey (2006-09-20): changed FormalSum not to derive from “list” anymore, because that breaks new Element interface

• Nick Alexander (2006-12-06): added test cases.

• William Stein (2006, 2009): wrote the first version in 2006, documented it in 2009.

• Volker Braun (2010-07-19): new-style coercions, documentation added. FormalSums now derives from UniqueRepresentation.

FUNCTIONS:
• `FormalSums(ring)` – create the module of formal finite sums with

coefficients in the given ring.

• `FormalSum(list of pairs (coeff, number))` – create a formal sum

EXAMPLES:

```sage: A = FormalSum([(1, 2/3)]); A
2/3
sage: B = FormalSum([(3, 1/5)]); B
3*1/5
sage: -B
-3*1/5
sage: A + B
2/3 + 3*1/5
sage: A - B
2/3 - 3*1/5
sage: B*3
9*1/5
sage: 2*A
2*2/3
sage: list(2*A + A)
[(3, 2/3)]
```
class sage.structure.formal_sum.FormalSum(x, parent=None, check=True, reduce=True)#

Bases: `ModuleElement`

A formal sum over a ring.

reduce()#

EXAMPLES:

```sage: a = FormalSum([(-2,3), (2,3)], reduce=False); a
-2*3 + 2*3
sage: a.reduce()
sage: a
0
```
class sage.structure.formal_sum.FormalSums#

The R-module of finite formal sums with coefficients in some ring R.

EXAMPLES:

```sage: FormalSums()
Abelian Group of all Formal Finite Sums over Integer Ring
sage: FormalSums(ZZ)
Abelian Group of all Formal Finite Sums over Integer Ring
sage: FormalSums(GF(7))                                                         # optional - sage.rings.finite_rings
Abelian Group of all Formal Finite Sums over Finite Field of size 7
sage: FormalSums(ZZ[sqrt(2)])                                                   # optional - sage.symbolic sage.rings.number_field
Abelian Group of all Formal Finite Sums over Order in Number Field in sqrt2
with defining polynomial x^2 - 2 with sqrt2 = 1.414213562373095?
sage: FormalSums(GF(9,'a'))                                                     # optional - sage.rings.finite_rings
Abelian Group of all Formal Finite Sums over Finite Field in a of size 3^2
```
Element#

alias of `FormalSum`

base_extend(R)#

EXAMPLES:

```sage: F7 = FormalSums(ZZ).base_extend(GF(7)); F7                            # optional - sage.rings.finite_rings
Abelian Group of all Formal Finite Sums over Finite Field of size 7
```

The following tests against a bug that was fixed at github issue #18795:

```sage: isinstance(F7, F7.category().parent_class)                            # optional - sage.rings.finite_rings
True
```