class_docstr: Class for the Kendall pre-shape space bundle.
class_docstr_tok: ["Class","for","the","Kendall","pre-shape","space","bundle","."]
docstr: Compute derivative of the integrability tensor A (special case).
  
  The horizontal covariant derivative :math:`\nabla_X (A_Y Z)` of the
  integrability tensor A may be computed more efficiently in the case of
  parallel vector fields in the quotient space.
  :math:`\nabla_X (A_Y Z)` and :math:`A_Y Z` are computed here for the
  Kendall shape space with quotient-parallel vector fields :math:`X,
  Y, Z` extending the values horizontal_vec_x, horizontal_vec_y and
  horizontal_vec_z by parallel transport in a neighborhood of the
  base-space. Such vector fields verify :math:`\nabla_X^X = A_X X =
  0`, :math:`\nabla_X^Y = A_X Y` and similarly for Z.
  
  Parameters
  ----------
  horizontal_vec_x : array-like, shape=[..., k_landmarks, m_ambient]
      Tangent vector at `base_point`.
  horizontal_vec_y : array-like, shape=[..., k_landmarks, m_ambient]
      Tangent vector at `base_point`.
  horizontal_vec_z : array-like, shape=[..., k_landmarks, m_ambient]
      Tangent vector at `base_point`.
  base_point : array-like, shape=[..., k_landmarks, m_ambient]
      Point of the total space.
  
  Returns
  -------
  nabla_x_a_y_z : array-like, shape=[..., k_landmarks, m_ambient]
      Tangent vector at `base_point`, result of
      :math:`\nabla_X (A_Y Z)` with `X = horizontal_vec_x`,
      `Y = horizontal_vec_y` and `Z = horizontal_vec_z`.
  a_y_z : array-like, shape=[..., k_landmarks, m_ambient]
      Tangent vector at `base_point`, result of :math:`A_Y Z`
      with `Y = horizontal_vec_y` and `Z = horizontal_vec_z`.
  
  References
  ----------
  .. [Pennec] Pennec, Xavier. Computing the curvature and its gradient
      in Kendall shape spaces. Unpublished.
