def name(self):
        """
        The name of the functional. If the functional is not found in the aliases,
        the string has the form X_NAME+C_NAME
        """
        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])
The name of the functional. If the functional is not found in the aliases,
        the string has the form X_NAME+C_NAME