The global choice semantics is straightforward. However, contrary to the
situation 3.2.4, there is no correlation among individual choices this time
around, and thus there is no real need for a global choice function .
It may be more elegant to define
= NUpdates(R,S)
directly by induction
on R . We suppose again that S is appropriate to R and R is
S -conspicuous.
If R is an update instruction then
= {Updates(R,S)}.
If R is a
sequence of rules
, ...,
, then
.
Notice that
is empty if some
NUpdates(
, S)
is empty.
If R is a conditional rule with clauses
(,
), ... ,
(
,
).
,
we
have two cases as usual; if all k+1
guards fail in S then
,
and if
is the first guard that holds in S then
=
NUpdates(
, S).
(It would be a mistake to replace
with
above.
If NUpdates(
, S) =
then
NUpdates((
,
), S) =
for every rule
, which is not
desired.)
Finally, suppose that R is a choose rule with universe name U , main
existential variable v and body . For each
a
U,
let
be
the expansion of S of the auxiliary vocabulary
Fun(S)
{v}
where
v is interpreted as a . Then
=
{NUpdates(
,
) :
a
U}.
Notice that
is empty if U is empty.
It is easy to check that if R contains no choice subrules then NUpdates(R, S) = {Updates(R, S)}.