export const intersect = (xs: Set, ys: Set): Set => { const out: Set = new Set() xs.forEach(x => { if (ys.has(x)) { out.add(x) } }) return out } export const setEquals = (xs: Set, ys: Set): boolean => { if (xs.size != ys.size) { return false } for (const x of Array.from(xs)) { if (!ys.has(x)) { return false } } return true } export const union = (xs: Set, ys: Set): Set => new Set([ ...Array.from(xs), ...Array.from(ys), ])