@@ -301,7 +301,7 @@ def __init__(self, systems):
301
301
(x^2 : y^2)
302
302
"""
303
303
304
- self ._dynamical_systems = systems
304
+ self ._dynamical_systems = _remove_duplicates_of_ ( systems )
305
305
Parent .__init__ (self , category = Semigroups ().FinitelyGeneratedAsMagma ())
306
306
307
307
def __call__ (self , input ):
@@ -313,35 +313,35 @@ def __call__(self, input):
313
313
- ``input`` -- one value that can be evaluated
314
314
with the generators of this dynamical semigroup.
315
315
316
- OUTPUT: A tuple of the resulting values after applying all of this dynamical semigroup's generators to ``input``.
316
+ OUTPUT: A set of the resulting values after applying all of this dynamical semigroup's generators to ``input``.
317
317
318
318
EXAMPLES::
319
319
320
320
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
321
321
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
322
322
sage: f(2)
323
- (( 2 : 1), (4 : 1))
323
+ {( 2 : 1), (4 : 1)}
324
324
325
325
::
326
326
327
327
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
328
328
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
329
329
sage: f([2, 1])
330
- (( 2 : 1), (4 : 1))
330
+ {( 2 : 1), (4 : 1)}
331
331
332
- ::
332
+ TESTS ::
333
333
334
334
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
335
335
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
336
336
sage: f(f(2))
337
337
Traceback (most recent call last):
338
338
...
339
- TypeError: unable to convert ( 2 : 1) to an element of Rational Field
339
+ TypeError: unable to convert {(4 : 1), ( 2 : 1)} to an element of Rational Field
340
340
"""
341
341
result = []
342
342
for ds in self .defining_systems ():
343
343
result .append (ds (self .domain ()(input )))
344
- return tuple (result )
344
+ return set (result )
345
345
346
346
def base_ring (self ):
347
347
r"""
@@ -423,21 +423,21 @@ def codomain(self):
423
423
424
424
def defining_polynomials (self ):
425
425
r"""
426
- Return the tuple of polynomials that define the generators of this dynamical semigroup.
426
+ Return the set of polynomials that define the generators of this dynamical semigroup.
427
427
428
- OUTPUT: A tuple of polynomials.
428
+ OUTPUT: A set of polynomials.
429
429
430
430
EXAMPLES::
431
431
432
432
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
433
433
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
434
434
sage: f.defining_polynomials()
435
- (( x, y), (x^2, y^2))
435
+ {( x, y), (x^2, y^2)}
436
436
"""
437
437
result = []
438
438
for ds in self .defining_systems ():
439
439
result .append (ds .defining_polynomials ())
440
- return tuple (result )
440
+ return set (result )
441
441
442
442
def defining_systems (self ):
443
443
r"""
@@ -677,6 +677,30 @@ class DynamicalSemigroup_affine_field(DynamicalSemigroup_affine):
677
677
class DynamicalSemigroup_affine_finite_field (DynamicalSemigroup_affine_field ):
678
678
pass
679
679
680
+ def _remove_duplicates_of_ (list ):
681
+ r"""
682
+ Removes duplicate elements from a list.
683
+
684
+ INPUT:
685
+
686
+ - ``list`` -- any list
687
+
688
+ OUTPUT: the original list without duplicate elements
689
+
690
+ EXAMPLES::
691
+
692
+ sage: numbers = [1, 1, 2, 3, 3, 2, 1, 5, 4, 3]
693
+ sage: sage.dynamics.arithmetic_dynamics.dynamical_semigroup._remove_duplicates_of_(numbers)
694
+ [1, 2, 3, 5, 4]
695
+ """
696
+ seen = []
697
+
698
+ for item in list :
699
+ if item not in seen :
700
+ seen .append (item )
701
+
702
+ return seen
703
+
680
704
def _standardize_domains_of_ (systems ):
681
705
r"""
682
706
Coerces dynamical systems to the same domain and have the same generators.
0 commit comments