Dynamical semigroups#

A dynamical semigroup is a finitely generated subsemigroup of the endomorphism ring of a subscheme of projective or affine space.

AUTHORS:

  • Dang Phan (August 6th, 2023): initial implementation

class sage.dynamics.arithmetic_dynamics.dynamical_semigroup.DynamicalSemigroup(systems)[source]#

Bases: Parent

A dynamical semigroup defined by a multiple dynamical systems on projective or affine space.

INPUT:

  • ds_data – list or tuple of dynamical systems or objects that define dynamical systems

OUTPUT:

DynamicalSemigroup_affine if ds_data only contains dynamical systems over affine space; and DynamicalSemigroup_projective otherwise.

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: DynamicalSemigroup(([x, y], [x^2, y^2]))
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSystem([x, y], P)
sage: g = DynamicalSystem([x^2, y^2], P)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([x, y], P)
>>> g = DynamicalSystem([x**Integer(2), y**Integer(2)], P)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
sage: A.<x> = AffineSpace(QQ, 1)
sage: f = DynamicalSystem_affine(x, A)
sage: DynamicalSemigroup(f)
Dynamical semigroup over Affine Space of dimension 1 over Rational Field
 defined by 1 dynamical system:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x)
>>> from sage.all import *
>>> A = AffineSpace(QQ, Integer(1), names=('x',)); (x,) = A._first_ngens(1)
>>> f = DynamicalSystem_affine(x, A)
>>> DynamicalSemigroup(f)
Dynamical semigroup over Affine Space of dimension 1 over Rational Field
 defined by 1 dynamical system:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x)
sage: A.<x> = AffineSpace(QQ, 1)
sage: f = DynamicalSystem(x, A)
sage: g = DynamicalSystem(x^2, A)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Affine Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x^2)
>>> from sage.all import *
>>> A = AffineSpace(QQ, Integer(1), names=('x',)); (x,) = A._first_ngens(1)
>>> f = DynamicalSystem(x, A)
>>> g = DynamicalSystem(x**Integer(2), A)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Affine Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x^2)
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: X = P.subscheme(x - y)
sage: f = DynamicalSystem_projective([x, y], X)
sage: g = DynamicalSystem_projective([x^2, y^2], X)
sage: DynamicalSemigroup_projective([f, g])
Dynamical semigroup over Closed subscheme of Projective Space of dimension 1
 over Rational Field defined by: x - y
 defined by 2 dynamical systems:
  Dynamical System of Closed subscheme of Projective Space of dimension 1
   over Rational Field defined by: x - y
     Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Closed subscheme of Projective Space of dimension 1
   over Rational Field defined by: x - y
     Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> X = P.subscheme(x - y)
>>> f = DynamicalSystem_projective([x, y], X)
>>> g = DynamicalSystem_projective([x**Integer(2), y**Integer(2)], X)
>>> DynamicalSemigroup_projective([f, g])
Dynamical semigroup over Closed subscheme of Projective Space of dimension 1
 over Rational Field defined by: x - y
 defined by 2 dynamical systems:
  Dynamical System of Closed subscheme of Projective Space of dimension 1
   over Rational Field defined by: x - y
     Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Closed subscheme of Projective Space of dimension 1
   over Rational Field defined by: x - y
     Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)

If a dynamical semigroup is built from dynamical systems with different base rings, all systems will be coerced to the largest base ring:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: Q.<z,w> = ProjectiveSpace(RR, 1)
sage: f = DynamicalSystem([x, y], P)
sage: g = DynamicalSystem([z^2, w^2], Q)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over
 Real Field with 53 bits of precision defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1
   over Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1
   over Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> Q = ProjectiveSpace(RR, Integer(1), names=('z', 'w',)); (z, w,) = Q._first_ngens(2)
>>> f = DynamicalSystem([x, y], P)
>>> g = DynamicalSystem([z**Integer(2), w**Integer(2)], Q)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over
 Real Field with 53 bits of precision defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1
   over Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1
   over Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
sage: A.<x> = AffineSpace(QQ, 1)
sage: B.<y> = AffineSpace(RR, 1)
sage: f = DynamicalSystem(x, A)
sage: g = DynamicalSystem(y^2, B)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Affine Space of dimension 1 over
 Real Field with 53 bits of precision defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over
   Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over
   Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x) to (x^2)
