7 ms·
One problem with CAS systems in general is that they either make restrictive assumptions about the types of algebraic objects, or they require you to provide ex
by centimeter 6y ago
One problem with CAS systems in general is that they either make restrictive assumptions about the types of algebraic objects, or they require you to provide extremely detailed type information yourself, beyond that which most people are capable of explicitly expressing. There are so many ambiguities and domain-specific assumptions people make when they perform algebraic manipulation that only a very small fraction of people are actually equipped to express. This is especially problematic if you mix multiple kinds of algebraic extensions - for example, I’ve had a hard time getting CAS systems to correctly deal with functions over tensors over Clifford (sub)algebras.
I think the only way you could get something like that to work would be a type system so aggressive that it would turn off most mathematicians, who tend to have a narrow understanding of type theory.
- reikonomusha 6y agoI think Axiom/FriCAS thought about this problem hard and mostly solved it. The dominating CAS paradigm for most popular CASes is to assume everything is a real number and see how far you get. Later many major CASes bolted on features to say “well, except, this might be a complex number” and the like. This of course flies right in the face of the kind of thing you want to do. Axiom didn’t take that approach and instead created a robust system for specifying and implementing mathematical objects. I tried doing quarternion algebra in Maxima many moons ago and it was painful. They’ve since added packages for doing Clifford algebra but it’s not exactly well integrated in the rest of the machinery.
- amkkma 6y agoSymbolics.jl is keeping things generic from the getgo.
- amkkma 6y agoJulia solves this by using interfaces (functions defined over one or more custom types that abstract over concrete information). Just overload those on your type, and voila it works with the CAS.
- centimeter 6y agoI'm skeptical that duck typing can really be considered a full "solution", but at the very least it seems like a good bet.
- reikonomusha 6y agoWhat if one type admits several different interfaces? Like, an Integer type admits several equally valid group structures which may be written as an interface.