#10963: More functorial constructions
-------------------------------------+-------------------------------------
Reporter: nthiery | Owner: stumpc5
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-6.1
Component: categories | Resolution:
Keywords: days54 | Merged in:
Authors: Nicolas M. Thiéry | Reviewers: Simon King, Frédéric
Report Upstream: N/A | Chapoton
Branch: | Work issues:
public/ticket/10963 | Commit:
Dependencies: #11224, #8327, | eb7b486c6fecac296052f980788e15e2ad1b59e4
#10193, #12895, #14516, #14722, | Stopgaps:
#13589, #14471, #15069, #15094, |
#11688, #13394, #15150, #15506 |
-------------------------------------+-------------------------------------
Comment (by nthiery):
Replying to [comment:462 SimonKing]:
> Replying to [comment:461 ncohen]:
> > It looks like your problem is that the user should "decide" if the
function is a function of `A.B` or a function of `B.A` when what you have
in mind is a function of `{A,B}`. Why don't you have a syntax which takes
as information a set of axioms (and a category if needed), and let some
code decide automatically where it should be put (pick your spanning tree)
?
Yes, I agree that this is a direction to explore (e.g. following
Simon's database suggestions)! Yes we agree with Simon that this is
for a later iteration as this requires non trivial experimentation and
implementation work.
Now I'd like to raise a point to mitigate the discussion. In most
practical cases, we want to work incrementally. You'd rather describe
FiniteFields as Fields with the axiom Finite rather than Magmas and
AdditiveMagmas with all of the following axioms (besides Distributive):
{{{
sage: Fields().axioms()
frozenset(['Division', 'AdditiveUnital', 'NoZeroDivisors',
'Commutative',
'AdditiveInverse', 'AdditiveAssociative', 'Unital',
'AdditiveCommutative', 'Associative'])
}}}
Ok, a few of the above axioms are redundant but still, you see my
point, right?
In practice, among the 59 categories with axioms that are currently
implemented in Sage, almost all admitted a natural choice of base
category and single axiom to add. Only in a few cases did I really
make a choice that felt mathematically arbitrary. That was essentially
in this snippet of DistributiveMagmasAndAdditiveMagmas:
{{{
class AdditiveAssociative(CategoryWithAxiom):
class AdditiveCommutative(CategoryWithAxiom):
class AdditiveUnital(CategoryWithAxiom):
class AdditiveInverse(CategoryWithAxiom):
Associative = LazyImport('sage.categories.rngs',
'Rngs', at_startup=True)
class Associative(CategoryWithAxiom):
Unital =
LazyImport('sage.categories.semirings', 'Semirings', at_startup=True)
}}}
And it's not even much worst than a syntax like
{{{
{AdditiveAssociative,AdditiveCommutative,AdditiveUnital} -> ...
{{{
> Really? I always thought of ''rooted'' trees (and that's what we have
here) as being directed.
True, we should have added "rooted" everywhere in our discussion. But
if Nathann believes "out-arborescence" is better, we could change to
that too.
Cheers,
Nicolas
--
Ticket URL: <http://trac.sagemath.org/ticket/10963#comment:464>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.