Degenerate Lagrangian Systems

A Lagrangian $L(x,v)$ is said to be degenerate if the determinant of the Hessian with respect to the velocities vanishes, i.e.,

\[\left\vert \frac{\partial^2 L}{\partial v^i \, \partial v^j} \right\vert = 0 .\]

The Euler-Lagrange equations,

\[\frac{d}{dt} \frac{\partial L}{\partial v} - \frac{\partial L}{\partial x} = 0 ,\]

of such Lagrangians are a set of first-order ordinary differential equations and not second-order differential equations as for non-degenerate Lagrangians.

Of particular interest in various applications are degenerate Lagrangians of the form

\[L(x,v) = \vartheta(x) \cdot v - H (x) .\]

Their Euler-Lagrange equations take the form

\[\frac{d \vartheta}{dt} (x) = \nabla \vartheta(x) \cdot v - \nabla H (x) .\]

We exemplify this with the Lotka-Volterra problem in 2d.

Lotka-Volterra

Before any use, we need to load EulerLagrange:

using EulerLagrange
using LinearAlgebra

Next, we generate symbolic variables for a two-dimensional Lagrangian system:

t, x, v = lagrangian_variables(2)
(t, (x(t))[1:2], (v(t))[1:2])

We define a named tuple with typical values for the parameters, e.g.,

params = (
    a₁ = -1.0,
    a₂ = -1.0,
    b₁ = 1.0,
    b₂ = 2.0,
)
(a₁ = -1.0, a₂ = -1.0, b₁ = 1.0, b₂ = 2.0)

We use the function symbolize to generate a symbolic version of the parameters:

sparams = symbolize(params)
(a₁ = a₁ₚ, a₂ = a₂ₚ, b₁ = b₁ₚ, b₂ = b₂ₚ)

Define the Hamiltonian function and the symplectic potential:

ϑ(x, params) = [log(x[2]) / x[1] / 2, - log(x[1]) / x[2] / 2]
H(x, params) = params.a₁ * x[1] + params.a₂ * x[2] + params.b₁ * log(x[1]) + params.b₂ * log(x[2])
H (generic function with 1 method)

The Hamiltonian and the symplectic potential, evaluated on and together with the symbolic variables and parameters are used to construct a DegenerateLagrangianSystem:

lag_sys = DegenerateLagrangianSystem(ϑ(x,sparams) ⋅ v, H(x,sparams), t, x, v, sparams)

Degenerate Lagrangian system with

L = (log((x(t))[2])*(v(t))[1]) / (2(x(t))[1]) + (-log((x(t))[1])*(v(t))[2]) / (2(x(t))[2]) - a₁ₚ*(x(t))[1] - a₂ₚ*(x(t))[2] - b₁ₚ*log((x(t))[1]) - b₂ₚ*log((x(t))[2])

The constructor computes the Euler-Lagrange equations and generates the corresponding Julia code.

In the last step, we can now construct a LODEProblem from the LagrangianSystem and some appropriate initial conditions, a time span to integrate over and a time step:

tspan = (0.0, 10.0)
tstep = 0.01

q₀ = [2.0, 1.0]
p₀ = ϑ(q₀, params)

