def make_goal(nb_columns: int = 3) -> str:
    """
    Define the goal expressed in LDLf logic.

    E.g. for nb_columns = 3:

        <(!c0 & !c1 & !c2)*;c0;(!c0 & !c1 & !c2)*;c1;(!c0 & !c1 & !c2)*;c2>tt

    :param nb_columns: the number of column
    :return: the string associated with the goal.
    """
    labels = ["c" + str(column_id) for column_id in range(nb_columns)]
    empty = "(!" + " & !".join(labels) + ")"
    f = "<" + empty + "*;{}>tt"
    regexp = (";" + empty + "*;").join(labels)
    f = f.format(regexp)
    return f