On Sat, Nov 7, 2015 at 6:28 PM, Travis Scrimshaw <tsc...@ucdavis.edu> wrote:
> Hey Simon, > > >> > I would then be advocating for using UniqueRepresentation if that >> was >> >> > the only issue. >> >> >> >> It really depends whether in comparing manifolds you would prefer to >> do >> >> *some* >> >> heuristics to detect homeomorphic manifolds, or prefer to consider >> >> manifolds unequal if they were created with different input data. >> >> >> > >> > IMO, such checks are too expensive to be done at creation. For example, >> you >> > want do so some tests over all n-spheres. >> >> I did not say anything about whether the tests should be done at >> creation time or not. I was talking about "comparing manifolds", which >> obviously means "comparing manifolds AFTER creation"- >> >> Ah, I'm sorry, I misunderstood what you were asking. > > >> If you want that two distinct homeomorphic manifolds may evaluate equal >> then >> you must not use UniqueRepresentation. That's all. >> > > IMO, homeomorphism is too strong of a test for __eq__, which should be > kept relatively fast. > >> >> > Granted, there are nice and well-defined inputs for 2d and 3d >> > manifolds, which would make good sense to do >> Cached/UniqueRepresentation >> > around these structures. For a general (topological) manifold where >> there >> > are not necessarily such nice inputs, what would you give as input >> data? >> >> Whatever you currently give. An atlas. A simplicial complex. A system of >> multivariate polynomial equations. >> >> Here is an example in terms of "polynomial equations" as input data. >> >> The first question is to you whether you want that the same set of >> equations >> yields identical manifolds or distinct manifolds. The second question is >> whether >> you want that the manifolds are identical if and only if the two systems >> of >> equations have the same solutions. It depends on your answers whether to >> use CachedRepresentation, UniqueRepresentation or nothing. >> >> I would probably take UniqueRepresentation and have a method > is_homeomorphic() as the equality check would probably be too > computationally expensive. I'm thinking what graphs do with a faster > equality check an a separate is_isomorphic method. > I think Nils' point about the downsides of having a cache is one reason not to use UniqueRepresentation, both because it can generate references to objects you might want to forget, and because sometimes you just want to start with two three dimensional manifolds, specifying distinct atlases as you go. If you use unique representation, you might accidentally get the same object. Why not just inherit from :class:`~sage.misc.fast_methods.WithEqualityById` ? That seems to have what you need. Yes, the standard pickling test will be broken, but I think that's fine for your application. David > > Best, > Travis > > > > -- > You received this message because you are subscribed to the Google Groups > "sage-devel" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-devel+unsubscr...@googlegroups.com. > To post to this group, send email to sage-devel@googlegroups.com. > Visit this group at http://groups.google.com/group/sage-devel. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.