Ich hätt als Alternative noch:
test=*# select * from (select name, array_agg(language order by language asc) as sprachen from programmers group by name) foo where foo.sprachen = (select array_agg(name order by name asc) from languages);
name | sprachen
-------+------------
frank | {java,sql}
(1 row)
aber für exist bin ich grad zu faul …