Once upon a time, the longer version of the query in the PL/SQL permission_p executed much more quickly than the more readable query using the abstract view.
I then devoted a lot of time to figuring out how to speed up the permissions system (by a factor of about 10x for both oracle and postgres) by denormalizing some table data, rewriting views, etc.
Because of that work, using the abstract view as recommended by daveb results in query times equivalent to that of the lower-level query in the permission_p PL/SQL procedure.
I didn't bother to rewrite the procedure to use the higher-level view, though. It works as written.