<<

JOURNAL OF GEOMETRIC MECHANICS doi:10.3934/jgm.2021018 ©American Institute of Mathematical Sciences

ON COMPUTATIONAL POISSON GEOMETRY I: SYMBOLIC FOUNDATIONS

Miguel Angel´ Evangelista-Alvarado, Jose´ Crisp´ın Ru´ız-Pantaleon´ ∗ and Pablo Suarez-Serrato´ Instituto de Matem´aticas Universidad Nacional Aut´onomade M´exico Circuito Exterior, Ciudad Universitaria, Coyoac´an,04510, Mexico City, Mexico

(Communicated by Juan C. Marrero)

Abstract. We present a computational toolkit for (local) Poisson–Nijenhuis calculus on manifolds. Our Python PoissonGeometry implements our algorithms and accompanies this paper. Examples of how our methods can be used are explained, including gauge transformations of Poisson in di- mension 3, parametric Poisson bivector fields in 4, and Hamiltonian vector fields of parametric families of Poisson in dimension 6.

1. Introduction. The origin of the concepts in this paper is the analysis of me- chanical systems of Sim´eonDenis Poisson in 1809 [33]. A Poisson manifold is a pair (M, Π), where M is a smooth manifold and Π a contravariant 2– field (bivector field) on M satisfying the equation [[Π, Π]] = 0, (1) with respect to the Schouten–Nijenhuis bracket [[ , ]] for fields [31, 13]. Suppose m = dim M, and fix a local coordinate system x = (U; x1, . . . , xm) on M. Then, Π has the following coordinate representation [28, 37]: ∂ ∂ X ∂ ∂ Π = 1 Πij ∧ = Πij ∧ (2) 2 ∂xi ∂xj ∂xi ∂xj 1≤i

ij ∞ Here, the functions Π ∈ CU are called the coefficients of Π, they are skew– symmetric, Πji = −Πij, and {∂/∂xi} is the canonical for vector fields on U ⊆ M. The Poisson bivector field, and its associated bracket, are essential elements in the comprehension of Hamiltonian dynamics [27, 13]. We recommend interested readers consult the available surveys of this field [39, 23].

2020 Subject Classification. Primary: 68W30, 97N80, 53D17. Key words and phrases. Poisson structures, Poisson–Nijenhuis calculus, symbolic computation, Python. This research was partially supported by CONACyT, “Programa para un Avance Global e Inte- grado de la Matem´aticaMexicana” FORDECYT 265667 and UNAM-DGAPA-PAPIIT-IN104819. JCRP thanks CONACyT for a postdoctoral fellowship held during the production of this work. ∗ Corresponding author: Jos´eCrisp´ınRu´ız-Pantale´on.

1 2 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´

Table1 below compiles the functions in our Python module PoissonGeometry1, their corresponding algorithm, and examples where such objects are used in the references. We describe all of our algorithms in section 2. Finally, in section 3 we present two applications that illustrate the usefulness of our computational methods. These are, a new result about gauge transformations of Poisson bivector fields in dimension 3 (Proposition 3.1), and a description of parametric families of Poisson bivectors in dimension 4 (Lemma 3.2).

Table 1. Functions, corresponding algorithms, and examples where each particular method can be or has been, used in the theory of Poisson geometry. Our methods perform the symbolic calculus that realize these ideas computationally.

Function Algorithm Examples sharp morphism 2.1 [13, 27,7] poisson bracket 2.2 [27,7] hamiltonian vf 2.3 [7, 36] coboundary operator 2.4 [32,2] curl operator 2.5 [12,2] bivector to 2.6 [13, 27,7] jacobiator 2.7 [13, 27,7] modular vf 2.8 [1, 21,2] is unimodular homogeneous * 2.9 [12, 27,2,7] one forms bracket 2.10 [16, 23] gauge transformation 2.11 [10,9] linear form R3 2.12 [32,7] isomorphic lie poisson R3 2.13 [32,7] flaschka ratiu bivector 2.14 [12, 18, 35, 15] is poisson tensor * 2.15 [18, 35, 15] is in * 2.16 [13, 27,2,7] is casimir * 2.17 [12, 18, 35, 15] is poisson vf * 2.18 [32,3] is poisson pair * 2.19 [4,2]

Remark 1. We have indicated with an asterisk (*) the six methods whose im- plementations require testing whether a symbolic expression is zero. Theoretical computational constraints naturally limit these.

The following diagram illustrates dependencies in PoissonGeometry.

1Our code repository is found at: https://github.com/appliedgeometry/poissongeometry. ON COMPUTATIONAL POISSON GEOMETRY I 3

one forms bracket

sharp morphism is in kernel

hamiltonian vf is casimir

poisson bracket jacobiator

coboundary operator is poisson tensor

is poisson vf

flaschka ratiu bivector is poisson pair

curl operator modular vf

bivector to matrix is unimodular homogeneous

gauge transformation linear normal form R3

isomorphic lie poisson R3

2. Syntax and implementation of PoissonGeometry methods. PoissonGeom- etry is our Python module for local calculus on Poisson manifolds. First, we define symbolic variables that emulate local coordinates on a finite smooth manifold M. By default, these symbolic variables are just the juxtaposition of the symbol x and an index of the set {1, . . . , m = dim M}: (x1, . . . , xm).

Scalar Functions. A local representation of a function is written in Pois- sonGeometry using string literal expressions. For example, the function f = a(x1)2 + b(x2)2 + c(x3)2 should be written exactly as follows: ‘a * x1**2 + b * x2**2 + c * x3**2’. All characters that are not local coordinates are treated as (symbolic) pa- rameters: a, b and c for the previous example. Our standing assumption is that the functions involved in all the algorithms below are computable.

Multivector Fields and Differential forms. Both multivector fields and differ- ential forms are written using dictionaries with tuples of integers as keys and string type values. If the coordinate expression of a (non–trivial) a–multivector field A on M, with a ∈ N, is given by X ∂ ∂ ∂ A = Ai1i2···ia ∧ ∧ · · · ∧ ,Ai1···ia = Ai1···ia (x), ∂xi1 ∂xi2 ∂xia 1≤i1

 1···a i1···ia m−a+1···m (1, ..., a): A , ..., (i1, ..., ia): A , ..., (m − a + 1, ..., m): A .

Here, each key (i1, . . . , ia) is a tuple containing ordered indices 1 ≤ i1 < ··· < ia ≤ m, and the corresponding value Ai1···ia is the string expression of the scalar function (coefficient) Ai1···ia of A. 4 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´

The syntax for differential forms is the same. It is important to remark that we only need to write the keys and values of non–zero coefficients. See the documen- tation for more details. Now we will describe the implementation of all functions of the module Pois- sonGeometry. 2.1. Key functions. This subsection contains functions that serve as a basis for the implementation of almost all functions of PoissonGeometry. 2.1.1. Sharp morphism. The function sharp morphism computes the image of a dif- ferential 1–form under the vector bundle morphism Π] : T∗M → TM, induced by a bivector field Π on M, defined by β, Π](α) := Π(α, β), (3) for any α, β ∈ T∗M [13, 27]. Here, h , i is the natural pairing for differential 1–forms and vector fields. ] Equivalently, Π (α) = iαΠ, where i• is the interior product of multivector fields and differential forms defined by the rule iβ∧β0 := iβ ◦ iβ0 [24]. Analogously for j vector fields. In local coordinates, if α = αj dx , j = 1, . . . , m, then m X ∂ X ∂ ∂ Π](α) = α Πij = α Πij − α Πij . (4) i ∂xj i ∂xj j ∂xi i,j=1 1≤i

