[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Axiom-developer] Re: Combinat
From: |
Bertfried Fauser |
Subject: |
Re: [Axiom-developer] Re: Combinat |
Date: |
Sat, 30 Jun 2007 16:12:16 +0200 (CEST) |
On Sat, 30 Jun 2007, Ralf Hemmecke wrote:
Dear Ralf,
if we are here dealing already with a sort of pointers (or function
arrays) is there already in Aldor/Axiom a 'functor' domain?
I think of a Functor domain in the following sense, it should implement a
'categoy' (in the mathematical sense) of morphisms which opperate on
another (pair of) categor(y/ies). The functionality of such a category
would be to implement naturality of maps, coherence, composability of
morphisms, etc.
IFF such a thing would work, species would be an instance, as also lambda
rings and symmetric functions ;)
By the way, any templete category for symmetric functions in the oven?
Ciao
BF.
> > I've been studying your combinatorial species project.
>
> > Would it be reasonable to say that one could redefine (some of) the
> > data structures in axiom using a series of transformations and
> > combinations on sets?
>
> I would say, yes. It would not be every data structure though. One could
> define List as
>
> List(L: LabelType): CombinatorialSpecies L ==
> Plus(EmptySetSpecies, Times(SingletonSpecies, List))(L) add {...}
>
> the {...} is needed because the usual List has a few more exports.
>
> But List is actually rather special and should be implemented in a more
> efficient way.
>
> But yes, species can be considered as a generic way to build data
> structures. And one would get their generating series and a generation
> of all structures of a certain size as a "side effect" that does not
> need any more effort than writing the "equation" as above for List.
>
> > Would it be a set of pointers?
>
> No. No pointers involved. Everything is fully and statically typed.
>
> > So a species is a "builder function" that would build a given data
> > structure, like a linked list, from a set of pointers?
>
> Builder function is correct. Pointers is wrong. If you have the
> construction as above you would says
>
> for l in structures set [1,2,3,4] repeat stdout << l << newline;
>
> and it will print all the 4! different lists of with 4 elements.
>
> (But you see List is rather special, I actually need it already to form
> the input of the "structures" function. But take
>
> 1 ==> EmptySetSpecies;
> X ==> SingletonSpecies;
> + ==> Plus;
> * ==> Times;
> B(L: LabelType): CombinatorialSpecies L == (1+X*B*B)(L) add {...}
>
> and the same "for" loop above with structures$B gives you all binary
> rooted trees with exactly 4 nodes.
>
> Hope that helps.
> Ralf
>
>
> _______________________________________________
> Axiom-developer mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
>
% PD Dr Bertfried Fauser
% Institution: Max Planck Institute for Math, Leipzig
<http://www.mis.mpg.de>
% Privat Docent: University of Konstanz, Phys Dept
<http://www.uni-konstanz.de>
% contact|->URL : http://clifford.physik.uni-konstanz.de/~fauser/
% Phone : Leipzig +49 341 9959 735 Konstanz +49 7531 693491