module tour/addressBook2a abstract sig Target {} sig Addr extends Target {} abstract sig Name extends Target {} sig Alias, Group extends Name {} sig Book {addr: Name -> Target} { no n: Name | n in n.^(addr) all a: Alias | lone a.addr } pred show (b: Book) { some b.addr /* -- constraints to generate examples to match older draft # Alias.(b.addr) = 2 some Alias.(b.addr) & Group no Group.(b.addr) */ some Alias.(b.addr) } run show for 3 but 1 Book