>>> from sage.all import *
>>> A = AffineSpace(QQ, Integer(1), names=('x',)); (x,) = A._first_ngens(1)
>>> B = AffineSpace(RR, Integer(1), names=('y',)); (y,) = B._first_ngens(1)
>>> f = DynamicalSystem(x, A)
>>> g = DynamicalSystem(y**Integer(2), B)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Affine Space of dimension 1 over
 Real Field with 53 bits of precision defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over
   Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over
   Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x) to (x^2)

If a dynamical semigroup is built from dynamical systems over number fields, a composite number field is created and all systems will be coerced to it. This composite number field contains all of the initial number fields:

sage: # needs sage.rings.number_field
sage: R.<r> = QQ[]
sage: K.<k> = NumberField(r^2 - 2)
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: Q.<x,y> = ProjectiveSpace(K, 1)
sage: f = DynamicalSystem([x, y], P)
sage: g = DynamicalSystem([z^2, w^2], Q)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over
 Number Field in k with defining polynomial r^2 - 2 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Number Field in k with defining polynomial r^2 - 2
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over
   Number Field in k with defining polynomial r^2 - 2
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> # needs sage.rings.number_field
>>> R = QQ['r']; (r,) = R._first_ngens(1)
>>> K = NumberField(r**Integer(2) - Integer(2), names=('k',)); (k,) = K._first_ngens(1)
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> Q = ProjectiveSpace(K, Integer(1), names=('x', 'y',)); (x, y,) = Q._first_ngens(2)
>>> f = DynamicalSystem([x, y], P)
>>> g = DynamicalSystem([z**Integer(2), w**Integer(2)], Q)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over
 Number Field in k with defining polynomial r^2 - 2 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Number Field in k with defining polynomial r^2 - 2
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over
   Number Field in k with defining polynomial r^2 - 2
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
sage: # needs sage.rings.number_field
sage: R.<r> = QQ[]
sage: K.<k> = NumberField(r^2 - 2)
sage: L.<l> = NumberField(r^2 - 3)
sage: P.<x,y> = ProjectiveSpace(K, 1)
sage: Q.<z,w> = ProjectiveSpace(L, 1)
sage: f = DynamicalSystem([x, y], P)
sage: g = DynamicalSystem([z^2, w^2], Q)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over
 Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over
   Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> # needs sage.rings.number_field
