[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Axiom-developer] operations working in general, but not in special
From: |
Martin Rubey |
Subject: |
Re: [Axiom-developer] operations working in general, but not in special cases -- help needed |
Date: |
05 Apr 2006 10:08:31 +0200 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 |
Dear William, *
thanks a lot for your answer. I think that you clarified the issue quite a bit,
but I still have to think about it.
A short reply...
William Sit <address@hidden> writes:
> > Example 1, Matroids
> >
> > A "matroid" is a mathematical structure with one very, very important
> > operation, namely "dualizing" which transforms a given matroid into
> > another. Thus, one is tempted to have a category "MatroidCat", which
> > exports an
> > operation "dual: % -> %".
>
> I assume you want MatroidCat to be the category of all matroids,
No, at least not originally. I wanted MatroidCat be the "category" (in the
sense of axiom/aldor) of those domains, which represent matroids. I.e., an
element of a domain which in turn belongs to MatroidCat would be a matroid.
> in which case, the dual operation is actually a domain constructor. That is,
> the above signature cannot do what you are aiming for:
>
> MatroidCat():Category == ... with
> dual: % -> %
>
> because the % refers to a particular implementation of a domain which is a
> matroid, not the category itself. The argument to dual is an element of a
> matroid. A plausible signature is:
>
> dual:() -> MatroidCat()
>
> which associates a matroid to the current matroid.
So, in your view, MatroidCat would contain all matroids, and a domain belonging
to MatroidCat would be a specific matroid?
> If you do NOT want to implement dual as a domain constructor, then you may
> try implementing Matroid as the DOMAIN of all matroids. However, Axiom does
> not allow dependent types at the code level (only at the declaration level
> for constructors).
>
> Matroid(): SetCategory == ...
>
> Rep:= Record(E:SetCategory, I:Set Set E)
>
> probably won't work in Axiom, but Aldor may. The advantage is that this will
> allow domain constructors implemented as functions, and operations on
> matroids (not matroid elements) are also possible. So for example, one may
> test whether two matroids are equal or isomorphic.
That's what I had in mind.
> Given any (not necessarily planar) graph G = (N, A), where N is the node set
> and
> A the arc set, there is always a corresponding matroid M = (E, I) called a
> graphic matroid. (Theorem 4.1, p. 271). Hence a graphic matroid always has a
> dual matroid called the cographic matroid. So there are TWO matroids for every
> graph G.
Well, yes. Usually one says that the graphic matroid corresponds to the graph,
though.
> This means two domain constructors:
>
> GraphicMatroid(G: GraphCat):MatroidCat == ...
>
> CographicMatroid(G: GraphCat):MatroidCat == ...
If I follow this route I should put all matroidal properties of graphs into
MatroidCat, and only those properties which are not matroidal into GraphCat I
think I like this idea.
> > Example 2, Differential Equations
> >
> > It is quite easy to see that the class of holonomic functions is closed
> > under integration
> >
> > However, we all know that the class of rational functions is *not* closed
> > under integration
>
> The integrate operation is more like the minus or divide operation. Since
> they operate on elements (not domains), you can simply export integrateIfCan
> in RatCat.
yes.
> The two examples you gave present two different problems.
It very much depends on how you view the problem(s). Of course, taking your
approach, these are different problems, but I do think that one can see them as
a single problem, too.
However, I do like your approach, so I will give it a try.
Thanks again,
Martin
- [Axiom-developer] operations working in general, but not in special cases -- help needed, Martin Rubey, 2006/04/04
- Re: [Axiom-developer] operations working in general, but not in special cases -- help needed, Bertfried Fauser, 2006/04/04
- [Axiom-developer] Re: [Aldor-l] operations working in general, but not in special cases -- help needed, Ralf Hemmecke, 2006/04/04
- Re: [Axiom-developer] operations working in general, but not in special cases -- help needed, William Sit, 2006/04/04
- [Axiom-developer] Re: [Aldor-l] operations working in general, but not in special cases -- help needed, Christian Aistleitner, 2006/04/05