narrow method

AbstractState<D> narrow(
  1. AbstractState<D> other
)

Narrows this state with another to recover precision after widening.

Implementation

AbstractState<D> narrow(AbstractState<D> other) {
  final result = <String, D>{};
  final allVars = {..._values.keys, ...other._values.keys};

  for (final v in allVars) {
    final thisVal = getForJoin(v);
    final otherVal = other.getForJoin(v);
    result[v] = thisVal.narrow(otherVal);
  }

  return AbstractState(_defaultValue, result);
}