Skip to content

Commit 4e414d4

Browse files
committed
Improve _element_constructor_ of image set
1 parent 9352a32 commit 4e414d4

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/sage/sets/image_set.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,17 @@ def __init__(self, map, domain_subset, *, category=None, is_injective=None, inve
8080
sage: Im = f.image()
8181
sage: TestSuite(Im).run(skip=['_test_an_element', '_test_pickling',
8282
....: '_test_some_elements', '_test_elements'])
83+
84+
TESTS:
85+
86+
Implementing ``inverse_image`` automatically makes :meth:`__contains__` work::
87+
88+
sage: R.<x> = QQ[]
89+
sage: S.<y> = QQ[]
90+
sage: R.hom([y^2]).inverse_image(y^4)
91+
x^2
92+
sage: y^4 in R.hom([y^2]).image()
93+
True
8394
"""
8495
if not isinstance(domain_subset, Parent):
8596
from sage.sets.set import Set
@@ -127,6 +138,11 @@ def map(arg):
127138
Parent.__init__(self, category=category)
128139

129140
self._map = map
141+
if inverse is not None:
142+
from sage.misc.superseded import deprecation
143+
deprecation(1, "passing inverse is deprecated, implement inverse_image() for map instead")
144+
if inverse is None:
145+
inverse = map.inverse_image
130146
self._inverse = inverse
131147
self._domain_subset = domain_subset
132148
self._is_injective = is_injective

0 commit comments

Comments
 (0)