Thanks for the quick reply, Vladimir.
I appreciate the difference between granted and not granted is represented, but a third state of ‘explicitly denied’ does not appear.
For example if you do this:
$result = add_role(
'basic_contributor',
__( 'Basic Contributor' ),
array(
'read' => true, // true allows this capability
'edit_posts' => true,
'delete_posts' => false, // Use false to explicitly deny
)
);
The capability ‘delete_posts’ is ‘explicitly denied’. I only found this by accident, after setting a value of an unwanted capability rather than leaving it out of the array. The URE interface indicates such values with a tick, hence my confusion.