docstr_tok: ["Compute","derivative","of","the","integrability","tensor","A","(","special","case",")",".","The","horizontal","covariant","derivative",":","math",":","`","\\nabla_X","(","A_Y","Z",")","`","of","the","integrability","tensor","A","may","be","computed","more","efficiently","in","the","case","of","parallel","vector","fields","in","the","quotient","space",".",":","math",":","`","\\nabla_X","(","A_Y","Z",")","`","and",":","math",":","`","A_Y","Z","`","are","computed","here","for","the","Kendall","shape","space","with","quotient-parallel","vector","fields",":","math",":","`","X",",","Y",",","Z","`","extending","the","values","horizontal_vec_x",",","horizontal_vec_y","and","horizontal_vec_z","by","parallel","transport","in","a","neighborhood","of","the","base-space",".","Such","vector","fields","verify",":","math",":","`","\\nabla_X^X","=","A_X","X","=","0","`",",",":","math",":","`","\\nabla_X^Y","=","A_X","Y","`","and","similarly","for","Z.","Parameters","--","--","--","--","--","horizontal_vec_x",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Tangent","vector","at","`","base_point","`",".","horizontal_vec_y",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Tangent","vector","at","`","base_point","`",".","horizontal_vec_z",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Tangent","vector","at","`","base_point","`",".","base_point",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Point","of","the","total","space",".","Returns","--","--","--","-","nabla_x_a_y_z",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Tangent","vector","at","`","base_point","`",",","result","of",":","math",":","`","\\nabla_X","(","A_Y","Z",")","`","with","`","X","=","horizontal_vec_x","`",",","`","Y","=","horizontal_vec_y","`","and","`","Z","=","horizontal_vec_z","`",".","a_y_z",":","array-like",",","shape=","[","...",",","k_landmarks",",","m_ambient","]","Tangent","vector","at","`","base_point","`",",","result","of",":","math",":","`","A_Y","Z","`","with","`","Y","=","horizontal_vec_y","`","and","`","Z","=","horizontal_vec_z","`",".","References","--","--","--","--","--","..","[","Pennec","]","Pennec",",","Xavier",".","Computing","the","curvature","and","its","gradient","in","Kendall","shape","spaces",".","Unpublished","."]
code: def integrability_tensor_derivative_parallel(
      self,
      horizontal_vec_x,
      horizontal_vec_y,
      horizontal_vec_z,
      base_point,
  ):
      r"""Compute derivative of the integrability tensor A (special case).
  
      The horizontal covariant derivative :math:`\nabla_X (A_Y Z)` of the
      integrability tensor A may be computed more efficiently in the case of
      parallel vector fields in the quotient space.
      :math:`\nabla_X (A_Y Z)` and :math:`A_Y Z` are computed here for the
      Kendall shape space with quotient-parallel vector fields :math:`X,
      Y, Z` extending the values horizontal_vec_x, horizontal_vec_y and
      horizontal_vec_z by parallel transport in a neighborhood of the
      base-space. Such vector fields verify :math:`\nabla_X^X = A_X X =
      0`, :math:`\nabla_X^Y = A_X Y` and similarly for Z.
  
      Parameters
      ----------
      horizontal_vec_x : array-like, shape=[..., k_landmarks, m_ambient]
          Tangent vector at `base_point`.
      horizontal_vec_y : array-like, shape=[..., k_landmarks, m_ambient]
          Tangent vector at `base_point`.
      horizontal_vec_z : array-like, shape=[..., k_landmarks, m_ambient]
          Tangent vector at `base_point`.
      base_point : array-like, shape=[..., k_landmarks, m_ambient]
          Point of the total space.
  
      Returns
      -------
      nabla_x_a_y_z : array-like, shape=[..., k_landmarks, m_ambient]
          Tangent vector at `base_point`, result of
          :math:`\nabla_X (A_Y Z)` with `X = horizontal_vec_x`,
          `Y = horizontal_vec_y` and `Z = horizontal_vec_z`.
      a_y_z : array-like, shape=[..., k_landmarks, m_ambient]
          Tangent vector at `base_point`, result of :math:`A_Y Z`
          with `Y = horizontal_vec_y` and `Z = horizontal_vec_z`.
  
      References
      ----------
      .. [Pennec] Pennec, Xavier. Computing the curvature and its gradient
          in Kendall shape spaces. Unpublished.
      """
      # Vectors X and Y have to be horizontal.
      if not gs.all(self.total_space.is_centered(base_point)):
          raise ValueError(
              "The base_point does not belong to the pre-shape space"
          )
      if not gs.all(self.is_horizontal(horizontal_vec_x, base_point)):
          raise ValueError("Tangent vector x is not horizontal")
      if not gs.all(self.is_horizontal(horizontal_vec_y, base_point)):
          raise ValueError("Tangent vector y is not horizontal")
      if not gs.all(self.is_horizontal(horizontal_vec_z, base_point)):
          raise ValueError("Tangent vector z is not horizontal")
  
      p_top = Matrices.transpose(base_point)
      p_top_p = gs.matmul(p_top, base_point)
  
      def sylv_p(mat_b):
          """Solves Sylvester equation for vertical component."""
          return gs.linalg.solve_sylvester(
              p_top_p, p_top_p, mat_b - Matrices.transpose(mat_b)
          )
  
      z_top = Matrices.transpose(horizontal_vec_z)
      y_top = Matrices.transpose(horizontal_vec_y)
      omega_yz = sylv_p(gs.matmul(z_top, horizontal_vec_y))
      a_y_z = gs.matmul(base_point, omega_yz)
      omega_xy = sylv_p(gs.matmul(y_top, horizontal_vec_x))
      omega_xz = sylv_p(gs.matmul(z_top, horizontal_vec_x))
  
      omega_yz_x = gs.matmul(horizontal_vec_x, omega_yz)
      omega_xz_y = gs.matmul(horizontal_vec_y, omega_xz)
      omega_xy_z = gs.matmul(horizontal_vec_z, omega_xy)
  
      tangent_vec_f = 2.0 * omega_yz_x + omega_xz_y - omega_xy_z
      omega_fp = sylv_p(gs.matmul(p_top, tangent_vec_f))
      omega_fp_p = gs.matmul(base_point, omega_fp)
  
      nabla_x_a_y_z = omega_yz_x - omega_fp_p
  
      return nabla_x_a_y_z, a_y_z
  
imports: import geomstats.backend
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.fiber_bundle import FiberBundle
  from geomstats.geometry.hypersphere import Hypersphere
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.quotient_metric import QuotientMetric
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.integrator import integrate
  from geomstats.vectorization import get_batch_shape, repeat_out
label_desc: Use image node_id 6 for calling the PreShapeSpaceBundle obj's underlying member method code with example usage: obj.integrability_tensor_derivative_parallel(horizontal_vec_x, horizontal_vec_y, horizontal_vec_z, base_point) and returns: nabla_x_a_y_z,  a_y_z, gs