'Return start (if possible) else S.Infinity.
adapted from Set._infimum_key'

@staticmethod
def _start_key(expr):

    try:
        start = expr.start
    except (NotImplementedError, AttributeError, ValueError):
        start = S.Infinity
    return start
