Dear Simon, On Mon, Apr 29, 2013 at 11:38:38AM +0000, Simon King wrote: > Currently, I try to resume writing code for modules over finite > dimensional path algebra quotients. At #12630, Jim Stark proposes some > code that apparently has a non-empty intersection with what I need, but > much of it is orthogonal.
I am glad to see your efforts converging! > Jim's code is for acyclic quivers only, but, as he writes, most of it > would work with cycles as well. He provides path algebras, but he does > not provide the algebraic structure that is formed by the paths in a > quiver subject to concatenation: His quivers are implemented as a > sub-class of DiGraph, but do not inherit from Parent. > > First question: Would you agree that a quiver should be identified with > the algebraic structure formed by "paths with concatenation"? Or should > "quiver as a digraph" be kept separate from "quiver as an algebraic > structure"? I would tend to keep them separate; a quiver and its sets of paths are different mathematical objects. It would be weird to ask for: sage: path in quiver whereas this is natural: sage: path in quiver.paths() > Second question: How do we call this structure? It is not a monoid, unless > there is a single vertex (it has idempotents corresponding to its vertices), > If it has more than one vertex, then it contains a zero element that one > obtains when concatenating paths that do not match. > > Florent suggested to call it "monoidoid". Because of multiple idempotents, > I could imagine "multimonoid". But of course, we could just describe it > as an associative magma. >From "http://en.wikipedia.org/wiki/Groupoid" this would be a semicategory :-) > Third question: Do you think we should create categories of "associative > magmas" and of "associative additive magmas", fitting them between > (additive) magmas and (additive) monoids? Yes. Actually my functorial construction patch creates those two categories. In fact, with this patch it would be easy to add a new Totality axiom and a "SetsWithPartialMultiplication" category (appropriate name to be found), and then we could get all the possible combinations; something like: sage: SetsWithPartialMultiplication() Category of sets with a partial multiplication sage: SetsWithPartialMultiplication().Total() Category of Magmas sage: SetsWithPartialMultiplication().Associative().Inverse() Category of groupoids sage: SetsWithPartialMultiplication().Associative() Category of sets with a partial associative multiplication Finishing this patch is on the top of my list starting from next week when the semester here will be over. But it's pretty large and has a some dependencies, so I can't make any timeline promise. The one good thing is that most dependencies are on patches that we are already working on together anyway :-) Question: can you afford this dependency, or alternatively cheat temporarily and use the semigroup/monoid category for now? > Fourth question: How to organise the work? > - Shall the new categories be provided on #12630 or on a new ticket, > which #12630 will be made dependent on? > - Since all its tests pass, shall #12630 go in first? I.e., shall > quivers as algebraic structures be introduced on a new ticket that > depends on #12630? > - Or shall quivers as algebraic structure already be introduced at #12630? > Note that #12630 does have a class for paths, but they are not elements > of a parent yet. So, I could imagine to modify #12630 accordingly. > - Do you agree that an improvement of efficiency should be addressed > after establishing the quiver as algebraic structure (after all, > premature optimization is the root of all evil)? Or should one try to > implement "paths with concatenation" in Cython right away (the current > code at #12630 is python)? Incremental is good. I think the task at hand is pretty large, so if there is a natural way to split it into smaller tickets, go ahead. Cheers, Nicolas -- Nicolas M. ThiƩry "Isil" <nthi...@users.sf.net> http://Nicolas.Thiery.name/ -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-combinat-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-combinat-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en. For more options, visit https://groups.google.com/groups/opt_out.