code: def local_subtensor_SpecifyShape_lift(fgraph, node):
      """Lift ``specify_shape(x, s)[i_1, ..., i_n]`` to ``specify_shape(x[i1, ... , i_n], s[n:])``."""
  
      if not isinstance(node.op, Subtensor):
          return False
  
      specify_shape_node = node.inputs[0]
  
      if not (
          specify_shape_node.owner
          and isinstance(specify_shape_node.owner.op, SpecifyShape)
      ):
          return False
  
      obj_arg = specify_shape_node.owner.inputs[0]
      shape_arg = specify_shape_node.owner.inputs[1:]
  
      indices = get_idx_list(node.inputs, node.op.idx_list)
  
      if any(
          isinstance(index, slice)
          or isinstance(getattr(index, "type", None), SliceType)
          for index in indices
      ):
          return False
  
      new_obj_arg = obj_arg[indices]
      # No need to specify shape for scalar outputs
      if new_obj_arg.ndim == 0:
          return [new_obj_arg]
      return [specify_shape(new_obj_arg, shape_arg[len(indices) :])]
  
imports: import sys
  from collections.abc import Iterable
  import numpy
  import pytensor
  import pytensor.scalar.basic
  from pytensor import compile
  from pytensor.graph.basic import Constant, Variable
  from pytensor.graph.rewriting.basic import WalkingGraphRewriter, copy_stack_trace, in2out, node_rewriter
  from pytensor.raise_op import Assert
  from pytensor.tensor.basic import Alloc, Join, MakeVector, ScalarFromTensor, TensorFromScalar, alloc, as_tensor, cast, concatenate, extract_constant, get_underlying_scalar_constant_value, register_infer_shape, switch
  from pytensor.tensor.blockwise import Blockwise
  from pytensor.tensor.elemwise import Elemwise
  from pytensor.tensor.exceptions import NotScalarConstantError
  from pytensor.tensor.math import Dot, add, and_, ceil_intdiv, dot, eq, ge, gt, le, lt, maximum, minimum, or_
  from pytensor.tensor.math import all
  from pytensor.tensor.rewriting.basic import register_canonicalize, register_specialize, register_stabilize
  from pytensor.tensor.shape import Shape, SpecifyShape, Unbroadcast, shape_padleft, shape_tuple, specify_shape, unbroadcast
  from pytensor.tensor.sharedvar import TensorSharedVariable
  from pytensor.tensor.subtensor import AdvancedIncSubtensor, AdvancedIncSubtensor1, AdvancedSubtensor, AdvancedSubtensor1, IncSubtensor, Subtensor, advanced_inc_subtensor1, advanced_subtensor, advanced_subtensor1, as_index_constant, as_index_literal, get_canonical_form_slice, get_constant_idx, get_idx_list, get_slice_elements, inc_subtensor, indices_from_subtensor
  from pytensor.tensor.type import TensorType
  from pytensor.tensor.type_other import NoneTypeT, SliceConstant, SliceType
  from pytensor.tensor.variable import TensorConstant, TensorVariable
label_desc: Use image node_id 30 for calling a global function with example usage: local_subtensor_SpecifyShape_lift(fgraph, node) and returns: list, False, False, False, list