Topos is a library for implementations of mathematical concepts for .NET Standard 2.0 environment. Based on Zermelo–Fraenkel set theory (ZFC). Currently only supports finite sets.
A Set is an unordered container of mathematical objects, including nested definitions such as Set of Sets. My implementation takes .NET HashSet as basis. However, Sets are not generic types, and can only hold objects of MathObject class.
ZFC ensures that there are no atomic elements, however, to increase comprehension, I included atomic elements where Element is its base class.
Currently supported classes are:
Topos.Core
- MathObject (abstract),
- Element
- Indeterminate
- Number (abstract)
- Real
- Integer
- Natural
- Rational
- Integer
- Complex
- Real
- Exponential
- Set
- GeneratedSet
- OrderedTuple
- BinaryRelation
- Function
- Element
Topos.Core.Generic
- MathObject (from Topos.Core)
- GenericSet
Topos.Core.Exceptions
- Exception (.NET)
- ToposException
- ArgumentCountException
- DimensionMismatchException
- IndeterminateException
- UndefinedDomainException
- ComplexDomainException
- ToposException
Topos.NumberTheory
- ICongruence (interface)
- MathObject (from Topos.Core)
- IntegerCongruence
- Division (static)
- Fibonacci (static)
- NumberTheoreticFunctions (static)
- Primality (static)
TO-DO:
Topos.Core:
- Exponentials will be represented as numbers, including complex number operations (will not support Indeterminates)
- Infinite sets (Countably - Uncountably)
Topos.NumberTheory:
- Modular arithmetic over integers
- Finding solutions of x^2 ≡ a (mod n)
- Linear Diophantine equations
- Aliquot sums, perfect numbers and other related concepts
- Sums of squares
- Continued fractions
ISSUES:
- Complex number operations between ordered tuples are not supported.
- Complex number operations over exponential representations are not supported.