Algorithm 2.1 sharp morphism(bivector, one form) Input: a (Poisson) bivector field Π and a differential 1–form α Output: a vector field, which is the image of α under the vector bundle morphism in (3) induced by Π

1: procedure 2: m ← dimension of the manifold 3: if m = 1 then . bivector fields are trivial in this case 4: return a variable encoding the trivial vector field 5: end if 6: bivector ← a variable encoding the (Poisson) bivector field 7: one form ← a variable encoding the differential 1–form 8: sharp array ← a variable encoding the computation of the vector field Π](α) in (4), using bivector and one form 9: return sharp array 10: end procedure

Observe that the morphism in (3) is defined, in particular, for Poisson bivector fields. So the function sharp morphism can be applied to this class of bivector fields. 2.1.2. Poisson brackets. A Poisson bracket on M is a Lie bracket structure { , } on ∞ the space of smooth functions CM which is compatible with the pointwise product by the Leibniz rule [13, 27]. Explicitly, the Poisson bracket induced by a Poisson bivector field Π on M is given by the formula i ∂g {f, g} = dg, Π](df) = Π](df) , f, g ∈ C ∞; (5) Π ∂xi M for i = 1, . . . , m. ON COMPUTATIONAL POISSON GEOMETRY I 5

The function poisson bracket computes the Poisson bracket, induced by a Poisson bivector field, of two scalar functions.

Algorithm 2.2 poisson bracket(bivector, function 1, function 2 ) Input: a Poisson bivector field and two scalar functions Output: the Poisson bracket, induced by the Poisson bivector field, of the two scalar functions

1: procedure 2: m ← dimension of the manifold 3: if m = 1 then 4: return 0 . bivector fields are trivial in this case 5: end if 6: bivector ← a variable encoding the Poisson bivector field 7: function 1, function 2 ← variables encoding the scalar functions 8: if function 1= function 2 then

9: return 0 . if f = g in (5), then {f, g}Π = 0 10: end if 11: diff function 1 ← a variable encoding the differential of function 1 12: sharp function 1 ← sharp morphism(bivector, diff function 1) . see, Algorithm 2.1 13: bracket ← a variable encoding the pairing of the differential of function 2 with sharp function 1 . computation of hdg, Π](df)i in (5) 14: return bracket 15: end procedure

Remark 2. In SymPy, different (common) symbolic expressions can be recognized as mathematically equal. Thus, for example, the expressions x1 * x1 and x1**2 are identified as the same, even though as strings they are distinct. 2.1.3. Hamiltonian vector fields. The function hamiltonian vf computes the Hamil- tonian vector field ] Xh := Π (dh), (6) ∞ of a function h ∈ CM , with respect to a Poisson bivector field Π on M [13, 27].

Algorithm 2.3 hamiltonian vf(bivector, hamiltonian function) Input: a Poisson bivector field and a scalar function Output: the Hamiltonian vector field of the scalar function relative to the Poisson bivector field

1: procedure 2: m ← dimension of the manifold 3: if m = 1 then . bivector fields are trivial in this case 4: return a variable encoding the trivial vector field 5: end if 6: bivector ← a variable encoding the Poisson bivector field 7: ham function ← a variable encoding the scalar function 8: diff hamiltonian ← a variable encoding the differential of ham function 6 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´

9: return sharp morphism(bivector, diff hamiltonian) . see Algorithm 2.1 and formula (6) 10: end procedure

2.1.4. Coboundary operator. The adjoint operator of a Poisson bivector field Π on M with respect to the Schouten–Nijenhuis bracket gives rise to a cochain com- plex (Γ(∧TM), δπ), called the Lichnerowicz–Poisson complex of (M, Π) [28, 13, ∞ 27]. Here, Γ(∧TM) denotes the CM –module of multivector fields on M, and • •+1 δΠ : Γ(∧ TM) → Γ(∧ TM) is the coboundary operator defined by

δΠ(A) := [[Π,A]],A ∈ Γ(∧TM). (7) ∞ Explicitly, if a = deg A, then for any f1, . . . , fa+1 ∈ CM :

a+1 X k+1  [[Π,A]](df1,..., dfa+1) = (−1) fk,A(df1,..., dfk,..., dfa+1) Π k=1 X k+l  + (−1) A d{fk, fl}Π, df1,..., dfk,..., dcfl,..., dfa+1 1≤k

Throughout this paper the symbol b will denote the absence of the corresponding 1 a+1 factor. In particular, if f1 = x , . . . , fa+1 = x are local coordinates on M, we have for 1 ≤ i1 < ··· < ia+1 ≤ m:

a+1 i1···ia+1 X k+1  ik i1···ibk···ia+1 [[Π,A]] = (−1) x ,A Π k=1 X ∂Πikil + (−1)k+l As i1···ibk···ibl···ia+1 (8) ∂xs 1≤k

Algorithm 2.4 coboundary operator(bivector, multivector) Input: a Poisson bivector field Π and a multivector field A Output: a multivector field, which is the image of A under the coboundary oper- ator induced by Π

1: procedure 2: m ← dimension of the manifold 3: a ← degree of the multivector field 4: if m = 1 or a+1 > m then 5: return a variable encoding the trivial multivector field . bivector fields are trivial if m = 1. We have deg [[Π,A]]= deg A + 1 in (7) 6: end if 7: bivector ← a variable encoding the Poisson bivector field 8: multivector ← a variable encoding the multivector field 9: if a=0 then ON COMPUTATIONAL POISSON GEOMETRY I 7

10: return hamiltonian vf(bivector,(−1) · multivector) . see Algorithm 2.3

. if deg A = 0, then [[Π,A]]= −XA = X−A in (7) 11: end if 12: image multivector ← a variable encoding the computation of the multivector field [[Π,A]] in (7) 13: return image multivector 14: end procedure

2.1.5. Curl (divergence) operator. Fix a volume form Ω on an oriented Poisson manifold (M, Π, Ω). The divergence, relative to Ω, of an a–multivector field A on M is the unique (a − 1)–multivector field DΩ(A) on M satisfying

iDΩ(A)Ω = diAΩ. (9)

It induces a (well defined, Ω–dependent) coboundary operator DΩ : A 7→ DΩ(A) on the module of multivector fields on M, called the curl operator [24, 27]. The volume ∞ form Ω can be expressed as Ω = fΩ0, for a nowhere vanishing function f ∈ CM , and 1 m 1 Ω0 = dx ∧ · · · ∧ dx in local coordinates. This gives DΩ = DΩ0 + f idf . Then, for i1···ia i1 ia any a–multivector field A = A ∂/∂x ∧ · · · ∧ ∂/∂x on M, with 1 ≤ i1 < ··· < ia ≤ m, the divergence of A with respect to the volume form fΩ0 is given by: m ∂Ai1···ia 1 ∂f  ∂ ∂ ∂ X k+1 i1···ia d DfΩ0 (A) = (−1) + A ∧ · · · ∧ ∧ · · · ∧ ∂xik f ∂xik ∂xi1 ∂xik ∂xia k=1 (10) If m = 1, the wedge product above is simply multiplication by 1. Let f be a nowhere vanishing scalar function. The function curl operator com- putes the divergence of a multivector field with respect to the volume form fΩ0.

