@classmethod
def greater_than_constraint(cls, variables, lowerbound):
    """Clauses encoding a "strictly greater than" constraint
     
        E.g. X1 + X2 + X3 + X4 > 2
     
        (X1 v X2 v X3)
        (X1 v X2 v X4)
        (X1 v X3 v X4)
        (X2 v X3 v X4)
     
        Parameters
        ----------
        variables : list of variables
           variables in the constraint
        lowerbound: int
           lower bound of the constraint
     
        Returns
        -------
            a list of clauses
     
        Examples
        --------
        >>> list(CNF.greater_than_constraint(['a','b','c'],2))
        [[(True, 'a')], [(True, 'b')], [(True, 'c')]]
        >>> list(CNF.greater_than_constraint(['a'],0))
        [[(True, 'a')]]
        >>> list(CNF.greater_than_constraint(['a','b','c'],-1))
        []
        >>> list(CNF.greater_than_constraint(['a','b','c'],3))
        [[]]
        """
    return cls._inequality_constraint_builder(variables, lowerbound,
        greater=True)
