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.

Reply via email to