module analysis/unionClosure

sig Set {
	elements: set Element
	}

sig Element {}

assert Closed {
	all s0, s1: Set | some s2: Set |
		s2.elements = s0.elements + s1.elements
	}
check Closed for 3 but 16 Set

fact SetGenerator {
	some s: Set | no s.elements
	all s: Set, e: Element |
		some s': Set | s'.elements = s.elements + e
	}
