In *this* case it could be detected, but in general it is not possible to detect this at compile-time.
The order in which mutables are initialised is specified in the reference manual, for initialisations
within a module it is:
For the purposes of determining when mutables are assigned their initial values, the expression `initial_value' behaves as though it were a predicate specified in an `initialise' directive.
There is no initialisation order assumed beteween (sub-)modules.
As a matter of practice I recommend that mutable initialisation expressions should not call mutable
access predicates (I will add this to the reference manual).