Sarek_policy.BudgetIntersection: a grant survives only if both operands hold it. The reason is the left operand's. The budget of a fused kernel is the meet of its members' budgets.
leq a b: every grant of a is in b. exact is below everything and meet is the greatest lower bound.
The grants and their reasons, in all_grants order.
val digest : t -> stringA stable string of the grant set: equal iff the sets are equal, whatever the reasons and the order in which grants were added. Meant for cache keys, where a policy change must change the key.