>>> R = QQ['r']; (r,) = R._first_ngens(1)
>>> K = NumberField(r**Integer(2) - Integer(2), names=('k',)); (k,) = K._first_ngens(1)
>>> L = NumberField(r**Integer(2) - Integer(3), names=('l',)); (l,) = L._first_ngens(1)
>>> P = ProjectiveSpace(K, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> Q = ProjectiveSpace(L, Integer(1), names=('z', 'w',)); (z, w,) = Q._first_ngens(2)
>>> f = DynamicalSystem([x, y], P)
>>> g = DynamicalSystem([z**Integer(2), w**Integer(2)], Q)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over
 Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over
   Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
sage: # needs sage.rings.number_field
sage: R.<r> = QQ[]
sage: K.<k> = NumberField(r^2 - 2)
sage: L.<l> = NumberField(r^2 - 3)
sage: P.<x> = AffineSpace(K, 1)
sage: Q.<y> = AffineSpace(L, 1)
sage: f = DynamicalSystem(x, P)
sage: g = DynamicalSystem(y^2, Q)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Affine Space of dimension 1 over
 Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
 defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over
   Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over
   Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
    Defn: Defined on coordinates by sending (x) to (x^2)
>>> from sage.all import *
>>> # needs sage.rings.number_field
>>> R = QQ['r']; (r,) = R._first_ngens(1)
>>> K = NumberField(r**Integer(2) - Integer(2), names=('k',)); (k,) = K._first_ngens(1)
>>> L = NumberField(r**Integer(2) - Integer(3), names=('l',)); (l,) = L._first_ngens(1)
>>> P = AffineSpace(K, Integer(1), names=('x',)); (x,) = P._first_ngens(1)
>>> Q = AffineSpace(L, Integer(1), names=('y',)); (y,) = Q._first_ngens(1)
>>> f = DynamicalSystem(x, P)
>>> g = DynamicalSystem(y**Integer(2), Q)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Affine Space of dimension 1 over
 Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
 defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over
   Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over
   Number Field in kl with defining polynomial r^4 - 10*r^2 + 1
    Defn: Defined on coordinates by sending (x) to (x^2)

A dynamical semigroup may contain dynamical systems over function fields:

sage: R.<r> = QQ[]
sage: P.<x,y> = ProjectiveSpace(R, 1)
sage: f = DynamicalSystem([r * x, y], P)
sage: g = DynamicalSystem([x, r * y], P)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Univariate
 Polynomial Ring in r over Rational Field defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : y)
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : r*y)
>>> from sage.all import *
>>> R = QQ['r']; (r,) = R._first_ngens(1)
>>> P = ProjectiveSpace(R, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([r * x, y], P)
>>> g = DynamicalSystem([x, r * y], P)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Univariate
 Polynomial Ring in r over Rational Field defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : y)
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : r*y)
sage: R.<r> = QQ[]
sage: P.<x,y> = ProjectiveSpace(R, 1)
sage: f = DynamicalSystem([r * x, y], P)
sage: g = DynamicalSystem([x, y], P)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Univariate
 Polynomial Ring in r over Rational Field defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : y)
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
>>> from sage.all import *
>>> R = QQ['r']; (r,) = R._first_ngens(1)
>>> P = ProjectiveSpace(R, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([r * x, y], P)
>>> g = DynamicalSystem([x, y], P)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Univariate
 Polynomial Ring in r over Rational Field defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : y)
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
sage: R.<r,s> = QQ[]
sage: P.<x,y> = ProjectiveSpace(R, 1)
sage: f = DynamicalSystem([r * x, y], P)
sage: g = DynamicalSystem([s * x, y], P)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Multivariate
 Polynomial Ring in r, s over Rational Field defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Multivariate Polynomial Ring in r, s over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : y)
  Dynamical System of Projective Space of dimension 1 over
   Multivariate Polynomial Ring in r, s over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (s*x : y)
>>> from sage.all import *
>>> R = QQ['r, s']; (r, s,) = R._first_ngens(2)
>>> P = ProjectiveSpace(R, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([r * x, y], P)
>>> g = DynamicalSystem([s * x, y], P)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Multivariate
 Polynomial Ring in r, s over Rational Field defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Multivariate Polynomial Ring in r, s over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : y)
  Dynamical System of Projective Space of dimension 1 over
   Multivariate Polynomial Ring in r, s over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (s*x : y)
sage: R.<r,s> = QQ[]
sage: P.<x,y> = ProjectiveSpace(R, 1)
sage: f = DynamicalSystem([r * x, s * y], P)
sage: g = DynamicalSystem([s * x, r * y], P)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over
 Multivariate Polynomial Ring in r, s over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Multivariate Polynomial Ring in r, s over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : s*y)
  Dynamical System of Projective Space of dimension 1 over
   Multivariate Polynomial Ring in r, s over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (s*x : r*y)
>>> from sage.all import *
>>> R = QQ['r, s']; (r, s,) = R._first_ngens(2)
>>> P = ProjectiveSpace(R, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([r * x, s * y], P)
>>> g = DynamicalSystem([s * x, r * y], P)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over
 Multivariate Polynomial Ring in r, s over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Multivariate Polynomial Ring in r, s over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : s*y)
  Dynamical System of Projective Space of dimension 1 over
   Multivariate Polynomial Ring in r, s over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (s*x : r*y)

A dynamical semigroup may contain dynamical systems over finite fields:

sage: F = FiniteField(5)
sage: P.<x,y> = ProjectiveSpace(F, 1)
sage: DynamicalSemigroup(([x, y], [x^2, y^2]))
Dynamical semigroup over Projective Space of dimension 1 over
 Finite Field of size 5 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Finite Field of size 5
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Finite Field of size 5
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> F = FiniteField(Integer(5))
>>> P = ProjectiveSpace(F, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
Dynamical semigroup over Projective Space of dimension 1 over
 Finite Field of size 5 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Finite Field of size 5
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Finite Field of size 5
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)

