I read the end of your mail too late. The following works with lambda functions.

sage: S = FiniteEnumeratedSet([1,2,3])
sage: T = FiniteEnumeratedSet([4,5,6,7])
sage: d = {1:5, 2:7, 3:5}
sage: f = S.hom(lambda x: d[x], T)
sage: f(1)
5
sage: f(2)
7
sage: f(3)
5

Otherwise you should have a look at FiniteSetMaps.

On 18/04/16 19:48, Vincent Delecroix wrote:
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.

Reply via email to