It should... but Sage does not recognize that 2 belongs to S. Note that
the following works
sage: S = FiniteEnumeratedSet([1,2,3])
sage: T = FiniteEnumeratedSet([4,5,6,7])
sage: f = S.hom(lambda x: 3+x, T)
sage: f(1)
4
Vincent
On 18/04/16 15:02, John H Palmieri wrote:
How do I define a function between finite sets within the category
framework? Should the following work?
sage: S = Set([1,2,3])
sage: T = Set([4,5,6,7])
sage: f = S.hom(lambda x: 3+x, T)
sage: f
Generic morphism:
From: {1, 2, 3}
To: {4, 5, 6, 7}
sage: f(2)
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
....
TypeError: 2 fails to convert into the map's domain {1, 2, 3}, but a
`pushforward` method is not properly implemented
I see that it works if I define S and T using FiniteEnumeratedSet instead.
Is that the best solution?
Or suppose I want to define a map sending 1 to 5, 2 to 7, 3 to 5. I can't
see how to use the dictionary {1:5, 2:7, 3:5} (for example) to define a
function.
In general, I would like fully functional, callable, composable morphisms
of sets, and finite sets are good enough for now. Any advice? Also of other
categories, in particular finite abelian groups, but maybe those work
better already?
--
You received this message because you are subscribed to the Google Groups
"sage-support" 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 https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.