def _is_surrounded(self, b):
a = self<EOL>if a.is_empty:<EOL><INDENT>return True<EOL><DEDENT>if a.is_top and b.is_top:<EOL><INDENT>return True<EOL><DEDENT>elif a.is_top:<EOL><INDENT>return False<EOL><DEDENT>elif b.is_top:<EOL><INDENT>return True<EOL><DEDENT>if b._surrounds_member(a.lower_bound) and b._surrounds_member(a.upper_bound):<EOL><INDENT>if ((b.lower_bound == a.lower_bound and b.upper_bound == a.upper_bound)<EOL>or not a._surrounds_member(b.lower_bound) or not a._surrounds_member(b.upper_bound)):<EOL><INDENT>return True<EOL><DEDENT><DEDENT>return False<EOL>
Perform a wrapped LTE comparison only considering the SI bounds

:param a: The first operand
:param b: The second operand
:return: True if a <= b, False otherwise