Changes between Version 4 and Version 5 of Ticket #30263


Ignore:
Timestamp:
04/21/21 19:50:47 (2 months ago)
Author:
mkoeppe
Comment:

An issue with the existing code is that through a sequence of declare_union calls, it is possible to obtain a situation in which two subsets must be the same, although declare_union makes a (not very effective) attempt to stop the user from doing so (by checking whether the two arguments are the same).

In terms of the poset of subsets that is defined by the _subsets (and _supersets) attributes (which is visualized by the code from #31680), this is quite problematic.

This could be solved by introducing equivalence classes of subsets - for example by keeping the _subsets relation acyclic and introducing an _equal_sets attribute; loops that update subsets will have to be modified. The elements of the poset introduced in #31680 then would be equivalence classes of subsets rather than subsets.

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #30263 – Description

    v4 v5  
     1(for the visualization of the posets, use #31680 and install the `dot2tex` package - without that package, the layout is quite misleading)
     2
    13{{{
    24sage: M = Manifold(3, 'M')
     
    2931sage: P = M.subset_poset(open_covers=True); P.plot(element_labels={element: label(element) for element in P})  # same
    3032
     33sage: M.is_subset(U.union(V).union(W))                                                         
     34False
    3135}}}
    3236