Kurt and Bill,
Thanks for your ideas so far. I had an idea to try to combine what you
said with what I am trying to do.
It seems to me that there is a very approximate design pattern here
since each of these algebraic structures seem to be defined by two
domains by pseudo code like this:
OuterDomain
Rep := List innerDomain
innerDomain
Rep := ....
*: (%, %) -> %
1: %
inv: % -> %
For instance:
PermutationGroup(S:SetCategory)
Rep := .... List Permutation Set ....
Permutation(S : SetCategory)
Rep := Vector List Set
Could FreeGroup be made to fit in this pattern somehow? What I need is a
domain that can calculate things like orbits where a knowledge of the
whole group is required?
ListMonoidOps(Set,E:AbelianMonoid, un:E)
Rep := List Record(gen : S, exp : E)
FreeGroup(S : SetCategory)
Rep := ListMonoidOps(S, Integer, 1)
In this design pattern, the algebraic structure of the outer domain is
defined by the representation, the algebraic structure of the inner
domain is defined by the functions on the representation. These cases
must be the two extremes, there could be possible domains in between
where the algebra is defined by some other combination of rep and
functions. A bit like initial algebra vs. terminal algebra (Kleisli vs.
Eilenberg-Moore).
In the outer domain the functions tend to involve the whole algebra and
in the inner domain the functions can only involve the elements.
For homotopy and homology the current GroupPresentation domain gives me
a relatively simple way to do the things I need. I'm not sure if the
extra complexity of the FreeGroup domain would be justified? It seems to
me that these subjects need to define the structures 'upto isomorphism'
or 'upto equivalence' and this is best done by the OuterDomain only in
the pattern above.
I think its probably best if I continue to work with GroupPresentation
for now then I, or someone else, could convert the code to use FreeGroup
if that becomes useful or more general.
Martin B
--
You received this message because you are subscribed to the Google Groups "FriCAS -
computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to fricas-devel+unsubscr...@googlegroups.com.
To post to this group, send email to fricas-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.