Hola,
En la parte c, que es un shallow embedding, se debe elegir un nuevo dominio para cumplir con la funcionalidad pedida. Por lo tanto se debería de retornar siempre un entero, si.
En la parte d, dado que es un deep embedding, en realidad las funciones van a generar el mismo AST, que será recorrido por generate para retornar el entero.
saludos