class_docstr: Represents ordinals in Cantor normal form.
  
  Internally, this class is just a list of instances of OmegaPower.
  
  Examples
  ========
  >>> from sympy import Ordinal, OmegaPower
  >>> from sympy.sets.ordinals import omega
  >>> w = omega
  >>> w.is_limit_ordinal
  True
  >>> Ordinal(OmegaPower(w + 1, 1), OmegaPower(3, 2))
  w**(w + 1) + w**3*2
  >>> 3 + w
  w
  >>> (w + 1) * w
  w**2
  
  References
  ==========
  
  .. [1] https://en.wikipedia.org/wiki/Ordinal_arithmetic
code: def __add__(self, other):
      if not isinstance(other, Ordinal):
          try:
              other = Ordinal.convert(other)
          except TypeError:
              return NotImplemented
      if other == ord0:
          return self
      a_terms = list(self.terms)
      b_terms = list(other.terms)
      r = len(a_terms) - 1
      b_exp = other.degree
      while r >= 0 and a_terms[r].exp < b_exp:
          r -= 1
      if r < 0:
          terms = b_terms
      elif a_terms[r].exp == b_exp:
          sum_term = OmegaPower(
              b_exp, a_terms[r].mult + other.leading_term.mult
          )
          terms = a_terms[:r] + [sum_term] + b_terms[1:]
      else:
          terms = a_terms[: r + 1] + b_terms
      return Ordinal(*terms)
  
imports: from sympy.core import Basic, Integer
  import operator
label_desc: Use image node_id 16 for calling the Ordinal obj's underlying member method code with example usage: obj.__add__(other) and returns: Ordinal, self, NotImplemented