1. The documentation for `substitute()` says:

   > Substitution takes place by examining each component of the parse tree as
   > follows:
   >
   > - If it is not a bound symbol in `env`, it is unchanged.
   > - If it is a promise object (i.e., a formal argument to a function) the
   >   expression slot of the promise replaces the symbol.
   > - If it is an ordinary variable, its value is substituted, unless `env` is
   >   .GlobalEnv in which case the symbol is left unchanged.

   Create examples that illustrate each of the above cases.