Algorithm 2.5 curl operator(multivector, function) Input: a multivector field A and a nowhere vanishing scalar function f Output: zero if A is a scalar function. Otherwise, a multivector field, which is the divergence of A with respect to the volume form fΩ0

1: procedure 2: m ← dimension of the manifold 3: a ← degree of the multivector field 4: if a=0 then

5: return 0 . if deg A = 0, then DΩ(A) = 0 in (9) 6: end if 7: multivector ← a variable encoding the multivector field 8: function ← a variable encoding the nowhere vanishing function 9: curl multivector ← a variable encoding the computation of the multivector

field DfΩ0 (A) in (10) 10: return curl multivector 11: end procedure

2.2. Matrix of a bivector field. The function bivector to matrix computes the (local) matrix [Πij] of a bivector field Π on M [13, 27], which depends on the 8 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´ coefficients of Π in (2). In particular, it computes the matrix of a Poisson bivector field.

Algorithm 2.6 bivector to matrix(bivector) Input: a (Poisson) bivector field Π Output: the (local) matrix of Π

1: procedure 2: m ← dimension of the manifold 3: if m = 1 then 4: return the 1–dimensional . bivector fields are trivial in this case 5: end if 6: return an array encoding the skew–symmetric m × m–matrix [Πij], whose entries are the coefficients Πij of Π in (2) 7: end procedure

2.3. Jacobiator. Consider the Schouten–Nijenhuis bracket of a bivector field Π with itself, [[Π, Π]]. This 3–multivector field is called the Jacobiator of Π and it is computed with the jacobiator function. The Jacobi identity in (1) for Π follows from the vanishing of its Jacobiator [13, 27].

Algorithm 2.7 jacobiator(bivector) Input: a bivector field Output: the Schouten–Nijenhuis bracket of the bivector field with itself

1: procedure 2: bivector ← a variable encoding the bivector field 3: return coboundary operator(bivector, bivector) . see Algorithm 2.4 4: end procedure

2.4. Modular vector field. For (M, Π, Ω) an orientable Poisson manifold, and a fixed volume form Ω on M, the map

ZΩ : h 7−→ DΩ(Xh) (11) ∞ is a derivation of CM . Therefore, it defines a vector field on M, called the modular vector field of Π relative to Ω [38,1, 13, 27]. Here, DΩ is the curl operator in (9) relative to Ω. Then, ZΩ is a Poisson vector field of Π which is independent of 1 the choice of a volume form, modulo Hamiltonian vector fields: ZΩ0 = ZΩ − f Xf , 0 ∞ with Ω = fΩ, for a nowhere vanishing function f ∈ CM . In this context, the Pois- son bivector field Π is said to be unimodular if ZΩ is a Hamiltonian vector field. Equivalently, if ZΩ is zero for some volume form on M. We can compute the modular vector field of Π relative to a volume form fΩ as the (minus) divergence of Π:

ZfΩ = −DfΩ(Π) = DfΩ(−Π). (12) Let f be a nowhere vanishing scalar function. The function modular vectorfield computes the modular vector field of a Poisson bivector field with respect to the 1 m volume form fΩ0, where Ω0 = dx ∧ · · · ∧ dx in local coordinates. ON COMPUTATIONAL POISSON GEOMETRY I 9

Algorithm 2.8 modular vf(bivector, function) Input: a Poisson bivector field and a nowhere vanishing scalar function f Output: the modular vector field of the Poisson bivector field relative to the vol- ume form fΩ0

1: procedure 2: bivector ← a variable encoding the Poisson bivector field 3: function ← a variable encoding the nowhere vanishing function 4: return curl operator((−1) · bivector, function) . see Algorithm 2.5 and formula (12) 5: end procedure

2.5. Unimodularity of homogeneous Poisson bivector fields. We can verify whether a Poisson bivector field known to be homogeneous is also unimodular or not with the is unimodular homogeneous function. A Poisson bivector field Π on Rm, ∂ ∂ Π = 1 Πij ∧ , i, j = 1 . . . , m; (13) 2 ∂xi ∂xj is said to be homogeneous if each coefficient Πij is a homogeneous polynomial [27]. To implement our method, we use the following fact: a homogeneous Poisson bivec- tor field on Rm is unimodular on (the whole of) Rm if and only if its modular vector field in (11) relative to the Euclidean volume form is zero [25].

Algorithm 2.9 is unimodular homogeneous(bivector) Input: a homogeneous Poisson bivector field on Rm Output: verify if the modular vector field respect to the Euclidean volume form on Rm of the Poisson bivector field is zero, or not

1: procedure 2: bivector ← a variable encoding the homogeneous Poisson bivector field 3: if all values in modular vf(bivector, 1) are zero then 4: return True . see Algorithm 2.8 5: end if 6: return False 7: end procedure

2.6. Bracket on differential 1-forms. The function one forms bracket computes the Lie bracket of two differential 1–forms α, β ∈ Γ T∗M induced by a Poisson bivec- tor field Π on M [13, 27], and defined by ] {α, β}Π := iΠ](α)dβ − iΠ](β)dα + d β, Π (α) . (14)

Here, d is the exterior derivative for differential forms and {df, dg}Π = d{f, g}Π, ∞ by definition, for all f, g ∈ CM . The bracket on the right–hand side of this equality is the Poisson bracket for smooth functions on M induced by Π. In coordinates, if k l α = αk dx and β = βl dx , for k, l = 1, . . . , m: 10 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´

m       ] j  X j ∂βi ∂βj j ∂αi ∂αj ∂ Π α βj {α, β} = Π]α − −Π]β − + dxi Π ∂xj ∂xi ∂xj ∂xi ∂xi i,j=1       X j ∂βi ∂βj j ∂αi ∂αj = Π]α − − Π]β − dxi ∂xj ∂xi ∂xj ∂xi 1≤i

Algorithm 2.10 one forms bracket(bivector, one form 1, one form 2 ) Input: a Poisson bivector field and two differential 1–forms Output: a differential 1–form, which is the Lie bracket, induced by the Poisson bivector field, of the differential 2–forms

1: procedure 2: m ← dimension of the manifold 3: if m = 1 then . bivector fields are trivial in this case 4: return a variable encoding the trivial differential 1–form 5: end if 6: bivector ← a variable encoding the Poisson bivector field 7: one form 1 ← a variable encoding the differential 1–form α 8: one form 2 ← a variable encoding the differential 1–form β 9: sharp 1 ← sharp morphism(bivector, one form 1) . see Algorithm 2.1 10: sharp 2 ← sharp morphism(bivector, one form 2) 11: forms bracket 1 ← a variable encoding the interior product of the differential

of one form 2 with sharp 1 . computation of iΠ](α)dβ in (14) 12: forms bracket 2 ← a variable encoding the interior product of the differential

of one form 1 with sharp 2 . computation of iΠ](β)dα in (14) 13: forms bracket 3 ← a variable encoding the differential of the pairing of one form 2 with sharp 1 . computation of dhβ, Π](α)i in (14) 14: forms bracket ← forms bracket 1 − forms bracket 1+ forms bracket 1 15: return forms bracket 16: end procedure

