class_docstr: Class for (principal) fiber bundles.
  
  This class implements abstract methods for fiber bundles, or more
  generally manifolds, with a submersion map, or a right Lie group action.
  
  Parameters
  ----------
  group : LieGroup
      Group that acts on the total space by the right.
      Optional. Default : None.
      Either the group or the group action must be given.
  group_action : callable
      Right group action. It must take as input a point of the total space
      and an element of the group, and return a point of the total space.
class_docstr_tok: ["Class","for","(","principal",")","fiber","bundles",".","This","class","implements","abstract","methods","for","fiber","bundles",",","or","more","generally","manifolds",",","with","a","submersion","map",",","or","a","right","Lie","group","action",".","Parameters","--","--","--","--","--","group",":","LieGroup","Group","that","acts","on","the","total","space","by","the","right",".","Optional",".","Default",":","None",".","Either","the","group","or","the","group","action","must","be","given",".","group_action",":","callable","Right","group","action",".","It","must","take","as","input","a","point","of","the","total","space","and","an","element","of","the","group",",","and","return","a","point","of","the","total","space","."]
docstr: Lift a tangent vector to a horizontal vector in the total space.
  
  It means that horizontal lift is the inverse of the restriction of the
  tangent submersion to the horizontal space at point, where point must
  be in the fiber above the base point. By default, the base manifold
  is not explicit but is identified with a horizontal section of the
  fiber bundle, so the horizontal lift is the horizontal projection.
  
  Parameters
  ----------
  tangent_vec : array-like, shape=[..., {base_dim, [n, m]}]
  fiber_point : array-like, shape=[..., {ambient_dim, [n, m]}]
      Point of the total space.
      Optional, default : None. The `lift` method is used to compute a
      point at which to compute a tangent vector.
  base_point : array-like, shape=[..., {base_dim, [n, m]}]
      Point of the base space.
      Optional, default : None. In this case, point must be given,
      and `submersion` is used to compute the base_point if needed.
  
  Returns
  -------
  horizontal_lift : array-like, shape=[..., {total_space.dim, [n, m]}]
      Horizontal tangent vector to the total space at point.
docstr_tok: ["Lift","a","tangent","vector","to","a","horizontal","vector","in","the","total","space",".","It","means","that","horizontal","lift","is","the","inverse","of","the","restriction","of","the","tangent","submersion","to","the","horizontal","space","at","point",",","where","point","must","be","in","the","fiber","above","the","base","point",".","By","default",",","the","base","manifold","is","not","explicit","but","is","identified","with","a","horizontal","section","of","the","fiber","bundle",",","so","the","horizontal","lift","is","the","horizontal","projection",".","Parameters","--","--","--","--","--","tangent_vec",":","array-like",",","shape=","[","...",",","{","base_dim",",","[","n",",","m","]","}","]","fiber_point",":","array-like",",","shape=","[","...",",","{","ambient_dim",",","[","n",",","m","]","}","]","Point","of","the","total","space",".","Optional",",","default",":","None",".","The","`","lift","`","method","is","used","to","compute","a","point","at","which","to","compute","a","tangent","vector",".","base_point",":","array-like",",","shape=","[","...",",","{","base_dim",",","[","n",",","m","]","}","]","Point","of","the","base","space",".","Optional",",","default",":","None",".","In","this","case",",","point","must","be","given",",","and","`","submersion","`","is","used","to","compute","the","base_point","if","needed",".","Returns","--","--","--","-","horizontal_lift",":","array-like",",","shape=","[","...",",","{","total_space.dim",",","[","n",",","m","]","}","]","Horizontal","tangent","vector","to","the","total","space","at","point","."]
code: def horizontal_lift(
      self, tangent_vec, base_point=None, fiber_point=None
  ):
      """Lift a tangent vector to a horizontal vector in the total space.
  
      It means that horizontal lift is the inverse of the restriction of the
      tangent submersion to the horizontal space at point, where point must
      be in the fiber above the base point. By default, the base manifold
      is not explicit but is identified with a horizontal section of the
      fiber bundle, so the horizontal lift is the horizontal projection.
  
      Parameters
      ----------
      tangent_vec : array-like, shape=[..., {base_dim, [n, m]}]
      fiber_point : array-like, shape=[..., {ambient_dim, [n, m]}]
          Point of the total space.
          Optional, default : None. The `lift` method is used to compute a
          point at which to compute a tangent vector.
      base_point : array-like, shape=[..., {base_dim, [n, m]}]
          Point of the base space.
          Optional, default : None. In this case, point must be given,
          and `submersion` is used to compute the base_point if needed.
  
      Returns
      -------
      horizontal_lift : array-like, shape=[..., {total_space.dim, [n, m]}]
          Horizontal tangent vector to the total space at point.
      """
      if base_point is None and fiber_point is None:
          raise ValueError(
              "Either a point (of the total space) or a "
              "base point (of the base manifold) must be "
              "given."
          )
  
      if fiber_point is None:
          fiber_point = self.lift(base_point)
  
      return self.horizontal_projection(tangent_vec, fiber_point)
  
file_path: geomstats/geomstats/geometry/fiber_bundle.py
imports: import sys
  from abc import ABC
  from scipy.optimize import minimize
  import geomstats.backend
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 10 for calling the FiberBundle obj's underlying member method code with example usage: obj.horizontal_lift(tangent_vec, base_point, fiber_point) and returns: self