So recently I've been avoiding my research and instead working on SymPy.

In particular I've been playing with sets.

I've been cleaning up how sets intersect with each
other<https://github.com/sympy/sympy/pull/1133>
.
I've also been building a method to define new sets as algebraic
expressions of other
sets<https://github.com/mrocklin/sympy/tree/countable_set>.
Currently I'm using the word Isomorphic for thus but ExpressionSet might
also be appropriate. An isomorphic is a combination of a lambda acting on a
base set. Here are two examples for clarity.

In [2]: squares = Isomorphic(Lambda(x, x**2), S.Naturals)
In [4]: FiniteSet(1,2,3,4,5,6,7,8,9,10).intersect(squares)
Out[4]: {1, 4, 9}

In [5]: r, th = symbols('r, theta', real=True)
In [6]: L = Lambda((r, th), (r*cos(th), r*sin(th)))
In [7]: halfcircle = Isomorphic(L, Interval(0, 1)*Interval(0, pi))

I have two questions:
1) What is a good name for what I'm currently calling Isomorphic?
2) Where should all this code live? Currently sets are part of the core. I
think this is because Intervals are used by some core code. Things like
Isomorphic don't seem that central to SymPy though and should maybe be in a
module. Should sets live outside the core? Inside the core? Should we split
them up somehow into coresets and fancysets?

Best,
-Matt

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to