canvas { width = 500 height = 500 } forall Set A; Set B where SubSet(A, B) { ensure disjoint(B.text, A.icon, 10.0) ensure contains(A.icon, B.icon, 5.0) layer A.icon above B.icon } forall Set A; Set B where Disjoint(A, B) { ensure disjoint(A.icon, B.icon) } forall Set A; Set B where Union(A,B) { ensure overlapping(A.icon, B.icon) ensure disjoint(A.text, B.icon) ensure disjoint(B.text, A.icon) } forall Set x { shape x.icon = Circle { strokeWidth : 0.0 } shape x.text = Equation { string : x.label fontSize : "32px" } ensure contains(x.icon, x.text) encourage norm(x.text.center - x.icon.center) == 0 layer x.text above x.icon ensure x.icon.r > 25.0 }