2.7. Gauge transformations. Let Π be a bivector field on M. Suppose we are given a differential 2–form λ on M such that the vector bundle morphism [ ] ∗ idT∗M − λ ◦ Π : T M → TM (15) is invertible, where λ[ : TM → T∗M is the vector bundle morphism given by X 7→ iX λ. Then, there exists a bivector field Π on M (well) defined by the skew– symmetric morphism ] ] [ ]−1 Π = Π ◦ idT∗M − λ ◦ Π . (16) The bivector field Π is called the λ–gauge transformation of Π [34, 10,9]. A pair of bivector fields Π and Π on M are said to be gauge equivalent if they are related by (16) for some differential 2–form λ on M satisfying (15). If Π is a Poisson bivector field, then Π is a Poisson bivector field if and only if λ is closed along ON COMPUTATIONAL POISSON GEOMETRY I 11 the symplectic leaves of Π. A gauge transformation modifies only the leaf–wise symplectic form of Π employing the pull–back of λ, preserving the characteristic foliation. Furthermore, gauge transformations preserve unimodularity. The function gauge transformation computes the gauge transformation of a bivec- tor field, and the of the morphism in (15). Such a determinant defines the set of points of M where the gauge transformation is well defined.

Algorithm 2.11 gauge transformation(bivector, two form) Input: a (Poisson) bivector field and a differential 2–form Output: False if the morphism in (15) is not invertible. Otherwise, a bivector field, which is the gauge transformation induced by the differential 2- form of the given (Poisson) bivector field, and/or the determinant of the morphism in (15). This last output depends on the function flags selected by the user

1: procedure 2: m ← dimension of the manifold 3: if m = 1 then . bivector fields are trivial in this case 4: return a variable encoding the trivial bivector field 5: end if 6: bivector ← a variable encoding the (Poisson) bivector field 7: if the differential 2–form is trivial then 8: return bivector . if λ = 0, then Π] = Π] in (16) 9: end if 10: two form ← a variable encoding the differential 2–form 11: bivector matrix ← bivector to matrix(bivector) . see Algorithm 2.6 12: 2 form matrix ← bivector to matrix(two form) 13: identity ← the m × m 14: gauge det ← det(identity − 2 form matrix · bivector matrix) . determinant of the morphism in (15) 15: if gauge det=0 then 16: return False . means that the morphism in (15) is not invertible 17: end if 18: gauge bivector matrix ← bivector matrix · inverse(identity − 2 form matrix · bivector matrix) 19: gauge bivector ← a variable encoding the bivector field associated to the matrix gauge bivector matrix 20: return gauge bivector and/or gauge det, depending on the function flags selected by the user 21: end procedure

Observe that the function gauge transformation can be used to compute the gauge transformation induced by a closed differential 2-form of a Poisson bivector field. 2.8. Classification of Lie–Poisson bivector fields on R3. A Lie–Poisson bivec- tor field is a Poisson bivector field Π as in (13) such that each Πij is a linear polynomial [22, 19, 13]. A pair of homogeneous Poisson bivector fields Π and Πe on Rm are said to be equivalent (or isomorphic) if there exists an invertible linear operator T : Rm → Rm 12 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´ such that Πe = T ∗Π. (17) Under this equivalence relation in the 3–dimensional case there exist 9 non–trivial equivalence classes of Lie–Poisson bivector fields [29]. The function linear normal form R3 computes a normal form of a Lie–Poisson bivector field on R3. The normal forms are based on well–known classifications of (real) 3–dimensional Lie algebras [29].

Algorithm 2.12 linear normal form R3(bivector) Input: a Lie–Poisson bivector field on R3 Output: a linear normal form for the Lie–Poisson bivector field

1: procedure 12 ∂ ∂ 2: bivector ← a variable encoding a Lie–Poisson bivector field Π ∂x1 ∧ ∂x2 + 13 ∂ ∂ 23 ∂ ∂ Π ∂x1 ∧ ∂x3 + Π ∂x2 ∧ ∂x3 3: parameter ← the function −x1Π23 + x2Π13 − x3Π12 4: hessian parameter ← of parameter 5: if modular vf(bivector) = 0 then . see Algorithm 2.8 6: if (hessian parameter) = 0 then 7: return a variable encoding the trivial bivector field 8: end if 9: if rank(hessian parameter) = 1 then 1 ∂ ∂ 10: return a variable encoding the linear normal form x ∂x2 ∧ ∂x3 11: end if 12: if rank(hessian parameter) = 2 then 13: if |signature(hessian parameter)| = 2 then . signature = #(positive eigenvalues) - #(negative eigenvalues) 14: return a variable encoding the linear normal form 2 ∂ ∂ 1 ∂ ∂ 15: x ∂x1 ∧ ∂x3 − x ∂x2 ∧ ∂x3 16: end if 17: return a variable encoding the linear normal form 2 ∂ ∂ 1 ∂ ∂ 18: x ∂x1 ∧ ∂x3 + x ∂x2 ∧ ∂x3 19: end if 20: if rank(hessian parameter) = 3 then 21: if |signature(hessian parameter)| = 3 then . signature = #(positive eigenvalues) - #(negative eigenvalues) 22: return a variable encoding the linear normal form 3 ∂ ∂ 2 ∂ ∂ 1 ∂ ∂ 23: x ∂x1 ∧ ∂x2 − x ∂x1 ∧ ∂x3 + x ∂x2 ∧ ∂x3 24: end if 25: return a variable encoding the linear normal form 3 ∂ ∂ 2 ∂ ∂ 1 ∂ ∂ 26: −x ∂x1 ∧ ∂x2 − x ∂x1 ∧ ∂x3 + x ∂x2 ∧ ∂x3 27: end if 28: else 29: if rank(hessian parameter) = 0 then 30: return a variable encoding the linear normal form 1 ∂ ∂ 2 ∂ ∂ 31: x ∂x1 ∧ ∂x3 + x ∂x2 ∧ ∂x3 32: end if 33: if rank(hessian parameter) = 1 then ON COMPUTATIONAL POISSON GEOMETRY I 13

34: return a variable encoding the linear normal form 1 ∂ ∂ 1 2 ∂ ∂ 35: x ∂x1 ∧ ∂x3 + (4x + x ) ∂x2 ∧ ∂x3 36: end if 37: if rank(hessian parameter) = 2 then 38: if |signature(hessian parameter)| = 2 then . signature = #(positive eigenvalues) - #(negative eigenvalues) 39: return a variable encoding the linear normal form 1 2 ∂ ∂ 1 2 ∂ ∂ 40: (x − 4ax ) ∂x1 ∧ ∂x3 + (4ax + x ) ∂x2 ∧ ∂x3 . for some a > 0 41: end if 42: return a variable encoding the linear normal form 1 2 ∂ ∂ 1 2 ∂ ∂ 43: (x + 4ax ) ∂x1 ∧ ∂x3 + (4ax + x ) ∂x2 ∧ ∂x3 . for some a > 0 44: end if 45: end if 46: end procedure

2.9. Isomorphic Lie–Poisson on R3. Using the function isomorphic lie poisson R3 we can verify whether two Lie–Poisson bivector fields on R3 are isomor- phic under the equivalence relation in (17), or not.

Algorithm 2.13 isomorphic lie poisson R3(bivector 1, bivector 2 ) Input: two Lie–Poisson bivector fields Output: verify if the Lie–Poisson bivector fields are isomorphic, or not

1: procedure 2: bivector 1 ← a variable encoding the first Lie–Poisson bivector field 3: bivector 2 ← a variable encoding the second Lie–Poisson bivector field 4: if linear normal form R3(bivector 1) = linear normal form R3(bivector 2) then 5: return True . see Algorithm 2.12 6: end if 7: return False 8: end procedure

