widen method

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

Widening operation (∇): ensures termination in fixpoint iteration.

Implementation

@override
IntervalDomain widen(IntervalDomain other) {
  if (isBottom) return other;
  if (other.isBottom) return this;

  // Widen: if bound is growing, jump to infinity
  final newMin = (other.min != null && min != null && other.min! < min!)
      ? null // -∞
      : min;
  final newMax = (other.max != null && max != null && other.max! > max!)
      ? null // +∞
      : max;

  return IntervalDomain(newMin, newMax);
}