I wrote a simple algebra system in C# [1] that uses term rewriting expressed as algebraic identities to simplify terms. You can then compile them to .NET functions for efficient execution.
It uses a recursion limit, but I sketched out a design that eliminates the need for it by use of a specific data structure as used in the Simplify theorem prover to ensure termination in the presence of rewriting. Haven't gotten around to it unfortunately.
It uses a recursion limit, but I sketched out a design that eliminates the need for it by use of a specific data structure as used in the Simplify theorem prover to ensure termination in the presence of rewriting. Haven't gotten around to it unfortunately.
[1] https://github.com/naasking/Algebra.NET