meet method

  1. @override
IntervalDomain meet(
  1. IntervalDomain other
)
override

Meet operation (⊓): greatest lower bound of two abstract values.

Implementation

@override
IntervalDomain meet(IntervalDomain other) {
  if (isBottom || other.isBottom) return bottomValue;

  final newMin = _maxNullable(min, other.min);
  final newMax = _minNullable(max, other.max);

  if (newMin != null && newMax != null && newMin > newMax) {
    return bottomValue;
  }

  return IntervalDomain(newMin, newMax);
}