If a dynamical semigroup is built from dynamical systems over both projective and affine spaces, all systems will be homogenized to dynamical systems over projective space:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: A.<z> = AffineSpace(QQ, 1)
sage: f = DynamicalSystem([x, y], P)
sage: g = DynamicalSystem(z^2, A)
sage: DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> A = AffineSpace(QQ, Integer(1), names=('z',)); (z,) = A._first_ngens(1)
>>> f = DynamicalSystem([x, y], P)
>>> g = DynamicalSystem(z**Integer(2), A)
>>> DynamicalSemigroup((f, g))
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
base_ring()[source]#

The base ring of this dynamical semigroup. This is identical to the base ring of all of its defining dynamical system.

OUTPUT: A ring.

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: f.base_ring()
Rational Field
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> f.base_ring()
Rational Field
change_ring(new_ring)[source]#

Return a new DynamicalSemigroup whose generators are the initial dynamical systems coerced to new_ring.

INPUT:

  • new_ring – a ring.

OUTPUT:

A DynamicalSemigroup defined by this dynamical semigroup’s generators, but coerced to new_ring.

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: f.change_ring(RR)
Dynamical semigroup over Projective Space of dimension 1 over
 Real Field with 53 bits of precision defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over
   Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> f.change_ring(RR)
Dynamical semigroup over Projective Space of dimension 1 over
 Real Field with 53 bits of precision defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over
   Real Field with 53 bits of precision
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
codomain()[source]#

Return the codomain of the generators of this dynamical semigroup.

OUTPUT: A subscheme of a projective space or affine space.

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: f.codomain()
Projective Space of dimension 1 over Rational Field
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> f.codomain()
Projective Space of dimension 1 over Rational Field
defining_polynomials()[source]#

Return the set of polynomials that define the generators of this dynamical semigroup.

OUTPUT: A set of polynomials.

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: f.defining_polynomials()
{(x, y), (x^2, y^2)}
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> f.defining_polynomials()
{(x, y), (x^2, y^2)}
defining_systems()[source]#

Return the generators of this dynamical semigroup.

OUTPUT: A tuple of dynamical systems.

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: f.defining_systems()
(Dynamical System of Projective Space of dimension 1 over Rational Field
   Defn: Defined on coordinates by sending (x : y) to (x : y),
 Dynamical System of Projective Space of dimension 1 over Rational Field
   Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2))
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> f.defining_systems()
(Dynamical System of Projective Space of dimension 1 over Rational Field
   Defn: Defined on coordinates by sending (x : y) to (x : y),
 Dynamical System of Projective Space of dimension 1 over Rational Field
   Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2))
domain()[source]#

Return the domain of the generators of this dynamical semigroup.

OUTPUT: A subscheme of a projective space or affine space.

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: f.domain()
Projective Space of dimension 1 over Rational Field
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> f.domain()
Projective Space of dimension 1 over Rational Field
nth_iterate(p, n)[source]#

Return a set of values that results from evaluating this dynamical semigroup on the value p a total of n times.

INPUT:

  • p – a value on which dynamical systems can evaluate

  • n – a nonnegative integer

OUTPUT: a set of values

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x^2, y^2],))
sage: f.nth_iterate(2, 0)
{(2 : 1)}
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x**Integer(2), y**Integer(2)],))
>>> f.nth_iterate(Integer(2), Integer(0))
{(2 : 1)}
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x^2, y^2],))
sage: f.nth_iterate(2, 1)
{(4 : 1)}
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x**Integer(2), y**Integer(2)],))
>>> f.nth_iterate(Integer(2), Integer(1))
{(4 : 1)}
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x^2, y^2],))
sage: f.nth_iterate(2, 2)
{(16 : 1)}
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x**Integer(2), y**Integer(2)],))
>>> f.nth_iterate(Integer(2), Integer(2))
{(16 : 1)}
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x + y, x - y], [x^2, y^2]))
sage: f.nth_iterate(2, 0)
{(2 : 1)}
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x + y, x - y], [x**Integer(2), y**Integer(2)]))
>>> f.nth_iterate(Integer(2), Integer(0))
{(2 : 1)}
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x + y, x - y], [x^2, y^2]))
sage: f.nth_iterate(2, 1)
{(3 : 1), (4 : 1)}
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x + y, x - y], [x**Integer(2), y**Integer(2)]))
>>> f.nth_iterate(Integer(2), Integer(1))
{(3 : 1), (4 : 1)}
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSemigroup(([x + y, x - y], [x^2, y^2]))
sage: f.nth_iterate(2, 2)
{(5/3 : 1), (2 : 1), (9 : 1), (16 : 1)}
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSemigroup(([x + y, x - y], [x**Integer(2), y**Integer(2)]))
>>> f.nth_iterate(Integer(2), Integer(2))
{(5/3 : 1), (2 : 1), (9 : 1), (16 : 1)}
orbit(p, n)[source]#