2.10. Flaschka–Ratiu bivector fields. Given m − 2 functions K1, ..., Km−2 ∈ ∞ CM on an oriented m–dimensional manifold (M, Ω) with volume form Ω, and m ≥ 3, we can construct a Poisson bivector field Π on M defined by

iΠΩ := dK1 ∧ · · · ∧ dKm−2.

Clearly, Π is non–trivial on the open subset of M where K1,...,Km−2 are (func- tionally) independent. By construction, each Kl is a Casimir function of Π. This class of Poisson bivector fields is called Flaschka–Ratiu bivector fields [12]. 1 m In coordinates, if Ω0 = dx ∧ · · · ∧ dx , then ∂ ∂ Π = (−1)i+j det P · ∧ , 1 ≤ i < j ≤ m. (18) i,jc ∂xi ∂xj 1 Here, P denotes the (m − 2) × m–matrix whose k–th row is ∂Kk/∂x , . . . , ∂Kk/ ∂xm, for k = 1, . . . , m − 2; and P the matrix P without the columns i and j. i,jc 14 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´

The symplectic form ωS of Π on a 2–dimensional (symplectic) leaf S ⊆ M, for 1 ≤ i < j ≤ m, is given by h i −1 i+j i j 2 X 2 ωS = |Π|2 (−1) det ,j · dx ∧ dx , |Π| := det Pi,j . (19) c S c 1≤i

Algorithm 2.14 flaschka ratiu bivector(casimir list)

Input: m − 2 scalar functions K1,...,Km−2 Output: False if m < 3. Otherwise, the Flaschka–Ratiu bivector field induced by the m − 2 functions, with respect to Ω0, and/or the (leafwise) symplectic form of this Poisson bivector field. This last output depends on the function flags selected by the user

1: procedure 2: m ← dimension of the manifold 3: if m < 3 then 4: return False 5: end if 6: casimir list ← a list containing variables encoding each of the m − 2 scalar functions 7: matrix differentials ← an empty (m − 2) × m–matrix 8: for i = 1 to m − 2 do 9: differential Ki ← an array encoding the differential dKi of Ki 10: Append differential Ki to matrix differentials as its i-th row 11: end for 12: flaschka bivector matrix ← the zero m × m–matrix 13: normsq bivector ← 0 14: for each 1 ≤ i < j ≤ m do 15: submatrix ← matrix differentials with i–th and j–th columns removed i+j 16: flaschka bivector matrix[(i, j)] ← (−1) · det(submatrix) . see (18) 17: flaschka bivector matrix[(j, i)] ← (−1) · flaschka bivector matrix[(i, j)] 18: normsq bivector ← normsq bivector+(flaschka bivector matrix[(i, j)] )2 19: end for 20: if normsq bivector=0 then 21: return a variable encoding the trivial bivector field 22: end if −1 23: symplectic form matrix ← normsq bivector · flaschka bivector matrix . see (19) 24: flaschka bivector ← a variable encoding the Flaschka–Ratiu bivector field associated to the matrix flaschka bivector matrix 25: symplectic form ← a variable encoding the (leafwise) symplectic form asso- ciated to the matrix symplectic form matrix 26: return flaschka bivector and/or symplectic form, depending on the function flags selected by the user 27: end procedure ON COMPUTATIONAL POISSON GEOMETRY I 15

2.11. Test type functions. In this section we describe our implementation of use- ful functions in the PoissonGeometry module which allow us to verify whether a given geometric object on a Poisson manifold satisfies certain property. The algorithms for each of these functions are similar, as they are decision-making processes. These methods are naturally limited by computational constraints, implemented in our case with SymPy in Python but present in any language.

2.11.1. Jacobi identity. We can verify in PoissonGeometry if a given bivector field is a Poisson bivector field, or not.

Algorithm 2.15 is poisson tensor(bivector) Input: a bivector field Output: verify if the bivector field is a Poisson bivector field, or not

1: procedure 2: bivector ← a variable encoding the bivector field 3: if all values in coboundary operator(bivector, bivector) are zero then 4: return True . see Algorithm 2.4 5: end if 6: return False 7: end procedure

2.11.2. Kernel of a bivector field. The kernel of a bivector field Π is the subspace ker Π := {α ∈ T∗M | Π](α) = 0} of T∗M. It is defined as the kernel of its sharp morphism, and is defined likewise for Poisson bivector fields [13, 27].

Algorithm 2.16 is in kernel(bivector, one form) Input: a (Poisson) bivector field and a diferential 1–form Output: verify if the differential 1–form belongs to the kernel of the (Poisson) bivector field, or not

1: procedure 2: bivector ← a variable encoding the (Poisson) bivector field 3: one form ← a variable encoding the differential 1–form 4: if all values in sharp morphism(bivector, one form) are zero then 5: return True . see Algorithm 2.1 6: end if 7: return False 8: end procedure

∞ 2.11.3. Casimir functions. A function K ∈ CM is said to be a Casimir funtion of a Poisson bivector field Π if its Hamiltonian vector field is zero. Equivalently, if its exterior derivative dK belongs to the kernel of Π [13, 12, 27]. 16 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´

Algorithm 2.17 is casimir(bivector, function) Input: a Poisson bivector field and a scalar function Output: verify if the scalar function is a Casimir function of the Poisson bivector field, or not

1: procedure 2: bivector ← a variable encoding the Poisson bivector field 3: function ← a variable encoding the scalar function 4: if all values in hamiltonian vf(bivector, function) are zero then 5: return True . see Algorithm 2.3 6: end if 7: return False 8: end procedure

2.11.4. Poisson vector fields. A vector field W on M is said to be a Poisson vector field of a Poisson bivector field Π if it commutes with respect to the Schouten– Nijenhuis bracket, [[W, Π]] = 0 [13, 27].

Algorithm 2.18 is poisson vf(bivector, vector field) Input: a Poisson bivector field and a vector field Output: verify if the vector field is a Poisson vector field of the Poisson bivector field, or not

1: procedure 2: bivector ← a variable encoding the Poisson bivector field 3: vector field ← a variable encoding the vector field 4: if all values in coboundary operator(bivector, vector field) are zero then 5: return True . see Algorithm 2.4 6: end if 7: return False 8: end procedure

2.11.5. Poisson pairs. We can verify whether a couple of Poisson bivector fields Π and Ψ form a Poisson pair. That is, if the sum Π + Ψ is again a Poisson bivector field or, equivalently, if Π and Ψ commute with respect to the Schouten–Nijenhuis bracket, [[Π, Ψ]] = 0 [13, 27].

Algorithm 2.19 is poisson pair(bivector 1, bivector 2 ) Input: two Poisson bivector fields Output: verify if the bivector fields commute with respect to the Schouten- Nijenhuis bracket, or not

1: procedure 2: bivector 1 ← a variable encoding the first Poisson bivector field 3: bivector 2 ← a variable encoding the second Poisson bivector field 4: if all values in coboundary operator(bivector 1, bivector 2) are zero then 5: return True . see Algorithm 2.4 6: end if ON COMPUTATIONAL POISSON GEOMETRY I 17

7: return False 8: end procedure

3. PoissonGeometry: Applications. We will now describe two applications. One application of gauge trans-formation, used here to derive a characterization of gauge transformations on a 3–dimensional manifold (see, Subsection 2.7), and the second one of jacobiator, used here to construct a family of Poisson bivector fields on R4.

