Plans in general for algebra functionality via Maxima/Lisp.
More...
Go to the source code of this file.
Detailed Description
Plans in general for algebra functionality via Maxima/Lisp.
 Todo:
 Abstract representation of structures

A natural "implicit" representation of a set is by a predicate set(x) (the elements of the set are all x such that set(x) = true).

Besides our "concrete" groupoids (etc.) [V,compo] we should consider "implicit" groupoids [set,compo], using such a setpredicate.

But the objects are still "concrete", that is, they can be put into a Maximaset, and equality is just decided by is(a=b).

But if the objects involve for example functions (like the objects of the category of general graphs), then they cannot be put into a Maximaset:

A binary predicate "X_equalp(a,b)" for deciding the equality of objects a,b is needed.

A fundamental problem is that none of the functions which use sets of elements can be used.

So well, perhaps then operations on (repetitionfree) lists are sufficient.

We need a notion to distinguish between the two degrees of implicitness. Or perhaps this is not connected to the representation of a "set" (explicit or implicit), but is an additional qualification.

Perhaps we say that objects have a "concrete representation" or an "abstract representation".

For an implicitly given base set to be "ordered" means to provide a binary predicate "<".

In ComputerAlgebra/Sets we should provide operations for implicitly given sets.

See "Forms of "constructive" groupoids in Algebra/Lisp/Groupoids/plans/general.hpp.
 Todo:
 Modules

One submodule for two sets A, B together with f: A x B > B, i.e., Actions (including left and right actions).

The alternative representation is as a map A > B^B.

An "action in general" is a map from a set to the set of endomorphisms of some structure.

The question is whether actions e.g., on groupoids (via homomorphisms) etc. are to be found in module Groupoids or in module Actions?

Then we have "operations" of a groupoid or a ringoid on some structure whose endomorphismmonoid can also be equipped with an "addition" in the second case, so that the operation then is homomorphism between groupoids resp. ringoids.

This "addition" of morphisms is (typically? always?) the elementwise addition of functions.

Most prominent the operation of a monoid on a set, the operation of a semiring on a semiring (semimodules), the operation of a ring on a ring (modules), and the operation of a field on a field (vector spaces).

Special cases of the operation of a monoid on a set are all the variations on dynamical systems (see below).

The operation of a monoid on a set generalised the notion of a finite automata.

Normally the operation of a monoid on a set is just called an "act"; perhaps this does not clash with our terminology, since we speak of an "action" ?!

So we could have, as the most prominent cases, (independent) modules "Acts" (for the operation of a semigroup/monoid on a set) and "Moduloids" (for semimodules, modules, and vector spaces), while the rest is found in the other modules.

DONE One module for sets with one binary operation: "Magmas" or "Groupoids". With submodules

Actions (of a set on a set or a groupoid)

Operations (of a groupoid on a set or on a groupoid; the more "specialised" considerations are in module Algebra/Acts)

Groups (with submodules PermutationGroups and Presentations)

Quasigroups

Semigroups

Semilattices

DONE (Ringframes) One module for sets with two binary operations; how to call it, "Ringoids" or "DoubleMagmas"?? There seems to be no notion for it. With submodules

Fields (moving FiniteFields.mac there)

Lattices

Rings

Semirings

DONE (possibly later, but not yet) Since groups are a big field on themselves, perhaps we emancipate it, making it a module on its own?

Same for Fields (in Ringoids).

And also Lattices (in Ringoids; of course, BooleanAlgebras are also a topic here?!?)

DONE Another organisational problem is what to do with the Lisp and Aldor submodules? Of course, we are already in the Lisppart, and so can just ignore this question (for the moment).

Then we have UniversalAlgebra. But there are also relational structures, and more general, firstorder structures?!?

Perhaps we have a module ComputerAlgebra/Structures, which contains submodules AlgebraicStructures, RelationalStructures, FirstOrder.

So perhaps we don't put universal algebra into Algebra.

On the other hand, universal algebra is rather different from model theory etc., so that UniversalAlgebra probably should belong to Algebra.
 Todo:
 DONE (see above) Semirings, rings, fields

We need modules "Semirings", "Rings", "Fields".

Likely also "Lattices" etc.
 Todo:
 DONE Module UniversalAlgebra
 Todo:
 DONE Modular arithmetic

The rings ZZ_n should be provided.
 Todo:
 DONE Actions and operations

Likely we should also have a module for the action of a set on a set.

With the most prominent cases the action of a set on a monoid, and the operation of a group on a set.
Definition in file general.hpp.