def validate_category_name(name, category_index, current_categories):
    """ Checks if given category name is valid. Name is valid if it is not
        a number, if it does not contain semicolon and if it is not duplicated.

        Args:
            name (str): category name.
            category_index (int): index of this category in the list of
                current categories.
            current_categories (list of str): list of current categories.

        Returns:
            str: given category name if this name is valid, empty
                string otherwise.

        Example:
            >>> validate_category_name('I1n', 0, ['I1n', 'I2', 'O2])
            >>> 'I1n'
            >>> validate_category_name('I1n;', 0, ['I1n;', 'I2', 'O2])
            >>> ''
            >>> validate_category_name('1.2', 0, ['1.2', 'I2', 'O2])
            >>> ''
            >>> validate_category_name('I1n', 0, ['I1n', 'I1n', 'O2])
            >>> ''
    """
    try:
        float(name)
    except ValueError:
        if ';' in name:
            return ''
        for index, category in enumerate(current_categories):
            if index != category_index and category == name:
                return ''
        return name
    else:
        return ''
