Metadata-Version: 2.1
Name: commutation
Version: 0.0.5
Summary: A library for doing noncommutative operator algebra
Author-email: Alaric Sanders <als217@cam.ac.uk>
Project-URL: Homepage, https://github.com/Spuriosity1/Commutation/
Project-URL: Bug Tracker, https://github.com/Spuriosity1/Commutation/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Development Status :: 4 - Beta
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Science/Research
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE

# Commutation Station for Operator Elimination

A proof assistant tool for the busy physicist, to be used in evaluating large commutator expressions.
This package does symbolic algebra on noncommutative objects. 

The relevant objects for most purposes are `CommutatorAlgebra`, `Expression` and `Term`. An `Expression` is a list of `Term`s, together with standard vector space operations.



# TODO
 - Export functionality for easier copying into Mathematica or similar
 - Input validation / standardisation of symbol types
 - change fundamental type from strings to objects: restrict purpose of Term to single terms
 - Implement use of anticommutator algebra
 - Scalar subclass of Term (in general, import sympy to simplify scalar coefficients?



# Future

## `Term` class functionality
`Term.as_latex()`
`Term.as_mathematica()`
`Term.__str__()`
`Constant(Term)`
does NOT have any built-in multiplier: this nastiness is handled by the new `Expression` class
`Expression.as_latex()`
`Expression.as_mathematica()`
internal structure: `[([1],[t1, t2]),([3/4 ka k2], [t3, t4])] -> t1 t2 + t3 t4