If n is an integer, return \((p, f(p), f^2(p), \dots, f^n(p))\). If n is a list or tuple in interval notation \([a, b]\), return \((f^a(p), \dots, f^b(p))\).

INPUT:

  • \(p\) – value on which this dynamical semigroup can be evaluated

  • \(n\) – a nonnegative integer or a list or tuple of length 2 describing an interval of the number line containing entirely nonnegative integers

OUTPUT: a tuple of sets of values on the domain of this dynamical semigroup.

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: d = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: d.orbit(2, 0)
({(2 : 1)},)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> d = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> d.orbit(Integer(2), Integer(0))
({(2 : 1)},)
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: d = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: d.orbit(2, 1)
({(2 : 1)}, {(2 : 1), (4 : 1)})
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> d = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> d.orbit(Integer(2), Integer(1))
({(2 : 1)}, {(2 : 1), (4 : 1)})
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: d = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: d.orbit(2, 2)
({(2 : 1)}, {(2 : 1), (4 : 1)}, {(2 : 1), (4 : 1), (16 : 1)})
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> d = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> d.orbit(Integer(2), Integer(2))
({(2 : 1)}, {(2 : 1), (4 : 1)}, {(2 : 1), (4 : 1), (16 : 1)})
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: d = DynamicalSemigroup(([x, y], [x^2, y^2]))
sage: d.orbit(2, [1, 2])
({(2 : 1), (4 : 1)}, {(2 : 1), (4 : 1), (16 : 1)})
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> d = DynamicalSemigroup(([x, y], [x**Integer(2), y**Integer(2)]))
>>> d.orbit(Integer(2), [Integer(1), Integer(2)])
({(2 : 1), (4 : 1)}, {(2 : 1), (4 : 1), (16 : 1)})
specialization(assignments)[source]#

Returns the specialization of the generators of this dynamical semigroup.

INPUT:

  • \(assignments\) – argument for specialization of the generators of this dynamical semigroup.

OUTPUT: a dynamical semigroup with the specialization of the generators of this dynamical semigroup.

EXAMPLES:

sage: R.<r> = QQ[]
sage: P.<x,y> = ProjectiveSpace(R, 1)
sage: f = DynamicalSystem([r * x, y], P)
sage: g = DynamicalSystem([x, r * y], P)
sage: d = DynamicalSemigroup((f, g))
sage: d.specialization({r:2})
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (2*x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : 2*y)
>>> from sage.all import *
>>> R = QQ['r']; (r,) = R._first_ngens(1)
>>> P = ProjectiveSpace(R, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([r * x, y], P)
>>> g = DynamicalSystem([x, r * y], P)
>>> d = DynamicalSemigroup((f, g))
>>> d.specialization({r:Integer(2)})
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (2*x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : 2*y)
sage: R.<r> = QQ[]
sage: P.<x,y> = ProjectiveSpace(R, 1)
sage: f = DynamicalSystem([r * x, y], P)
sage: g = DynamicalSystem([x, y], P)
sage: d = DynamicalSemigroup((f, g))
sage: d.specialization({r:2})
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (2*x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
>>> from sage.all import *
>>> R = QQ['r']; (r,) = R._first_ngens(1)
>>> P = ProjectiveSpace(R, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([r * x, y], P)
>>> g = DynamicalSystem([x, y], P)
>>> d = DynamicalSemigroup((f, g))
>>> d.specialization({r:Integer(2)})
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (2*x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
sage: R.<r,s> = QQ[]
sage: P.<x,y> = ProjectiveSpace(R, 1)
sage: f = DynamicalSystem([r * x, y], P)
sage: g = DynamicalSystem([s * x, y], P)
sage: d = DynamicalSemigroup((f, g))
sage: d.specialization({r:2, s:3})
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (2*x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (3*x : y)
>>> from sage.all import *
>>> R = QQ['r, s']; (r, s,) = R._first_ngens(2)
>>> P = ProjectiveSpace(R, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([r * x, y], P)
>>> g = DynamicalSystem([s * x, y], P)
>>> d = DynamicalSemigroup((f, g))
>>> d.specialization({r:Integer(2), s:Integer(3)})
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (2*x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (3*x : y)
sage: R.<r,s> = QQ[]
sage: P.<x,y> = ProjectiveSpace(R, 1)
sage: f = DynamicalSystem([r * x, s * y], P)
sage: g = DynamicalSystem([s * x, r * y], P)
sage: d = DynamicalSemigroup((f, g))
sage: d.specialization({s:3})
Dynamical semigroup over Projective Space of dimension 1 over
 Univariate Polynomial Ring in r over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : 3*y)
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (3*x : r*y)
>>> from sage.all import *
>>> R = QQ['r, s']; (r, s,) = R._first_ngens(2)
>>> P = ProjectiveSpace(R, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([r * x, s * y], P)
>>> g = DynamicalSystem([s * x, r * y], P)
>>> d = DynamicalSemigroup((f, g))
>>> d.specialization({s:Integer(3)})
Dynamical semigroup over Projective Space of dimension 1 over
 Univariate Polynomial Ring in r over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (r*x : 3*y)
  Dynamical System of Projective Space of dimension 1 over
   Univariate Polynomial Ring in r over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (3*x : r*y)
class sage.dynamics.arithmetic_dynamics.dynamical_semigroup.DynamicalSemigroup_affine(systems)[source]#

Bases: DynamicalSemigroup

A dynamical semigroup defined by multiple dynamical systems on affine space.

INPUT:

  • ds_data – list or tuple of dynamical systems or objects that define dynamical systems over affine space.

OUTPUT: DynamicalSemigroup_affine

EXAMPLES:

sage: A.<x> = AffineSpace(QQ, 1)
sage: f = DynamicalSystem(x, A)
sage: g = DynamicalSystem(x^2, A)
sage: DynamicalSemigroup_affine((f, g))
Dynamical semigroup over Affine Space of dimension 1 over
 Rational Field defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x^2)
>>> from sage.all import *
>>> A = AffineSpace(QQ, Integer(1), names=('x',)); (x,) = A._first_ngens(1)
>>> f = DynamicalSystem(x, A)
>>> g = DynamicalSystem(x**Integer(2), A)
>>> DynamicalSemigroup_affine((f, g))
Dynamical semigroup over Affine Space of dimension 1 over
 Rational Field defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x^2)
homogenize(n)[source]#

Return a new DynamicalSemigroup_projective with the homogenization at n of the generators of this dynamical semigroup.

INPUT:

  • n – a tuple of nonnegative integers. If n is an integer, then the two values of the tuple are assumed to be the same

OUTPUT: DynamicalSemigroup_projective

EXAMPLES:

sage: A.<x> = AffineSpace(QQ, 1)
sage: f = DynamicalSystem(x + 1, A)
sage: g = DynamicalSystem(x^2, A)
sage: d = DynamicalSemigroup((f, g))
sage: d.homogenize(1)
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x0 : x1) to (x0 + x1 : x1)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x0 : x1) to (x0^2 : x1^2)
>>> from sage.all import *
>>> A = AffineSpace(QQ, Integer(1), names=('x',)); (x,) = A._first_ngens(1)
>>> f = DynamicalSystem(x + Integer(1), A)
>>> g = DynamicalSystem(x**Integer(2), A)
>>> d = DynamicalSemigroup((f, g))
>>> d.homogenize(Integer(1))
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x0 : x1) to (x0 + x1 : x1)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x0 : x1) to (x0^2 : x1^2)
sage: A.<x> = AffineSpace(QQ, 1)
sage: f = DynamicalSystem(x + 1, A)
sage: g = DynamicalSystem(x^2, A)
sage: d = DynamicalSemigroup((f, g))
sage: d.homogenize((1, 0))
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x0 : x1) to (x1 : x0 + x1)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x0 : x1) to (x1^2 : x0^2)
>>> from sage.all import *
>>> A = AffineSpace(QQ, Integer(1), names=('x',)); (x,) = A._first_ngens(1)
>>> f = DynamicalSystem(x + Integer(1), A)
>>> g = DynamicalSystem(x**Integer(2), A)
>>> d = DynamicalSemigroup((f, g))
>>> d.homogenize((Integer(1), Integer(0)))
Dynamical semigroup over Projective Space of dimension 1 over Rational Field
 defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x0 : x1) to (x1 : x0 + x1)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x0 : x1) to (x1^2 : x0^2)