Gauge Transformations on 3–Manifolds. For an arbitrary bivector field on a 3–dimensional manifold, with local coordinates system (x1, x2, x3), ∂ ∂ ∂ ∂ ∂ ∂ Π = Π12 ∧ + Π13 ∧ + Π23 ∧ , (20) ∂x1 ∂x2 ∂x1 ∂x3 ∂x2 ∂x3 and an arbitrary differential 2–form 1 2 1 3 2 3 λ = λ12 dx ∧ dx + λ13 dx ∧ dx + λ23 dx ∧ dx , (21) we compute:

>>> pg3 = PoissonGeometry(3) >>> P = {(1,2): ‘P12’, (1,3): ‘P13’, (2,3): ‘P23’} >>> lambda = {(1,2): ‘L12’, (1,3): ‘L13’, (2,3): ‘L23’} >>> pg3.gauge transformation(P, lambda, det=True) # run gauge transformation function with det flag

(1,2): ‘P12 / (L12 * P12 + L13 * P13 + L23 * P23 + 1)’, (1,3): ‘P13 / (L12 * P12 + L13 * P13 + L23 * P23 + 1)’, (2,3): ‘P23 / (L12 * P12 + L13 * P13 + L23 * P23 + 1)’ , ‘(L12 * P12 + L13 * P13 + L23 * P23 + 1)**2’

The symbols P12, P13, P23, and L12, L13, L23 stand for the coefficients of Π and λ, in that order. Then, see (15):

[ ] 12 13 232 det Id − λ ◦ Π = 1 + λ12Π + λ13Π + λ23Π (22) So, the λ–gauge transformation Π of Π is given by Π12 ∂ ∂ Π13 ∂ ∂ Π23 ∂ ∂ Π = ∧ + ∧ + ∧ , 1 ij 1 2 1 ij 1 3 1 ij 2 3 1 + 2 λijΠ ∂x ∂x 1 + 2 λijΠ ∂x ∂x 1 + 2 λijΠ ∂x ∂x (23) for i, j = 1, 2, 3. With these ingredients, we can now show: Proposition 3.1. Let Π be a bivector field on a m–dimensional smooth manifold M, with m = 2, 3. Then, given a differential 2–form λ on M, the λ–gauge trans- formation Π of Π is well defined on the open subset F := 1 + λ, Π 6= 0 ⊆ M. (24) Moreover, Π is given by 1 Π = F Π. (25) Consequently, if Π is Poisson, then Π is also Poisson. 18 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´

Proof. Suppose (20) and (21) are coordinate expressions of Π and λ on a chart (U; x1, x2, x3) of M. Observe that the pairing of Π and λ is given by

12 13 23 hλ, Πi = λ12Π + λ13Π + λ23Π . Hence, (22) yields det(Id − λ[ ◦ Π]) = (1 + hλ, Πi)2. Therefore the morphism Id − λ[ ◦ Π] is invertible on the open subset in (24) and, in consequence, the λ–gauge transformation of Π is well defined. Finally, formula (25) follows from (23) as Π12 ∂ ∂ Π13 ∂ ∂ Π23 ∂ ∂ Π = ∧ + ∧ + ∧ , F ∂x1 ∂x2 F ∂x1 ∂x3 F ∂x2 ∂x3 for F in (24). The proof for the 2–dimensional case is analogous.

Parametrized Poisson Bivector Fields. Poisson bivector fields also play an important role in deformation quantization theory, which is linked to quantum me- chanics [5,6]. They appear in star products, that is, in general deformations of the associative algebra of smooth functions of a symplectic manifold [17]. Our module PoissonGeometry can be used to study particular problems around deformations of Poisson bivector fields and star products. For example, we can modify the following 4–parametric bivector field on R4 with coordinates (x1, . . . , x4), ∂ ∂ ∂ ∂ ∂ ∂ ∂ ∂ Π = a x2 ∧ + a x3 ∧ + a x4 ∧ + a x1 ∧ , 1 ∂x1 ∂x2 2 ∂x1 ∂x3 3 ∂x1 ∂x4 4 ∂x2 ∂x3 using the jacobiator function to construct a family of Poisson bivector fields on R4:

>>> pg4 = PoissonGeometry(4)  >>> P = (1,2): ‘a1 * x2’, (1,3): ‘a2 * x3’, (1,4): ‘a3 * x4’, (2,3): ‘a4 * x1’ >>> pg4.jacobiator(P)

(1,2,3): ‘-2 * a4 * x1 * (a1 + a2)’, (2,3,4): ‘-2 * a3 * a4 * x4’

Therefore, ∂ ∂ ∂ ∂ ∂ ∂ [[Π, Π]] = −2a (a + a ) x1 ∧ ∧ − 2a a x4 ∧ ∧ . 4 1 2 ∂x1 ∂x2 ∂x3 3 4 ∂x2 ∂x3 ∂x4 Hence, we have two cases, explained in the following:

Lemma 3.2. If a4 = 0, then Π determines a 3–parametric family of Poisson bivec- tor fields on R4: ∂ ∂ ∂ ∂ ∂ ∂ Π = a x2 ∧ + a x3 ∧ + a x4 ∧ . 1 ∂x1 ∂x2 2 ∂x1 ∂x3 3 ∂x1 ∂x4

If a2 = −a1 and a3 = 0, then Π determines a 2–parametric family of Poisson bivec- tor fields on R4: ∂ ∂ ∂ ∂ ∂ ∂ Π = a x2 ∧ − a x3 ∧ + a x1 ∧ . 1 ∂x1 ∂x2 1 ∂x1 ∂x3 4 ∂x2 ∂x3

Poisson Bivector Fields for Generalized Wrinkled Fibrations. Consider the following s–parameterized Poisson bivector fields on R6 with coordinates (x1,..., ON COMPUTATIONAL POISSON GEOMETRY I 19 x6), s ∈ R, that appear as local models around singularities of generalized wrinkled fibrations [35], ∂ ∂ ∂ ∂ Π = −4(x5)2 + (x6)2 ∧ + 4(x3x6 − x4x5) ∧ ws ∂x3 ∂x4 ∂x3 ∂x5 ∂ ∂ ∂ ∂ + 4(x3x5 + x4x6) ∧ − 2x5(s + 2x3) + 2x4x6 ∧ ∂x3 ∂x6 ∂x4 ∂x5 ∂ ∂ ∂ ∂ + 2x6(s + 2x3) − 2x4x5 ∧ − 2x3(s + 2x3) + 2(x4)2 ∧ , ∂x4 ∂x6 ∂x5 ∂x6 ∂ ∂ ∂ ∂ ∂ ∂ Π = 2x6 ∧ + 2x5 ∧ + 2x4(s − 2(x4)2) − x3 ∧ . fs ∂x4 ∂x5 ∂x4 ∂x6 ∂x5 ∂x6 Let H be an arbitrary scalar function on R6. We can compute the Hamiltonian ws vector field XH of H with respect to Πws , with our function hamiltonian vf:

>>> pg6 = PoissonGeometry(6)  >>> P ws = (3,4): ‘-4 * (x5**2 + x6**2)’, (3,5): ‘ 4 * (x3 * x6 - x4 * x5)’, (3,6): ‘ 4 * (x3 * x5 + x4 * x6)’, (4,5): ‘-2 * (x5 * (s + 2 * x3) + 2 * x4 * x6)’, (4,6): ‘ 2 * (x6 * (s + 2 * x3) - 2 * x4 * x5)’, (5,6): ‘-2 * (x3 * (s + 2 * x3) + 2 * x4**2)’ >>> H = sympy.Function(’H’)(*pg6.coords) # defines a symbolic function depending on the coordinates (x1,...,x6) >>> pg6.hamiltonian vf(P ws, f‘{H}’) # see, f–string documentation: link

