code: def horizontal_lift(
      self, tangent_vec, base_point=None, fiber_point=None
  ):
      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 base_point is None:
          base_point = self.riemannian_submersion(fiber_point)
  
      if fiber_point is None:
          fiber_point = self.lift(base_point)
  
      sylvester = gs.linalg.solve_sylvester(
          base_point, base_point, tangent_vec
      )
      return Matrices.mul(sylvester, fiber_point)
  
imports: import pytest
  import geomstats.backend
  from geomstats.geometry.fiber_bundle import FiberBundle
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.special_orthogonal import SpecialOrthogonal
  from geomstats.test.random import RandomDataGenerator
  from geomstats.test.test_case import TestCase
  from geomstats.test.vectorization import generate_vectorization_data
label_desc: Use image node_id 4 for calling the GeneralLinearBuresWassersteinBundle obj's underlying member method code with example usage: obj.horizontal_lift(tangent_vec, base_point, fiber_point) and returns: Matrices