class_docstr: Pullback metric.
  
  Let :math:`f` be an immersion :math:`f: M \rightarrow N`
  of one manifold :math:`M` into the Riemannian manifold :math:`N`
  with metric :math:`g`.
  The pull-back metric :math:`f^*g` is defined on :math:`M` for a
  base point :math:`p` as:
  :math:`(f^*g)_p(u, v) = g_{f(p)}(df_p u , df_p v)
  \quad \forall u, v \in T_pM`
  
  Note
  ----
  The pull-back metric is currently only implemented for an
  immersion into the Euclidean space, i.e. for
  
  :math:`N=\mathbb{R}^n`.
class_docstr_tok: ["Pullback","metric",".","Let",":","math",":","`","f","`","be","an","immersion",":","math",":","`","f",":","M","\\rightarrow","N","`","of","one","manifold",":","math",":","`","M","`","into","the","Riemannian","manifold",":","math",":","`","N","`","with","metric",":","math",":","`","g","`",".","The","pull-back","metric",":","math",":","`","f^","*","g","`","is","defined","on",":","math",":","`","M","`","for","a","base","point",":","math",":","`","p","`","as",":",":","math",":","`","(","f^","*","g",")","_p","(","u",",","v",")","=","g_","{","f","(","p",")","}","(","df_p","u",",","df_p","v",")","\\quad","\\forall","u",",","v","\\in","T_pM","`","Note","--","--","The","pull-back","metric","is","currently","only","implemented","for","an","immersion","into","the","Euclidean","space",",","i.e",".","for",":","math",":","`","N=\\mathbb","{","R","}","^n","`","."]
code: def __init__(self, space, signature=None):
      super().__init__(space, signature)
      self._instantiate_solvers()
  
imports: import geomstats.backend
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.numerics.geodesic import ExpODESolver, LogShootingSolver
  from geomstats.numerics.ivp import GSIVPIntegrator
  from geomstats.vectorization import check_is_batch
label_desc: Use image node_id 1 to create a new PullbackMetric object from inherited base classes: RiemannianMetric with example: obj = PullbackMetric(space, signature)