export const intersection = (a: Readonly<Interval>, b: Readonly<Interval>) => {
    if (overlaps(a, b)) {
        const [l, lo] = $max(a.l, b.l, a.lopen, b.lopen, or);
        const [r, ro] = $min(a.r, b.r, a.ropen, b.ropen, or);
        return new Interval(l, r, lo, ro);