class sage.dynamics.arithmetic_dynamics.dynamical_semigroup.DynamicalSemigroup_affine_field(systems)[source]#

Bases: DynamicalSemigroup_affine

class sage.dynamics.arithmetic_dynamics.dynamical_semigroup.DynamicalSemigroup_affine_finite_field(systems)[source]#

Bases: DynamicalSemigroup_affine_field

class sage.dynamics.arithmetic_dynamics.dynamical_semigroup.DynamicalSemigroup_projective(systems)[source]#

Bases: DynamicalSemigroup

A dynamical semigroup defined by a multiple dynamical systems on projective space.

INPUT:

  • ds_data – list or tuple of dynamical systems or objects that define dynamical systems over projective space.

OUTPUT: DynamicalSemigroup_projective

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: DynamicalSemigroup_projective(([x, y], [x^2, y^2]))
Dynamical semigroup over Projective Space of dimension 1 over
 Rational Field defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> DynamicalSemigroup_projective(([x, y], [x**Integer(2), y**Integer(2)]))
Dynamical semigroup over Projective Space of dimension 1 over
 Rational Field defined by 2 dynamical systems:
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x : y)
  Dynamical System of Projective Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x : y) to (x^2 : y^2)
dehomogenize(n)[source]#

Return a new DynamicalSemigroup_projective with the dehomogenization at n of the generators of this dynamical semigroup.

INPUT:

  • n – a tuple of nonnegative integers. If n is an integer, then the two values of the tuple are assumed to be the same

OUTPUT: DynamicalSemigroup_affine

EXAMPLES:

sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSystem([x, y], P)
sage: g = DynamicalSystem([x^2, y^2], P)
sage: d = DynamicalSemigroup((f, g))
sage: d.dehomogenize(0)
Dynamical semigroup over Affine Space of dimension 1 over
 Rational Field defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (y) to (y)
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (y) to (y^2)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([x, y], P)
>>> g = DynamicalSystem([x**Integer(2), y**Integer(2)], P)
>>> d = DynamicalSemigroup((f, g))
>>> d.dehomogenize(Integer(0))
Dynamical semigroup over Affine Space of dimension 1 over
 Rational Field defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (y) to (y)
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (y) to (y^2)
sage: P.<x,y> = ProjectiveSpace(QQ, 1)
sage: f = DynamicalSystem([x, y], P)
sage: g = DynamicalSystem([x^2, y^2], P)
sage: d = DynamicalSemigroup((f, g))
sage: d.dehomogenize(1)
Dynamical semigroup over Affine Space of dimension 1 over
 Rational Field defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x^2)
>>> from sage.all import *
>>> P = ProjectiveSpace(QQ, Integer(1), names=('x', 'y',)); (x, y,) = P._first_ngens(2)
>>> f = DynamicalSystem([x, y], P)
>>> g = DynamicalSystem([x**Integer(2), y**Integer(2)], P)
>>> d = DynamicalSemigroup((f, g))
>>> d.dehomogenize(Integer(1))
Dynamical semigroup over Affine Space of dimension 1 over
 Rational Field defined by 2 dynamical systems:
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x)
  Dynamical System of Affine Space of dimension 1 over Rational Field
    Defn: Defined on coordinates by sending (x) to (x^2)
class sage.dynamics.arithmetic_dynamics.dynamical_semigroup.DynamicalSemigroup_projective_field(systems)[source]#

Bases: DynamicalSemigroup_projective

class sage.dynamics.arithmetic_dynamics.dynamical_semigroup.DynamicalSemigroup_projective_finite_field(systems)[source]#

Bases: DynamicalSemigroup_projective_field