Algebraic structures

# Algebra

Algebraic structures

Note: Algebra requires Python 3.6 or higher.

## Requirements and Installation

See the instructions here. Then simply

```pip install algebra
```

## Algebra

This package provides an algebra where the elements can be manipulated in a natural way, with basic algebraic simplifications happening automatically. It also support equality checking, which is conservative: if `x == y`, then `x` is equal to `y`; but if `x != y`, then either `x` is different from `y`, or it could not be proven that `x` is equal to `y`.

As an example, let's create numbered elements.

```from algebra import Element

class Numbered(Element):
total = 0

def __init__(self):
self.num = Numbered.total
Numbered.total += 1

def render(self, formatter):
return f'x{self.num}'
```

Then instances of `Numbered` can be manipulated as follows.

```>>> x0 = Numbered()

>>> x1 = Numbered()

>>> x0 == x0
True

>>> x0 == x1
False

>>> x0 + x1
x0 + x1

>>> x0 + x0
2 * x0

>>> x0 + x1 == x1 + x0
True

>>> x0 - x0
0

>>> 2 + x0
2 * 1 + x0

>>> (2 + x0) * x1
(2 * 1 + x0) * x1

>>> (2 + x0) * x1 * 0
0
```

Coming soon.

Coming soon.

Coming soon.

## Project details

This version 1.0.0 0.3.0 0.2.1 0.2.0 0.1.0