code: def tril(
      x: Union[tf.Tensor, tf.Variable],
      /,
      *,
      k: int = 0,
      out: Optional[Union[tf.Tensor, tf.Variable]] = None,
  ) -> Union[tf.Tensor, tf.Variable]:
      # TODO: A way around tf.experimental.numpy.tril as it doesn't support bool
      #  and neither rank 1 tensors while np.tril does support both. Needs superset.
      return tf.experimental.numpy.tril(x, k)
  
imports: import numpy
  from numbers import Number
  from typing import Union, List, Optional, Sequence, Tuple
  import tensorflow
  import ivy
  from ivy.func_wrapper import with_unsupported_dtypes
  from ivy.functional.ivy.creation import _asarray_to_native_arrays_and_back, _asarray_infer_device, _asarray_infer_dtype, _asarray_handle_nestable, NestedSequence, SupportsBufferProtocol, _asarray_inputs_to_native_shapes
  from .None import backend_version
label_desc: Use image node_id 15 for calling a global function with example usage: tril() and returns: tf