code: def name(self):
          
          if self.xc in self.defined_aliases: return self.defined_aliases[self.xc].name
          xc = (self.x, self.c)
          if xc in self.defined_aliases: return self.defined_aliases[xc].name
          if self.xc is not None: return self.xc.name
          return "+".join([self.x.name, self.c.name])
docs: The name of the functional. If the functional is not found in the aliases,
          the string has the form X_NAME+C_NAME