def top(epsilon: A)(implicit r: AdditiveGroup[A]): Option[A] = | |
this match { | |
case Empty() | All() | Above(_, _) => | |
None // TOCHECK: changed semantics, Empty().top == None | |
case Below(upper, uf) => | |
Some(if (isOpenUpper(uf)) upper - epsilon else upper) | |
case Point(v) => | |
Some(v) | |
case Bounded(_, upper, flags) => | |
Some(if (isOpenUpper(flags)) upper - epsilon else upper) | |
} | |
def bottom(min: A, epsilon: A)(implicit r: AdditiveGroup[A]): Option[A] = | |
this match { | |
case Empty() | All() | Below(_, _) => | |
None // TOCHECK: changed semantics, Empty().bottom == None | |
case Above(lower, lf) => | |
Some(if (isOpenLower(lf)) lower + epsilon else lower) | |
case Point(v) => | |
Some(v) | |
case Bounded(lower, _, flags) => | |
Some(if (isOpenLower(flags)) lower + epsilon else lower) | |
} |