(3,): ‘-(-4*x5**2 - 4*x6**2) * Derivative(H(x1,x2,x3,x4,x5,x6), x4) -(4*x3*x5 + 4*x4*x6) * Derivative(H(x1,x2,x3,x4,x5,x6), x6) -(4*x3*x6 - 4*x4*x5) * Derivative(H(x1,x2,x3,x4,x5,x6), x5)’, (4,): ‘-(4*x5**2 + 4*x6**2) * Derivative(H(x1,x2,x3,x4,x5,x6), x3) -(-2*s*x5 - 4*x3*x5 - 4*x4*x6) * Derivative(H(x1,x2,x3,x4,x5,x6), x5) -(2*s*x6 + 4*x3*x6 - 4*x4*x5) * Derivative(H(x1,x2,x3,x4,x5,x6), x6)’, (5,): ‘-(-4*x3*x6 + 4*x4*x5) * Derivative(H(x1,x2,x3,x4,x5,x6), x3) -(-2*s*x3 - 4*x3**2 - 4*x4**2) * Derivative(H(x1,x2,x3,x4,x5,x6), x6) -(2*s*x5 + 4*x3*x5 + 4*x4*x6) * Derivative(H(x1,x2,x3,x4,x5,x6), x4)’, (6,): ‘-(-4*x3*x5 - 4*x4*x6) * Derivative(H(x1,x2,x3,x4,x5,x6), x3) -(2*s*x3 + 4*x3**2 + 4*x4**2) * Derivative(H(x1,x2,x3,x4,x5,x6), x5) -(-2*s*x6 - 4*x3*x6 + 4*x4*x5) * Derivative(H(x1,x2,x3,x4,x5,x6), x4)’

Therefore we have obtained,

Lemma 3.3.  ∂H ∂H ∂H  ∂ Xws = 4 ((x5)2 + (x6)2) − (x3x6 − x4x5) − (x3x5 + x4x6) H ∂x4 ∂x5 ∂x6 ∂x3  ∂H ∂H ∂H  ∂ +2 −2((x5)2+(x6)2) +(x5(s+2x3)+2x4x6) −(x6(s+2x3)−2x4x5) ∂x3 ∂x5 ∂x6 ∂x4  ∂H ∂H ∂H  ∂ +2 2(x3x6 −x4x5) −(x5(s+2x3)+2x4x6) +(x3(s+2x3)+2(x4)2) ∂x3 ∂x4 ∂x6 ∂x5  ∂H ∂H ∂H  ∂ +2 2(x3x5+x4x6) +(x6(s+2x3)−2x4x5) −(x3(s+2x3)+2(x4)2) . ∂x3 ∂x4 ∂x5 ∂x6 20 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´

fs Similarly, we can compute an expression for the Hamiltonian vector field XH of

H with respect to Πfs :

>>> pg6.hamiltonian vf(P fs, f‘{H}’) # see, f–string documentation: link

(4,): ‘-2 * x5 * Derivative(H(x1,x2,x3,x4,x5,x6), x6) -2 * x6 * Derivative(H(x1,x2,x3,x4,x5,x6), x5)’, (5,): ‘2 * x6 * Derivative(H(x1,x2,x3,x4,x5,x6), x4) -(2 * s * x4 - x3 - 4 * x4**3)*Derivative(H(x1,x2,x3,x4,x5,x6), x6)’, (6,): ‘2 * x5 * Derivative(H(x1,x2,x3,x4,x5,x6), x4) -(-2 * s * x4 + x3 + 4 * x4**3) * Derivative(H(x1,x2,x3,x4,x5,x6), x5)’

Hence we find: Lemma 3.4.  ∂H ∂H  ∂  ∂H ∂H  ∂ Xfs = −2 x5 + x6 + 2x6 − 2x4(s − 2(x4)2) − x3 H ∂x6 ∂x5 ∂x4 ∂x4 ∂x6 ∂x5  ∂H ∂H  ∂ + 2x5 + 2x4(s − 2(x4)2) − x3 . ∂x4 ∂x5 ∂x6

With the coboundary operator, we can verify whether or not Πws and Πfs form a Poisson pair.

>>> pg6.coboundary operator(P ws, P fs)

(3,4,5): ‘ 16*x4*x6 - 8*x6*(2*s*x4 - x3 - 4*x4**3)’, (3,4,6): ‘-16*x4*x5 + 8*x5*(2*s*x4 - x3 - 4*x4**3)’, (3,5,6): ‘ 8*x5**2 + 8*x6**2 + (2*s - 12*x4**2)*(-4*x5**2 - 4*x6**2)’, (4,5,6): ‘-4*x5**2 - 4*x6**2 + (-2*s - 4*x3)*(2*s*x4 - x3 - 4*x4**3) +(2*s + 4*x3)*(2*s*x4 - x3 - 4*x4**3)’

This yields,  ∂ ∂ ∂ ∂ ∂ ∂  [[Π , Π ]] = 82x4(1−s+2(x4)2)+x3 x6 ∧ ∧ −x5 ∧ ∧ ws fs ∂x3 ∂x4 ∂x5 ∂x3 ∂x4 ∂x6  ∂ ∂ ∂ ∂ ∂ ∂  − 4(x5)2 + (x6)2 1 − s + 6(x4)2 ∧ ∧ − ∧ ∧ . ∂x3 ∂x5 ∂x6 ∂x4 ∂x5 ∂x6

Therefore, for all s ∈ R the Poisson bivector fields Πws and Πfs do not form a Pois- son pair.

Related Work. Notable contributions in similar directions include; computations of normal forms in Hamiltonian dynamics (in Maxima) [36], symbolic tests of the Jacobi identity for generalized Poisson brackets and their relation to hydrodynamics [26], and an implementation of the Schouten–Bracket (in Sage 2). To the best of our knowledge, our methods here are the first comprehensive implementation of computations used in theoretical Poisson geometry, performed symbolically in Python (based on SymPy [30]).

2https://trac.sagemath.org/ticket/23429 ON COMPUTATIONAL POISSON GEOMETRY I 21

Future Directions. With the algorithms in this paper, numerical extensions for the same methods can be developed. In addition, explicit computations of Poisson cohomology can also be explored. These are the subjects of ongoing and forthcom- ing work (see [14]).

Appendix A. Computability of geometric objects. Users should be aware that comparisons of complicated symbolic expressions may yield false negatives. This could happen when a shorter expression is sought or when running the test type functions in section 2.11 (such issues are documented in SymPy). However, simple functions such as polynomials will certainly be classified with ease by our methods. As a word of caution, particular dynamical objects might not be computable, like entropies associated with some rotations [8]. Examples of topological incomputabil- ity also exist, for instance, when determining whether or not the L2–cohomology vanishes [20]. Moreover, it has very recently been shown Turing complete contact flows exist in dimension 3 [11]. The exploration of the theoretical limits of com- putability is indeed a vast area of research. In this work, we assume the inputs are computable, and our methods directly compute the outputs. It is nevertheless interesting to observe that some of these dynamical and topological areas where computability is being explored lie very close to the topics in this work. We ex- pect further interactions to flourish and hope that our algorithms contribute to the advancement of these developments.

REFERENCES

