In earlier sections we have often referred informally to the ``active
process group''. One concrete role of this group was as the default
distribution target in distributed array constructors. We used
the fact that the `on` construct establishes its group argument as the
active process group inside the body of the construct.
The other distributed control constructs, `at` and `overall`, also
affect the active process group--you may want to revisit the discussion
in section 2.5. We can use the notations introduced
in the last section to state their effect more formally

First, for completeness, we restate the effect of the `on` construct
and give an associated rule. As explained in section
2.2, the construct

changes the active group to inside its body. The associated rule is:

can only appear at a point in the program where

Now, if the current active group
is `p`, executing the construct construct

or

will change the active group to inside the bodies of the constructs.

The expression
is only well defined
if the location `i` belongs to a range distributed over a dimension
of `p`^{5.1}. So we can conclude that:

or

can only appear at a point in the program where the process dimension of

As an example of the application of this rule, notice that the the
dimension set of the restricted group
certainly *does not* include the process dimension associated
with `x`. So one of the implications of rule 2
is that we should never expect to see exactly the two constructs above
nested like this:

This is good, because the outer construct already restricts control to a single coordinate value, and it doesn't make sense to try distributing control across all coordinates of the same process dimension