/// `Some(Vec<Atom>)` if the vectors direct children expressions are all atomic, otherwise `None`.
/// * `None` if `Expr` is a `Atom`, or `Expr` does not have a domain (for example, if it is a `Bubble`).
/// Returns the new `SymbolTable`, modified to contain this auxiliary variable in the symbol table.