[1] A. Abouqateb and M. Boucetta, The modular class of a regular Poisson manifold and the Reeb class of its symplectic foliation, C. R. Math., 337 (2003), 61–66. [2] M. Ammar, G. Kass, M. Masmoudi and N. Poncin, Strongly r-matrix induced tensors, Koszul cohomology, and arbitrary-dimensional quadratic Poisson cohomology, Pacific J. Math., 245 (2010), 1–23. [3] M. Avenda˜no-Camacho, J. A. Vallejo and Y. Vorobiev, A perturbation theory approach to the stability of the Pais-Uhlenbeck oscillator, J. Math. Phys., 58 (2017), 093501 [4] M. Avenda˜no-Camacho and Y. Vorobiev, Deformations of Poisson structures on fibered mani- folds and adiabatic slow-fast systems, Int. J. Geom. Methods Mod. Phys, 14 (2017), 1750086. [5] F. Bayen, M. Flato, C. Fronsdal, A. Lichnerowicz and D. Sternheimer, Deformation theory and quantization. I. Deformations of symplectic structures, Ann. Phys., 111 (1978), 61–110. [6] F. Bayen, M. Flato, C. Fronsdal, A. Lichnerowicz and D. Sternheimer, Deformation theory and quantization. II. Physical applications, Ann. Phys., 111 (1978), 111–151. [7] E. Bayro–Corrochano, Applications Vol. I. Computer Vision, Graphics And Neurocomputing, 1st edition, Springer International Publishing AG, part of Springer Nature, 2019. [8] M. A. Burr, M. Schmoll and C. Wolf, On the computability of rotation sets and their entropies, Ergodic Theory Dynam. Systems, 40 (2020), 367–401. [9] H. Bursztyn, On gauge transformations of Poisson structures, In Quantum Theory and Noncommutative Geometry, Lect. Notes Phys., Springer, Berlin, 662 (2005), 89–112. [10] H. Bursztyn and O. Radko, Gauge equivalence of Dirac structures and symplectic groupoids, Ann. Inst. Fourier, 53 (2003), 309–337. [11] R. Cardona, E. Miranda, D. Peralta-Salas and F. Presas, Constructing Turing complete Euler flows in dimension 3, Proc. Nat. Acad. Sci., 118 (2021). [12] P. A. Damianou and F. Petalidou, Poisson brackets with prescribed Casimirs, Canad. J. Math., 64 (2012), 991–1018. [13] J. P. Dufour and N. T. Zung, Poisson Structures and Their Normal Forms, Progress in Mathematics, 242. Birkh¨auserVerlag, Basel, 2005. 22 EVANGELISTA–ALVARADO, RU´IZ–PANTALEON´ AND SUAREZ–SERRATO´

[14] M. Evangelista–Alvarado, J. C. Ru´ız–Pantale´onand P. Su´arez–Serrato,On computational Poisson geometry II: Numerical methods, J. Comput. Dyn., 8 (2021), 273–307. [15] M. Evangelista–Alvarado, P. Su´arez–Serrato,J. Torres–Orozco and R. Vera, On Bott–Morse foliations and their Poisson structures in dimension 3, J. Singul., 19 (2019), 19–33. [16] R. L. Fernandes, Lie algebroids, holonomy and characteristic classes, Adv. Math., 170 (2002), 119–179. [17] M. Flato, A. Lichnerowicz and D. Sternheimer, D´eformations1–diff´erentiables des alg`ebres de Lie attach´ees`aune vari´et´esymplectique ou de contact, Compos. Math., 31 (1975), 47–82. [18] L. C. Garc´ıa–Naranjo, P. Su´arez–Serratoand R. Vera, Poisson structures on smooth 4– manifolds, Lett. Math. Phys., 105 (2015), 1533–1550. [19] V. L. Ginzburg and A. Weinstein, Lie–Poisson structure on some Poisson Lie groups, J. Am. Math. Soc., 5 (1992), 445–453. [20] L. Grabowski, Vanishing of l2-cohomology as a computational problem, Bull. Lond. Math. Soc., 47 (2015), 233–247. [21] V. Guillemin, E. Miranda and A. R. Pires, Codimension one symplectic foliations and regular Poisson stuctures, Bull. Braz. Math. Soc., (N.S.), 42 (2011), 607–623. [22] B. Kostant, Orbits, symplectic structures, and , In Collected Papers, (eds. A. Joseph, S. Kumar and M. Vergne), Springer, New York, NY, (2009), 482–482. [23] Y. Kosmann-Schwarzbach, Poisson manifolds, Lie algebroids, modular classes: A survey, SIGMA Symmetry Integrability Geom. Methods Appl., 4 (2008), 5–34. [24] J. L. Koszul, Crochet de Schouten–Nijenhuis et cohomologie, The Mathematical Heritage of Elie´ Cartan (Lyon, 1984). Ast´erisque,Num´ero Hors S´erie, (1985), 257–271. [25] V. V. Kozlov, Symmetries, Topology and Resonances in Hamiltonian Mechanics, Ergebnisse der Mathematik und ihrer Grenzgebiete (3) [Results in Mathematics and Related Areas (3)], 31. Springer-Verlag, Berlin, 1996. [26] M. Kr¨oger,M. H¨utterand H. C. Ottinger,¨ Symbolic test of the Jacobi identity for given generalized ‘Poisson’ bracket, Comput. Phys. Commun., 137 (2001), 325–340. [27] C. Laurent-Gengoux, A. Pichereau and P. Vanhaecke, Poisson Structures, Grundlehren der Mathematischen Wissenschaften [Fundamental Principles of Mathematical Sciences], 347. Springer, Heidelberg, 2013. [28] A. Lichnerowicz, Les vari´et´esde Poisson et leurs alg`ebresde Lie associ´ees, J. Differential Geom., 12 (1977), 253–300. [29] Z. J. Liu and P. Xu, On quadratic Poisson structures, Lett. Math. Phys., 26 (1992), 33–42. [30] A. Meurer et al., SymPy: Symbolic computing in Python, PeerJ Comput. Sci., 3 (2017). [31] P. W. Michor, Topics in Differential Geometry, vol. 93, American Mathematical Society, 2008. [32] N. Nakanishi, On the structure of infinitesimal automorphisms of linear Poisson manifolds I, J. Math. Kyoto Univ., 31 (1991), 71–82. [33] S. D. Poisson, Sur la variation des constantes arbitraires dans les questions de m´ecanique, J. Ecole Polytechnique, 8 (1809), 266–344. [34] P. Severa and A. Weinstein, Poisson geometry with a 3–form background, Prog. Theor. Phys. Suppl., 144 (2001), 145–154. [35] P. Su´arez-Serratoand J. Torres–Orozco, Poisson structures on wrinkled fibrations, Bol. Soc. Mat. Mex., 22 (2016), 263–280. [36] S. Takato and J. A. Vallejo, Hamiltonian dynamical systems: Symbolical, numerical and graphical study, Math. Comput. Sci., 13 (2019), 281–295. [37] A. Weinstein, The local structure of Poisson manifolds, J. Differ. Geom., 18 (1983), 523–557. [38] A. Weinstein, The modular automorphism group of a Poisson manifold, J. Geom. Phys., 23 (1997), 379–394. [39] A. Weinstein, Poisson geometry, Diff. Geom. Appl., 9 (1998), 213–238. Received March 2021; revised June 2021; early access August 2021. E-mail address: miguel.eva.alv @matem.unam.mx E-mail address: jcpanta @im.unam.mx E-mail address: pablo @im.unam.mx