lprob = LODEProblem(lag_sys, tspan, tstep, q₀, p₀; parameters = params)
Geometric Equation Problem for Lagrangian Ordinary Differential Equation (LODE)

 with vector fields
   ϑ = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x18c1e037, 0x5de5636e, 0x0ad018fb, 0x1c084ae0, 0x7fd328f8), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = (log)((getindex)(X, 2))
                  var"##cse#2" = 2
                  var"##cse#3" = (*)(var"##cse#2", (getindex)(X, 1))
                  var"##cse#4" = (/)(var"##cse#1", var"##cse#3")
                  var"##cse#5" = -1
                  var"##cse#6" = (log)((getindex)(X, 1))
                  var"##cse#7" = (*)(var"##cse#5", var"##cse#6")
                  var"##cse#8" = (*)(var"##cse#2", (getindex)(X, 2))
                  var"##cse#9" = (/)(var"##cse#7", var"##cse#8")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#4"
                          ˍ₋out[2] = var"##cse#9"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end))
   f = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x0db855b3, 0xbda56ef5, 0xb5d59841, 0x0cdb066f, 0x03f8c18f), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = -1
                  var"##cse#2" = (log)((getindex)(X, 2))
                  var"##cse#3" = (*)((*)(var"##cse#1", var"##cse#2"), (getindex)(V, 1))
                  var"##cse#4" = 2
                  var"##cse#5" = (^)((getindex)(X, 1), var"##cse#4")
                  var"##cse#6" = (*)(var"##cse#4", var"##cse#5")
                  var"##cse#7" = (/)(var"##cse#3", var"##cse#6")
                  var"##cse#8" = (*)(var"##cse#1", params.b₁)
                  var"##cse#9" = (/)(var"##cse#8", (getindex)(X, 1))
                  var"##cse#10" = (*)(var"##cse#1", params.a₁)
                  var"##cse#11" = (*)(var"##cse#1", (getindex)(V, 2))
                  var"##cse#12" = (*)((*)(var"##cse#4", (getindex)(X, 2)), (getindex)(X, 1))
                  var"##cse#13" = (/)(var"##cse#11", var"##cse#12")
                  var"##cse#14" = (+)((+)((+)(var"##cse#7", var"##cse#9"), var"##cse#10"), var"##cse#13")
                  var"##cse#15" = (*)(var"##cse#1", params.b₂)
                  var"##cse#16" = (/)(var"##cse#15", (getindex)(X, 2))
                  var"##cse#17" = (/)((getindex)(V, 1), var"##cse#12")
                  var"##cse#18" = (log)((getindex)(X, 1))
                  var"##cse#19" = (*)((getindex)(V, 2), var"##cse#18")
                  var"##cse#20" = (^)((getindex)(X, 2), var"##cse#4")
                  var"##cse#21" = (*)(var"##cse#4", var"##cse#20")
                  var"##cse#22" = (/)(var"##cse#19", var"##cse#21")
                  var"##cse#23" = (*)(var"##cse#1", params.a₂)
                  var"##cse#24" = (+)((+)((+)(var"##cse#16", var"##cse#17"), var"##cse#22"), var"##cse#23")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#14"
                          ˍ₋out[2] = var"##cse#24"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end))
   g = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :Λ, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xb202bcf9, 0x4dc88f28, 0x65f51f63, 0x71a9a724, 0xa4138328), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = -1
                  var"##cse#2" = (log)((getindex)(X, 2))
                  var"##cse#3" = (*)((*)(var"##cse#1", var"##cse#2"), (getindex)(V, 1))
                  var"##cse#4" = 2
                  var"##cse#5" = (^)((getindex)(X, 1), var"##cse#4")
                  var"##cse#6" = (*)(var"##cse#4", var"##cse#5")
                  var"##cse#7" = (/)(var"##cse#3", var"##cse#6")
                  var"##cse#8" = (*)(var"##cse#1", (getindex)(V, 2))
                  var"##cse#9" = (*)((*)(var"##cse#4", (getindex)(X, 2)), (getindex)(X, 1))
                  var"##cse#10" = (/)(var"##cse#8", var"##cse#9")
                  var"##cse#11" = (+)(var"##cse#7", var"##cse#10")
                  var"##cse#12" = (/)((getindex)(V, 1), var"##cse#9")
                  var"##cse#13" = (log)((getindex)(X, 1))
                  var"##cse#14" = (*)((getindex)(V, 2), var"##cse#13")
                  var"##cse#15" = (^)((getindex)(X, 2), var"##cse#4")
                  var"##cse#16" = (*)(var"##cse#4", var"##cse#15")
                  var"##cse#17" = (/)(var"##cse#14", var"##cse#16")
                  var"##cse#18" = (+)(var"##cse#12", var"##cse#17")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#11"
                          ˍ₋out[2] = var"##cse#18"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end))

 Lagrangian: L = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xd049c73b, 0x29101844, 0x35844d98, 0xc85bed3d, 0x25159f8f), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:170 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:170 =#
          begin
              begin
                  var"##cse#1" = (log)((getindex)(X, 2))
                  var"##cse#2" = (*)(var"##cse#1", (getindex)(V, 1))
                  var"##cse#3" = 2
                  var"##cse#4" = (*)(var"##cse#3", (getindex)(X, 1))
                  var"##cse#5" = (/)(var"##cse#2", var"##cse#4")
                  var"##cse#6" = -1
                  var"##cse#7" = (log)((getindex)(X, 1))
                  var"##cse#8" = (*)((*)(var"##cse#6", params.b₁), var"##cse#7")
                  var"##cse#9" = (*)((*)(var"##cse#6", (getindex)(V, 2)), var"##cse#7")
                  var"##cse#10" = (*)(var"##cse#3", (getindex)(X, 2))
                  var"##cse#11" = (/)(var"##cse#9", var"##cse#10")
                  var"##cse#12" = (*)((*)(var"##cse#6", (getindex)(X, 2)), params.a₂)
                  var"##cse#13" = (*)((*)(var"##cse#6", params.a₁), (getindex)(X, 1))
                  var"##cse#14" = (*)((*)(var"##cse#6", params.b₂), var"##cse#1")
                  var"##cse#15" = (+)((+)((+)((+)((+)(var"##cse#5", var"##cse#8"), var"##cse#11"), var"##cse#12"), var"##cse#13"), var"##cse#14")
                  var"##cse#15"
              end
          end
      end))

 Invariants: 
   (h = EulerLagrange.var"#110#111"{@NamedTuple{L::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xd049c73b, 0x29101844, 0x35844d98, 0xc85bed3d, 0x25159f8f), Expr}, H::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:t, :X, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xfe862437, 0xe22c43d9, 0xcd98c336, 0x889735fb, 0x6e9eff32), Expr}, EL::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x725fc438, 0xfabb6787, 0xf24b5381, 0x32a8e805, 0xcafa4738), Expr}, ∇H::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x77265fc5, 0xc8078cab, 0x2cad42f7, 0x6688f5cf, 0x8cdf163b), Expr}, ẋ::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xddbec55e, 0x5beafca7, 0xbaff01b1, 0x8b1fba9c, 0xc834e288), Expr}, v::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :P, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xddbec55e, 0x5beafca7, 0xbaff01b1, 0x8b1fba9c, 0xc834e288), Expr}, f::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x0db855b3, 0xbda56ef5, 0xb5d59841, 0x0cdb066f, 0x03f8c18f), Expr}, u::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :Λ, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x4889eaba, 0x3711d03f, 0x67dd90d3, 0x9ce688d2, 0x5021471b), Expr}, g::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :Λ, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xb202bcf9, 0x4dc88f28, 0x65f51f63, 0x71a9a724, 0xa4138328), Expr}, ū::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :Λ, :P, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x4889eaba, 0x3711d03f, 0x67dd90d3, 0x9ce688d2, 0x5021471b), Expr}, ḡ::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :Λ, :P, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xa4125945, 0xd2bf5325, 0xd5501adf, 0x9eed7c8f, 0x4ca96726), Expr}, p::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x850e1451, 0x8053caa2, 0x58eb0e18, 0xc232466b, 0x32e2eb1f), Expr}, ϑ::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x18c1e037, 0x5de5636e, 0x0ad018fb, 0x1c084ae0, 0x7fd328f8), Expr}, ω::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x0052fd08, 0x96cb22dc, 0x9be10f76, 0x26be8a64, 0xc2947e86), Expr}, ϕ::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :P, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x6f1b56aa, 0xbd69fe3a, 0x0ba83ee6, 0x6b0407fc, 0xb592038b), Expr}, ψ::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :P, :Ẋ, :F, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xf23ec6dc, 0x5424b551, 0x5f49e396, 0x6e49b1de, 0x5e00589d), Expr}, P::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xe1af39cf, 0x0e3874ab, 0x2b01db3a, 0x0a1030db, 0x2e5af32f), Expr}}}((L = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xd049c73b, 0x29101844, 0x35844d98, 0xc85bed3d, 0x25159f8f), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:170 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:170 =#
          begin
              begin
                  var"##cse#1" = (log)((getindex)(X, 2))
                  var"##cse#2" = (*)(var"##cse#1", (getindex)(V, 1))
                  var"##cse#3" = 2
                  var"##cse#4" = (*)(var"##cse#3", (getindex)(X, 1))
                  var"##cse#5" = (/)(var"##cse#2", var"##cse#4")
                  var"##cse#6" = -1
                  var"##cse#7" = (log)((getindex)(X, 1))
                  var"##cse#8" = (*)((*)(var"##cse#6", params.b₁), var"##cse#7")
                  var"##cse#9" = (*)((*)(var"##cse#6", (getindex)(V, 2)), var"##cse#7")
                  var"##cse#10" = (*)(var"##cse#3", (getindex)(X, 2))
                  var"##cse#11" = (/)(var"##cse#9", var"##cse#10")
                  var"##cse#12" = (*)((*)(var"##cse#6", (getindex)(X, 2)), params.a₂)
                  var"##cse#13" = (*)((*)(var"##cse#6", params.a₁), (getindex)(X, 1))
                  var"##cse#14" = (*)((*)(var"##cse#6", params.b₂), var"##cse#1")
                  var"##cse#15" = (+)((+)((+)((+)((+)(var"##cse#5", var"##cse#8"), var"##cse#11"), var"##cse#12"), var"##cse#13"), var"##cse#14")
                  var"##cse#15"
              end
          end
      end)), H = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:t, :X, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xfe862437, 0xe22c43d9, 0xcd98c336, 0x889735fb, 0x6e9eff32), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:170 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:170 =#
          begin
              begin
                  var"##cse#1" = (log)((getindex)(X, 1))
                  var"##cse#2" = (*)(params.b₁, var"##cse#1")
                  var"##cse#3" = (*)((getindex)(X, 2), params.a₂)
                  var"##cse#4" = (*)(params.a₁, (getindex)(X, 1))
                  var"##cse#5" = (log)((getindex)(X, 2))
                  var"##cse#6" = (*)(params.b₂, var"##cse#5")
                  var"##cse#7" = (+)((+)((+)(var"##cse#2", var"##cse#3"), var"##cse#4"), var"##cse#6")
                  var"##cse#7"
              end
          end
      end)), EL = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x725fc438, 0xfabb6787, 0xf24b5381, 0x32a8e805, 0xcafa4738), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = -1
                  var"##cse#2" = (*)(var"##cse#1", params.b₁)
                  var"##cse#3" = (/)(var"##cse#2", (getindex)(X, 1))
                  var"##cse#4" = (*)(var"##cse#1", params.a₁)
                  var"##cse#5" = (+)(var"##cse#3", var"##cse#4")
                  var"##cse#6" = (*)(var"##cse#1", params.b₂)
                  var"##cse#7" = (/)(var"##cse#6", (getindex)(X, 2))
                  var"##cse#8" = (*)(var"##cse#1", params.a₂)
                  var"##cse#9" = (+)(var"##cse#7", var"##cse#8")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#5"
                          ˍ₋out[2] = var"##cse#9"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), ∇H = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x77265fc5, 0xc8078cab, 0x2cad42f7, 0x6688f5cf, 0x8cdf163b), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = (/)(params.b₁, (getindex)(X, 1))
                  var"##cse#2" = (+)(var"##cse#1", params.a₁)
                  var"##cse#3" = (/)(params.b₂, (getindex)(X, 2))
                  var"##cse#4" = (+)(var"##cse#3", params.a₂)
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#2"
                          ˍ₋out[2] = var"##cse#4"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), ẋ = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xddbec55e, 0x5beafca7, 0xbaff01b1, 0x8b1fba9c, 0xc834e288), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = (/)(params.b₂, (getindex)(X, 2))
                  var"##cse#2" = (+)(var"##cse#1", params.a₂)
                  var"##cse#3" = (*)((*)(var"##cse#2", (getindex)(X, 2)), (getindex)(X, 1))
                  var"##cse#4" = -1
                  var"##cse#5" = (/)(params.b₁, (getindex)(X, 1))
                  var"##cse#6" = (+)(var"##cse#5", params.a₁)
                  var"##cse#7" = (*)((*)((*)(var"##cse#4", (getindex)(X, 2)), var"##cse#6"), (getindex)(X, 1))
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#3"
                          ˍ₋out[2] = var"##cse#7"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), v = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :P, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xddbec55e, 0x5beafca7, 0xbaff01b1, 0x8b1fba9c, 0xc834e288), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = (/)(params.b₂, (getindex)(X, 2))
                  var"##cse#2" = (+)(var"##cse#1", params.a₂)
                  var"##cse#3" = (*)((*)(var"##cse#2", (getindex)(X, 2)), (getindex)(X, 1))
                  var"##cse#4" = -1
                  var"##cse#5" = (/)(params.b₁, (getindex)(X, 1))
                  var"##cse#6" = (+)(var"##cse#5", params.a₁)
                  var"##cse#7" = (*)((*)((*)(var"##cse#4", (getindex)(X, 2)), var"##cse#6"), (getindex)(X, 1))
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#3"
                          ˍ₋out[2] = var"##cse#7"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), f = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x0db855b3, 0xbda56ef5, 0xb5d59841, 0x0cdb066f, 0x03f8c18f), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = -1
                  var"##cse#2" = (log)((getindex)(X, 2))
                  var"##cse#3" = (*)((*)(var"##cse#1", var"##cse#2"), (getindex)(V, 1))
                  var"##cse#4" = 2
                  var"##cse#5" = (^)((getindex)(X, 1), var"##cse#4")
                  var"##cse#6" = (*)(var"##cse#4", var"##cse#5")
                  var"##cse#7" = (/)(var"##cse#3", var"##cse#6")
                  var"##cse#8" = (*)(var"##cse#1", params.b₁)
                  var"##cse#9" = (/)(var"##cse#8", (getindex)(X, 1))
                  var"##cse#10" = (*)(var"##cse#1", params.a₁)
                  var"##cse#11" = (*)(var"##cse#1", (getindex)(V, 2))
                  var"##cse#12" = (*)((*)(var"##cse#4", (getindex)(X, 2)), (getindex)(X, 1))
                  var"##cse#13" = (/)(var"##cse#11", var"##cse#12")
                  var"##cse#14" = (+)((+)((+)(var"##cse#7", var"##cse#9"), var"##cse#10"), var"##cse#13")
                  var"##cse#15" = (*)(var"##cse#1", params.b₂)
                  var"##cse#16" = (/)(var"##cse#15", (getindex)(X, 2))
                  var"##cse#17" = (/)((getindex)(V, 1), var"##cse#12")
                  var"##cse#18" = (log)((getindex)(X, 1))
                  var"##cse#19" = (*)((getindex)(V, 2), var"##cse#18")
                  var"##cse#20" = (^)((getindex)(X, 2), var"##cse#4")
                  var"##cse#21" = (*)(var"##cse#4", var"##cse#20")
                  var"##cse#22" = (/)(var"##cse#19", var"##cse#21")
                  var"##cse#23" = (*)(var"##cse#1", params.a₂)
                  var"##cse#24" = (+)((+)((+)(var"##cse#16", var"##cse#17"), var"##cse#22"), var"##cse#23")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#14"
                          ˍ₋out[2] = var"##cse#24"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), u = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :Λ, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x4889eaba, 0x3711d03f, 0x67dd90d3, 0x9ce688d2, 0x5021471b), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                      #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                      ˍ₋out[1] = (getindex)(V, 1)
                      ˍ₋out[2] = (getindex)(V, 2)
                      #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                      ˍ₋out
                  end
          end
      end)), g = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :Λ, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xb202bcf9, 0x4dc88f28, 0x65f51f63, 0x71a9a724, 0xa4138328), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = -1
                  var"##cse#2" = (log)((getindex)(X, 2))
                  var"##cse#3" = (*)((*)(var"##cse#1", var"##cse#2"), (getindex)(V, 1))
                  var"##cse#4" = 2
                  var"##cse#5" = (^)((getindex)(X, 1), var"##cse#4")
                  var"##cse#6" = (*)(var"##cse#4", var"##cse#5")
                  var"##cse#7" = (/)(var"##cse#3", var"##cse#6")
                  var"##cse#8" = (*)(var"##cse#1", (getindex)(V, 2))
                  var"##cse#9" = (*)((*)(var"##cse#4", (getindex)(X, 2)), (getindex)(X, 1))
                  var"##cse#10" = (/)(var"##cse#8", var"##cse#9")
                  var"##cse#11" = (+)(var"##cse#7", var"##cse#10")
                  var"##cse#12" = (/)((getindex)(V, 1), var"##cse#9")
                  var"##cse#13" = (log)((getindex)(X, 1))
                  var"##cse#14" = (*)((getindex)(V, 2), var"##cse#13")
                  var"##cse#15" = (^)((getindex)(X, 2), var"##cse#4")
                  var"##cse#16" = (*)(var"##cse#4", var"##cse#15")
                  var"##cse#17" = (/)(var"##cse#14", var"##cse#16")
                  var"##cse#18" = (+)(var"##cse#12", var"##cse#17")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#11"
                          ˍ₋out[2] = var"##cse#18"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), ū = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :Λ, :P, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x4889eaba, 0x3711d03f, 0x67dd90d3, 0x9ce688d2, 0x5021471b), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                      #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                      ˍ₋out[1] = (getindex)(V, 1)
                      ˍ₋out[2] = (getindex)(V, 2)
                      #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                      ˍ₋out
                  end
          end
      end)), ḡ = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :Λ, :P, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xa4125945, 0xd2bf5325, 0xd5501adf, 0x9eed7c8f, 0x4ca96726), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = -1
                  var"##cse#2" = (log)((getindex)(X, 2))
                  var"##cse#3" = (*)((*)(var"##cse#1", var"##cse#2"), (getindex)(V, 1))
                  var"##cse#4" = 2
                  var"##cse#5" = (^)((getindex)(X, 1), var"##cse#4")
                  var"##cse#6" = (*)(var"##cse#4", var"##cse#5")
                  var"##cse#7" = (/)(var"##cse#3", var"##cse#6")
                  var"##cse#8" = (*)((*)(var"##cse#4", (getindex)(X, 2)), (getindex)(X, 1))
                  var"##cse#9" = (/)((getindex)(V, 2), var"##cse#8")
                  var"##cse#10" = (+)(var"##cse#7", var"##cse#9")
                  var"##cse#11" = (log)((getindex)(X, 1))
                  var"##cse#12" = (*)((getindex)(V, 2), var"##cse#11")
                  var"##cse#13" = (^)((getindex)(X, 2), var"##cse#4")
                  var"##cse#14" = (*)(var"##cse#4", var"##cse#13")
                  var"##cse#15" = (/)(var"##cse#12", var"##cse#14")
                  var"##cse#16" = (*)(var"##cse#1", (getindex)(V, 1))
                  var"##cse#17" = (/)(var"##cse#16", var"##cse#8")
                  var"##cse#18" = (+)(var"##cse#15", var"##cse#17")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#10"
                          ˍ₋out[2] = var"##cse#18"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), p = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x850e1451, 0x8053caa2, 0x58eb0e18, 0xc232466b, 0x32e2eb1f), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:408 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:408 =#
          begin
              begin
                  var"##cse#1" = (log)((getindex)(X, 2))
                  var"##cse#2" = 2
                  var"##cse#3" = (*)(var"##cse#2", (getindex)(X, 1))
                  var"##cse#4" = (/)(var"##cse#1", var"##cse#3")
                  var"##cse#5" = -1
                  var"##cse#6" = (log)((getindex)(X, 1))
                  var"##cse#7" = (*)(var"##cse#5", var"##cse#6")
                  var"##cse#8" = (*)(var"##cse#2", (getindex)(X, 2))
                  var"##cse#9" = (/)(var"##cse#7", var"##cse#8")
                  begin
                      #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1284 =#
                      (SymbolicUtils.Code.create_array)(Array, nothing, Val{1}(), Val{(2,)}(), var"##cse#4", var"##cse#9")
                  end
              end
          end
      end)), ϑ = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x18c1e037, 0x5de5636e, 0x0ad018fb, 0x1c084ae0, 0x7fd328f8), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = (log)((getindex)(X, 2))
                  var"##cse#2" = 2
                  var"##cse#3" = (*)(var"##cse#2", (getindex)(X, 1))
                  var"##cse#4" = (/)(var"##cse#1", var"##cse#3")
                  var"##cse#5" = -1
                  var"##cse#6" = (log)((getindex)(X, 1))
                  var"##cse#7" = (*)(var"##cse#5", var"##cse#6")
                  var"##cse#8" = (*)(var"##cse#2", (getindex)(X, 2))
                  var"##cse#9" = (/)(var"##cse#7", var"##cse#8")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#4"
                          ˍ₋out[2] = var"##cse#9"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), ω = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x0052fd08, 0x96cb22dc, 0x9be10f76, 0x26be8a64, 0xc2947e86), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = 0
                  var"##cse#2" = 1
                  var"##cse#3" = (*)((getindex)(X, 2), (getindex)(X, 1))
                  var"##cse#4" = (/)(var"##cse#2", var"##cse#3")
                  var"##cse#5" = -1
                  var"##cse#6" = (/)(var"##cse#5", var"##cse#3")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#1"
                          ˍ₋out[2] = var"##cse#4"
                          ˍ₋out[3] = var"##cse#6"
                          ˍ₋out[4] = var"##cse#1"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), ϕ = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :P, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0x6f1b56aa, 0xbd69fe3a, 0x0ba83ee6, 0x6b0407fc, 0xb592038b), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = -1
                  var"##cse#2" = (log)((getindex)(X, 2))
                  var"##cse#3" = (*)(var"##cse#1", var"##cse#2")
                  var"##cse#4" = 2
                  var"##cse#5" = (*)(var"##cse#4", (getindex)(X, 1))
                  var"##cse#6" = (/)(var"##cse#3", var"##cse#5")
                  var"##cse#7" = (+)(var"##cse#6", (getindex)(P, 1))
                  var"##cse#8" = (log)((getindex)(X, 1))
                  var"##cse#9" = (*)(var"##cse#4", (getindex)(X, 2))
                  var"##cse#10" = (/)(var"##cse#8", var"##cse#9")
                  var"##cse#11" = (+)(var"##cse#10", (getindex)(P, 2))
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#7"
                          ˍ₋out[2] = var"##cse#11"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), ψ = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :P, :Ẋ, :F, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xf23ec6dc, 0x5424b551, 0x5f49e396, 0x6e49b1de, 0x5e00589d), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = -1
                  var"##cse#2" = 2
                  var"##cse#3" = (*)((*)(var"##cse#2", (getindex)(X, 2)), (getindex)(X, 1))
                  var"##cse#4" = (/)((getindex)(Ẋ, 2), var"##cse#3")
                  var"##cse#5" = (*)(var"##cse#1", var"##cse#4")
                  var"##cse#6" = (log)((getindex)(X, 2))
                  var"##cse#7" = (*)((*)(var"##cse#1", (getindex)(Ẋ, 1)), var"##cse#6")
                  var"##cse#8" = (^)((getindex)(X, 1), var"##cse#2")
                  var"##cse#9" = (*)(var"##cse#2", var"##cse#8")
                  var"##cse#10" = (/)(var"##cse#7", var"##cse#9")
                  var"##cse#11" = (*)(var"##cse#1", var"##cse#10")
                  var"##cse#12" = (+)((+)((getindex)(F, 1), var"##cse#5"), var"##cse#11")
                  var"##cse#13" = (*)(var"##cse#1", (getindex)(Ẋ, 1))
                  var"##cse#14" = (/)(var"##cse#13", var"##cse#3")
                  var"##cse#15" = (*)(var"##cse#1", var"##cse#14")
                  var"##cse#16" = (log)((getindex)(X, 1))
                  var"##cse#17" = (*)((getindex)(Ẋ, 2), var"##cse#16")
                  var"##cse#18" = (^)((getindex)(X, 2), var"##cse#2")
                  var"##cse#19" = (*)(var"##cse#2", var"##cse#18")
                  var"##cse#20" = (/)(var"##cse#17", var"##cse#19")
                  var"##cse#21" = (*)(var"##cse#1", var"##cse#20")
                  var"##cse#22" = (+)((+)(var"##cse#15", (getindex)(F, 2)), var"##cse#21")
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#12"
                          ˍ₋out[2] = var"##cse#22"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)), P = RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:ˍ₋out, :t, :X, :V, :params), EulerLagrange.var"#_RGF_ModTag", EulerLagrange.var"#_RGF_ModTag", (0xe1af39cf, 0x0e3874ab, 0x2b01db3a, 0x0a1030db, 0x2e5af32f), Expr}(:(#= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =# @inbounds begin
          #= /home/runner/.julia/packages/Symbolics/cM6bS/src/build_function.jl:410 =#
          begin
              begin
                  var"##cse#1" = 0
                  var"##cse#2" = -1
                  var"##cse#3" = (*)((*)(var"##cse#2", (getindex)(X, 2)), (getindex)(X, 1))
                  var"##cse#4" = (*)((getindex)(X, 2), (getindex)(X, 1))
                  #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1219 =# @inbounds begin
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1215 =#
                          ˍ₋out[1] = var"##cse#1"
                          ˍ₋out[2] = var"##cse#3"
                          ˍ₋out[3] = var"##cse#4"
                          ˍ₋out[4] = var"##cse#1"
                          #= /home/runner/.julia/packages/SymbolicUtils/xK9ij/src/code.jl:1217 =#
                          ˍ₋out
                      end
              end
          end
      end)))),)

 Timespan: (0.0, 10.0) 
 Timestep: 0.01 

 Initial conditions: 
   (t = fill(0.0), q = [2.0, 1.0], p = [0.0, -0.34657359027997264], v = [2.0, 1.0])

 Parameters: 
   (a₁ = -1.0, a₂ = -1.0, b₁ = 1.0, b₂ = 2.0)

We can integrate this system using GeometricIntegrators:

using GeometricIntegrators
sol = integrate(lprob, Gauss(1))

using CairoMakie
fig = lines(parent(sol.q[:,1]), parent(sol.q[:,2]);
    axis = (; xlabel = "x₁", ylabel = "x₂", title = "Lotka-Volterra system in 2d"),
    figure = (; size = (800,600), fontsize = 22))